# Model_Tutorial_TutorialExecuterBase_141.luac
; fn @TutorialExecuterBase.lua  line 0-0 np=0 va=1 ms=2 code=57 consts=25 upvals=1 protos=15
;   K[0]='TutorialExecuter'
;   K[1]='AlwaysStrongTutorial'
;   K[2]=false
;   K[3]='AddToAutoPopup'
;   K[4]=true
;   K[5]='__index'
;   K[6]='StepStart'
;   K[7]='0'
;   K[8]='StepEnd'
;   K[9]='99'
;   K[10]='CreateExecuter'
;   K[11]='_Init'
;   K[12]='_ParseDatasStr'
;   K[13]='_ToDatasStr'
;   K[14]='OnStart'
;   K[15]='OnRemove'
;   K[16]='_SaveOngoingDatas'
;   K[17]='GetTutorialId'
;   K[18]='Finish'
;   K[19]='FinishAll'
;   K[20]='LogTutorialStepFinish'
;   K[21]='IsInStrongTutorial'
;   K[22]='SetStrongTutorial'
;   K[23]='CheckOtherTutorialInStrong'
;   K[24]='TryStartTutorial'
;   upvals: _ENV
0000  NEWTABLE  R0 = {} (0 items)
0001  SETTABLE  R0[K1('AlwaysStrongTutorial')] = K2(false)
0002  SETTABLE  R0[K3('AddToAutoPopup')] = K4(true)
0003  SETTABUP  _ENV[K0('TutorialExecuter')] = R0
0004  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0005  GETTABUP  R1 = _ENV[K0('TutorialExecuter')]
0006  SETTABLE  R0[K5('__index')] = R1
0007  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0008  SETTABLE  R0[K6('StepStart')] = K7('0')
0009  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0010  SETTABLE  R0[K8('StepEnd')] = K9('99')
0011  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0012  CLOSURE   R1 = closure proto0
0013  SETTABLE  R0[K10('CreateExecuter')] = R1
0014  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0015  CLOSURE   R1 = closure proto1
0016  SETTABLE  R0[K11('_Init')] = R1
0017  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0018  CLOSURE   R1 = closure proto2
0019  SETTABLE  R0[K12('_ParseDatasStr')] = R1
0020  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0021  CLOSURE   R1 = closure proto3
0022  SETTABLE  R0[K13('_ToDatasStr')] = R1
0023  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0024  CLOSURE   R1 = closure proto4
0025  SETTABLE  R0[K14('OnStart')] = R1
0026  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0027  CLOSURE   R1 = closure proto5
0028  SETTABLE  R0[K15('OnRemove')] = R1
0029  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0030  CLOSURE   R1 = closure proto6
0031  SETTABLE  R0[K16('_SaveOngoingDatas')] = R1
0032  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0033  CLOSURE   R1 = closure proto7
0034  SETTABLE  R0[K17('GetTutorialId')] = R1
0035  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0036  CLOSURE   R1 = closure proto8
0037  SETTABLE  R0[K18('Finish')] = R1
0038  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0039  CLOSURE   R1 = closure proto9
0040  SETTABLE  R0[K19('FinishAll')] = R1
0041  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0042  CLOSURE   R1 = closure proto10
0043  SETTABLE  R0[K20('LogTutorialStepFinish')] = R1
0044  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0045  CLOSURE   R1 = closure proto11
0046  SETTABLE  R0[K21('IsInStrongTutorial')] = R1
0047  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0048  CLOSURE   R1 = closure proto12
0049  SETTABLE  R0[K22('SetStrongTutorial')] = R1
0050  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0051  CLOSURE   R1 = closure proto13
0052  SETTABLE  R0[K23('CheckOtherTutorialInStrong')] = R1
0053  GETTABUP  R0 = _ENV[K0('TutorialExecuter')]
0054  CLOSURE   R1 = closure proto14
0055  SETTABLE  R0[K24('TryStartTutorial')] = R1
0056  RETURN    return R0..R-1
; ---------- proto0 [CreateExecuter] ----------
  ; fn ?  line 10-14 np=3 va=0 ms=8 code=10 consts=2 upvals=1 protos=0
  ;   K[0]='setmetatable'
  ;   K[1]='_Init'
  ;   upvals: _ENV
  ;   locals: template(0-10), tutorialId(0-10), ongoingDatas(0-10), executer(4-10)
  0000  GETTABUP  R3 = _ENV[K0('setmetatable')]
  0001  NEWTABLE  R4 = {} (0 items)
  0002  MOVE      R5 = R0
  0003  CALL      R3 = call(R3, 1 args, 2 rets)
  0004  SELF      R5 = R3[K1('_Init')] (self)
  0005  MOVE      R6 = R0
  0006  MOVE      R7 = R0
  0007  CALL      R4 = call(R4, 0 args, 3 rets)
  0008  RETURN    return R3..R2
  0009  RETURN    return R0..R-1
