local g=game:GetService("\083\101\114\118\101\114\083\116\111\114\097\103\101")local r=script.Parent.modules local m=require(r.findTag)local H=require(r.watchDatamodel)local n=require(r.runUnitTests)local S=require(r.decodeWatcherJsonForRoots)while not m(g)do wait()end local N=m(g)print("\087\097\116\099\104\101\114 \115\116\097\114\116\101\100\046\046\046")local y=S(game,N.Value)local T=Instance.new("\066\105\110\100\097\098\108\101\069\118\101\110\116")T.Event:Connect(n.start)local G=(H.new(y)):withSignal(T)G:start()
local ServerStorage = game:GetService("ServerStorage")

local modules = script.Parent.modules
local findTag = require(modules.findTag)
local watchDatamodel = require(modules.watchDatamodel)
local runUnitTests = require(modules.runUnitTests)
local decodeWatcherJsonForRoots = require(modules.decodeWatcherJsonForRoots)

while (not findTag(ServerStorage)) do
	wait()
end

local watcherTag = findTag(ServerStorage)
print("Watcher started...")

local roots = decodeWatcherJsonForRoots(game, watcherTag.Value)

local signal = Instance.new("BindableEvent")
signal.Event:Connect(runUnitTests.start)

local watcher = watchDatamodel.new(roots):withSignal(signal)


watcher:start()