13297d9a-7696-4c46-96e0-0bbebf0919d2.js.map
131 KB
{"version":3,"sources":["assets/script/game/model/GameModelManager.ts"],"names":[],"mappings":";;;;;;;AAAA,mEAAsD;AACtD,yDAA6C;AAC7C,+DAAqD;AACrD,mDAA8D;AAC9D,yCAAwC;AACxC,6CAA+D;AAC/D,uCAAkL;AAClL,uDAA4D;AAC5D,yDAAsD;AACtD,gFAA6E;AAC7E,8EAA6F;AAC7F,sEAAmE;AAEnE,kEAA+D;AAC/D,wDAAqD;AACrD,wDAAqD;AAErD,0EAAuE;AACvE,4CAAgD;AAChD,0EAAuE;AACvE,iDAA2C;AAC3C,oCAAsK;AACtK,8CAAuC;AAEvC,mEAAmF;AACnF,2DAAoD;AACpD,2DAAwD;AACxD,mFAAgF;AAEhF;;GAEG;AACH,IAAiB,gBAAgB,CA06DhC;AA16DD,WAAiB,gBAAgB;IAC7B,IAAI,OAAO,GAAG,IAAI,wBAAO,CAAC;IAEb,oCAAmB,GAAG,OAAO,CAAC,WAAW,EAAyC,CAAC;IACnF,uCAAsB,GAAG,OAAO,CAAC,WAAW,EAA6C,CAAC;IAE1F,uCAAsB,GAAG,OAAO,CAAC,WAAW,EAA4B,CAAC,CAAA,QAAQ;IAEjF,kCAAiB,GAAG,OAAO,CAAC,WAAW,EAA2E,CAAC,CAAA,UAAU;IAC7H,mCAAkB,GAAG,OAAO,CAAC,WAAW,EAAwB,CAAC,CAAA,cAAc;IAC/E,+BAAc,GAAG,OAAO,CAAC,WAAW,EAAwB,CAAC,CAAA,cAAc;IAG3E,kCAAiB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,aAAa;IACnE,+BAAc,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,UAAU;IAC7D,8BAAa,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,YAAY;IAC9D,iCAAgB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,QAAQ;IAC7D,iCAAgB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,WAAW;IAChE,4BAAW,GAAG,OAAO,CAAC,WAAW,EAA+B,CAAC,CAAA,aAAa;IAC9E,sCAAqB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,WAAW;IACrE,uCAAsB,GAAG,OAAO,CAAC,WAAW,EAA4D,CAAC,CAAA,gBAAgB;IACzH,yCAAwB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,QAAQ;IACrE,uCAAsB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,QAAQ;IACnE,sCAAqB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,aAAa;IACvE,4BAAW,GAAG,OAAO,CAAC,WAAW,EAAmC,CAAC,CAAA,UAAU;IAC/E,oCAAmB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,aAAa;IAErE,0CAAyB,GAAG,OAAO,CAAC,WAAW,EAAgD,CAAC,CAAA,YAAY;IAE5G,gCAAe,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,UAAU;IAE9D,0CAAyB,GAAG,OAAO,CAAC,WAAW,EAAwC,CAAC,CAAA,aAAa;IAErG,mCAAkB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,QAAQ;IAE/D,sCAAqB,GAAG,OAAO,CAAC,WAAW,EAA8D,CAAC,CAAA,aAAa;IAEvH,uCAAsB,GAAG,OAAO,CAAC,WAAW,EAA6C,CAAC,CAAA,UAAU;IAEpG,4CAA2B,GAAG,OAAO,CAAC,WAAW,EAAoD,CAAC,CAAA,mBAAmB;IAEzH,mCAAkB,GAAG,OAAO,CAAC,WAAW,EAAwD,CAAC,CAAA,cAAc;IAE/G,wCAAuB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC,CAAA,sBAAsB;IAElF,kCAAiB,GAAG,OAAO,CAAC,WAAW,EAAwB,CAAC;IAChE,qCAAoB,GAAG,OAAO,CAAC,WAAW,EAAwB,CAAC;IAEhF,gBAAgB;IACH,oCAAmB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC;IAErE,cAAc;IACD,iCAAgB,GAAG,OAAO,CAAC,WAAW,EAAyF,CAAC;IAEhI,2BAAU,GAAG,OAAO,CAAC,WAAW,EAA4B,CAAC;IAE1E,gBAAgB;IACH,gCAAe,GAAG,OAAO,CAAC,WAAW,EAA2B,CAAC;IAC9E,aAAa;IACA,8BAAa,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC;IAE/D,eAAe;IACF,+BAAc,GAAG,OAAO,CAAC,WAAW,EAAyB,CAAC;IAC3E,oBAAoB;IACP,iCAAgB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC;IAClE,mBAAmB;IACN,0BAAS,GAAG,OAAO,CAAC,WAAW,EAAyB,CAAC;IACtE,YAAY;IACC,qCAAoB,GAAG,OAAO,CAAC,WAAW,EAAwB,CAAC;IAChF,eAAe;IACF,uCAAsB,GAAG,OAAO,CAAC,WAAW,EAAwB,CAAC;IAClF,YAAY;IACC,oCAAmB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC;IACrE,0BAA0B;IACb,6BAAY,GAAG,OAAO,CAAC,WAAW,EAAoC,CAAC;IACpF,iBAAiB;IACJ,iCAAgB,GAAG,OAAO,CAAC,WAAW,EAA8B,CAAC;IAClF,YAAY;IACC,kCAAiB,GAAG,OAAO,CAAC,WAAW,EAAc,CAAC;IACnE,YAAY;IACC,iCAAgB,GAAG,OAAO,CAAC,WAAW,EAA8B,CAAC;IAElF,IAAI,aAA8C,CAAC;IACnD,oDAAoD;IACpD,IAAI,gBAAqD,CAAC;IAE1D,IAAI,cAAc,GAAW,CAAC,CAAC,CAAC;IAEhC,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,IAAI,sBAAsB,GAAa,EAAE,CAAC;IAC1C,IAAI,mBAAmB,GAAa,EAAE,CAAC;IACvC,IAAI,oBAAoB,GAAY,KAAK,CAAC;IAC1C,IAAI,UAAU,GAAY,IAAI,CAAC;IAE/B,IAAI,yBAAyB,GAAY,IAAI,CAAC;IAE9C,IAAI,eAAe,GAAuB,SAAS,CAAC;IACpD,IAAI,YAAY,GAAsB,EAAE,CAAC;IAEzC,IAAI,SAAS,GAAW,CAAC,CAAC,CAAC;IAE3B,IAAI,KAAK,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC3C,IAAI,UAAU,GAAW,CAAC,CAAC;IAC3B,IAAI,UAAU,GAAW,CAAC,CAAC,CAAC;IAE5B,SAAgB,qBAAqB,KAAK,OAAO,oBAAoB,CAAA,CAAC,CAAC;IAAvD,sCAAqB,wBAAkC,CAAA;IAEvE,SAAgB,wBAAwB,CAAC,QAAiB;QACtD,oBAAoB,GAAG,QAAQ,CAAC;IACpC,CAAC;IAFe,yCAAwB,2BAEvC,CAAA;IAED,SAAgB,mBAAmB,KAAK,OAAO,UAAU,CAAA,CAAC,CAAC;IAA3C,oCAAmB,sBAAwB,CAAA;IAE3D,SAAgB,sBAAsB,CAAC,QAAiB;QACpD,UAAU,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAFe,uCAAsB,yBAErC,CAAA;IAED,SAAgB,YAAY,KAAK,OAAO,UAAU,CAAC,CAAC,CAAC;IAArC,6BAAY,eAAyB,CAAA;IAE9C,KAAK,UAAU,yBAAyB;QAC3C,4BAA4B;QAC5B,8CAA8C;QAC9C,IAAI;QACJ,IAAI,cAAc,IAAI,CAAC,IAAI,cAAc,GAAG,gBAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YACvF,IAAI,GAAG,GAAG,MAAM,iBAAW,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YAC5D,aAAa,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC;SACd;aAAM;YACH,OAAO,iBAAW,CAAC,eAAe,EAAE,CAAC;SACxC;IACL,CAAC;IAXqB,0CAAyB,4BAW9C,CAAA;IAED,kBAAkB;IAClB,IAAI,YAAY,GAAmC,IAAI,GAAG,EAA6B,CAAC;IACxF,IAAI,YAAY,GAAwB,IAAI,GAAG,EAAkB,CAAC,CAAO,IAAI;IAC7E,YAAY;IAEZ,SAAgB,mBAAmB;QAC/B,OAAO,iBAAA,SAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnC,CAAC;IAFe,oCAAmB,sBAElC,CAAA;IAED,SAAgB,qBAAqB;QACjC,OAAO,aAAc,CAAC;IAC1B,CAAC;IAFe,sCAAqB,wBAEpC,CAAA;IAED,SAAgB,oBAAoB,CAAC,EAAU;QAC3C,OAAO,aAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IAFe,qCAAoB,uBAEnC,CAAA;IAED,2CAA2C;IAC3C,4BAA4B;IAC5B,IAAI;IAEJ,oDAAoD;IACpD,mDAAmD;IACnD,IAAI;IAEJ,SAAgB,6BAA6B;QACzC,OAAO,gBAAiB,CAAC;IAC7B,CAAC;IAFe,8CAA6B,gCAE5C,CAAA;IAED,SAAgB,4BAA4B,CAAC,EAAU;QACnD,OAAO,gBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAFe,6CAA4B,+BAE3C,CAAA;IAED,SAAgB,2CAA2C,CAAC,YAAoB;QAC5E,IAAI,MAAM,GAA4B,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,EAAE;YACnB,OAAO,EAAE,CAAC;SACb;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,IAAI,oCAAa,CAAC,SAAS,CAAC,iCAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,KAAK,YAAY,EAAE;gBACjG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;aACpC;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAXe,4DAA2C,8CAW1D,CAAA;IAED,IAAI,QAAQ,GAAY,KAAK,CAAC;IAC9B;;MAEE;IACK,KAAK,UAAU,aAAa,CAAC,KAAe;QAC/C,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;YACpB,4DAA4D;YAC5D,OAAO;SACV;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,mBAAa,CAAC,aAAa,KAAK,GAAG,IAAI,mBAAa,CAAC,GAAG,KAAK,GAAG,EAAE;gBAClE,iFAAiF;gBACjF,SAAS;aACZ;YACD,IAAI,CAAC,GAAG,MAAM,aAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,CAAC,EAAE;gBACJ,oDAAoD;gBACpD,SAAS;aACZ;YACD,IAAI,iBAAA,SAAS,EAAE;gBACX,iBAAA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACrB;YACD,IAAI,UAAU,GAAY,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,UAAU,EAAE;gBACZ,qEAAqE;gBACrE,SAAS;aACZ;YACD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC7B,IAAI,KAAK,GAAG,MAAM,iBAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACtD,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SAClC;QACD,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;IA/BqB,8BAAa,gBA+BlC,CAAA;IAGD;;;;MAIE;IACF,SAAS,oBAAoB,CAAC,MAAc;QACxC,MAAM,eAAe,GAAW,oBAAoB,CAAC;QACrD,IAAI,GAAG,GAAY,KAAK,CAAC;QACzB,IAAI,OAAO,GAA2C,EAAE,CAAC;QACzD,IAAI,SAAS,GAAW,gBAAU,CAAC,eAAe,CAAC,eAAe,CAAW,CAAC;QAC9E,IAAI,SAAS,IAAI,EAAE,KAAK,SAAS,CAAC,IAAI,EAAE,EAAE;YACtC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA2C,CAAC;SAC7E;QACD,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,SAAS,kBAAkB,CAAC,MAAc,EAAE,KAAa;QACrD,MAAM,eAAe,GAAW,oBAAoB,CAAC;QACrD,IAAI,KAAK,GAAY,KAAK,CAAC;QAC3B,IAAI,OAAO,GAA2C,EAAE,CAAC;QACzD,IAAI,SAAS,GAAW,gBAAU,CAAC,eAAe,CAAC,eAAe,CAAW,CAAC;QAC9E,IAAI,SAAS,IAAI,EAAE,KAAK,SAAS,CAAC,IAAI,EAAE,EAAE;YACtC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA2C,CAAC;SAC7E;QACD,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,CAAC,IAAI,CAAC;gBACT,SAAS,EAAE,MAAM;gBACjB,KAAK,EAAE,KAAK;aACf,CAAC,CAAC;YACH,gBAAU,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtE,gBAAU,CAAC,UAAU,EAAE,CAAC;SAC3B;IACL,CAAC;IAED;;;;;OAKG;IACH,SAAgB,eAAe,CAAC,eAAuB,EAAE,aAAqB;QAC1E,IAAI,CAAC,GAAG,yCAAiB,CAAC,GAAG,CAAC;QAC9B,IAAI,IAAI,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC;QACzC,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC;QACjF,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,IAAI,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC;QACxG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,yCAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,yCAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,yCAAiB,CAAC,SAAS,CAAC;QAC1G,OAAO,CAAC,CAAC;IACb,CAAC;IAPe,gCAAe,kBAO9B,CAAA;IAED,kBAAkB;IAClB,SAAgB,qBAAqB;QACjC,MAAM,eAAe,GAAW,oBAAoB,CAAC;QACrD,IAAI,OAAO,GAA2C,EAAE,CAAC;QACzD,IAAI,SAAS,GAAW,gBAAU,CAAC,eAAe,CAAC,eAAe,CAAW,CAAC;QAC9E,IAAI,SAAS,IAAI,EAAE,KAAK,SAAS,CAAC,IAAI,EAAE,EAAE;YACtC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA2C,CAAC;SAC7E;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IARe,sCAAqB,wBAQpC,CAAA;IAED,IAAI,uBAAuB,GAAW,iBAAiB,CAAC;IACxD,YAAY;IACZ,SAAgB,iBAAiB,CAAC,QAAgB;QAC9C,IAAI,IAAI,GAAG,gBAAU,CAAC,eAAe,CAAC,uBAAuB,CAAW,CAAC;QACzE,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;YACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;SACvC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,gBAAU,CAAC,eAAe,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3E,gBAAU,CAAC,UAAU,EAAE,CAAC;SAC3B;IACL,CAAC;IAZe,kCAAiB,oBAYhC,CAAA;IAED,cAAc;IACd,SAAgB,qBAAqB,CAAC,QAAgB;QAClD,IAAI,IAAI,GAAG,gBAAU,CAAC,eAAe,CAAC,uBAAuB,CAAW,CAAC;QACzE,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;YACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;SACvC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACjB,CAAC;IARe,sCAAqB,wBAQpC,CAAA;IAED,IAAI,yBAAyB,GAAW,mBAAmB,CAAC;IAC5D,YAAY;IACZ,SAAgB,mBAAmB,CAAC,QAAgB;QAChD,IAAI,IAAI,GAAG,gBAAU,CAAC,eAAe,CAAC,yBAAyB,CAAW,CAAC;QAC3E,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;YACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;SACvC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpB,gBAAU,CAAC,eAAe,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7E,gBAAU,CAAC,UAAU,EAAE,CAAC;SAC3B;IACL,CAAC;IAZe,oCAAmB,sBAYlC,CAAA;IAED,cAAc;IACd,SAAgB,uBAAuB,CAAC,QAAgB;QACpD,IAAI,IAAI,GAAG,gBAAU,CAAC,eAAe,CAAC,yBAAyB,CAAW,CAAC;QAC3E,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE;YACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;SACvC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACjB,CAAC;IARe,wCAAuB,0BAQtC,CAAA;IAQD,SAAgB,iBAAiB,CAAC,OAAe,EAAE,GAAW,EAAE,SAAiB;QAC7E,IAAI,cAAc,GAAG,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAA0B,CAAC;QAC3F,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,EAAE;gBACtC,IAAI,GAAG,EAAE;oBACL,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;iBAC/B;gBACD,IAAI,SAAS,EAAE;oBACX,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;iBAC3C;gBACD,YAAY,GAAG,KAAK,CAAC;gBACrB,MAAM;aACT;SACJ;QACD,IAAI,YAAY,EAAE;YACd,cAAc,CAAC,IAAI,CAAC;gBAChB,OAAO,EAAE,OAAO;gBAChB,GAAG,EAAE,GAAG;gBACR,SAAS,EAAE,SAAS;aACvB,CAAC,CAAC;SACN;IACL,CAAC;IAvBe,kCAAiB,oBAuBhC,CAAA;IAED,SAAgB,kBAAkB,CAAC,OAAe;QAC9C,IAAI,cAAc,GAAwB,SAA2C,CAAC;QACtF,IAAI,iBAAiB,GAAG,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAA0B,CAAC;QAC9F,IAAI,iBAAiB,EAAE;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/C,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,EAAE;oBACzC,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM;iBACT;qBAAM;oBACH,cAAc,GAAG,SAA2C,CAAC;iBAChE;aACJ;SACJ;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAde,mCAAkB,qBAcjC,CAAA;IAED,KAAK,UAAU,cAAc;QACzB,MAAM,oCAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,kBAAkB,EAAE,CAAC;QAC3B,cAAc,EAAE,CAAC;IACrB,CAAC;IAGD,SAAgB,iBAAiB,CAAC,EAAU;QACxC,IAAI,GAAG,GAAG,oCAAa,CAAC,SAAS,CAAC,uBAAU,EAAE,EAAE,CAAC,CAAC;QAClD,OAAO,GAAG,CAAC,EAAE,CAAC;IAClB,CAAC;IAHe,kCAAiB,oBAGhC,CAAA;IAED,SAAS,cAAc;QACnB,IAAI,GAAG,GAAG,oCAAa,CAAC,YAAY,CAAC,WAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,EAAE,IAAI,GAAG,EAAE;YAChB,IAAI,OAAO,GAAG,GAAG,CAAC,EAAE,CAAU,CAAC;YAC/B,IAAI,OAAO,EAAE;gBACT,IAAI,IAAI,GAAG,IAAI,2BAAiB,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACxB,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;aACtC;SACJ;IACL,CAAC;IAED,SAAS,eAAe;QACpB,OAAO,2BAA2B,CAAA;IACtC,CAAC;IACD,KAAK,UAAU,kBAAkB;QAC7B,IAAI,OAAO,GAAG,MAAM,4BAAQ,CAAC,OAAO,CAAM,eAAe,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,OAAO,EAAE;YACT,IAAI,IAAI,GAAe,OAAqB,CAAC;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBAClC,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAa,CAAC;gBAClC,IAAI,OAAO,EAAE;oBACT,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;iBAC/C;aACJ;SACJ;IACL,CAAC;IAED,SAAgB,cAAc,CAAC,EAAU;QACrC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACtB,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,CAAW,CAAC;SACzC;aAAM;YACH,oDAAoD;YACpD,OAAO,EAAE,CAAC;SACb;IACL,CAAC;IAPe,+BAAc,iBAO7B,CAAA;IAED,SAAgB,oBAAoB,CAAC,EAAU;QAC3C,OAAO,oCAAa,CAAC,SAAS,CAAC,uBAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC;IAFe,qCAAoB,uBAEnC,CAAA;IAED,SAAgB,aAAa,CAAC,EAAU;QACpC,OAAO,oCAAa,CAAC,SAAS,CAAC,uBAAU,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAFe,8BAAa,gBAE5B,CAAA;IAED,SAAgB,cAAc;QAC1B,OAAO,oCAAa,CAAC,YAAY,CAAC,uBAAU,CAAC,CAAC;IAClD,CAAC;IAFe,+BAAc,iBAE7B,CAAA;IAED,2CAA2C;IAC3C,0DAA0D;IAC1D,IAAI;IAEJ,oDAAoD;IACpD,4DAA4D;IAC5D,IAAI;IAEJ,4CAA4C;IAC5C,2DAA2D;IAC3D,IAAI;IAEJ,qDAAqD;IACrD,6DAA6D;IAC7D,IAAI;IAEJ,SAAgB,WAAW,CAAC,EAAU;QAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACvB,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IALe,4BAAW,cAK1B,CAAA;IAED,SAAgB,aAAa;QACzB,OAAO,gBAAgB,CAAC,WAAW,CAAC,6BAAa,CAAC,4BAA4B,CAAE,CAAC;IACrF,CAAC;IAFe,8BAAa,gBAE5B,CAAA;IAED,uFAAuF;IACvF,kFAAkF;IAClF,8DAA8D;IAC9D,2BAA2B;IAC3B,mDAAmD;IACnD,8EAA8E;IAC9E,6BAA6B;IAC7B,IAAI;IAEJ,4EAA4E;IAC5E,sEAAsE;IACtE,4DAA4D;IAC5D,sBAAsB;IACtB,iFAAiF;IACjF,QAAQ;IACR,IAAI;IAEJ,8CAA8C;IAC9C,uGAAuG;IACvG,qEAAqE;IACrE,QAAQ;IACR,6BAA6B;IAC7B,IAAI;IAEJ,6DAA6D;IAC7D,kFAAkF;IAClF,8DAA8D;IAC9D,yBAAyB;IACzB,IAAI;IAEJ,IAAI,UAA+B,CAAC;IAE7B,KAAK,UAAU,IAAI,CAAC,UAAqB;QAC5C,MAAM,cAAc,EAAE,CAAC;QACvB,IAAI,UAAU;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,gBAAgB,GAAG,EAAE,CAAC;QACtB,cAAc,GAAG,gBAAU,CAAC,eAAe,CAAC,QAAQ,CAAW,CAAC;QAChE,UAAU,GAAG,CAAC,CAAC,gBAAU,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC3D,IAAI,cAAc,KAAK,SAAS;YAAE,cAAc,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,GAAmB,EAAE,CAAC;QACjC,EAAE,sBAAsB;YACpB,IAAI,GAAG,GAAG,gBAAU,CAAC,eAAe,CAAC,OAAO,CAAQ,CAAC;YACrD,IAAI,GAAG,KAAK,SAAS,EAAE;gBACnB,aAAa,GAAG,EAAE,CAAC;gBACnB,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,qCAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,GAAG,aAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;aACnE;iBAAM;gBACH,aAAa,GAAG,EAAE,CAAC;aACtB;SACJ;QACD,0BAA0B;QAC1B,4DAA4D;QAC5D,+BAA+B;QAC/B,4EAA4E;QAC5E,0EAA0E;QAC1E,QAAQ;QACR,IAAI;QACJ,EAAE,0BAA0B;YACxB,IAAI,GAAG,GAAG,gBAAU,CAAC,eAAe,CAAC,OAAO,CAAQ,CAAC;YACrD,IAAI,GAAG,KAAK,SAAS,EAAE;gBACnB,gBAAgB,GAAG,EAAE,CAAC;gBACtB,gBAAgB,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,6CAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1E,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;aACtE;iBAAM;gBACH,gBAAgB,GAAG,EAAE,CAAC;aACzB;SACJ;QAED,EAAC,kBAAkB;YACf,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;gBAChC,wCAAwC;gBACxC,qCAAY,CAAC,UAAU,EAAE,CAAC;gBAC1B,qCAAqC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;gBAChC,mCAAmC;gBACnC,qCAAY,CAAC,WAAW,EAAE,CAAC;gBAC3B,qCAAqC;YACzC,CAAC,CAAC,CAAC;SACN;QAED,IAAI,OAAO,CAAC,MAAM,EAAE;YAChB,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC9B;QACD,IAAI,UAAU;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE;YACb,UAAU,GAAG,IAAI,oCAAmB,CAAC;YACrC,UAAU,CAAC,GAAG,CAAC,iBAAW,CAAC,aAAa,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAClE,UAAU,CAAC,GAAG,CAAC,iBAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACvE,UAAU,CAAC,GAAG,CAAC,2BAAY,CAAC,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1D,UAAU,CAAC,GAAG,CAAC,2BAAY,CAAC,mBAAmB,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACzE,UAAU,CAAC,GAAG,CAAC,2BAAY,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YACxD,UAAU,CAAC,GAAG,CAAC,2BAAY,CAAC,aAAa,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;SACjE;QACD,SAAS,EAAE,CAAC;QACZ,IAAI,UAAU;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAEjC,KAAK,IAAI,KAAK,IAAI,gBAAiB,EAAE,EAAE,WAAW;YAC9C,IAAI,iBAAA,SAAU,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,qBAAa,CAAC,WAAW;gBACzD,CAAC,KAAK,CAAC,EAAE,KAAK,iBAAA,SAAU,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,KAAK,CAAC,MAAM,KAAK,yCAAiB,CAAC,SAAS,CAAC,EAAE;gBAC9F,KAAK,CAAC,MAAM,GAAG,yCAAiB,CAAC,SAAS,CAAC;aAC9C;SACJ;QACD,gBAAgB;QAChB,oEAAoE;QACpE,mEAAmE;QACnE,OAAO;QACP,qEAAqE;QACrE,uEAAuE;QACvE,OAAO;QACP,sEAAsE;QACtE,uDAAuD;QACvD,OAAO;QACP,6DAA6D;QAC7D,qDAAqD;QACrD,OAAO;QACP,IAAI,UAAU;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAErC,CAAC;IAvFqB,qBAAI,OAuFzB,CAAA;IAED,SAAS,YAAY,CAAC,MAAc;QAChC,IAAI,CAAC,GAAG,MAAM,CAAC;QACf,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpB,iBAAA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACtB;IACL,CAAC;IAED,SAAS,WAAW,CAAC,GAAW;QAC5B,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpB,iBAAA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACrB;IACL,CAAC;IAED,SAAS,cAAc,CAAC,IAAY;QAChC,IAAI,CAAC,GAAG,IAAI,CAAC;QACb,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAqB,CAAC;YACxC,iBAAA,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxB;IACL,CAAC;IAED,SAAgB,mBAAmB,CAAC,aAAqB;QACrD,IAAI,CAAC,GAAG,aAAa,CAAC;QACtB,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACpB,6DAA6B,CAAC,6CAA6C,CAAC,CAAC,CAAC,CAAC;SAClF;IACL,CAAC;IANe,oCAAmB,sBAMlC,CAAA;IAED;;;;OAIG;IACH,SAAgB,qBAAqB,CAAC,KAAa,EAAE,MAAkB;QACnE,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,gBAAgB,GAAG,KAAK,CAAW,CAAC;QACvE,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;YAClB,OAAO;SACV;QACD,gBAAU,CAAC,eAAe,CAAC,gBAAgB,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC;QAC9D,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAPe,sCAAqB,wBAOpC,CAAA;IAED;;OAEG;IACH,SAAgB,oBAAoB;QAChC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,gBAAgB,GAAG,CAAC,CAAW,CAAC;YACnE,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,kBAAU,CAAC,IAAI,EAAE;gBACvB,KAAK,GAAG,CAAC,CAAC;aACb;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAXe,qCAAoB,uBAWnC,CAAA;IAED;;;;OAIG;IACH,SAAgB,uBAAuB,CAAC,OAAe,EAAE,MAAkB;QACvE,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAAW,CAAC;QAC/D,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM,IAAI,CAAC,EAAE;YACb,OAAO;SACV;QACD,gBAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC;QAC3D,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;QACtD,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IATe,wCAAuB,0BAStC,CAAA;IAED;;OAEG;IACH,SAAgB,oBAAoB;QAChC,IAAI,GAAG,GAAW,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAAW,CAAC;QAC/D,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,oBAAoB,CAAW,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,KAAK,kBAAU,CAAC,IAAI,EAAE;YAC5B,GAAG,GAAG,CAAC,CAAC;SACX;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IATe,qCAAoB,uBASnC,CAAA;IAED;;;;OAIG;IACH,SAAgB,qBAAqB,CAAC,OAAe,EAAE,MAAkB;QACrE,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAAW,CAAC;QAC/D,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM,IAAI,CAAC,EAAE;YACb,OAAO;SACV;QACD,gBAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC;QAC3D,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;QACtD,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IATe,sCAAqB,wBASpC,CAAA;IAED;;OAEG;IACH,SAAgB,kBAAkB;QAC9B,IAAI,GAAG,GAAW,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAAW,CAAC;QAC/D,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,oBAAoB,CAAW,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,KAAK,kBAAU,CAAC,IAAI,EAAE;YAC5B,GAAG,GAAG,CAAC,CAAC;SACX;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IATe,mCAAkB,qBASjC,CAAA;IAED;;OAEG;IACH,SAAgB,aAAa;QACzB,IAAI,GAAG,GAAY,KAAK,CAAC;QACzB,iDAAiD;QACjD,qDAAqD;QACrD,mDAAmD;QACnD,qDAAqD;QACrD,OAAO,GAAG,CAAC;IACf,CAAC;IAPe,8BAAa,gBAO5B,CAAA;IAGD,SAAS,IAAI;QACT,IAAI,QAAQ,GAAG,gBAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,QAAQ,GAAG,aAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAQ,CAAC;QACpD,IAAI,CAAC,0BAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACnC,gBAAU,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;SAClD;QACD,kDAAkD;QAClD,kDAAkD;QAClD,2CAA2C;QAC3C,sDAAsD;QACtD,IAAI;QACJ,QAAQ,GAAG,gBAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,QAAQ,GAAG,gBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAQ,CAAC;QACnD,IAAI,CAAC,0BAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;YACnC,gBAAU,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;SAClD;IACL,CAAC;IAED,SAAS,aAAa;QAClB,gBAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;QACtD,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,UAAU,SAAS;QACpB,IAAI,KAAK,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,IAAI,EAAE;YACN,iBAAA,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,aAAa,EAAE,EAAE,mBAAmB;gBACrC,aAAa,GAAG,EAAE,CAAC;aACtB;YACD,uBAAuB;YACvB,yBAAyB;YACzB,IAAI;YACJ,IAAI,CAAC,gBAAgB,EAAE;gBACnB,gBAAgB,GAAG,EAAE,CAAC;aACzB;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,OAAO,EAAE;oBAC9C,IAAI,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC;oBACxE,IAAI,KAAK,GAAG,CAAC,EAAE;wBACX,KAAK,GAAG,CAAC,CAAC;wBACV,IAAI,KAAK,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;wBACxD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;wBACvB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBAChC;oBACD,6FAA6F;oBAC7F,wCAAwC;oBACxC,IAAI;iBACP;qBAAM,IAAI,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,MAAM,EAAE;oBACpD,wEAAwE;oBACxE,8DAA8D;oBAC9D,yEAAyE;oBACzE,mCAAmC;oBACnC,IAAI;iBACP;qBAAM,IAAI,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,WAAW,EAAE;oBACzD,IAAI,GAAG,GAAG,oCAAa,CAAC,SAAS,CAAC,iCAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBACzE,IAAI,GAAG,CAAC,QAAQ,KAAK,sBAAQ,CAAC,WAAW,EAAE,EAAE,SAAS;wBAClD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;4BAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;4BAAC,SAAS;yBAAE;wBACnE,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;4BACpE,IAAI,KAAK,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;4BAC5D,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;4BACvB,KAAK,CAAC,MAAM,GAAG,yCAAiB,CAAC,GAAG,CAAC;4BACrC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBAChC;qBACJ;iBACJ;aACJ;YACD,IAAI,EAAE,CAAC;SACV;IACL,CAAC;IAED,KAAK,UAAU,mBAAmB,CAAC,IAAkB,EAAE,MAAc;QACjE,aAAa,CAAC,iBAAA,SAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChD,iBAAA,SAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,KAAK,UAAU,mBAAmB,CAAC,KAAoB;QACnD,6BAA6B;QAC7B,sCAAsC;QACtC,4BAA4B;QAC5B,yBAAyB;QACzB,wBAAwB;QACxB,gBAAgB;QAChB,iCAAiC;QACjC,yBAAyB;QACzB,uCAAuC;QACvC,+BAA+B;QAC/B,gCAAgC;QAChC,mBAAmB;QACnB,4FAA4F;QAC5F,oCAAoC;QACpC,gBAAgB;QAChB,YAAY;QACZ,QAAQ;QACR,IAAI;QACJ,mCAAmC;IACvC,CAAC;IAED,KAAK,UAAU,aAAa,CAAC,QAAkC,EAAE,IAAkB,EAAE,MAAc;QAC/F,IAAI,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,OAAO,EAAE;YAC9C,IAAI,GAAG,GAAG,aAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC;YACvE,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,WAAW;gBACvB,IAAI,KAAK,GAAG,aAAc,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,GAAG,GAAG,CAAC,EAAE;oBACT,IAAI,UAAU,GAAG,CAAC,CAAC;oBACnB,IAAI,MAAM,GAAG,CAAC,IAAI,iBAAA,SAAS,IAAI,iBAAA,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,qBAAa,CAAC,OAAO,EAAE;wBACjF,UAAU,GAAG,CAAC,CAAC;qBAClB;oBACD,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;wBACnC,aAAc,CAAC,CAAC,CAAC,GAAG,aAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC7C;oBACD,aAAc,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;iBACtC;gBACD,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAY,CAAC,MAAM,EAAE;oBACrF,yBAAyB;iBAC5B;aACJ;iBAAM,EAAE,MAAM;gBACX,IAAI,KAAK,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACxD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;gBACvB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAY,CAAC,MAAM,EAAE;oBACrF,yBAAyB;iBAC5B;gBACD,YAAY;gBACZ,yFAAyF;gBACzF,0CAA0C;gBAC1C,WAAW;gBACX,aAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI;aACP;YACD,iBAAA,mBAAmB,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC;YACzC,IAAI,EAAE,CAAC;SACV;aAAM,IAAI,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,MAAM,EAAE;YACpD,yEAAyE;YACzE,8BAA8B;YAC9B,sCAAsC;YACtC,qBAAqB;YACrB,0CAA0C;YAC1C,uDAAuD;YACvD,YAAY;YACZ,oCAAoC;YACpC,QAAQ;YACR,kBAAkB;YAClB,8DAA8D;YAC9D,uFAAuF;YACvF,oCAAoC;YACpC,IAAI;YACJ,UAAU;SACb;aAAM,IAAI,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,SAAS,EAAE;YACvD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,qBAAa,CAAC,SAAS,EAAE;gBACjE,cAAc,GAAG,gBAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC,CAAC,iBAAiB;gBAC7E,aAAa,EAAE,CAAC;aACnB;SACJ;aAAM,IAAI,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,WAAW,EAAE;YACzD,IAAI,GAAG,GAAG,oCAAa,CAAC,SAAS,CAAC,iCAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACzE,IAAI,GAAG,CAAC,QAAQ,KAAK,sBAAQ,CAAC,WAAW,EAAE,EAAE,SAAS;gBAClD,IAAI,MAAM,KAAK,CAAC,EAAE;oBAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAAC,OAAO;iBAAE;gBAC5D,IAAI,GAAG,GAAG,gBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC1E,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,MAAM;oBACjB,IAAI,KAAK,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC5D,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;oBACvB,KAAK,CAAC,MAAM,GAAG,yCAAiB,CAAC,GAAG,CAAC;oBACrC,gBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9B,iBAAA,sBAAsB,CAAC,IAAI,CAAC,gBAAiB,CAAC,CAAC;iBAClD;gBACD,IAAI,EAAE,CAAC;aACV;SACJ;QAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,qBAAa,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,qBAAa,CAAC,SAAS,EAAE;YAClH,cAAc,GAAG,CAAC,CAAC,CAAC;YACpB,aAAa,EAAE,CAAC;SACnB;QAED,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO;YAC3H,IAAI,QAAQ,CAAC,aAAa,KAAK,qBAAa,CAAC,OAAO,EAAE,EAAE,8BAA8B;gBAClF,2EAA2E;gBAC3E,8BAA8B;aACjC;YACD,IAAI,QAAQ,CAAC,aAAa,KAAK,qBAAa,CAAC,WAAW,EAAE;gBACtD,IAAI,KAAK,GAAG,gBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAC3E,IAAI,KAAK;oBAAE,KAAK,CAAC,MAAM,GAAG,yCAAiB,CAAC,SAAS,CAAC;aACzD;SACJ;QAED,gEAAgE;QAChE,6EAA6E;QAC7E,qKAAqK;QACrK,2EAA2E;QAC3E,uCAAuC;QACvC,6FAA6F;QAC7F,eAAe;QACf,uFAAuF;QACvF,6FAA6F;QAC7F,QAAQ;QACR,6BAA6B;QAC7B,mEAAmE;QAEnE,sGAAsG;QACtG,2EAA2E;QAC3E,6BAA6B;QAC7B,wFAAwF;QACxF,IAAI;QACJ,4BAA4B;QAC5B,8CAA8C;QAC9C,sGAAsG;QACtG,2EAA2E;QAC3E,iEAAiE;QACjE,qBAAqB;QACrB,+HAA+H;QAC/H,iBAAiB;QACjB,eAAe;QACf,eAAe;QACf,QAAQ;QACR,mDAAmD;QACnD,IAAI;QAEJ,oBAAoB,GAAG,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC;QACzI,yBAAyB;QACzB,IAAI,CAAC,KAAK,MAAM,IAAI,kBAAkB,EAAE,EAAE;YACtC,wBAAwB,EAAE,CAAC;SAC9B;IACL,CAAC;IAED,SAAS,wBAAwB;QAC7B,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,WAAW,CAAW,CAAC;QAC1D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,IAAI,oBAAoB,EAAE;YACtB,CAAC,GAAG,CAAC,CAAC;SACT;aAAM;YACH,CAAC,EAAE,CAAC;SACP;QACD,gBAAU,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,SAAgB,oBAAoB;QAChC,8DAA8D;QAC9D,IAAI,IAAI,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5C,IAAI,mBAAmB,GAAG,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAW,CAAC,CAAA,cAAc;QACxF,mBAAmB,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,IAAI,GAAG,iBAAiB,CAAC;QAC7B,IAAI,cAAc,GAAG,gBAAU,CAAC,eAAe,CAAC,IAAI,CAAW,CAAC;QAChE,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,cAAc,IAAI,mBAAmB,EAAE,EAAC,cAAc;YACtD,OAAO;SACV;QACD,oBAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,wBAAgB,CAAC,KAAK,CAAC,CAAC;QAC9E,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC;QAE5D,IAAI,mBAAmB,GAAG,gBAAU,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAW,CAAC;QAC/F,mBAAmB,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,mBAAmB,EAAE,CAAC;QACtB,gBAAU,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAAC,CAAA,mBAAmB;QAEpG,IAAI,kBAAkB,EAAE,EAAE;YACtB,gBAAU,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA,0BAA0B;SACzE;QACD,gBAAU,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC;QACvD,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAzBe,qCAAoB,uBAyBnC,CAAA;IAED;;OAEG;IACH,SAAgB,kBAAkB;QAC9B,IAAI,mBAAmB,GAAG,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAW,CAAC;QAC1E,oBAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,wBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5E,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,mBAAmB,GAAG,CAAC,CAAC;QAChE,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IALe,mCAAkB,qBAKjC,CAAA;IAED,YAAY;IACZ,SAAgB,eAAe;QAC3B,IAAI,IAAI,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,mBAAmB,GAAG,gBAAU,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAW,CAAC;QAC/F,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,WAAW,CAAW,CAAC;QAC1D,IAAI,EAAE,GAAG,oBAAY,CAAC,OAAO,CAAC;QAC9B,QAAQ,IAAI,CAAC,aAAa,EAAE;YACxB,KAAK,qBAAa,CAAC,OAAO;gBACtB;oBACI,EAAE,GAAG,oBAAY,CAAC,OAAO,CAAC;iBAC7B;gBACD,MAAM;YACV,KAAK,qBAAa,CAAC,WAAW;gBAC1B;oBACI,EAAE,GAAG,oBAAY,CAAC,KAAK,CAAC;iBAC3B;gBACD,MAAM;YACV,KAAK,qBAAa,CAAC,SAAS;gBACxB;oBACI,EAAE,GAAG,oBAAY,CAAC,KAAK,CAAC;iBAC3B;gBACD,MAAM;SACb;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACtB,oBAAU,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,qBAAa,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;SACnH;IACL,CAAC;IAzBe,gCAAe,kBAyB9B,CAAA;IAED,SAAgB,gBAAgB,CAAC,GAAW;QACxC,OAAO,gBAAU,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,4BAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACnF,CAAC;IAFe,iCAAgB,mBAE/B,CAAA;IAED,SAAgB,WAAW,CAAC,GAAW;QACnC,OAAO,gBAAU,CAAC,eAAe,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,8BAAe,CAAC,IAAI,CAAC;IACjF,CAAC;IAFe,4BAAW,cAE1B,CAAA;IAED,SAAgB,cAAc,CAAC,GAAW,EAAE,KAAsB;QAC9D,gBAAU,CAAC,eAAe,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;QACrD,gBAAU,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAHe,+BAAc,iBAG7B,CAAA;IAEM,KAAK,UAAU,aAAa,CAAC,MAAc;QAC9C,IAAI,gBAAU,CAAC,eAAe,CAAC,aAAa,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC,CAAC,YAAY;QAClF,IAAI,MAAM,GAAG,aAAa,EAAE,CAAC;QAC7B,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAEpC,MAAM,UAAU,GAAY,KAAK,CAAC,CAAA,QAAQ;QAC1C,IAAI,CAAC,UAAU,EAAE;YACb,gBAAU,CAAC,eAAe,CAAC,aAAa,GAAG,MAAM,CAAC;YAClD,OAAO,IAAI,CAAC;SACf;QAED,uEAAuE;QACvE,yDAAyD;QACzD,gFAAgF;QAChF,mBAAmB;QACnB,IAAI;QACJ,yBAAyB;QACzB,sKAAsK;QACtK,aAAa;QACb,iGAAiG;QACjG,qGAAqG;QACrG,yDAAyD;QACzD,mHAAmH;QACnH,mBAAmB;QACnB,WAAW;QACX,iFAAiF;QACjF,2DAA2D;QAC3D,4BAA4B;QAC5B,sHAAsH;QACtH,QAAQ;QACR,oBAAoB;QACpB,IAAI;IACR,CAAC;IAhCqB,8BAAa,gBAgClC,CAAA;IAED,wBAAwB;IAExB;;;OAGG;IACH,4CAA4C;IAC5C,+BAA+B;IAC/B,+CAA+C;IAC/C,8BAA8B;IAC9B,mDAAmD;IACnD,kBAAkB;IAClB,IAAI;IAEJ;;OAEG;IACH,SAAgB,6BAA6B;QACzC,qCAAqC;QACrC,wBAAwB;QACxB,WAAW;QACX,6DAA6D;QAC7D,2CAA2C;QAC3C,yEAAyE;QACzE,mCAAmC;QACnC,0BAA0B;QAC1B,YAAY;QACZ,QAAQ;QACR,IAAI;QACJ,IAAI,IAAI,GAAG,gBAAU,CAAC,eAAe,CAAC,qBAAqB,CAAW,CAAC;QACvE,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE;YAC5B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;SACpC;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IAlBe,8CAA6B,gCAkB5C,CAAA;IAED;;;OAGG;IACH,SAAgB,uBAAuB;QACnC,IAAI,KAAK,GAAG,gBAAU,CAAC,eAAe,CAAC,iBAAiB,CAAa,CAAC;QACtE,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACzC,OAAO,KAAK,CAAC;IACjB,CAAC;IAJe,wCAAuB,0BAItC,CAAA;IAED;;OAEG;IACH,SAAgB,sBAAsB;QAClC,gBAAU,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QACnD,gBAAU,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAHe,uCAAsB,yBAGrC,CAAA;IAED;;OAEG;IACH,SAAgB,uBAAuB;QACnC,IAAI,CAAC,GAAG,uBAAuB,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,CAAC;IAHe,wCAAuB,0BAGtC,CAAA;IAED,qCAAqC;IACrC,iDAAiD;IACjD,uCAAuC;IACvC,oCAAoC;IACpC,0CAA0C;IAC1C,4DAA4D;IAC5D,yDAAyD;IACzD,gCAAgC;IAChC,iCAAiC;IACjC,mDAAmD;IACnD,sDAAsD;IACtD,2DAA2D;IAC3D,sFAAsF;IACtF,wDAAwD;IACxD,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,IAAI;IAEJ,SAAS,wBAAwB,CAAC,KAAe;QAC7C,IAAI,KAAK,GAAG,gBAAU,CAAC,eAAe,CAAC,iBAAiB,CAAa,CAAC;QACtE,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5C,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,SAAS;aACZ;iBAAM;gBACH,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACtB;SACJ;QACD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,gBAAU,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC;QACtD,gBAAU,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,sDAAsD;IACtD,+BAA+B;IAC/B,4BAA4B;IAC5B,6DAA6D;IAC7D,2CAA2C;IAC3C,yEAAyE;IACzE,gCAAgC;IAChC,0BAA0B;IAC1B,YAAY;IACZ,QAAQ;IACR,mCAAmC;IACnC,IAAI;IAEJ,OAAO;IAEP,SAAgB,oBAAoB,CAAC,IAA2B;QAC5D,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,IAAI,EAAE;YACN,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE;gBAChB,OAAO,GAAG,CAAC;aACd;YACD,IAAI,aAAa,GAAG,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAW,CAAC;YACrE,IAAI,GAAG,GAAa,EAAE,CAAC;YACvB,IAAI,aAAa,EAAE;gBACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAa,CAAC;aAC/C;YACD,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3B;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAfe,qCAAoB,uBAenC,CAAA;IAED,SAAgB,uBAAuB,CAAC,OAAe;QACnD,IAAI,aAAa,GAAG,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAW,CAAC;QACrE,IAAI,GAAG,GAAa,EAAE,CAAC;QACvB,IAAI,aAAa,EAAE;YACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAa,CAAC;SAC/C;QACD,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACnB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACrB;QACD,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7D,gBAAU,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAZe,wCAAuB,0BAYtC,CAAA;IAED,SAAgB,YAAY;QACxB,IAAI,CAAC,GAAG,uBAAW,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC;IACnB,CAAC;IARe,6BAAY,eAQ3B,CAAA;IAED,SAAgB,kBAAkB;QAC9B,IAAI,OAAO,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,6BAAa,CAAC,2BAA2B,CAAC;IACtF,CAAC;IAHe,mCAAkB,qBAGjC,CAAA;IAED,SAAgB,kBAAkB,CAAC,QAAgB;QAC/C,IAAI,GAAG,GAAG,oCAAa,CAAC,YAAY,CAAC,WAAI,CAAC,CAAC;QAC3C,IAAI,QAAQ,GAAgC,EAAE,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;YACnB,IAAI,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE;gBAChC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC5B;SACJ;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAVe,mCAAkB,qBAUjC,CAAA;IAED,wBAAwB;IAExB,SAAgB,eAAe;QAC3B,IAAI,IAAI,GAAW,CAAC,CAAC;QACrB,IAAI,SAAS,GAAW,qBAAqB,CAAC;QAC9C,IAAI,MAAM,GAAG,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAW,CAAC;QAC7D,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IANe,gCAAe,kBAM9B,CAAA;IAED,SAAgB,YAAY,CAAC,IAAY,EAAE,cAAsB,CAAC;QAC9D,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,WAAW,GAAG,IAAI,IAAI,CAAC,uBAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,IAAI,IAAI,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,WAAW,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE;YAClC,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,KAAK,EAAE;YAC3C,OAAO,IAAI,CAAC;SACf;QAAC,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE;YAChC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,WAAW,EAAE;gBAChC,IAAI,WAAW,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE;oBACvC,OAAO,IAAI,CAAC;iBACf;aACJ;SACJ;aAAM,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE;YAC7E,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IArBe,6BAAY,eAqB3B,CAAA;IAED,SAAgB,YAAY,CAAC,KAAgB;QACzC,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;QACrD,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAHe,6BAAY,eAG3B,CAAA;IAED,SAAgB,YAAY;QACxB,IAAI,CAAC,GAAG,gBAAU,CAAC,eAAe,CAAC,gBAAgB,CAAW,CAAC;QAC/D,CAAC,GAAG,CAAC,KAAK,iBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAS,CAAC,IAAI,CAAC;QAC3D,OAAO,CAAC,CAAC;IACb,CAAC;IAJe,6BAAY,eAI3B,CAAA;IAED,SAAgB,oBAAoB;QAChC,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;QACrC,IAAI,QAAQ,GAAY,YAAY,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,SAAS,GAAc,YAAY,EAAE,CAAC;QAC1C,IAAI,QAAQ,EAAE;YACV,GAAG,GAAG,IAAI,CAAC;YACX,YAAY,CAAC,iBAAS,CAAC,IAAI,CAAC,CAAC;SAChC;aAAM;YACH,GAAG,GAAG,SAAS,KAAK,iBAAS,CAAC,IAAI,CAAC;SACtC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAZe,qCAAoB,uBAYnC,CAAA;IAED,SAAgB,eAAe,CAAC,IAAa;QACzC,IAAI,SAAS,GAAW,qBAAqB,CAAC;QAC9C,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAW,CAAC,OAAO,EAAE,CAAC;QAC5E,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAJe,gCAAe,kBAI9B,CAAA;IAED,8FAA8F;IAC9F,+EAA+E;IAC/E,+DAA+D;IAC/D,4BAA4B;IAC5B,8BAA8B;IAC9B,wCAAwC;IACxC,0BAA0B;IAC1B,qBAAqB;IACrB,YAAY;IACZ,QAAQ;IACR,kBAAkB;IAClB,IAAI;IAEJ,SAAgB,mBAAmB,CAAC,MAAc;QAC9C,IAAI,SAAS,GAAG,WAAW,CAAC;QAC5B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,SAAS,GAAG,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAW,CAAC;QAChE,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,IAAI,SAAS,EAAE;YACX,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAa,CAAC;YAChD,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7D;QACD,IAAI,CAAC,KAAK,EAAE;YACR,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACpE,gBAAU,CAAC,UAAU,EAAE,CAAC;YACxB,iBAAA,qBAAqB,CAAC,IAAI,EAAE,CAAC;SAChC;IACL,CAAC;IAfe,oCAAmB,sBAelC,CAAA;IAED,SAAgB,iBAAiB,CAAC,MAAc;QAC5C,IAAI,SAAS,GAAG,WAAW,CAAC;QAC5B,IAAI,GAAG,GAAG,KAAK,CAAC;QAChB,IAAI,SAAS,GAAG,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAW,CAAC;QAChE,IAAI,SAAS,EAAE;YACX,IAAI,WAAW,GAAa,EAAE,CAAC;YAC/B,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAa,CAAC;YAChD,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3D;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAVe,kCAAiB,oBAUhC,CAAA;IAED,wDAAwD;IACxD,uBAAuB;IACvB,8CAA8C;IAC9C,wBAAwB;IACxB,oEAAoE;IACpE,QAAQ;IACR,kBAAkB;IAClB,IAAI;IAEJ,qEAAqE;IACrE,sCAAsC;IACtC,mEAAmE;IACnE,qEAAqE;IACrE,yBAAyB;IACzB,6DAA6D;IAC7D,iFAAiF;IACjF,8CAA8C;IAC9C,2DAA2D;IAC3D,+EAA+E;IAC/E,2BAA2B;IAC3B,wCAAwC;IACxC,oBAAoB;IACpB,uBAAuB;IACvB,oEAAoE;IACpE,gBAAgB;IAChB,mBAAmB;IACnB,sCAAsC;IACtC,YAAY;IACZ,QAAQ;IACR,wBAAwB;IACxB,IAAI;IAEJ,0DAA0D;IAC1D,mCAAmC;IACnC,uBAAuB;IACvB,kCAAkC;IAClC,uEAAuE;IACvE,mDAAmD;IACnD,wBAAwB;IACxB,eAAe;IACf,uDAAuD;IACvD,iDAAiD;IACjD,yDAAyD;IACzD,kEAAkE;IAClE,8BAA8B;IAC9B,kCAAkC;IAClC,6BAA6B;IAC7B,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,kBAAkB;IAClB,IAAI;IAEJ,2DAA2D;IAC3D,mEAAmE;IACnE,qEAAqE;IACrE,yBAAyB;IACzB,6DAA6D;IAC7D,iFAAiF;IACjF,qCAAqC;IACrC,0CAA0C;IAC1C,8CAA8C;IAC9C,uDAAuD;IACvD,2EAA2E;IAC3E,oBAAoB;IACpB,gCAAgC;IAChC,wCAAwC;IACxC,yFAAyF;IACzF,+CAA+C;IAC/C,qEAAqE;IACrE,oBAAoB;IACpB,uBAAuB;IACvB,oEAAoE;IACpE,gBAAgB;IAChB,mBAAmB;IACnB,sCAAsC;IACtC,YAAY;IACZ,QAAQ;IACR,IAAI;IAEJ,SAAgB,0BAA0B,CAAC,SAAkD;QACzF,IAAI,GAAG,GAAY,KAAK,CAAC;QACzB,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;eAC5C,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;eACzB,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;eACpC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;YACxC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC1D,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC1E,IAAI,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC5C,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACnF,GAAG,GAAG,IAAI,CAAC;iBACd;aACJ;YACD,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC1D,IAAI,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC1E,IAAI,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC5C,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5D,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;oBACpD,GAAG,GAAG,IAAI,CAAC;iBACd;aACJ;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAvBe,2CAA0B,6BAuBzC,CAAA;IAED,sBAAsB;IAEtB,0EAA0E;IAC1E,iCAAiC;IACjC,mEAAmE;IACnE,2CAA2C;IAC3C,gDAAgD;IAChD,2BAA2B;IAC3B,eAAe;IACf,wEAAwE;IACxE,sFAAsF;IACtF,6CAA6C;IAC7C,sDAAsD;IACtD,kEAAkE;IAClE,YAAY;IACZ,qEAAqE;IACrE,QAAQ;IACR,wBAAwB;IACxB,IAAI;IAEJ,0EAA0E;IAC1E,4DAA4D;IAC5D,8BAA8B;IAC9B,kBAAkB;IAClB,QAAQ;IACR,mEAAmE;IACnE,2CAA2C;IAC3C,yDAAyD;IACzD,kBAAkB;IAClB,QAAQ;IACR,oEAAoE;IACpE,kFAAkF;IAClF,yCAAyC;IACzC,kDAAkD;IAClD,8DAA8D;IAC9D,QAAQ;IACR,+DAA+D;IAC/D,uCAAuC;IACvC,qFAAqF;IACrF,mCAAmC;IACnC,4DAA4D;IAC5D,QAAQ;IACR,IAAI;IAEJ,SAAgB,yBAAyB,CAAC,KAAa;QACnD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,GAAG,oCAAa,CAAC,YAAY,CAAC,yCAAmB,CAAC,CAAC;QAC3D,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,EAAE,IAAI,IAAI,EAAE;YACjB,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC;YAC7B,IAAI,KAAK,IAAI,MAAM,EAAE;gBACjB,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;aAClB;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAZe,0CAAyB,4BAYxC,CAAA;IAED,SAAgB,8BAA8B;QAC1C,OAAO,yBAAyB,CAAC;IACrC,CAAC;IAFe,+CAA8B,iCAE7C,CAAA;IAED,SAAgB,6BAA6B;QACzC,yBAAyB,GAAG,KAAK,CAAC;IACtC,CAAC;IAFe,8CAA6B,gCAE5C,CAAA;IAED,sEAAsE;IACtE,8DAA8D;IAC9D,2BAA2B;IAC3B,+BAA+B;IAC/B,gCAAgC;IAChC,mDAAmD;IACnD,8BAA8B;IAC9B,YAAY;IACZ,QAAQ;IACR,qBAAqB;IACrB,qCAAqC;IACrC,QAAQ;IACR,IAAI;IAEJ,wCAAwC;IACxC,uBAAuB;IACvB,6BAA6B;IAC7B,uCAAuC;IACvC,kEAAkE;IAClE,mCAAmC;IACnC,oCAAoC;IACpC,wCAAwC;IACxC,uFAAuF;IACvF,gBAAgB;IAChB,YAAY;IACZ,iDAAiD;IACjD,QAAQ;IACR,kBAAkB;IAClB,IAAI;IAEJ,gGAAgG;IAChG,sCAAsC;IACtC,2DAA2D;IAC3D,IAAI;IAEJ,SAAgB,qBAAqB;QACjC,eAAe,GAAG,SAAS,CAAC;IAChC,CAAC;IAFe,sCAAqB,wBAEpC,CAAA;IAED,SAAgB,aAAa;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAFe,8BAAa,gBAE5B,CAAA;IAED,sGAAsG;IACtG,uGAAuG;IACvG,wDAAwD;IACxD,kCAAkC;IAClC,2DAA2D;IAC3D,4BAA4B;IAC5B,6BAA6B;IAC7B,4DAA4D;IAC5D,0BAA0B;IAC1B,mDAAmD;IACnD,uCAAuC;IACvC,iCAAiC;IACjC,8FAA8F;IAC9F,wCAAwC;IACxC,oBAAoB;IACpB,gBAAgB;IAChB,YAAY;IACZ,QAAQ;IACR,wCAAwC;IACxC,yBAAyB;IACzB,6BAA6B;IAC7B,QAAQ;IACR,kBAAkB;IAClB,IAAI;IAEJ,SAAgB,oBAAoB,CAAC,OAAgB,EAAE,IAAa,EAAE,IAAa;QAC/E,IAAI,UAAU,GAAG,gBAAU,CAAC,eAAe,CAAC,aAAa,CAAW,CAAC;QACrE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAW,CAAC,OAAO,EAAE,CAAC;QAC7D,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QAChC,MAAM,OAAO,GAAW,CAAC,CAAC;QAC1B,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,SAAS,GAAG,aAAa,CAAC;QAC9B,IAAI,MAAM,GAAG,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAW,CAAC;QAC7D,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,IAAI,IAAI,CAAC;QACf,IAAI,QAAQ,GAAY,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,MAAM,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE;YAC5C,gBAAU,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YAC/C,gBAAU,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,uBAAW,CAAC,OAAO,EAAE,CAAC;YAClE,gBAAU,CAAC,UAAU,EAAE,CAAC;SAC3B;IACL,CAAC;IAjBe,qCAAoB,uBAiBnC,CAAA;IAED,SAAgB,mBAAmB,CAAC,QAAyB;QACzD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;aAAM;YACH,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBACxD,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC/B;SACJ;IACL,CAAC;IARe,oCAAmB,sBAQlC,CAAA;IAED,SAAgB,gBAAgB;QAC5B,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,OAAO;SACV;QACD,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAmB,EAAE,EAAmB,EAAE,EAAE;YAC1E,OAAO,EAAE,GAAG,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,EAAE;YACH,iBAAA,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvB;IACL,CAAC;IAXe,iCAAgB,mBAW/B,CAAA;IAED,SAAgB,qBAAqB;QACjC,IAAI,IAAI,GAAG,gBAAU,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;QAC/D,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAPe,sCAAqB,wBAOpC,CAAA;IAED,SAAgB,oBAAoB;QAChC,IAAI,MAAM,GAAG,2BAA2B,EAAE,CAAC;QAC3C,IAAI,MAAM,EAAE;YACR,OAAO;SACV;QACD,IAAI,UAAU,GAAW,yBAAyB,CAAC;QACnD,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,uBAAW,CAAC,OAAO,EAAE,CAAC;QAC/D,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IARe,qCAAoB,uBAQnC,CAAA;IAED,SAAgB,2BAA2B;QACvC,IAAI,IAAI,GAAY,KAAK,CAAC;QAC1B,IAAI,UAAU,GAAW,yBAAyB,CAAC;QACnD,IAAI,UAAU,GAAG,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAW,CAAC;QAClE,IAAI,UAAU,EAAE;YACZ,IAAI,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE;gBACP,IAAI,GAAG,IAAI,CAAC;aACf;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAXe,4CAA2B,8BAW1C,CAAA;IAED,SAAgB,2BAA2B;QACvC,IAAI,QAAQ,GAAY,KAAK,CAAC;QAC9B,IAAI,UAAU,GAAW,yBAAyB,CAAC;QACnD,IAAI,UAAU,GAAG,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAW,CAAC;QAClE,IAAI,UAAU,EAAE;YACZ,IAAI,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE;gBACN,QAAQ,GAAG,IAAI,CAAC;aACnB;SACJ;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAXe,4CAA2B,8BAW1C,CAAA;IAED,SAAgB,wBAAwB;QACpC,IAAI,QAAQ,GAAY,2BAA2B,EAAE,CAAC;QACtD,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;YACtB,CAAC,CAAC,SAAS,CAAC,6BAAa,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;YACrD,IAAI,UAAU,GAAW,yBAAyB,CAAC;YACnD,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC3C,gBAAU,CAAC,UAAU,EAAE,CAAC;SAC3B;IACL,CAAC;IAVe,yCAAwB,2BAUvC,CAAA;IAED,SAAgB,wBAAwB;QACpC,IAAI,MAAM,GAAY,KAAK,CAAC;QAC5B,IAAI,UAAU,GAAW,iBAAiB,CAAC;QAC3C,IAAI,UAAU,GAAG,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAW,CAAC;QAClE,IAAI,UAAU,EAAE;YACZ,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;SACrC;aAAM;YACH,IAAI,UAAU,GAAW,iBAAiB,CAAC;YAC3C,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,uBAAW,CAAC,OAAO,EAAE,CAAC;SAClE;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAXe,yCAAwB,2BAWvC,CAAA;IAEM,KAAK,UAAU,eAAe,CAAC,SAAmB;QACrD,IAAI,IAAI,GAAG,wBAAwB,EAAE,CAAC;QACtC,IAAI,OAAO,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,KAAK,qBAAa,CAAC,SAAS,EAAE;YAC9D,IAAI,IAAI,IAAI,SAAS,EAAE;gBACnB,MAAM,iBAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACxC,IAAI,UAAU,GAAW,iBAAiB,CAAC;gBAC3C,gBAAU,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,uBAAW,CAAC,OAAO,EAAE,CAAC;gBAC/D,iBAAA,kBAAkB,CAAC,IAAI,EAAE,CAAC;aAC7B;iBAAM;gBACH,iBAAA,eAAe,CAAC,IAAI,EAAE,CAAC;aAC1B;SACJ;IACL,CAAC;IAbqB,gCAAe,kBAapC,CAAA;IAED,SAAgB,kBAAkB;QAC9B,IAAI,OAAO,GAAY,KAAK,CAAC;QAC7B,IAAI,OAAO,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,KAAK,qBAAa,CAAC,SAAS,EAAE;YAC9D,OAAO,GAAG,IAAI,CAAC;SAClB;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAPe,mCAAkB,qBAOjC,CAAA;IAED,SAAgB,mBAAmB;QAC/B,IAAI,EAAE,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC;IACd,CAAC;IAHe,oCAAmB,sBAGlC,CAAA;IAED,SAAgB,0BAA0B;QACtC,IAAI,IAAI,GAAY,KAAK,CAAC;QAC1B,IAAI,OAAO,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,KAAK,qBAAa,CAAC,SAAS,EAAE;YAC9D,IAAI,IAAI,GAAG,wBAAwB,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,EAAE;gBACP,IAAI,GAAG,IAAI,CAAC;aACf;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAVe,2CAA0B,6BAUzC,CAAA;IAED,SAAgB,4BAA4B;QACxC,IAAI,aAAa,GAAG,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,eAAe,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,mBAAa,CAAC,aAAa,CAAC;QAChE,IAAI,gBAAgB,GAAG,aAAa,IAAI,eAAe,CAAC;QACxD,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IANe,6CAA4B,+BAM3C,CAAA;IAED,SAAgB,oBAAoB;QAChC,IAAI,CAAC,GAAG,iBAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAHe,qCAAoB,uBAGnC,CAAA;IAGD,IAAI,gBAAgB,GAAa,EAAE,CAAC;IAEpC,SAAgB,2BAA2B,CAAC,MAAc;QACtD,IAAI,GAAG,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,GAAG,CAAC;IACf,CAAC;IAHe,4CAA2B,8BAG1C,CAAA;IAED,SAAgB,mBAAmB,CAAC,MAAc;QAC9C,IAAI,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,EAAE;YACR,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACjC;IACL,CAAC;IALe,oCAAmB,sBAKlC,CAAA;IAED;;;;OAIG;IACH,SAAgB,sBAAsB,CAAC,MAAc;QACjD,IAAI,IAAI,GAAW,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,GAAG,oCAAa,CAAC,YAAY,CAAC,qCAAiB,CAAC,CAAC;QACxD,IAAI,GAAG,EAAE;YACL,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;gBAClB,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,aAAa,IAAI,MAAM,EAAE;oBACjC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;iBAC3B;aACJ;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAXe,uCAAsB,yBAWrC,CAAA;IAED;;;;OAIG;IACH,SAAgB,sBAAsB,CAAC,IAAY;QAC/C,IAAI,IAAI,GAAW,EAAE,CAAC;QACtB,IAAI,GAAG,GAAG,oCAAa,CAAC,YAAY,CAAC,yCAAmB,CAAC,CAAC;QAC1D,IAAI,GAAG,EAAE;YACL,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;gBAClB,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;oBACtB,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;iBAC7B;aACJ;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAXe,uCAAsB,yBAWrC,CAAA;IAED;;;;OAIG;IACH,SAAgB,sBAAsB,CAAC,IAAY;QAC/C,IAAI,IAAI,GAAW,EAAE,CAAC;QACtB,IAAI,GAAG,GAAG,oCAAa,CAAC,YAAY,CAAC,yCAAmB,CAAC,CAAC;QAC1D,IAAI,GAAG,EAAE;YACL,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;gBAClB,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;oBACtB,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;iBAC5B;aACJ;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAXe,uCAAsB,yBAWrC,CAAA;IAED;;;OAGG;IACH,SAAgB,gBAAgB,CAAC,GAAW;QACxC,IAAI,oBAAO,IAAI,OAAO,EAAE;YACpB,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrB;aAAM;YACH,IAAI,WAAW,GAAW,mBAAmB,CAAC;YAC9C,IAAI,SAAS,GAAW,cAAc,CAAC;YACvC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,qCAAqC,EAAE,kBAAkB,EAAE,2DAA2D,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;SACxL;IACL,CAAC;IATe,iCAAgB,mBAS/B,CAAA;IAED,cAAc;IACd,MAAM,gBAAgB,GAAa,CAAC,mBAAa,CAAC,eAAe,EAAE,mBAAa,CAAC,GAAG,EAAE,mBAAa,CAAC,aAAa,CAAC,CAAC;IACnH,mBAAmB;IACZ,KAAK,UAAU,cAAc,CAAC,MAAc;QAC/C,IAAI,WAAW,GAA6B,SAAS,CAAC;QACtD,IAAI,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,aAAa,EAAE;YACf,EAAE,CAAC,KAAK,CAAC,6CAA6C,EAAE,MAAM,CAAC,CAAC;YAChE,OAAO,SAAS,CAAC;SACpB;QACD,IAAI;YACA,IAAI,IAAI,GAAG,MAAM,aAAO,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;gBACjC,IAAI,OAAO,EAAE;oBACT,WAAW,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,OAAO,EAAE,EAAE;qBACd,CAAC;oBACF,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAY,CAAC,IAAI,EAAE;wBACpC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,4BAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;qBACnE;yBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAY,CAAC,MAAM,EAAE;wBAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC3C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4BAC7B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAY,CAAC,IAAI,EAAE;gCAC3D,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,4BAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;6BACzE;iCAAM;gCACH,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;6BAC3C;yBACJ;qBACJ;iBACJ;qBAAM;oBACH,EAAE,CAAC,KAAK,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;iBACvD;aACJ;iBAAM;gBACH,EAAE,CAAC,IAAI,CAAC,kDAAkD,EAAE,MAAM,CAAC,CAAC;aACvE;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,EAAE,CAAC,KAAK,CAAC,gCAAgC,GAAG,MAAM,GAAG,gBAAgB,EAAE,KAAK,CAAC,CAAC;YAC9E,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAzCqB,+BAAc,iBAyCnC,CAAA;IAED;;;OAGG;IACH,SAAgB,iBAAiB,CAAC,QAAiB;QAC/C,IAAI,kBAAkB,GAAuB;YACzC,IAAI,EAAE,uBAAW,CAAC,OAAO,EAAE;YAC3B,QAAQ,EAAE,QAAQ;SACrB,CAAC;QACF,gBAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC,GAAG,kBAAkB,CAAC;QACtE,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAPe,kCAAiB,oBAOhC,CAAA;IAED;;;OAGG;IACH,SAAgB,iBAAiB;QAC7B,IAAI,kBAAkB,GAAG,gBAAU,CAAC,eAAe,CAAC,oBAAoB,CAAuB,CAAC;QAChG,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,kBAAkB,IAAI,SAAS,EAAE;YACjC,QAAQ,GAAG,IAAI,CAAC;SACnB;aAAM;YACH,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;YACvC,IAAI,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,MAAM,EAAE;gBACR,QAAQ,GAAG,IAAI,CAAC;gBAChB,iBAAiB,CAAC,QAAQ,CAAC,CAAC;aAC/B;SACJ;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAde,kCAAiB,oBAchC,CAAA;IAED;;;OAGG;IACH,SAAgB,mBAAmB,CAAC,UAA4B;QAC5D,gBAAU,CAAC,eAAe,CAAC,kBAAkB,CAAC,GAAG,UAAU,CAAC;QAC5D,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAHe,oCAAmB,sBAGlC,CAAA;IAED;;;OAGG;IACH,SAAgB,mBAAmB;QAC/B,IAAI,UAAU,GAAG,gBAAU,CAAC,eAAe,CAAC,kBAAkB,CAAqB,CAAC;QACpF,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACzE,OAAO,UAAU,CAAC;IACtB,CAAC;IAJe,oCAAmB,sBAIlC,CAAA;IAED;;;OAGG;IACH,SAAgB,eAAe,CAAC,MAAe;QAC3C,gBAAU,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;QACpD,gBAAU,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IAHe,gCAAe,kBAG9B,CAAA;IAED;;;OAGG;IACH,SAAgB,eAAe;QAC3B,IAAI,MAAM,GAAG,gBAAU,CAAC,eAAe,CAAC,cAAc,CAAY,CAAC;QACnE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACjC,OAAO,MAAM,CAAC;IAClB,CAAC;IAJe,gCAAe,kBAI9B,CAAA;AACL,CAAC,EA16DgB,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QA06DhC","file":"","sourceRoot":"/","sourcesContent":["import { AudioManager } from \"simba-cc-audio-manager\";\nimport { ResUtils } from \"simba-cc-resutils\";\nimport { ConfigManager } from \"simba-config-manager\";\nimport { CompositeDisposable, Emitter } from \"simba-eventkit\";\nimport { TimeManager } from \"simba-sdk\";\nimport { DeepReadonlyObject, shallowEqual } from \"simba-utils\";\nimport { ConditionExpression, GameRecord, getPlot, Language, PlotManager, ReadonlyPlot, ReadonlyPlots, richNodesToCocosString, SentenceType, SpecialPlotId } from \"../../avg/AVG\";\nimport { DateType, PageIndex } from \"../../avg/EditorEnums\";\nimport { EditorEvents } from \"../../avg/EditorEvents\";\nimport { GameConstData } from \"../../common/gameplay/gamedata/GameConstData\";\nimport { FuncStateEnum, RedPotStateEnum } from \"../../common/gameplay/gamedata/GameEnumData\";\nimport { bedroomItemConfig } from \"../../config/BedroomItemConfig\";\nimport { ICharacterVoiceConfig } from \"../../config/CharacterVoiceConfig\";\nimport { dateSceneConfig } from \"../../config/DateSceneConfig\";\nimport { i18nConfig } from \"../../config/I18nConfig\";\nimport { itemConfig } from \"../../config/ItemConfig\";\nimport { IItemTbl } from \"../../config/ItemTbl\";\nimport { relationLevelConfig } from \"../../config/RelationLevelConfig\";\nimport { IRole, role } from \"../../config/Role\";\nimport { taoBaoShopUrlConfig } from \"../../config/TaoBaoShopUrlConfig\";\nimport { channel } from \"../../GameConfig\";\nimport { AutoPopViewType, DiscoverItemType, FreeState, GuideState, PlotSceneType, PlotSessionState, TutorialState, TutorialType, WorkSpaceTaskState } from \"../Enums\";\nimport GameDotMgr from \"../GameDotMgr\";\nimport { SpecialToastType } from \"../ui/SpecialToast\";\nimport { DatingEventSceneModel, DatingEventStatus } from \"./DatingEventSceneModel\";\nimport GameRoleDataModel from \"./GameRoleDataModel\";\nimport { MessageSceneModel } from \"./MessageSceneModel\";\nimport { UnlockSpecialPlotModelManager } from \"./UnlockSpecialPlotModelManager\";\n\n/**\n * 游戏model管理类\n */\nexport namespace GameModelManager {\n let emitter = new Emitter;\n\n export const MessageSceneChanged = emitter.createEvent<(scenes: MessageSceneModel[]) => void>();\n export const MainDatingEventChanged = emitter.createEvent<(scenes: DatingEventSceneModel[]) => void>();\n\n export const ApplicaitonGameChanged = emitter.createEvent<(force: boolean) => void>();//进程发生切换\n\n export const MainTabForceClick = emitter.createEvent<(param: { index: number, pureClick: boolean, propId?: number }) => void>();//主界面tab点击\n export const GiftItemForceClick = emitter.createEvent<(param: any) => void>();//商城界面指定item点击\n export const SininItemClick = emitter.createEvent<(param: any) => void>();//签到界面指定item点击\n\n\n export const CheckMainTabGuide = emitter.createEvent<() => void>();//主界面检测tab栏引导\n export const CheckDateGuide = emitter.createEvent<() => void>();//约会界面检测引导\n export const CheckMsgGuide = emitter.createEvent<() => void>();//消息列表界面检测引导\n export const UpdatePlayerData = emitter.createEvent<() => void>();//更新主角数据\n export const PlayerOptionSkin = emitter.createEvent<() => void>();//玩家操作了皮肤数据\n export const NeedAddCoin = emitter.createEvent<(location?: string) => void>();//需要增加金币或者皮肤币\n export const RefreshDiscoverTabRed = emitter.createEvent<() => void>();//刷新发现页红点展示\n export const RefreshDateCostTipInfo = emitter.createEvent<(show: boolean, costNum?: number, pos?: cc.Vec3) => void>();//刷新约会界面消耗信息节点数据\n export const RefreshDateSceneProgress = emitter.createEvent<() => void>();//刷新约会进度\n export const CheckDateSceneProgress = emitter.createEvent<() => void>();//检测约会进度\n export const ForceClickSendGiftBtn = emitter.createEvent<() => void>();//强制点击聊天中送礼按钮\n export const AutoPopView = emitter.createEvent<(view: AutoPopViewType) => void>();//展示自动弹出界面\n export const NewPlayerReceiveBtn = emitter.createEvent<() => void>();//新人七天乐点击领取按钮\n\n export const ShowDatingEventArrowGuide = emitter.createEvent<(isShow: boolean, wordPos?: cc.Vec3) => void>();//约会列表界面展示箭头\n\n export const ShowPlotBlocked = emitter.createEvent<() => void>();//展示剧情阻断弹窗\n\n export const ForceEnterDiscoverSubView = emitter.createEvent<(itemType: DiscoverItemType) => void>();//强制进入发现页面子页面\n\n export const PlotBlockedChanged = emitter.createEvent<() => void>();//剧情阻断改变\n\n export const WorkSpaceShowItemDesc = emitter.createEvent<(isShow: boolean, itemId?: number, wPos?: cc.Vec3) => void>();//工作区界面展示物品描述\n\n export const WorkSpaceSelectedStuff = emitter.createEvent<(spaceId: number, roleId: number) => void>();//工作区选定完员工\n\n export const CheckMainTabWorkSpaceRedDot = emitter.createEvent<(isForce?: boolean, forceShow?: boolean) => void>();//检测主界面tab栏下面工作区的红点\n\n export const ForceSetSpaceState = emitter.createEvent<(spaceId: number, state: WorkSpaceTaskState) => void>();//强制改变指定工作区的状态\n\n export const UpdateMainTabArrowGuide = emitter.createEvent<() => void>();//更新主界面tab栏,商城和办公区箭头引导\n\n export const ForceClickMsgItem = emitter.createEvent<(id: number) => void>();\n export const ForceClickDatingItem = emitter.createEvent<(id: number) => void>();\n\n /**报幕数据准备就绪事件 */\n export const ForceClickDataReady = emitter.createEvent<() => void>();\n\n /**传输掉落物品数据 */\n export const TransmitItemData = emitter.createEvent<(pid: number, spriteFrame: cc.SpriteFrame, cfg: DeepReadonlyObject<IItemTbl>) => void>();\n\n export const UnlockItem = emitter.createEvent<(itemId: number) => void>();\n\n /**卧室返回点击UI事件 */\n export const BedroomViewBack = emitter.createEvent<(index: number) => void>();\n /**返回到卧室界面 */\n export const BackToBedRoom = emitter.createEvent<() => void>();\n\n /**回滚数据到指定剧情 */\n export const RollBackToPlot = emitter.createEvent<(pid: number) => void>();\n /**回滚剧情数据完成刷新所有状态 */\n export const RefreshAllStatus = emitter.createEvent<() => void>();\n /**触发死亡选项之后的事件派发 */\n export const DeadEvent = emitter.createEvent<(pid: number) => void>();\n /**关闭约会界面 */\n export const CloseDatingSceneView = emitter.createEvent<(id: number) => void>();\n /**刷新对应类型的番外 */\n export const RefreshExtraPlotByType = emitter.createEvent<(id: number) => void>();\n /**关闭番外界面 */\n export const CloseExtraSceneView = emitter.createEvent<() => void>();\n /**触发剧情属性值变化之后弹起特殊Toast */\n export const SpecialToast = emitter.createEvent<(type: SpecialToastType) => void>();\n /**从主界面跳转到游戏页面 */\n export const JumpToViewInGame = emitter.createEvent<(index: PageIndex) => void>();\n /**打开番外界面 */\n export const OpenExtraPlotView = emitter.createEvent<() => void>();\n /**关闭设置界面 */\n export const CloseSettingView = emitter.createEvent<(index: PageIndex) => void>();\n\n let messageScenes: MessageSceneModel[] | undefined;\n // let momentScenes: MomentSceneModel[] | undefined;\n let mainDatingScenes: DatingEventSceneModel[] | undefined;\n export let currPlots: ReadonlyPlot[] | undefined;\n let phoneCallIndex: number = -1;\n\n let unlockGift = false;\n\n let defaultUnlockedGiftArr: number[] = [];\n let plotUnlockedGiftArr: number[] = [];\n let isChangPlotSceneType: boolean = false;\n let isMainPlot: boolean = true;\n\n let isNeedEnterCurDateChapter: boolean = true;\n\n let progressSceneId: number | undefined = undefined;\n let _autoPopView: AutoPopViewType[] = [];\n\n let _timeTick: number = -1;\n\n let _emap: Map<number, number> = new Map();\n let _eLevelMax: number = 0;\n let _expUpRole: number = -1;\n\n export function isChangePlotSceneType() { return isChangPlotSceneType }\n\n export function setIsChangePlotSceneType(isChange: boolean) {\n isChangPlotSceneType = isChange;\n }\n\n export function isMainPlotSceneType() { return isMainPlot }\n\n export function setIsMainPlotSceneType(isChange: boolean) {\n isMainPlot = isChange;\n }\n\n export function isGiftUnlock() { return unlockGift; }\n\n export async function rollbackPhoneCallIfNeeded() {\n // if (phoneCallIndex < 0) {\n // console.error(\"Error: no phone call.\");\n // }\n if (phoneCallIndex >= 0 && phoneCallIndex < GameRecord.getCurrentRecordItems().length - 1) {\n let ret = await PlotManager.rollbackToIndex(phoneCallIndex);\n savePhoneCall();\n return ret;\n } else {\n return PlotManager.getCurrentPlots();\n }\n }\n\n //#region //数据模块 \n let roleDatasMap: Map<number, GameRoleDataModel> = new Map<number, GameRoleDataModel>();\n let languagesMap: Map<number, string> = new Map<number, string>(); //语言\n //#endregion\n\n export function getCurrentChapterId() {\n return currPlots![0].chapterId;\n }\n\n export function getMessageScenesModel() {\n return messageScenes!;\n }\n\n export function getMessageSceneModel(id: number) {\n return messageScenes!.find(v => v.id === id);\n }\n\n // export function getMomentScenesModel() {\n // return momentScenes!;\n // }\n\n // export function getMomentSceneModel(id: number) {\n // return momentScenes!.find(v => v.id === id);\n // }\n\n export function getMainDatingEventScenesModel() {\n return mainDatingScenes!;\n }\n\n export function getMainDatingEventSceneModel(id: number) {\n return mainDatingScenes!.find(v => v.id === id);\n }\n\n export function getMainDatingEventScenesModelByChapterindex(chapterIndex: number): DatingEventSceneModel[] {\n let scenes: DatingEventSceneModel[] = [];\n if (!mainDatingScenes) {\n return [];\n }\n for (let i = 0; i < mainDatingScenes.length; i++) {\n if (ConfigManager.getConfig(dateSceneConfig, mainDatingScenes[i].id).chapter_index === chapterIndex) {\n scenes.push(mainDatingScenes[i]);\n }\n }\n return scenes;\n }\n\n let creating: boolean = false;\n /**开启分支剧情,\n * plots:如果需要同时开启多个分支剧情,则数组中存储这些分支中对应的起始剧情id\n */\n export async function startBranches(plots: number[]) {\n if (creating) return;\n creating = true;\n if (0 === plots.length) {\n // console.warn(\"no plots to mark as branch start plot id\");\n return;\n }\n for (let i = 0; i < plots.length; i++) {\n let pid = plots[i];\n if (SpecialPlotId.ToBeContinued === pid || SpecialPlotId.End === pid) {\n // console.error(\"you can not start a branch with SpecialPlotId, id is = \", pid);\n continue;\n }\n let p = await getPlot(pid);\n if (!p) {\n // console.warn(\"no plot which plot id is = \", pid);\n continue;\n }\n if (currPlots) {\n currPlots.push(p);\n }\n let hasStarted: boolean = checkIsBranchStarted(pid);\n if (hasStarted) {\n // cc.warn(\"branch has been started which start plot id is = \", pid);\n continue;\n }\n console.log('开启新分支pid', pid);\n let index = await PlotManager.startNewPlotBranch(pid);\n pushBranchToRecord(pid, index);\n }\n creating = false;\n }\n\n\n /**\n * \n * @param plotId 检测指定剧情下的分支是否已经开启\n * @returns \n */\n function checkIsBranchStarted(plotId: number): boolean {\n const branchRecordKey: string = \"BRANCH_INDEX_ENTRY\";\n let ret: boolean = false;\n let itemArr: { startPlot: number, index: number }[] = [];\n let recordStr: string = GameRecord.globalVariables[branchRecordKey] as string;\n if (recordStr && \"\" !== recordStr.trim()) {\n itemArr = JSON.parse(recordStr) as { startPlot: number, index: number }[];\n }\n ret = itemArr.findIndex((v) => v.startPlot === plotId) >= 0;\n return ret;\n }\n\n /**\n * \n * @param plotId 将分支计入存档\n * @param index \n */\n function pushBranchToRecord(plotId: number, index: number) {\n const branchRecordKey: string = \"BRANCH_INDEX_ENTRY\";\n let exist: boolean = false;\n let itemArr: { startPlot: number, index: number }[] = [];\n let recordStr: string = GameRecord.globalVariables[branchRecordKey] as string;\n if (recordStr && \"\" !== recordStr.trim()) {\n itemArr = JSON.parse(recordStr) as { startPlot: number, index: number }[];\n }\n exist = itemArr.findIndex((v) => v.startPlot === plotId) >= 0;\n if (!exist) {\n itemArr.push({\n startPlot: plotId,\n index: index\n });\n GameRecord.globalVariables[branchRecordKey] = JSON.stringify(itemArr);\n GameRecord.saveRecord();\n }\n }\n\n /**\n * 获取分支剧情状态(约会状态)\n * @param plotSceneTypeId 剧情类型id\n * @param start_plot_id 起始剧情id\n * @returns 剧情状态\n */\n export function getBranchStatus(plotSceneTypeId: number, start_plot_id: number): DatingEventStatus {\n let s = DatingEventStatus.New;\n let curP = PlotManager.getCurrentPlots();\n let progress = curP.findIndex((v) => v.plotSceneTypeId === plotSceneTypeId) >= 0;\n let isNew = curP.findIndex((v) => v.plotSceneTypeId === plotSceneTypeId && v.id === start_plot_id) >= 0;\n s = isNew ? DatingEventStatus.New : progress ? DatingEventStatus.InProgress : DatingEventStatus.Completed;\n return s;\n }\n\n /**获取已开启的所有番外id */\n export function getAllStartedBranches(): { startPlot: number, index: number }[] {\n const branchRecordKey: string = \"BRANCH_INDEX_ENTRY\";\n let itemArr: { startPlot: number, index: number }[] = [];\n let recordStr: string = GameRecord.globalVariables[branchRecordKey] as string;\n if (recordStr && \"\" !== recordStr.trim()) {\n itemArr = JSON.parse(recordStr) as { startPlot: number, index: number }[];\n }\n return itemArr;\n }\n\n let branchCompleteRecordKey: string = \"branch_complete\";\n /**设置分支完成 */\n export function setBranchComplete(branchId: number) {\n let rStr = GameRecord.globalVariables[branchCompleteRecordKey] as string;\n let rArr: number[] = [];\n if (rStr && \"\" !== rStr) {\n rArr = JSON.parse(rStr) as number[];\n }\n let exist = rArr.findIndex((v) => v === branchId) !== (-1);\n if (!exist) {\n rArr.push(branchId);\n GameRecord.globalVariables[branchCompleteRecordKey] = JSON.stringify(rArr);\n GameRecord.saveRecord();\n }\n }\n\n /**检测分支是否完成 */\n export function checkBranchIsComplete(branchId: number): boolean {\n let rStr = GameRecord.globalVariables[branchCompleteRecordKey] as string;\n let rArr: number[] = [];\n if (rStr && \"\" !== rStr) {\n rArr = JSON.parse(rStr) as number[];\n }\n let exist = rArr.findIndex((v) => v === branchId) !== (-1);\n return exist;\n }\n\n let branchInProgressRecordKey: string = \"branch_InProgress\";\n /**设置分支完成 */\n export function setBranchInProgress(branchId: number) {\n let rStr = GameRecord.globalVariables[branchInProgressRecordKey] as string;\n let rArr: number[] = [];\n if (rStr && \"\" !== rStr) {\n rArr = JSON.parse(rStr) as number[];\n }\n let exist = rArr.findIndex((v) => v === branchId) !== (-1);\n if (!exist) {\n rArr.push(branchId);\n GameRecord.globalVariables[branchInProgressRecordKey] = JSON.stringify(rArr);\n GameRecord.saveRecord();\n }\n }\n\n /**检测分支是否完成 */\n export function checkBranchIsInProgress(branchId: number): boolean {\n let rStr = GameRecord.globalVariables[branchInProgressRecordKey] as string;\n let rArr: number[] = [];\n if (rStr && \"\" !== rStr) {\n rArr = JSON.parse(rStr) as number[];\n }\n let exist = rArr.findIndex((v) => v === branchId) !== (-1);\n return exist;\n }\n\n export interface EventResourcesState {\n eventId: number,\n bgm: string,\n backgroud: string\n }\n\n export function setEventResources(eventId: number, bgm: string, backgroud: string) {\n let eventResources = GameRecord.globalVariables[\"EventResources\"] as EventResourcesState[];\n eventResources = eventResources ? eventResources : [];\n let isNewEventId = true;\n for (let i = 0; i < eventResources.length; i++) {\n if (eventResources[i].eventId == eventId) {\n if (bgm) {\n eventResources[i].bgm = bgm;\n }\n if (backgroud) {\n eventResources[i].backgroud = backgroud;\n }\n isNewEventId = false;\n break;\n }\n }\n if (isNewEventId) {\n eventResources.push({\n eventId: eventId,\n bgm: bgm,\n backgroud: backgroud\n });\n }\n }\n\n export function getBranchResources(eventId: number): EventResourcesState {\n let eventResources: EventResourcesState = undefined as unknown as EventResourcesState;\n let allEventResources = GameRecord.globalVariables[\"EventResources\"] as EventResourcesState[];\n if (allEventResources) {\n for (let i = 0; i < allEventResources.length; i++) {\n if (allEventResources[i].eventId == eventId) {\n eventResources = allEventResources[i];\n break;\n } else {\n eventResources = undefined as unknown as EventResourcesState;\n }\n }\n }\n return eventResources;\n }\n\n async function initConfigData() {\n await ConfigManager.initConfigData(false);\n await initLanguageConfig();\n initRoleConfig();\n }\n\n\n export function getI18LanguageTxt(id: number) {\n let i18 = ConfigManager.getConfig(i18nConfig, id);\n return i18.cn;\n }\n\n function initRoleConfig() {\n let cfg = ConfigManager.getAllConfig(role);\n for (let id in cfg) {\n let element = cfg[id] as IRole;\n if (element) {\n let data = new GameRoleDataModel();\n data.setConfig(element);\n roleDatasMap.set(element.id, data);\n }\n }\n }\n\n function getLanguagePath() {\n return \"userdata/language/chinese\"\n }\n async function initLanguageConfig() {\n let cfgFile = await ResUtils.loadRes<any>(getLanguagePath(), cc.JsonAsset);\n if (cfgFile) {\n let lans: Language[] = cfgFile as Language[];\n for (let i = 0; i < lans.length; ++i) {\n let element = lans[i] as Language;\n if (element) {\n languagesMap.set(element.id, element.value);\n }\n }\n }\n }\n\n export function getLanguageTxt(id: number): string {\n if (languagesMap.has(id)) {\n return languagesMap.get(id) as string;\n } else {\n // console.log(\"current language id is miss \" + id);\n return \"\";\n }\n }\n\n export function getConfigLanguageTxt(id: number): string {\n return ConfigManager.getConfig(i18nConfig, id).cn;\n }\n\n export function getItemConfig(id: number) {\n return ConfigManager.getConfig(itemConfig, id);\n }\n\n export function getItemConfigs() {\n return ConfigManager.getAllConfig(itemConfig);\n }\n\n // export function getDailyQuestConfigs() {\n // return ConfigManager.getAllConfig(dailyQuestConfig)\n // }\n\n // export function getDailyQuestConfig(id: number) {\n // return ConfigManager.getConfig(dailyQuestConfig, id);\n // }\n\n // export function getAchievementConfigs() {\n // return ConfigManager.getAllConfig(achievementConfig)\n // }\n\n // export function getAchievementConfig(id: number) {\n // return ConfigManager.getConfig(achievementConfig, id);\n // }\n\n export function getRoleData(id: number) {\n if (!roleDatasMap.has(id)) {\n return undefined;\n }\n return roleDatasMap.get(id);\n }\n\n export function getPlayerData() {\n return GameModelManager.getRoleData(GameConstData.GAME_CONST_PLAYER_ROLE_VALUE)!;\n }\n\n // export function addDailyTasks(dailyType: DailyQuestType, count: number) {//每日任务的信息存储\n // let dailyCount = GameRecord.globalVariables[\"DailyQuestType_\" + dailyType];\n // dailyCount = dailyCount === undefined ? 0 : dailyCount;\n // dailyCount += count;\n // dispatchCompleteTask(dailyType, dailyCount);\n // GameRecord.globalVariables[\"DailyQuestType_\" + dailyType] = dailyCount;\n // GameRecord.autoSave();\n // }\n\n // function dispatchCompleteTask(dailyType: DailyQuestType, count: number) {\n // let cfg = ConfigManager.getConfig(dailyQuestConfig, dailyType);\n // let isFinish = count >= cfg.daily_quest_finish_value;\n // if (isFinish) {\n // GameDotMgr.getInstance().dotTask(TaskDotType.CompleteTask, dailyType);\n // }\n // }\n\n // export function clearDailyTasks() {//清理每日任务\n // for (let index = DailyQuestType.Dq_AdsWatch; index <= DailyQuestType.Dq_MomentPraise; ++index) {\n // GameRecord.globalVariables[\"DailyQuestType_\" + index] = 0;\n // }\n // GameRecord.autoSave();\n // }\n\n // export function getDailyTasks(dailyType: DailyQuestType) {\n // let dailyCount = GameRecord.globalVariables[\"DailyQuestType_\" + dailyType];\n // dailyCount = dailyCount === undefined ? 0 : dailyCount;\n // return dailyCount;\n // }\n\n let disposable: CompositeDisposable;\n\n export async function init(onProgress?: Function) {\n await initConfigData();\n if (onProgress) onProgress(0.92);\n tipAddGracePlots = [];\n phoneCallIndex = GameRecord.recordVariables[\"gm.pci\"] as number;\n unlockGift = !!GameRecord.recordVariables[\"gm.unlockGift\"];\n if (phoneCallIndex === undefined) phoneCallIndex = -1;\n let initRet: Promise<any>[] = [];\n { // init message models\n let ids = GameRecord.recordVariables[\"gm.ms\"] as any;\n if (ids !== undefined) {\n messageScenes = [];\n messageScenes = ids.map((id: number) => new MessageSceneModel(id));\n initRet.push(...messageScenes!.map((s) => s.initFromRecords()));\n } else {\n messageScenes = [];\n }\n }\n // { // init moment models\n // let ids = GameRecord.recordVariables[\"gm.mm\"] as any;\n // if (ids !== undefined) {\n // momentScenes = ids.map((id: number) => new MomentSceneModel(id));\n // initRet.push(...momentScenes!.map((s) => s.initFromRecords()));\n // }\n // }\n { // init main dating models\n let ids = GameRecord.recordVariables[\"gm.md\"] as any;\n if (ids !== undefined) {\n mainDatingScenes = [];\n mainDatingScenes = ids.map((id: number) => new DatingEventSceneModel(id));\n initRet.push(...mainDatingScenes!.map((s) => s.initFromRecords()));\n } else {\n mainDatingScenes = [];\n }\n }\n\n {//init application\n cc.game.on(cc.game.EVENT_HIDE, () => {\n // console.log(\"enter game background\");\n AudioManager.pauseMusic();\n //ApplicaitonGameChanged.emit(false);\n });\n\n cc.game.on(cc.game.EVENT_SHOW, () => {\n // console.log(\"enter game force\");\n AudioManager.resumeMusic();\n // ApplicaitonGameChanged.emit(true);\n });\n }\n\n if (initRet.length) {\n await Promise.all(initRet);\n }\n if (onProgress) onProgress(0.94);\n if (!disposable) {\n disposable = new CompositeDisposable;\n disposable.add(PlotManager.PlotWillStart.on(handlePlotWillStart));\n disposable.add(PlotManager.PlotsRollbackEvent.on(handlePlotsRollback));\n disposable.add(EditorEvents.UNLOCK_ITEM.on(onUnlockItem));\n disposable.add(EditorEvents.UNLOCK_SPECIAL_PLOT.on(onUnlockSpecialPlot));\n disposable.add(EditorEvents.DEAD_EVENT.on(onDeadEvevt));\n disposable.add(EditorEvents.SPECIAL_TOAST.on(onSpecialToast));\n }\n initPlots();\n if (onProgress) onProgress(0.96);\n\n for (let scene of mainDatingScenes!) { // 检查主线剧情状态\n if (currPlots![0].plotSceneType !== PlotSceneType.DatingEvent ||\n (scene.id !== currPlots![0].plotSceneTypeId && scene.status !== DatingEventStatus.Completed)) {\n scene.status = DatingEventStatus.Completed;\n }\n }\n //guide listener\n // disposable.add(EditorEvents.GUIDE_TAB_MSG.on((param: string) => {\n // setGuideMainTabRecord(MainTabs.messageTab, GuideState.Open);\n // }));\n // disposable.add(EditorEvents.GUIDE_TAB_DATE.on((param: string) => {\n // setGuideMainTabRecord(MainTabs.datingEventTab, GuideState.Open);\n // }));\n // disposable.add(EditorEvents.GUIDE_VIEW_DATE.on((param: string) => {\n // setGuideEventItemRecord(param, GuideState.Open);\n // }));\n // disposable.add(EditorEvents.GUIDE_VIEW_MSG.on((param) => {\n // setGuideMsgItemRecord(param, GuideState.Open);\n // }));\n if (onProgress) onProgress(0.98);\n\n }\n\n function onUnlockItem(itemId: string) {\n let s = itemId;\n if (s && \"\" !== s.trim()) {\n let n = parseInt(s);\n UnlockItem.emit(n);\n }\n }\n\n function onDeadEvevt(pid: string) {\n let s = pid;\n if (s && \"\" !== s.trim()) {\n let n = parseInt(s);\n DeadEvent.emit(n);\n }\n }\n\n function onSpecialToast(type: string) {\n let s = type;\n if (s && \"\" !== s.trim()) {\n let n = parseInt(s) as SpecialToastType;\n SpecialToast.emit(n);\n }\n }\n\n export function onUnlockSpecialPlot(specialPlotId: string) {\n let s = specialPlotId;\n if (s && \"\" !== s.trim()) {\n let n = parseInt(s);\n UnlockSpecialPlotModelManager.saveUnlockedSpecialPlotIdByItemIdToGameRecord(n);\n }\n }\n\n /**\n * set main tab guide record value\n * @param index \n * @param record \n */\n export function setGuideMainTabRecord(index: number, record: GuideState) {\n let r = GameRecord.globalVariables[\"guide_main_tab\" + index] as number;\n if (r && record <= r) {\n return;\n }\n GameRecord.globalVariables[\"guide_main_tab\" + index] = record;\n GameRecord.saveRecord();\n }\n\n /**\n * get main tab guide index\n */\n export function getMainTabGuideIndex(): number {\n let index = -1;\n const MAX = 4;\n for (let i = 0; i < MAX; i++) {\n let r = GameRecord.globalVariables[\"guide_main_tab\" + i] as number;\n r = r === undefined ? GuideState.close : r;\n if (r === GuideState.Open) {\n index = i;\n }\n }\n return index;\n }\n\n /**\n * set event item guide record value\n * @param itemKey \n * @param record \n */\n export function setGuideEventItemRecord(itemKey: string, record: GuideState) {\n let r = GameRecord.globalVariables[\"guide_evt_item\"] as number;\n r = r === undefined ? GuideState.close : r;\n if (record <= r) {\n return;\n }\n GameRecord.globalVariables[\"guide_evt_item_key\"] = itemKey;\n GameRecord.globalVariables[\"guide_evt_item\"] = record;\n GameRecord.saveRecord();\n }\n\n /**\n * get event item guide key\n */\n export function getEventItemGuideKey(): string {\n let key: string = \"\";\n let r = GameRecord.globalVariables[\"guide_evt_item\"] as number;\n r = r === undefined ? GuideState.close : r;\n let k = GameRecord.globalVariables[\"guide_evt_item_key\"] as string;\n if (r && r === GuideState.Open) {\n key = k;\n }\n return key;\n }\n\n /**\n * set msg guide item record value\n * @param itemKey \n * @param record \n */\n export function setGuideMsgItemRecord(itemKey: string, record: GuideState) {\n let r = GameRecord.globalVariables[\"guide_msg_item\"] as number;\n r = r === undefined ? GuideState.close : r;\n if (record <= r) {\n return;\n }\n GameRecord.globalVariables[\"guide_msg_item_key\"] = itemKey;\n GameRecord.globalVariables[\"guide_msg_item\"] = record;\n GameRecord.saveRecord();\n }\n\n /**\n * get msg item guide key\n */\n export function getMsgItemGuideKey(): string {\n let key: string = \"\";\n let r = GameRecord.globalVariables[\"guide_msg_item\"] as number;\n r = r === undefined ? GuideState.close : r;\n let k = GameRecord.globalVariables[\"guide_msg_item_key\"] as string;\n if (r && r === GuideState.Open) {\n key = k;\n }\n return key;\n }\n\n /**\n * checkHasGuide , deal layer problem between guide view and sinin view\n */\n export function checkHasGuide(): boolean {\n let ret: boolean = false;\n // let hasMsgGuide = getMsgItemGuideKey() !== \"\";\n // let hasEventGuide = getEventItemGuideKey() !== \"\";\n // let hasGuideTab = getMainTabGuideIndex() !== -1;\n // ret = hasGuideTab || hasMsgGuide || hasEventGuide;\n return ret;\n }\n\n\n function save() {\n let oldValue = GameRecord.recordVariables[\"gm.ms\"];\n let newValue = messageScenes!.map(v => v.id) as any;\n if (!shallowEqual(oldValue, newValue)) {\n GameRecord.recordVariables[\"gm.ms\"] = newValue;\n }\n // oldValue = GameRecord.recordVariables[\"gm.mm\"];\n // newValue = momentScenes!.map(v => v.id) as any;\n // if (!shallowEqual(oldValue, newValue)) {\n // GameRecord.recordVariables[\"gm.mm\"] = newValue;\n // }\n oldValue = GameRecord.recordVariables[\"gm.md\"];\n newValue = mainDatingScenes!.map(v => v.id) as any;\n if (!shallowEqual(oldValue, newValue)) {\n GameRecord.recordVariables[\"gm.md\"] = newValue;\n }\n }\n\n function savePhoneCall() {\n GameRecord.recordVariables[\"gm.pci\"] = phoneCallIndex;\n GameRecord.saveRecord();\n }\n\n async function initPlots() {\n let plots = PlotManager.getCurrentPlots();\n if (true) {\n currPlots = [...plots];\n if (!messageScenes) { // 第一次进游戏,根据剧情初始化数据\n messageScenes = [];\n }\n // if (!momentScenes) {\n // momentScenes = [];\n // }\n if (!mainDatingScenes) {\n mainDatingScenes = [];\n }\n for (let i = 0; i < plots.length; i++) {\n let plot = plots[i];\n if (plot.plotSceneType === PlotSceneType.Message) {\n let index = messageScenes.findIndex(v => v.id === plot.plotSceneTypeId);\n if (index < 0) {\n index = 0;\n let model = new MessageSceneModel(plot.plotSceneTypeId);\n model.firstPlot = plot;\n messageScenes.unshift(model);\n }\n // if (plot.sentences[0].content && plot.sentences[0].content.type !== SentenceType.SELECT) {\n // messageScenes[index].lastPlot = plot;\n // }\n } else if (plot.plotSceneType === PlotSceneType.Moment) {\n // if (momentScenes.findIndex(v => v.id === plot.plotSceneTypeId) < 0) {\n // let model = new MomentSceneModel(plot.plotSceneTypeId);\n // model.recordIndex = GameRecord.getCurrentRecordItems().length - 1;\n // momentScenes.unshift(model);\n // }\n } else if (plot.plotSceneType === PlotSceneType.DatingEvent) {\n let cfg = ConfigManager.getConfig(dateSceneConfig, plot.plotSceneTypeId);\n if (cfg.DateType === DateType.Date_Normal) { // 主线约会剧情\n if (plots[0] !== plot) { console.error(\"主线约会剧情应在主线开启\"); continue; }\n if (mainDatingScenes.findIndex(v => v.id === plot.plotSceneTypeId) < 0) {\n let model = new DatingEventSceneModel(plot.plotSceneTypeId);\n model.firstPlot = plot;\n model.status = DatingEventStatus.New;\n mainDatingScenes.push(model);\n }\n }\n }\n }\n save();\n }\n }\n\n async function handlePlotWillStart(plot: ReadonlyPlot, branch: number) {\n handleNewPlot(currPlots![branch], plot, branch);\n currPlots![branch] = plot;\n }\n\n async function handlePlotsRollback(plots: ReadonlyPlots) {\n // messageScenes = undefined;\n // let oldMomentScenes = momentScenes;\n // momentScenes = undefined;\n // currPlots = undefined;\n // disposable.dispose();\n // await init();\n // GameRecord.startTransaction();\n // if (oldMomentScenes) {\n // for (let s of oldMomentScenes) {\n // if (!momentScenes) {\n // s.clearRecords();\n // } else {\n // if ((momentScenes as MomentSceneModel[]).findIndex(v => v.id === s.id) < 0) {\n // s.clearRecords();\n // }\n // }\n // }\n // }\n // GameRecord.endTransaction(true);\n }\n\n async function handleNewPlot(prevPlot: ReadonlyPlot | undefined, plot: ReadonlyPlot, branch: number) {\n if (plot.plotSceneType === PlotSceneType.Message) {\n let idx = messageScenes!.findIndex(v => v.id === plot.plotSceneTypeId);\n if (idx >= 0) { // 原会话中有新消息\n let model = messageScenes![idx];\n if (idx > 0) {\n let reorderIdx = 0;\n if (branch > 0 && currPlots && currPlots[0].plotSceneType === PlotSceneType.Message) {\n reorderIdx = 1;\n }\n for (let i = idx; i > reorderIdx; i--) {\n messageScenes![i] = messageScenes![i - 1];\n }\n messageScenes![reorderIdx] = model;\n }\n if (plot.sentences[0].content && plot.sentences[0].content.type !== SentenceType.SELECT) {\n // model.lastPlot = plot;\n }\n } else { // 新会话\n let model = new MessageSceneModel(plot.plotSceneTypeId);\n model.firstPlot = plot;\n if (plot.sentences[0].content && plot.sentences[0].content.type !== SentenceType.SELECT) {\n // model.lastPlot = plot;\n }\n // 新会话不可能是送礼\n // if (branch > 0 && currPlots && currPlots[0].plotSceneType === PlotSceneType.Message) {\n // messageScenes!.splice(1, 0, model);\n // } else {\n messageScenes!.unshift(model);\n // }\n }\n MessageSceneChanged.emit(messageScenes!);\n save();\n } else if (plot.plotSceneType === PlotSceneType.Moment) {\n // let idx = momentScenes!.findIndex(v => v.id === plot.plotSceneTypeId);\n // if (idx >= 0) { // 原会话中有新消息\n // let model = momentScenes![idx];\n // if (idx > 0) {\n // for (let i = idx; i > 0; i--) {\n // momentScenes![i] = momentScenes![i - 1];\n // }\n // momentScenes![0] = model;\n // }\n // } else { // 新会话\n // let model = new MomentSceneModel(plot.plotSceneTypeId);\n // model.recordIndex = GameRecord.getCurrentRecordItems().length; // 当前存档还没生成,不需要减1\n // momentScenes!.unshift(model);\n // }\n // save();\n } else if (plot.plotSceneType === PlotSceneType.PhoneCall) {\n if (!prevPlot || prevPlot.plotSceneType !== PlotSceneType.PhoneCall) {\n phoneCallIndex = GameRecord.getCurrentRecordItems().length; // 当前存档还没生成,不需要减1\n savePhoneCall();\n }\n } else if (plot.plotSceneType === PlotSceneType.DatingEvent) {\n let cfg = ConfigManager.getConfig(dateSceneConfig, plot.plotSceneTypeId);\n if (cfg.DateType === DateType.Date_Normal) { // 主线约会剧情\n if (branch !== 0) { console.error(\"主线约会剧情应在主线开启\"); return; }\n let idx = mainDatingScenes!.findIndex(v => v.id === plot.plotSceneTypeId);\n if (idx < 0) { // 新开启\n let model = new DatingEventSceneModel(plot.plotSceneTypeId);\n model.firstPlot = plot;\n model.status = DatingEventStatus.New;\n mainDatingScenes!.push(model);\n MainDatingEventChanged.emit(mainDatingScenes!);\n }\n save();\n }\n }\n\n if (prevPlot && prevPlot.plotSceneType === PlotSceneType.PhoneCall && plot.plotSceneType !== PlotSceneType.PhoneCall) {\n phoneCallIndex = -1;\n savePhoneCall();\n }\n\n if (prevPlot && (prevPlot.plotSceneType !== plot.plotSceneType || prevPlot.plotSceneTypeId !== plot.plotSceneTypeId)) { // 切换场景\n if (prevPlot.plotSceneType === PlotSceneType.Message) { // 最后一个是选项的情况下,此时已做选择,记录最后一条剧情\n // let model = messageScenes!.find(v => v.id === prevPlot.plotSceneTypeId);\n // model!.lastPlot = prevPlot;\n }\n if (prevPlot.plotSceneType === PlotSceneType.DatingEvent) {\n let model = mainDatingScenes!.find(v => v.id === prevPlot.plotSceneTypeId);\n if (model) model.status = DatingEventStatus.Completed;\n }\n }\n\n // //main plot line progress and change plot scene (for BI dot);\n // let mainPlotLineSession = GameRecord.recordVariables[\"m_p_l_s\"] as number;\n // if (0 === branch && (!mainPlotLineSession || !prevPlot || (prevPlot.plotSceneType !== plot.plotSceneType || prevPlot.plotSceneTypeId !== plot.plotSceneTypeId))) {\n // mainPlotLineSession = mainPlotLineSession ? mainPlotLineSession : 0;\n // if (0 === mainPlotLineSession) {\n // GameDotMgr.getInstance().dotPlot(mainPlotLineSession + 1, PlotSessionState.Start);\n // } else {\n // GameDotMgr.getInstance().dotPlot(mainPlotLineSession, PlotSessionState.End);\n // GameDotMgr.getInstance().dotPlot(mainPlotLineSession + 1, PlotSessionState.Start);\n // }\n // mainPlotLineSession++;\n // GameRecord.recordVariables[\"m_p_l_s\"] = mainPlotLineSession;\n\n // let plotScenTypeSession = GameRecord.recordVariables[\"p_s_t_s\" + plot.plotSceneType] as number;\n // plotScenTypeSession = plotScenTypeSession ? plotScenTypeSession : 0;\n // plotScenTypeSession++;\n // GameRecord.recordVariables[\"p_s_t_s\" + plot.plotSceneType] = plotScenTypeSession;\n // }\n // //main plot line progress\n // if (0 === branch && checkIsDotTutorial()) {\n // let plotScenTypeSession = GameRecord.recordVariables[\"p_s_t_s\" + plot.plotSceneType] as number;\n // plotScenTypeSession = plotScenTypeSession ? plotScenTypeSession : 1;\n // let r = GameRecord.recordVariables[\"p_s_t_i_p\"] as number;\n // r = r ? r : 0;\n // if (!prevPlot || (prevPlot.plotSceneType !== plot.plotSceneType || prevPlot.plotSceneTypeId !== plot.plotSceneTypeId)) {\n // r = 1;\n // } else {\n // r++;\n // }\n // GameRecord.recordVariables[\"p_s_t_i_p\"] = r;\n // }\n\n isChangPlotSceneType = !prevPlot || (prevPlot.plotSceneType !== plot.plotSceneType || prevPlot.plotSceneTypeId !== plot.plotSceneTypeId);\n //main plot line progress\n if (0 === branch && checkIsDotTutorial()) {\n stepMainLinePlotProgress();\n }\n }\n\n function stepMainLinePlotProgress() {\n let r = GameRecord.recordVariables[\"p_s_t_i_p\"] as number;\n r = r ? r : 0;\n if (isChangPlotSceneType) {\n r = 1;\n } else {\n r++;\n }\n GameRecord.recordVariables[\"p_s_t_i_p\"] = r;\n }\n\n export function dotMainLinePlotStart() {\n // main plot line progress and change plot scene (for BI dot);\n let plot = PlotManager.getCurrentPlots()[0];\n\n let mainPlotLineSession = GameRecord.globalVariables[\"m_p_l_s\"] as number;//主线总session计数\n mainPlotLineSession = mainPlotLineSession ? mainPlotLineSession : 1;\n let sKey = \"m_l_p_s_started\";\n let startedSession = GameRecord.globalVariables[sKey] as number;\n startedSession = startedSession ? startedSession : 0;\n if (startedSession >= mainPlotLineSession) {//max is equal\n return;\n }\n GameDotMgr.getInstance().dotPlot(mainPlotLineSession, PlotSessionState.Start);\n GameRecord.globalVariables[\"m_p_l_s\"] = mainPlotLineSession;\n\n let plotScenTypeSession = GameRecord.globalVariables[\"p_s_t_s\" + plot.plotSceneType] as number;\n plotScenTypeSession = plotScenTypeSession ? plotScenTypeSession : 0;\n plotScenTypeSession++;\n GameRecord.globalVariables[\"p_s_t_s\" + plot.plotSceneType] = plotScenTypeSession;//不同场景类型分别session计数\n\n if (checkIsDotTutorial()) {\n GameRecord.recordVariables[\"p_s_t_i_p\"] = 1;//主线剧情中,当前场景类型progress进度计数\n }\n GameRecord.globalVariables[sKey] = mainPlotLineSession;\n GameRecord.saveRecord();\n }\n\n /**\n * 主线剧情结束打点\n */\n export function dotMainLinePlotEnd() {\n let mainPlotLineSession = GameRecord.globalVariables[\"m_p_l_s\"] as number;\n GameDotMgr.getInstance().dotPlot(mainPlotLineSession, PlotSessionState.End);\n GameRecord.globalVariables[\"m_p_l_s\"] = mainPlotLineSession + 1;\n GameRecord.saveRecord();\n }\n\n /**剧情进度打点 */\n export function dotPlotProgress() {\n let plot = PlotManager.getCurrentPlots()[0];\n let plotScenTypeSession = GameRecord.globalVariables[\"p_s_t_s\" + plot.plotSceneType] as number;\n let r = GameRecord.recordVariables[\"p_s_t_i_p\"] as number;\n let tt = TutorialType.Message;\n switch (plot.plotSceneType) {\n case PlotSceneType.Message:\n {\n tt = TutorialType.Message;\n }\n break;\n case PlotSceneType.DatingEvent:\n {\n tt = TutorialType.Event;\n }\n break;\n case PlotSceneType.PhoneCall:\n {\n tt = TutorialType.Phone;\n }\n break;\n }\n if (r % 5 === 0 || r < 5) {\n GameDotMgr.getInstance().dotTutorial(tt, TutorialState.Progress, { session: plotScenTypeSession, progress: r });\n }\n }\n\n export function checkFuncUnloced(key: string) {\n return GameRecord.recordVariables[key] === FuncStateEnum.locked ? false : true;\n }\n\n export function checkRedPot(key: string) {\n return GameRecord.globalVariables[\"red_pot_\" + key] === RedPotStateEnum.Show;\n }\n\n export function setRedPotState(key: string, state: RedPotStateEnum) {\n GameRecord.globalVariables[\"red_pot_\" + key] = state;\n GameRecord.autoSave();\n }\n\n export async function plotUseEnergy(plotId: number) {\n if (GameRecord.globalVariables.plotUseEnergy === plotId) return true; // 当前剧情已扣过体力\n let player = getPlayerData();\n let currEnergy = player.getEnergy();\n\n const costEnergy: boolean = false;//是否消耗体力\n if (!costEnergy) {\n GameRecord.globalVariables.plotUseEnergy = plotId;\n return true;\n }\n\n // if (currEnergy >= GameConstData.GAME_CONST_PLOT_ENERGY_COST_VALUE) {\n // GameRecord.globalVariables.plotUseEnergy = plotId;\n // player.addEnergy(GameConstData.GAME_CONST_PLOT_ENERGY_COST_VALUE * (-1));\n // return true;\n // }\n // // TODO 提示体力不足,跳转购买体力?\n // let ret = await UIUtils.showAddEnergy(getItemConfig(GameConstData.GAME_CONST_ENERGY_PROPS_ID), getPlayerData().getProps(GameConstData.GAME_CONST_ENERGY_PROPS_ID));\n // if (ret) {\n // let itemconfig = GameModelManager.getItemConfig(GameConstData.GAME_CONST_ENERGY_PROPS_ID);\n // player.addEnergy(itemconfig.energy_recover - GameConstData.GAME_CONST_PLOT_ENERGY_COST_VALUE);\n // GameRecord.globalVariables.plotUseEnergy = plotId;\n // UIManager.showToast(GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_MAIN_ENERGY_ADADDSUCCESS_VALUE));\n // return true;\n // } else {\n // let itemcount = player.getProps(GameConstData.GAME_CONST_ENERGY_PROPS_ID);\n // itemcount = itemcount === undefined ? 0 : itemcount;\n // if (itemcount <= 0) {\n // UIManager.showToast(GameModelManager.getLanguageTxt(GameTextData.GAME_TEXT_MAIN_ENERGY_ADADDFAILED_VALUE));\n // }\n // return false;\n // }\n }\n\n // functions about gift \n\n /**\n * return:1.return all gifts ids which you can use to show;\n * 2.contains default unlocked gifts and plot-unlcked-and really unlocked gifts\n */\n // export function getGiftList(): number[] {\n // analysisGiftConfigArr();\n // let r = getRecordAlreadyUnlockedGifts();\n // let ret: number[] = [];\n // ret = ret.concat(defaultUnlockedGiftArr, r);\n // return ret;\n // }\n\n /**\n * return:1.return all of the plot-unlocked-gifts ids arr;\n */\n export function getRecordAlreadyUnlockedGifts(): number[] {\n // let r = GameRecord.getPlotsInfo();\n // let a: number[] = [];\n // if (r) {\n // for (let i = 0; i < plotUnlockedGiftArr.length; i++) {\n // let id = plotUnlockedGiftArr[i];\n // let pid = ConfigManager.getConfig(itemConfig, id).unlock_plot;\n // if (r[pid.toString()]) {\n // a.push(id);\n // }\n // }\n // }\n let rStr = GameRecord.recordVariables[\"plot_unlocked_gifts\"] as string;\n let a: number[] = [];\n if (rStr && \"\" !== rStr.trim()) {\n a = JSON.parse(rStr) as number[];\n }\n return a;\n }\n\n /**\n * return: 1.return the new unlocked gifts ids ;\n * 2.if you has showed this ids, you'd use function resumPlotUnlockedGifts to resume the data;\n */\n export function getNewPlotUnlockedGifts(): number[] {\n let items = GameRecord.globalVariables[\"plotunlockgifts\"] as number[];\n items = items === undefined ? [] : items;\n return items;\n }\n\n /**\n * resumPlotUnlockedGifts \n */\n export function resumPlotUnlockedGifts() {\n GameRecord.globalVariables[\"plotunlockgifts\"] = [];\n GameRecord.autoSave();\n }\n\n /**\n * checkHasNewGiftUnlocked \n */\n export function checkHasNewGiftUnlocked(): boolean {\n let g = getNewPlotUnlockedGifts();\n return g && g.length > 0;\n }\n\n // function analysisGiftConfigArr() {\n // if (defaultUnlockedGiftArr.length === 0) {\n // defaultUnlockedGiftArr = [];\n // plotUnlockedGiftArr = [];\n // let tComp = ItemType.Item_Gift;\n // let tbl = ConfigManager.getAllConfig(itemConfig);\n // let uComp = ItemUnlockType.ItemUnlock_Default;\n // for (let id in tbl) {\n // let cfg = tbl[id];\n // if (cfg && cfg.ItemType === tComp) {\n // if (cfg.ItemUnlockType === uComp) {\n // defaultUnlockedGiftArr.push(cfg.id);\n // } else if (cfg.ItemUnlockType === ItemUnlockType.ItemUnlock_Plot) {\n // plotUnlockedGiftArr.push(cfg.id);\n // }\n // }\n // }\n // }\n // }\n\n function pushNewPlotUnlockedGifts(gifts: number[]): number[] {\n let items = GameRecord.globalVariables[\"plotunlockgifts\"] as number[];\n items = items === undefined ? [] : items;\n for (let i = gifts.length - 1; i >= 0; i--) {\n let g = gifts[i];\n let index = items.findIndex((v) => v === g);\n if (index < 0) {\n continue;\n } else {\n gifts.splice(i, 1);\n }\n }\n items = items.concat(gifts);\n GameRecord.globalVariables[\"plotunlockgifts\"] = items;\n GameRecord.autoSave();\n return items;\n }\n\n // function refreshPlotUnlockedGifts(plotId: number) {\n // analysisGiftConfigArr();\n // let a: number[] = [];\n // for (let i = 0; i < plotUnlockedGiftArr.length; i++) {\n // let id = plotUnlockedGiftArr[i];\n // let pid = ConfigManager.getConfig(itemConfig, id).unlock_plot;\n // if (plotId === pid) {\n // a.push(id);\n // }\n // }\n // pushNewPlotUnlockedGifts(a);\n // }\n\n //voice\n\n export function checkVoiceNeedShowAD(vCfg: ICharacterVoiceConfig) {\n let ret = false;\n if (vCfg) {\n if (vCfg.ads === 0) {\n return ret;\n }\n let voiceAdRecord = GameRecord.globalVariables[\"voice_ad\"] as string;\n let arr: number[] = [];\n if (voiceAdRecord) {\n arr = JSON.parse(voiceAdRecord) as number[];\n }\n let set = new Set(arr);\n ret = !set.has(vCfg.id);\n }\n return ret;\n }\n\n export function pushVoiceShowAdToRecord(voiceId: number) {\n let voiceAdRecord = GameRecord.globalVariables[\"voice_ad\"] as string;\n let arr: number[] = [];\n if (voiceAdRecord) {\n arr = JSON.parse(voiceAdRecord) as number[];\n }\n let set = new Set(arr);\n if (!set.has(voiceId)) {\n arr.push(voiceId);\n }\n GameRecord.globalVariables[\"voice_ad\"] = JSON.stringify(arr);\n GameRecord.autoSave();\n }\n\n export function getCurDayStr(): string {\n let t = TimeManager.getTime();\n let time = new Date(t);\n let y = time.getFullYear();\n let m = time.getMonth() + 1;\n let d = time.getDate();\n let timeStr = y + \"_\" + m + \"_\" + d;\n return timeStr;\n }\n\n export function checkIsDotTutorial(): boolean {\n let curPlot = PlotManager.getCurrentPlots()[0];\n return curPlot && curPlot.chapterId === GameConstData.GAME_CONST_FIRST_CHAPTER_ID;\n }\n\n export function getRolesByRoleType(roleType: number) {\n let cfg = ConfigManager.getAllConfig(role);\n let roleList: DeepReadonlyObject<IRole>[] = [];\n for (const key in cfg) {\n let _roleData = cfg[key];\n if (roleType == _roleData.RoleType) {\n roleList.push(_roleData);\n }\n }\n return roleList;\n }\n\n //about lucky draw begin\n\n export function getLastFreeTime(): number {\n let time: number = 0;\n let recordKey: string = \"luck_draw_free_time\";\n let record = GameRecord.globalVariables[recordKey] as number;\n time = record ? record : 0;\n return time;\n }\n\n export function checkOverdue(time: number, refreshhour: number = 4) {//检测是否过期\n let checkTime = new Date(time);\n let currentTime = new Date(TimeManager.getTime());\n let year = checkTime.getFullYear();\n let month = checkTime.getMonth() + 1;\n let day = checkTime.getDate();\n let hour = checkTime.getHours();\n if (currentTime.getFullYear() > year) {\n return true;\n } else if (currentTime.getMonth() + 1 > month) {\n return true;\n } if (currentTime.getDate() == day) {\n if (hour > 0 && hour < refreshhour) {\n if (currentTime.getHours() >= refreshhour) {\n return true;\n }\n }\n } else if (currentTime.getDate() > day && currentTime.getHours() >= refreshhour) {\n return true;\n }\n return false;\n }\n\n export function setFreeState(state: FreeState) {\n GameRecord.globalVariables[\"free_luckyDraw\"] = state;\n GameRecord.saveRecord();\n }\n\n export function getFreeState(): FreeState {\n let r = GameRecord.globalVariables[\"free_luckyDraw\"] as number;\n r = r === FreeState.Cost ? FreeState.Cost : FreeState.Free;\n return r;\n }\n\n export function checkLuckyDrawIsFree(): boolean {\n let ret = false;\n let lastFreeTime = getLastFreeTime();\n let isNewDay: boolean = checkOverdue(lastFreeTime);\n let freeState: FreeState = getFreeState();\n if (isNewDay) {\n ret = true;\n setFreeState(FreeState.Free);\n } else {\n ret = freeState === FreeState.Free;\n }\n return ret;\n }\n\n export function setLastFreeTime(time?: number) {\n let recordKey: string = \"luck_draw_free_time\";\n GameRecord.globalVariables[recordKey] = time ? time : TimeManager.getTime();\n GameRecord.saveRecord();\n }\n\n // export function getRewardPoolConfig(): DeepReadonlyObject<IRewardsPoolConfig> | undefined {\n // let ret: DeepReadonlyObject<IRewardsPoolConfig> | undefined = undefined;\n // let cfg = ConfigManager.getAllConfig(rewardsPoolConfig);\n // for (let id in cfg) {\n // let item = cfg[id];\n // if (item.pool_active === 1) {\n // ret = item;\n // break;\n // }\n // }\n // return ret;\n // }\n\n export function addSkinItemToRecord(itemId: number) {\n let recordKey = \"own_skins\";\n let exist = false;\n let recordStr = GameRecord.globalVariables[recordKey] as string;\n let skinItemIds: number[] = [];\n if (recordStr) {\n skinItemIds = JSON.parse(recordStr) as number[];\n exist = skinItemIds.findIndex((v) => v === itemId) !== -1;\n }\n if (!exist) {\n skinItemIds.push(itemId);\n GameRecord.globalVariables[recordKey] = JSON.stringify(skinItemIds);\n GameRecord.saveRecord();\n RefreshDiscoverTabRed.emit();\n }\n }\n\n export function checkHasOwnedSkin(itemId: number): boolean {\n let recordKey = \"own_skins\";\n let ret = false;\n let recordStr = GameRecord.globalVariables[recordKey] as string;\n if (recordStr) {\n let skinItemIds: number[] = [];\n skinItemIds = JSON.parse(recordStr) as number[];\n ret = skinItemIds.findIndex((v) => v === itemId) !== -1;\n }\n return ret;\n }\n\n // export function checkHasGotLuckyDrawSkin(): boolean {\n // let ret = false;\n // let curPoolCfg = getRewardPoolConfig();\n // if (curPoolCfg) {\n // ret = checkHasOwnedSkin(curPoolCfg.pool_skin_include[0]);\n // }\n // return ret;\n // }\n\n // export function checkSkinNeedDressGuide(skinId: number): boolean {\n // let needGuide: boolean = false;\n // if (skinId !== undefined && skinId !== NaN && skinId >= 0) {\n // let itemCfg = ConfigManager.getConfig(itemConfig, skinId);\n // if (itemCfg) {\n // if (itemCfg.ItemType === ItemType.Item_Skin) {\n // let r = GameRecord.globalVariables[\"dressed_skins\"] as string;\n // if (r && \"\" !== r.trim()) {\n // let arr = JSON.parse(r) as number[];\n // needGuide = arr.findIndex((v) => v === skinId) === (-1);\n // } else {\n // needGuide = true;\n // }\n // } else {\n // throw \"id =>\" + skinId + \"is not a skin item id\";\n // }\n // } else {\n // throw \"invalid skinId\";\n // }\n // }\n // return needGuide;\n // }\n\n // export function checkHasSkinNeedDressGuide(): boolean {\n // let recordKey = \"own_skins\";\n // let ret = false;\n // let skinIds: number[] = [];\n // let recordStr = GameRecord.globalVariables[recordKey] as string;\n // if (!recordStr || \"\" === recordStr.trim()) {\n // return false;\n // } else {\n // skinIds = JSON.parse(recordStr) as number[];\n // if (skinIds && skinIds.length !== 0) {\n // for (let i = 0; i < skinIds.length; i++) {\n // let need = checkSkinNeedDressGuide(skinIds[i]);\n // if (need) {\n // ret = true;\n // break;\n // }\n // }\n // }\n // }\n // return ret;\n // }\n\n // export function completeSkinDressGuide(skinId: number) {\n // if (skinId !== undefined && skinId !== NaN && skinId >= 0) {\n // let itemCfg = ConfigManager.getConfig(itemConfig, skinId);\n // if (itemCfg) {\n // if (itemCfg.ItemType === ItemType.Item_Skin) {\n // let r = GameRecord.globalVariables[\"dressed_skins\"] as string;\n // let exist = false;\n // let arr: number[] = [];\n // if (r && \"\" !== r.trim()) {\n // arr = JSON.parse(r) as number[];\n // exist = arr.findIndex((v) => v === skinId) !== (-1);\n // }\n // if (!exist) {\n // arr.push(skinId);\n // GameRecord.globalVariables[\"dressed_skins\"] = JSON.stringify(arr);\n // GameRecord.saveRecord();\n // GameModelManager.RefreshDiscoverTabRed.emit();\n // }\n // } else {\n // throw \"id =>\" + skinId + \"is not a skin item id\";\n // }\n // } else {\n // throw \"invalid skinId\";\n // }\n // }\n // }\n\n export function checkSkinAndGraceCondition(condition: DeepReadonlyObject<ConditionExpression>): boolean {\n let ret: boolean = false;\n if (condition.groups && condition.groups.length > 0\n && condition.groups[0].items\n && condition.groups[0].items.length > 0\n && condition.groups[0].items[0].target) {\n if (condition.groups[0].items[0].target.startsWith(\"r.like\")) {\n let roleIdStr = condition.groups[0].items[0].target.replace(\"r.like\", \"\");\n let role = getRoleData(parseInt(roleIdStr));\n if (role && role.getRoleLike() >= parseInt(condition.groups[0].items[0].oprand.value)) {\n ret = true;\n }\n }\n if (condition.groups[0].items[0].target.startsWith(\"r.skin\")) {\n let roleIdStr = condition.groups[0].items[0].target.replace(\"r.skin\", \"\");\n let role = getRoleData(parseInt(roleIdStr));\n let v = parseInt(condition.groups[0].items[0].oprand.value);\n if (role && role.hasSkin(v) && role.getCurSkin() === v) {\n ret = true;\n }\n }\n }\n return ret;\n }\n\n //about lucky draw end\n\n // export function getDateSceneKeyPlotsProgress(sceneId: number): number {\n // let progresss: number = 0;\n // let cfg = ConfigManager.getConfig(dateSceneConfig, sceneId);\n // let keyPlots = cfg.accomplish_plots;\n // if (!keyPlots || keyPlots.length === 0) {\n // progresss = 100;\n // } else {\n // let recordKeyStr: string = \"date_key_plots_scene_\" + sceneId;\n // let recordStr: string = GameRecord.globalVariables[recordKeyStr] as string;\n // let recordKeyPlots: number[] = [];\n // if (recordStr && \"\" !== recordStr.trim()) {\n // recordKeyPlots = JSON.parse(recordStr) as number[];\n // }\n // progresss = recordKeyPlots.length / keyPlots.length * 100;\n // }\n // return progresss;\n // }\n\n // export function pushDateSceneKeyPlot(sceneId: number, plotId: number) {\n // let progress = getDateSceneKeyPlotsProgress(sceneId);\n // if (progress === 100) {\n // return;\n // }\n // let cfg = ConfigManager.getConfig(dateSceneConfig, sceneId);\n // let keyPlots = cfg.accomplish_plots;\n // if (keyPlots.findIndex((v) => v === plotId) < 0) {\n // return;\n // }\n // let recordKeyStr: string = \"date_key_plots_scene_\" + sceneId;\n // let recordStr: string = GameRecord.globalVariables[recordKeyStr] as string;\n // let recordKeyPlots: number[] = [];\n // if (recordStr && \"\" !== recordStr.trim()) {\n // recordKeyPlots = JSON.parse(recordStr) as number[];\n // }\n // if (recordKeyPlots.findIndex((v) => v === plotId) < 0) {\n // recordKeyPlots.push(plotId);\n // GameRecord.globalVariables[recordKeyStr] = JSON.stringify(recordKeyPlots);\n // GameRecord.saveRecord();\n // GameModelManager.RefreshDateSceneProgress.emit();\n // }\n // }\n\n export function getGraceLevelByGraceValue(value: number): number {\n let level = 0;\n let cfgs = ConfigManager.getAllConfig(relationLevelConfig);\n let gCount = 0;\n for (let id in cfgs) {\n let cfg = cfgs[id];\n gCount += cfg.relation_value;\n if (value >= gCount) {\n level = cfg.id;\n }\n }\n return level;\n }\n\n export function checkIsNeedEnterCurDateChapter(): boolean {\n return isNeedEnterCurDateChapter;\n }\n\n export function setNotNeedEnterCurDateChapter() {\n isNeedEnterCurDateChapter = false;\n }\n\n // export function setProgressDateScene(sceneId: number | undefined) {\n // let allCfg = ConfigManager.getAllConfig(dateAniConfig);\n // let content = false;\n // for (let id in allCfg) {\n // let cfg = allCfg[id];\n // if (cfg && cfg.date_id === sceneId) {sss\n // content = true;\n // }\n // }\n // if (content) {\n // progressSceneId = sceneId;\n // }\n // }\n\n // function checkIsGiveSkin(): boolean {\n // let ret = false;\n // if (progressSceneId) {\n // let giveSceneId: number = 0;\n // let allCfg = ConfigManager.getAllConfig(dateAniConfig);\n // for (let id in allCfg) {\n // let cfg = allCfg[id];\n // if (cfg && cfg.date_id) {\n // giveSceneId = cfg.date_id > giveSceneId ? cfg.date_id : giveSceneId;\n // }\n // }\n // ret = giveSceneId === progressSceneId;\n // }\n // return ret;\n // }\n\n // export function getShowDateProgressInfo(): { isSkin: boolean, sceneId: number | undefined } {\n // let isSkin = checkIsGiveSkin();\n // return { isSkin: isSkin, sceneId: progressSceneId };\n // }\n\n export function setUnShowDateProgress() {\n progressSceneId = undefined;\n }\n\n export function isDiscountAll(): boolean {\n return false;\n }\n\n // export function checkHasGift(): { hasGift: boolean, gifts?: { id: GamePropType, num: number }[] } {\n // let ret: { hasGift: boolean, gifts?: { id: GamePropType, num: number }[] } = { hasGift: false };\n // let tbl = ConfigManager.getAllConfig(itemConfig);\n // let role = getPlayerData();\n // let gifts: { id: GamePropType, num: number }[] = [];\n // for (let id in tbl) {\n // let cfg = tbl[id];\n // if (cfg && ItemType.Item_Gift === cfg.ItemType) {\n // if (role) {\n // let num = role.getProps(cfg.id);\n // num = num ? num : 0;\n // if (num > 0) {\n // let gift: { id: GamePropType, num: number } = { id: cfg.id, num: num };\n // gifts.push(gift);\n // }\n // }\n // }\n // }\n // ret.hasGift = gifts.length !== 0;\n // if (ret.hasGift) {\n // ret.gifts = gifts;\n // }\n // return ret;\n // }\n\n export function stepGetNewPlayerGift(isFirst: boolean, time?: number, step?: number) {\n let timeRecord = GameRecord.globalVariables[\"n_p_r_g_s_t\"] as number;\n timeRecord = timeRecord ? timeRecord : TimeManager.getTime();\n time = time ? time : 0;\n time = time ? time : timeRecord;\n const stepMax: number = 7;\n step = step ? step : 1;\n let recordKey = \"n_p_r_g_s_p\";\n let record = GameRecord.globalVariables[recordKey] as number;\n record = record ? record : 0;\n record += step;\n let overTime: boolean = checkOverdue(time);\n if (record <= stepMax && (overTime || isFirst)) {\n GameRecord.globalVariables[recordKey] = record;\n GameRecord.globalVariables[\"n_p_r_g_s_t\"] = TimeManager.getTime();\n GameRecord.saveRecord();\n }\n }\n\n export function registerAutoPopView(viewType: AutoPopViewType) {\n if (_autoPopView.length === 0) {\n _autoPopView.push(viewType);\n } else {\n if (_autoPopView.findIndex((v) => v === viewType) === (-1)) {\n _autoPopView.push(viewType);\n }\n }\n }\n\n export function checkAutoPopView() {\n if (_autoPopView.length === 0) {\n return;\n }\n _autoPopView = _autoPopView.sort((v1: AutoPopViewType, v2: AutoPopViewType) => {\n return v1 - v2;\n });\n let v = _autoPopView.pop();\n if (v) {\n AutoPopView.emit(v);\n }\n }\n\n export function checkWelfareNeedGuide() {\n let time = GameRecord.globalVariables[\"sininsevendaydatetime\"];\n time = time === undefined ? 0 : time;\n if (checkOverdue(time)) {\n return true;\n }\n return false;\n }\n\n export function markResumeFullEnergy() {\n let marked = checkResumeFullEnergyMarked();\n if (marked) {\n return;\n }\n let timeKeyStr: string = \"resume_full_energy_time\";\n GameRecord.globalVariables[timeKeyStr] = TimeManager.getTime();\n GameRecord.saveRecord();\n }\n\n export function checkResumeFullEnergyMarked(): boolean {\n let mark: boolean = false;\n let timeKeyStr: string = \"resume_full_energy_time\";\n let timeRecord = GameRecord.globalVariables[timeKeyStr] as number;\n if (timeRecord) {\n let over = checkOverdue(timeRecord);\n if (!over) {\n mark = true;\n }\n }\n return mark;\n }\n\n export function checkIsNeedResumeFullEnergy(): boolean {\n let isResume: boolean = false;\n let timeKeyStr: string = \"resume_full_energy_time\";\n let timeRecord = GameRecord.globalVariables[timeKeyStr] as number;\n if (timeRecord) {\n let over = checkOverdue(timeRecord);\n if (over) {\n isResume = true;\n }\n }\n return isResume;\n }\n\n export function dealAutoResumeFullEnergy() {\n let isResume: boolean = checkIsNeedResumeFullEnergy();\n if (isResume) {\n let r = getPlayerData();\n let e = r.getEnergy();\n r.addEnergy(GameConstData.GAME_CONST_ENERGY_MAX - e);\n let timeKeyStr: string = \"resume_full_energy_time\";\n GameRecord.globalVariables[timeKeyStr] = 0;\n GameRecord.saveRecord();\n }\n }\n\n export function checkIsOverPlotLimitTime() {\n let isOver: boolean = false;\n let timeKeyStr: string = \"plot_limit_time\";\n let recordTime = GameRecord.globalVariables[timeKeyStr] as number;\n if (recordTime) {\n isOver = checkOverdue(recordTime);\n } else {\n let timeKeyStr: string = \"plot_limit_time\";\n GameRecord.globalVariables[timeKeyStr] = TimeManager.getTime();\n }\n return isOver;\n }\n\n export async function dealBlockedPlot(isAdForce?: boolean) {\n let over = checkIsOverPlotLimitTime();\n let curPlot = PlotManager.getCurrentPlots()[0];\n if (curPlot && curPlot.plotSceneType === PlotSceneType.BlockPlot) {\n if (over || isAdForce) {\n await PlotManager.completePlot(curPlot);\n let timeKeyStr: string = \"plot_limit_time\";\n GameRecord.globalVariables[timeKeyStr] = TimeManager.getTime();\n PlotBlockedChanged.emit();\n } else {\n ShowPlotBlocked.emit();\n }\n }\n }\n\n export function checkIsPlotBlocked(): boolean {\n let blocked: boolean = false;\n let curPlot = PlotManager.getCurrentPlots()[0];\n if (curPlot && curPlot.plotSceneType === PlotSceneType.BlockPlot) {\n blocked = true;\n }\n return blocked;\n }\n\n export function getCurPlotBlockedId(): number {\n let id = PlotManager.getCurrentPlots()[0].id;\n return id;\n }\n\n export function checkIsNeedShowPlotBlocked(): boolean {\n let show: boolean = false;\n let curPlot = PlotManager.getCurrentPlots()[0];\n if (curPlot && curPlot.plotSceneType === PlotSceneType.BlockPlot) {\n let over = checkIsOverPlotLimitTime();\n if (!over) {\n show = true;\n }\n }\n return show;\n }\n\n export function isPlotBlockedOrToBeContinued(): boolean {\n let isPlotBolcked = checkIsPlotBlocked();\n let p = PlotManager.getCurrentPlots()[0];\n let isToBeContinued = p && p.id === SpecialPlotId.ToBeContinued;\n let preConditionFlag = isPlotBolcked || isToBeContinued;\n return preConditionFlag;\n }\n\n export function getCurMainLinePlotId(): number {\n let p = PlotManager.getCurrentPlots()[0];\n return p ? p.id : 0;\n }\n\n\n let tipAddGracePlots: number[] = [];\n\n export function checkPlotTipAddGraceAlready(plotId: number): boolean {\n let ret = tipAddGracePlots.findIndex((v) => v === plotId) !== (-1);\n return ret;\n }\n\n export function pushTipAddGracePlot(plotId: number) {\n let exist = tipAddGracePlots.findIndex((v) => v === plotId) !== (-1);\n if (!exist) {\n tipAddGracePlots.push(plotId);\n }\n }\n\n /**\n * 根据卧室物品Id获取对应的淘宝商品类型\n * @param itemId 卧室物品Id\n * @returns 返回值为卧室物品对应的淘宝商品类型\n */\n export function getTypeByBedroomItemId(itemId: number): number {\n let type: number = -1;\n let cfg = ConfigManager.getAllConfig(bedroomItemConfig);\n if (cfg) {\n for (const id in cfg) {\n if (cfg[id].bedroomItemId == itemId) {\n type = cfg[id].itemType;\n }\n }\n }\n return type;\n }\n\n /**\n * 根据商品类型获得该商品对应的淘宝地址链接\n * @param type 商品类型\n * @returns 返回值为商品类型对应的商品地址\n */\n export function getTaoBaoShopUrlByType(type: number): string {\n let link: string = \"\";\n let cfg = ConfigManager.getAllConfig(taoBaoShopUrlConfig);\n if (cfg) {\n for (const id in cfg) {\n if (cfg[id].type == type) {\n link = cfg[id].websiteUrl;\n }\n }\n }\n return link;\n }\n\n /**\n * 根据商品类型获得该商品对应的有赞地址链接\n * @param type 商品类型\n * @returns 返回值为商品类型对应的商品地址\n */\n export function getYouZanShopUrlByType(type: number): string {\n let link: string = \"\";\n let cfg = ConfigManager.getAllConfig(taoBaoShopUrlConfig);\n if (cfg) {\n for (const id in cfg) {\n if (cfg[id].type == type) {\n link = cfg[id].youZanUrl;\n }\n }\n }\n return link;\n }\n\n /**\n * 根据网页链接跳转网页\n * @param url 要跳转的网页链接\n */\n export function jumpToTaobaoShop(url: string) {\n if (channel == \"dummy\") {\n let mUrl = url.replace(\"taobao:\", \"https:\");\n window.open(mUrl);\n } else {\n let packageName: string = \"com.taobao.taobao\";\n let errorTips: string = \"您还没有安装淘宝客户端!\";\n jsb.reflection.callStaticMethod('org/cocos2dx/javascript/AppActivity', 'jumpToTaobaoShop', \"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V\", packageName, url, errorTips);\n }\n }\n\n /**特殊剧情id数组 */\n const SpecialPlotIdArr: number[] = [SpecialPlotId.CustomPlotStart, SpecialPlotId.End, SpecialPlotId.ToBeContinued];\n /**根据剧情id获取剧情的内容 */\n export async function getPlotContent(plotId: number): Promise<IPlotContent | undefined> {\n let plotContent: IPlotContent | undefined = undefined;\n let isSpecialPlot = SpecialPlotIdArr.findIndex((v) => v === plotId) !== (-1);\n if (isSpecialPlot) {\n cc.error(\"can not get special plot content, plotId = \", plotId);\n return undefined;\n }\n try {\n let plot = await getPlot(plotId);\n if (plot && plot.sentences && plot.sentences.length !== 0) {\n const sentence = plot.sentences[0];\n const content = sentence.content;\n if (content) {\n plotContent = {\n plotId: plotId,\n roleId: sentence.roleId,\n content: []\n };\n if (content.type === SentenceType.TEXT) {\n plotContent.content.push(richNodesToCocosString(content.value));\n } else if (content.type === SentenceType.SELECT) {\n for (let i = 0; i < content.value.length; i++) {\n let value = content.value[i];\n if (value.content && value.content.type === SentenceType.TEXT) {\n plotContent.content.push(richNodesToCocosString(value.content.value));\n } else {\n plotContent.content.push(value.summary);\n }\n }\n }\n } else {\n cc.error(\"plot has no content , plotId = \", plotId);\n }\n } else {\n cc.warn(\"plot has no sentence or no such plot , plotId = \", plotId);\n }\n } catch (error) {\n cc.error(\"getPlotContent error plotId = \" + plotId + \" error info = \", error);\n return undefined;\n }\n return plotContent;\n }\n\n /**\n * 设置是否自动弹出公告界面\n * @param autoShow 是否自动弹出公告界面\n */\n export function setAutoShowNotice(autoShow: boolean) {\n let autoShowNoticeInfo: AutoShowNoticeInfo = {\n time: TimeManager.getTime(),\n autoShow: autoShow,\n };\n GameRecord.globalVariables[\"AutoShowNoticeInfo\"] = autoShowNoticeInfo;\n GameRecord.saveRecord();\n }\n\n /**\n * 获取是否自动弹出公告界面\n * @returns 返回值为是否自动弹出公告界面\n */\n export function getAutoShowNotice(): boolean {\n let autoShowNoticeInfo = GameRecord.globalVariables[\"AutoShowNoticeInfo\"] as AutoShowNoticeInfo;\n let autoShow = true;\n if (autoShowNoticeInfo == undefined) {\n autoShow = true;\n } else {\n autoShow = autoShowNoticeInfo.autoShow;\n let isOver = checkOverdue(autoShowNoticeInfo.time);\n if (isOver) {\n autoShow = true;\n setAutoShowNotice(autoShow);\n }\n }\n return autoShow;\n }\n\n /**\n * 设置是否自动弹出紧急公告界面\n * @param autoShow 是否自动弹出紧急公告界面\n */\n export function setUrgentNoticeInfo(noticeInfo: UrgentNoticeInfo) {\n GameRecord.globalVariables[\"UrgentNoticeInfo\"] = noticeInfo;\n GameRecord.saveRecord();\n }\n\n /**\n * 获取是否自动弹出紧急公告界面\n * @returns 返回值为是否自动弹出紧急公告界面\n */\n export function getUrgentNoticeInfo(): UrgentNoticeInfo {\n let noticeInfo = GameRecord.globalVariables[\"UrgentNoticeInfo\"] as UrgentNoticeInfo;\n noticeInfo = noticeInfo ? noticeInfo : { readed: false, autoShow: true };\n return noticeInfo;\n }\n\n /**\n * 设置是否自动弹出紧急公告界面\n * @param autoShow 是否自动弹出紧急公告界面\n */\n export function setNoticeReaded(readed: boolean) {\n GameRecord.globalVariables[\"NoticeReaded\"] = readed;\n GameRecord.saveRecord();\n }\n\n /**\n * 获取是否自动弹出紧急公告界面\n * @returns 返回值为是否自动弹出紧急公告界面\n */\n export function getNoticeReaded(): boolean {\n let readed = GameRecord.globalVariables[\"NoticeReaded\"] as boolean;\n readed = readed ? readed : false;\n return readed;\n }\n}\n\nexport interface IPlotContent {\n plotId: number;\n roleId: number;\n content: string[];\n}\n\nexport interface AutoShowNoticeInfo {\n time: number;\n autoShow: boolean;\n}\n\nexport interface UrgentNoticeInfo {\n readed: boolean;\n autoShow: boolean;\n}"]}