; ---------- proto1 [_Init] ----------
  ; fn ?  line 16-26 np=3 va=0 ms=6 code=24 consts=12 upvals=1 protos=0
  ;   K[0]='m_model'
  ;   K[1]='GM'
  ;   K[2]='TutorialModel'
  ;   K[3]='m_tutorialId'
  ;   K[4]='_ParseDatasStr'
  ;   K[5]='AlwaysStrongTutorial'
  ;   K[6]='EventDispatcher'
  ;   K[7]='DispatchEvent'
  ;   K[8]='EEventType'
  ;   K[9]='StrongTutorialStart'
  ;   K[10]='AddToAutoPopup'
  ;   K[11]='AddAutoPopup'
  ;   upvals: _ENV
  ;   locals: self(0-24), tutorialId(0-24), ongoingDatas(0-24)
  0000  GETTABUP  R3 = _ENV[K1('GM')]
  0001  GETTABLE  R3 = R3[K2('TutorialModel')]
  0002  SETTABLE  R0[K0('m_model')] = R3
  0003  SETTABLE  R0[K3('m_tutorialId')] = R1
  0004  SELF      R4 = R0[K4('_ParseDatasStr')] (self)
  0005  MOVE      R5 = R0
  0006  CALL      R3 = call(R3, 0 args, 2 rets)
  0007  GETTABLE  R3 = R0[K5('AlwaysStrongTutorial')]
  0008  TEST      if not R3 then   -> -131062
  0009  JMP       (jump)   -> 15
  0010  GETTABUP  R3 = _ENV[K6('EventDispatcher')]
  0011  GETTABLE  R3 = R3[K7('DispatchEvent')]
  0012  GETTABUP  R4 = _ENV[K8('EEventType')]
  0013  GETTABLE  R4 = R4[K9('StrongTutorialStart')]
  0014  CALL      R3 = call(R3, 0 args, 1 rets)
  0015  GETTABLE  R3 = R0[K10('AddToAutoPopup')]
  0016  TEST      if not R3 then   -> -131054
  0017  JMP       (jump)   -> 23
  0018  GETTABUP  R3 = _ENV[K1('GM')]
  0019  GETTABLE  R3 = R3[K2('TutorialModel')]
  0020  SELF      R4 = R3[K11('AddAutoPopup')] (self)
  0021  MOVE      R5 = R0
  0022  CALL      R3 = call(R3, 0 args, 2 rets)
  0023  RETURN    return R0..R-1
; ---------- proto2 [_ParseDatasStr] ----------
  ; fn ?  line 29-31 np=2 va=0 ms=2 code=2 consts=1 upvals=0 protos=0
  ;   K[0]='m_strOngoingDatas'
  ;   locals: self(0-2), ongoingDatas(0-2)
  0000  SETTABLE  R0[K0('m_strOngoingDatas')] = R1
  0001  RETURN    return R0..R-1
; ---------- proto3 [_ToDatasStr] ----------
  ; fn ?  line 33-35 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_strOngoingDatas'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_strOngoingDatas')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto4 [OnStart] ----------
  ; fn ?  line 37-39 np=1 va=0 ms=2 code=1 consts=0 upvals=0 protos=0
  ;   locals: self(0-1)
  0000  RETURN    return R0..R-1
; ---------- proto5 [OnRemove] ----------
  ; fn ?  line 41-45 np=1 va=0 ms=4 code=10 consts=5 upvals=1 protos=0
  ;   K[0]='EventDispatcher'
  ;   K[1]='RemoveTarget'
  ;   K[2]='GM'
  ;   K[3]='TutorialModel'
  ;   K[4]='RemoveAutoPopup'
  ;   upvals: _ENV
  ;   locals: self(0-10)
  0000  GETTABUP  R1 = _ENV[K0('EventDispatcher')]
  0001  GETTABLE  R1 = R1[K1('RemoveTarget')]
  0002  MOVE      R2 = R0
  0003  CALL      R1 = call(R1, 0 args, 1 rets)
  0004  GETTABUP  R1 = _ENV[K2('GM')]
  0005  GETTABLE  R1 = R1[K3('TutorialModel')]
  0006  SELF      R2 = R1[K4('RemoveAutoPopup')] (self)
  0007  MOVE      R3 = R0
  0008  CALL      R1 = call(R1, 0 args, 2 rets)
  0009  RETURN    return R0..R-1
; ---------- proto6 [_SaveOngoingDatas] ----------
  ; fn ?  line 48-50 np=1 va=0 ms=6 code=7 consts=4 upvals=0 protos=0
  ;   K[0]='m_model'
  ;   K[1]='UpdateOngoingDatas'
  ;   K[2]='m_tutorialId'
  ;   K[3]='_ToDatasStr'
  ;   locals: self(0-7)
  0000  GETTABLE  R1 = R0[K0('m_model')]
  0001  SELF      R2 = R1[K1('UpdateOngoingDatas')] (self)
  0002  GETTABLE  R3 = R0[K2('m_tutorialId')]
  0003  SELF      R5 = R0[K3('_ToDatasStr')] (self)
  0004  CALL      R4 = call(R4, -1 args, 1 rets)
  0005  CALL      R1 = call(R1, 0 args, -1 rets)
  0006  RETURN    return R0..R-1
; ---------- proto7 [GetTutorialId] ----------
  ; fn ?  line 52-54 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_tutorialId'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_tutorialId')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto8 [Finish] ----------
  ; fn ?  line 56-61 np=3 va=0 ms=7 code=16 consts=5 upvals=1 protos=0
  ;   K[0]='TutorialHelper'
  ;   K[1]='GetSceneView'
  ;   K[2]='FinishTutorial'
  ;   K[3]='m_model'
  ;   K[4]='GetTutorialId'
  ;   upvals: _ENV
  ;   locals: self(0-16), gesture(0-16), arrow(0-16)
  0000  GETTABUP  R3 = _ENV[K0('TutorialHelper')]
  0001  GETTABLE  R3 = R3[K1('GetSceneView')]
  0002  CALL      R3 = call(R3, 1 args, 0 rets)
  0003  TEST      if not R3 then   -> -131067
  0004  JMP       (jump)   -> 10
  0005  GETTABUP  R3 = _ENV[K0('TutorialHelper')]
  0006  GETTABLE  R3 = R3[K2('FinishTutorial')]
  0007  MOVE      R4 = R0
  0008  MOVE      R5 = R0
  0009  CALL      R3 = call(R3, 0 args, 2 rets)
  0010  GETTABLE  R3 = R0[K3('m_model')]
  0011  SELF      R4 = R3[K2('FinishTutorial')] (self)
  0012  SELF      R6 = R0[K4('GetTutorialId')] (self)
  0013  CALL      R5 = call(R5, -1 args, 1 rets)
  0014  CALL      R3 = call(R3, 0 args, -1 rets)
  0015  RETURN    return R0..R-1
; ---------- proto9 [FinishAll] ----------
  ; fn ?  line 63-67 np=1 va=0 ms=5 code=14 consts=8 upvals=1 protos=0
  ;   K[0]='Finish'
  ;   K[1]='m_gesture'
  ;   K[2]='m_arrow'
  ;   K[3]='Scheduler'
  ;   K[4]='UnscheduleTarget'
  ;   K[5]='GM'
  ;   K[6]='UIManager'
  ;   K[7]='RemoveAllEventLocks'
  ;   upvals: _ENV
  ;   locals: self(0-14)
  0000  SELF      R2 = R0[K0('Finish')] (self)
  0001  GETTABLE  R3 = R0[K1('m_gesture')]
  0002  GETTABLE  R4 = R0[K2('m_arrow')]
  0003  CALL      R1 = call(R1, 0 args, 3 rets)
  0004  GETTABUP  R1 = _ENV[K3('Scheduler')]
  0005  GETTABLE  R1 = R1[K4('UnscheduleTarget')]
  0006  MOVE      R2 = R0
  0007  CALL      R1 = call(R1, 0 args, 1 rets)
  0008  GETTABUP  R1 = _ENV[K5('GM')]
  0009  GETTABLE  R1 = R1[K6('UIManager')]
  0010  SELF      R2 = R1[K7('RemoveAllEventLocks')] (self)
  0011  MOVE      R3 = R0
  0012  CALL      R1 = call(R1, 0 args, 2 rets)
  0013  RETURN    return R0..R-1
; ---------- proto10 [LogTutorialStepFinish] ----------
  ; fn ?  line 72-74 np=2 va=0 ms=6 code=7 consts=4 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='BIManager'
  ;   K[2]='LogTutorialStepFinish'
  ;   K[3]='m_tutorialId'
  ;   upvals: _ENV
  ;   locals: self(0-7), strInfo(0-7)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('BIManager')]
  0002  SELF      R3 = R2[K2('LogTutorialStepFinish')] (self)
  0003  GETTABLE  R4 = R0[K3('m_tutorialId')]
  0004  MOVE      R5 = R0
  0005  CALL      R2 = call(R2, 0 args, 3 rets)
  0006  RETURN    return R0..R-1
; ---------- proto11 [IsInStrongTutorial] ----------
  ; fn ?  line 76-78 np=1 va=0 ms=2 code=6 consts=2 upvals=0 protos=0
  ;   K[0]='AlwaysStrongTutorial'
  ;   K[1]='m_bInStrongTutorial'
  ;   locals: self(0-6)
  0000  GETTABLE  R1 = R0[K0('AlwaysStrongTutorial')]
  0001  TEST      if not R1 then   -> -131068
  0002  JMP       (jump)   -> 4
  0003  GETTABLE  R1 = R0[K1('m_bInStrongTutorial')]
  0004  RETURN    return R1..R0
  0005  RETURN    return R0..R-1
; ---------- proto12 [SetStrongTutorial] ----------
  ; fn ?  line 80-85 np=2 va=0 ms=4 code=9 consts=5 upvals=1 protos=0
  ;   K[0]='m_bInStrongTutorial'
  ;   K[1]='EventDispatcher'
  ;   K[2]='DispatchEvent'
  ;   K[3]='EEventType'
  ;   K[4]='StrongTutorialStart'
  ;   upvals: _ENV
  ;   locals: self(0-9), enable(0-9)
  0000  SETTABLE  R0[K0('m_bInStrongTutorial')] = R1
  0001  TEST      if not R1 then   -> -131069
  0002  JMP       (jump)   -> 8
  0003  GETTABUP  R2 = _ENV[K1('EventDispatcher')]
  0004  GETTABLE  R2 = R2[K2('DispatchEvent')]
  0005  GETTABUP  R3 = _ENV[K3('EEventType')]
  0006  GETTABLE  R3 = R3[K4('StrongTutorialStart')]
  0007  CALL      R2 = call(R2, 0 args, 1 rets)
  0008  RETURN    return R0..R-1
; ---------- proto13 [CheckOtherTutorialInStrong] ----------
  ; fn ?  line 88-97 np=1 va=0 ms=6 code=34 consts=13 upvals=1 protos=0
  ;   K[0]='IsInStrongTutorial'
  ;   K[1]='GM'
  ;   K[2]='TutorialModel'
  ;   K[3]='HasAnyStrongTutorialOngoing'
  ;   K[4]='m_model'
  ;   K[5]='FinishTutorial'
  ;   K[6]='GetTutorialId'
  ;   K[7]='GameConfig'
  ;   K[8]='IsTestMode'
  ;   K[9]='UIManager'
  ;   K[10]='ShowTestPrompt'
  ;   K[11]='引导：'
  ;   K[12]='因其他强引导存在而终止'
  ;   upvals: _ENV
  ;   locals: self(0-34)
  0000  SELF      R2 = R0[K0('IsInStrongTutorial')] (self)
  0001  CALL      R1 = call(R1, 1 args, 1 rets)
  0002  TEST      if not R1 then   -> -131067
  0003  JMP       (jump)   -> 31
  0004  GETTABUP  R1 = _ENV[K1('GM')]
  0005  GETTABLE  R1 = R1[K2('TutorialModel')]
  0006  SELF      R2 = R1[K3('HasAnyStrongTutorialOngoing')] (self)
  0007  CALL      R1 = call(R1, 1 args, 1 rets)
  0008  TEST      if not R1 then   -> -131062
  0009  JMP       (jump)   -> 31
  0010  GETTABLE  R1 = R0[K4('m_model')]
  0011  SELF      R2 = R1[K5('FinishTutorial')] (self)
  0012  SELF      R4 = R0[K6('GetTutorialId')] (self)
  0013  CALL      R3 = call(R3, -1 args, 1 rets)
  0014  CALL      R1 = call(R1, 0 args, -1 rets)
  0015  GETTABUP  R1 = _ENV[K7('GameConfig')]
  0016  GETTABLE  R1 = R1[K8('IsTestMode')]
  0017  CALL      R1 = call(R1, 1 args, 0 rets)
  0018  TEST      if not R1 then   -> -131052
  0019  JMP       (jump)   -> 29
  0020  GETTABUP  R1 = _ENV[K1('GM')]
  0021  GETTABLE  R1 = R1[K9('UIManager')]
  0022  SELF      R2 = R1[K10('ShowTestPrompt')] (self)
  0023  LOADK     R3 = K11 '引导：'
  0024  SELF      R5 = R0[K6('GetTutorialId')] (self)
  0025  CALL      R4 = call(R4, 1 args, 1 rets)
  0026  LOADK     R5 = K12 '因其他强引导存在而终止'
  0027  CONCAT    R3 = concat(R3..R3)
  0028  CALL      R1 = call(R1, 0 args, 2 rets)
  0029  LOADBOOL  R1 = true
  0030  RETURN    return R1..R0
  0031  LOADBOOL  R1 = false
  0032  RETURN    return R1..R0
  0033  RETURN    return R0..R-1
; ---------- proto14 [TryStartTutorial] ----------
  ; fn ?  line 99-103 np=1 va=0 ms=4 code=9 consts=4 upvals=1 protos=0
  ;   K[0]='AddToAutoPopup'
  ;   K[1]='Log'
  ;   K[2]='Assert'
  ;   K[3]='override in subClass'
  ;   upvals: _ENV
  ;   locals: self(0-9)
  0000  GETTABLE  R1 = R0[K0('AddToAutoPopup')]
  0001  TEST      if not R1 then   -> -131069
  0002  JMP       (jump)   -> 8
  0003  GETTABUP  R1 = _ENV[K1('Log')]
  0004  GETTABLE  R1 = R1[K2('Assert')]
  0005  LOADBOOL  R2 = false
  0006  LOADK     R3 = K3 'override in subClass'
  0007  CALL      R1 = call(R1, 0 args, 2 rets)
  0008  RETURN    return R0..R-1
