{"version":3,"sources":["webpack://JsStoreWorker/webpack/bootstrap","webpack://JsStoreWorker/./src/common/enums.ts","webpack://JsStoreWorker/./src/worker/log_helper.ts","webpack://JsStoreWorker/./src/worker/business/idb_helper.ts","webpack://JsStoreWorker/./src/worker/utils/is_null.ts","webpack://JsStoreWorker/./src/worker/business/update/schema_checker.ts","webpack://JsStoreWorker/./src/worker/business/insert/value_checker.ts","webpack://JsStoreWorker/./src/worker/business/insert/values_checker.ts","webpack://JsStoreWorker/./src/worker/business/query_helper.ts","webpack://JsStoreWorker/./src/worker/keystore/enums.ts","webpack://JsStoreWorker/./src/worker/keystore/business/base_logic.ts","webpack://JsStoreWorker/./src/worker/keystore/business/idb_helper.ts","webpack://JsStoreWorker/./src/worker/keystore/business/remove_logic.ts","webpack://JsStoreWorker/./src/worker/keystore/business/set_logic.ts","webpack://JsStoreWorker/./src/worker/keystore/utils_logic.ts","webpack://JsStoreWorker/./src/worker/keystore/business/init_db_logic.ts","webpack://JsStoreWorker/./src/worker/keystore/business/get_logic.ts","webpack://JsStoreWorker/./src/worker/keystore/business/main_logic.ts","webpack://JsStoreWorker/./src/worker/keystore/query_executor.ts","webpack://JsStoreWorker/./src/worker/keystore/instance.ts","webpack://JsStoreWorker/./src/worker/config.ts","webpack://JsStoreWorker/./src/worker/business/base_helper.ts","webpack://JsStoreWorker/./src/worker/business/where_checker.ts","webpack://JsStoreWorker/./src/worker/business/base.ts","webpack://JsStoreWorker/./src/worker/business/clear.ts","webpack://JsStoreWorker/./src/worker/business/init_db.ts","webpack://JsStoreWorker/./src/worker/model/table_helper.ts","webpack://JsStoreWorker/./src/worker/model/db_helper.ts","webpack://JsStoreWorker/./src/worker/model/column.ts","webpack://JsStoreWorker/./src/worker/model/table.ts","webpack://JsStoreWorker/./src/worker/model/database.ts","webpack://JsStoreWorker/./src/worker/business/union/index.ts","webpack://JsStoreWorker/./src/worker/query_executor.ts","webpack://JsStoreWorker/./src/worker/business/where_base.ts","webpack://JsStoreWorker/./src/worker/helpers/promise.ts","webpack://JsStoreWorker/./src/worker/helpers/promise_all.ts","webpack://JsStoreWorker/./src/worker/business/base_db.ts","webpack://JsStoreWorker/./src/worker/business/drop_db.ts","webpack://JsStoreWorker/./src/worker/start.ts","webpack://JsStoreWorker/./src/worker/index.ts","webpack://JsStoreWorker/./src/worker/helpers/auto_increment_helper.ts","webpack://JsStoreWorker/./src/worker/business/insert/instance.ts","webpack://JsStoreWorker/./src/worker/business/select/base_select.ts","webpack://JsStoreWorker/./src/worker/business/select/not_where.ts","webpack://JsStoreWorker/./src/worker/business/select/in.ts","webpack://JsStoreWorker/./src/worker/business/select/regex.ts","webpack://JsStoreWorker/./src/worker/business/select/where.ts","webpack://JsStoreWorker/./src/worker/business/select/group_by_helper.ts","webpack://JsStoreWorker/./src/worker/utils/remove_space.ts","webpack://JsStoreWorker/./src/worker/business/select/orderby_helper.ts","webpack://JsStoreWorker/./src/worker/business/select/join.ts","webpack://JsStoreWorker/./src/worker/business/select/instance.ts","webpack://JsStoreWorker/./src/worker/business/count/base_count.ts","webpack://JsStoreWorker/./src/worker/business/count/not_where.ts","webpack://JsStoreWorker/./src/worker/business/count/in.ts","webpack://JsStoreWorker/./src/worker/business/count/regex.ts","webpack://JsStoreWorker/./src/worker/business/count/where.ts","webpack://JsStoreWorker/./src/worker/business/count/instance.ts","webpack://JsStoreWorker/./src/worker/business/remove/base_remove.ts","webpack://JsStoreWorker/./src/worker/business/remove/not_where.ts","webpack://JsStoreWorker/./src/worker/business/remove/in.ts","webpack://JsStoreWorker/./src/worker/business/remove/regex.ts","webpack://JsStoreWorker/./src/worker/business/remove/where.ts","webpack://JsStoreWorker/./src/worker/business/remove/instance.ts","webpack://JsStoreWorker/./src/worker/business/update/base_update.ts","webpack://JsStoreWorker/./src/worker/business/update/not_where.ts","webpack://JsStoreWorker/./src/worker/business/update/in.ts","webpack://JsStoreWorker/./src/worker/business/update/regex.ts","webpack://JsStoreWorker/./src/worker/business/update/where.ts","webpack://JsStoreWorker/./src/worker/business/update/instance.ts","webpack://JsStoreWorker/./src/worker/utils/get_data_type.ts","webpack://JsStoreWorker/./src/worker/utils/is_array.ts","webpack://JsStoreWorker/./src/worker/utils/get_object_first_key.ts","webpack://JsStoreWorker/./src/worker/business/transaction/instance.ts"],"names":[],"mappings":";;;;;;;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAY,UA6BX;AA7BD,WAAY,UAAU;IAClB,uDAAyC;IACzC,wDAA0C;IAC1C,kDAAoC;IACpC,gDAAkC;IAClC,2DAA6C;IAC7C,yDAA2C;IAC3C,6DAA+C;IAC/C,oCAAsB;IACtB,mDAAqC;IACrC,iDAAmC;IACnC,mDAAqC;IACrC,4CAA8B;IAC9B,sCAAwB;IACxB,+CAAiC;IACjC,sDAAwC;IACxC,+CAAiC;IACjC,yCAA2B;IAC3B,sDAAwC;IACxC,oDAAsC;IACtC,sCAAwB;IACxB,8CAAgC;IAChC,sCAAwB;IACxB,+DAAiD;IACjD,sDAAwC;IACxC,qDAAuC;IACvC,uDAAyC;IACzC,4CAA8B;IAC9B,uDAAyC;AAC7C,CAAC,EA7BW,UAAU,KAAV,UAAU,QA6BrB;AAED,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,yCAAwB;IACxB,kCAAiB;IACjB,2CAA0B;AAC9B,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,IAAY,SAQX;AARD,WAAY,SAAS;IACjB,8BAAiB;IACjB,8BAAiB;IACjB,4BAAe;IACf,8BAAiB;IACjB,gCAAmB;IACnB,0BAAa;IACb,mCAAsB;AAC1B,CAAC,EARW,SAAS,KAAT,SAAS,QAQpB;AAED,IAAY,GAsBX;AAtBD,WAAY,GAAG;IACX,yBAAkB;IAClB,gCAAyB;IACzB,sCAA+B;IAC/B,gCAAyB;IACzB,kBAAW;IACX,kBAAW;IACX,wBAAiB;IACjB,wBAAiB;IACjB,wBAAiB;IACjB,wBAAiB;IACjB,oCAA6B;IAC7B,yBAAkB;IAClB,sBAAe;IACf,yBAAkB;IAClB,sBAAe;IACf,4CAAqC;IACrC,8BAAuB;IACvB,kCAA2B;IAC3B,qCAA8B;IAC9B,2BAAoB;IACpB,sBAAe;AACnB,CAAC,EAtBW,GAAG,KAAH,GAAG,QAsBd;AAED,IAAY,KAGX;AAHD,WAAY,KAAK;IACb,gDAAuC;IACvC,kDAAyC;AAC7C,CAAC,EAHW,KAAK,KAAL,KAAK,QAGhB;AAED,IAAY,YAwBX;AAxBD,WAAY,YAAY;IACpB,+BAAe;IACf,6BAAa;IACb,+BAAe;IACf,yBAAS;IACT,2BAAW;IACX,6BAAa;IACb,iCAAiB;IACjB,8BAAc;IACd,yCAAyB;IACzB,sCAAsB;IACtB,iCAAiB;IACjB,uCAAuB;IACvB,2BAAW;IACX,2BAAW;IACX,2BAAW;IACX,+BAAe;IACf,2BAAW;IACX,yBAAS;IACT,6BAAa;IACb,+BAAe;IACf,2BAAW;IACX,yCAAyB;IACzB,6BAAa;AACjB,CAAC,EAxBW,YAAY,KAAZ,YAAY,QAwBvB;AAED,IAAY,QAGX;AAHD,WAAY,QAAQ;IAChB,iCAAqB;IACrB,mCAAuB;AAC3B,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AAED,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,wBAAW;IACX,uBAAU;IACV,sBAAS;AACb,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,IAAY,iBAMX;AAND,WAAY,iBAAiB;IACzB,4CAAuB;IACvB,sCAAiB;IACjB,+CAA0B;IAC1B,sDAAiC;IACjC,0DAAqC;AACzC,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;;;;;;;;ACvHD;AAAA;AAAA;AAAqD;AACnB;AAElC;IAKI,mBAAY,IAAgB,EAAE,IAAgB;QAAhB,kCAAgB;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,yBAAK,GAAL;QACI,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAEM,aAAG,GAAV,UAAW,GAAG;QACV,IAAI,sDAAM,CAAC,YAAY,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACpB;IACL,CAAC;IAED,4BAAQ,GAAR;QACI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,CAAC;IAID,uBAAG,GAAH;QACI,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SACR,CAAC;IAChB,CAAC;IAEO,2BAAO,GAAf;QACI,IAAI,MAAc,CAAC;QACnB,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,gEAAU,CAAC,QAAQ;gBACpB,MAAM,GAAG,gCAAgC,CAAC;gBAC1C,MAAM;YACV,KAAK,gEAAU,CAAC,eAAe;gBAC3B,MAAM,GAAG,8BAA8B,CAAC;gBACxC,MAAM;YACV,KAAK,gEAAU,CAAC,cAAc;gBAC1B,MAAM,GAAG,6BAA6B,CAAC;gBACvC,MAAM;YACV,KAAK,gEAAU,CAAC,mBAAmB;gBAC/B,MAAM,GAAG,4BAA4B,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;gBACtE,MAAM;YACV,KAAK,gEAAU,CAAC,eAAe;gBAC3B,MAAM,GAAG,+BAA+B,CAAC;gBACzC,MAAM;YACV,KAAK,gEAAU,CAAC,oBAAoB;gBAChC,MAAM,GAAG,2BAA2B,CAAC;gBACrC,MAAM;YACV,KAAK,gEAAU,CAAC,eAAe;gBAC3B,MAAM,GAAG,sBAAsB,CAAC;gBAChC,MAAM;YACV,KAAK,gEAAU,CAAC,SAAS;gBACrB,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;gBACvD,MAAM;YACV,KAAK,gEAAU,CAAC,cAAc;gBAC1B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC5B,aAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oCAAiC,CAAC,CAAC;oBAClE,aAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,qBAAkB,CAAC;gBACtD,MAAM;YACV,KAAK,gEAAU,CAAC,eAAe;gBAC3B,MAAM,GAAG,uCAAuC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;gBAC9E,MAAM;YACV,KAAK,gEAAU,CAAC,SAAS;gBACrB,MAAM,GAAG,wCAAwC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;gBACnF,MAAM;YACV,KAAK,gEAAU,CAAC,aAAa;gBACzB,MAAM,GAAG,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;oBAC7D,wBAAwB,CAAC;gBAC7B,MAAM;YACV,KAAK,gEAAU,CAAC,gBAAgB;gBAAE,MAAM,GAAG,gCAAgC,CAAC;gBACxE,MAAM;YACV,KAAK,gEAAU,CAAC,aAAa;gBACzB,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,kBAAkB,CAAC;gBAClE,MAAM;YACV,KAAK,gEAAU,CAAC,UAAU;gBACtB,MAAM,GAAG,wBAAsB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAiB,CAAC;gBACrE,MAAM;YACV,KAAK,gEAAU,CAAC,SAAS;gBACrB,MAAM,GAAG,8BAA8B,CAAC;gBACxC,MAAM;YACV,KAAK,gEAAU,CAAC,SAAS;gBACrB,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;gBAC1D,MAAM;YACV,KAAK,gEAAU,CAAC,SAAS;gBACrB,MAAM,GAAG,gDAAgD,CAAC;gBAC1D,MAAM;YACV,KAAK,gEAAU,CAAC,gBAAgB;gBAC5B,MAAM,GAAG,qDAAmD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAY,CAAC;gBAC7F,MAAM;YACV,KAAK,gEAAU,CAAC,gBAAgB;gBAC5B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;gBACpB,MAAM;YACV;gBACI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;gBACtB,MAAM;SACb;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IACL,gBAAC;AAAD,CAAC;;;;;;;;;;AC5GD;AAAA;AAAA;AAAA;AAAA;AAAwF;AAC3C;AAEV;AACQ;AAE3C;IAAA;IA+EA,CAAC;IAnEU,gCAAsB,GAA7B,UAA8B,cAAwB;QAClD,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,KAAK,uEAAiB,CAAC,SAAS,EAAE;YAC9D,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACtC,IAAI,cAAc,KAAK,IAAI,EAAE;gBACzB,IAAM,YAAY,GAAG,IAAI,uDAAM,CAAC;gBAEhC,CAAC,EAAE;gBAEH,CAAC,CAAC,CAAC;gBACH,YAAY,CAAC,cAAc,EAAE,CAAC;aACjC;SACJ;IACL,CAAC;IAEM,2BAAiB,GAAxB,UAAyB,UAAoB,EAAE,QAAoB,EAAE,IAAK;QACtE,IAAI,SAAS,CAAC,WAAW,KAAK,IAAI,EAAE;YAChC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,8DAAQ,CAAC,SAAS,CAAC;YACxC,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7E,IAAM,UAAU,GAAG;gBACf,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC7B,QAAQ,EAAE,CAAC;YACf,CAAC,CAAC;YACF,SAAS,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;YAC9C,SAAS,CAAC,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC;SAC9C;IACL,CAAC;IAEM,mBAAS,GAAhB,UAAiB,IAAc;QAC3B,OAAO,gEAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAEM,wBAAc,GAArB,UAAsB,MAAyB,EAAE,GAAgB;QAC7D,IAAI,GAAG,KAAK,SAAS,EAAE;YACnB,SAAS,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC;SACzC;aACI;YACD,SAAS,CAAC,QAAQ,GAAG;gBACjB,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE,GAAG;aACjB,CAAC;SACL;IACL,CAAC;IAEM,mBAAS,GAAhB;QACI,OAAO,sEAAO,CAAW,UAAC,GAAG,EAAE,GAAG;YAC9B,gEAAQ,CAAC,GAAG,CAAW,eAAe,CAAC,CAAC,IAAI,CAAC,gBAAM;gBAC/C,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,sBAAY,GAAnB,UAAoB,MAAc;QAC9B,OAAO,sEAAO,CAAS,UAAC,GAAG,EAAE,GAAG;YAC5B,gEAAQ,CAAC,GAAG,CAAC,aAAW,MAAM,gBAAa,CAAC,CAAC,IAAI,CAAC,mBAAS;gBACvD,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,qBAAW,GAAlB,UAAmB,MAAc;QAC7B,OAAO,gEAAQ,CAAC,GAAG,CAAW,aAAW,MAAM,YAAS,CAAC,CAAC;IAC9D,CAAC;IAEM,kBAAQ,GAAf,UAAgB,SAAiB;QAC7B,IAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,eAAK,IAAI,YAAK,CAAC,IAAI,KAAK,SAAS,EAAxB,CAAwB,CAAC,CAAC;QACvF,OAAO,YAAY,CAAC;IACxB,CAAC;IA3EM,qBAAW,GAAmB,IAAI,CAAC;IAInC,yBAAe,GAAG,CAAC,CAAC;IACpB,kBAAQ,GAAc;QACzB,SAAS,EAAE,uEAAiB,CAAC,UAAU;KAC1C,CAAC;IAqEN,gBAAC;CAAA;AA/EqB;;;;;;;;;;;;;;;;;;;;;ACNf,IAAM,MAAM,GAAG,UAAC,KAAK;IACxB,IAAI,KAAK,IAAI,IAAI,EAAE;QACf,OAAO,IAAI,CAAC;KACf;SAAM;QACH,QAAQ,OAAO,KAAK,EAAE;YAClB,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;YACzC,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;SACtC;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;;;;;;ACR2C;AACW;AACM;AAE9D;IAEI,uBAAY,KAAY;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,6BAAK,GAAL,UAAM,QAAgB,EAAE,OAAe;QAAvC,iBA4BC;QA3BG,IAAI,GAAG,GAAc,IAAI,CAAC;QAC1B,IAAI,OAAO,QAAQ,KAAK,0BAAS,CAAC,MAAM,EAAE;YACtC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,mDAAmD;gBACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAC,MAAc;oBACpC,IAAI,GAAG,KAAK,IAAI,EAAE;wBACd,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;4BACzB,GAAG,GAAG,KAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;yBAC5D;wBACD,OAAO,IAAI,CAAC;qBACf;yBACI;wBACD,OAAO,KAAK,CAAC;qBAChB;gBACL,CAAC,CAAC,CAAC;aACN;iBACI;gBACD,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;aACzE;SACJ;aACI;YACD,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,SAAS,CAAC,CAAC;SAC7C;QACD,IAAI,GAAG,IAAI,IAAI,EAAE;YACb,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;SACpB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAIO,sCAAc,GAAtB,UAAuB,MAAc,EAAE,KAAK;QACxC,IAAI,GAAG,GAAc,IAAI,CAAC;QAC1B,wBAAwB;QACxB,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;YAC1C,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SAC1E;QAED,iBAAiB;QACjB,IAAM,IAAI,GAAG,4CAAW,CAAC,KAAK,CAAC,CAAC;QAChC,IAAM,YAAY,GAAG,KAAK,IAAI,IAAI,CAAC;QACnC,IAAI,MAAM,CAAC,QAAQ,IAAI,YAAY,EAAE;YACjC,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;gBAC/C,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;aAC9E;SACJ;QAED,0BAA0B;QAC1B,IAAI,YAAY,IAAI,IAAI,KAAK,QAAQ,EAAE;YACnC,IAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACvC,KAAmB,UAAkB,EAAlB,WAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAlB,cAAkB,EAAlB,IAAkB,EAAE;gBAAlC,IAAM,IAAI;gBACX,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,EAAE;oBAC5E,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;iBAC9E;gBACD,MAAM;aACT;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IACL,oBAAC;AAAD,CAAC;;;;ACvE6D;AACjB;AACW;AAExD;IAOI,sBAAY,KAAY,EAAE,kBAAkB;QAJ5C,iBAAY,GAAG,KAAK,CAAC;QAErB,uBAAkB,GAAG,EAAE,CAAC;QAGpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IACjD,CAAC;IAED,0CAAmB,GAAnB,UAAoB,KAAK;QAAzB,iBAOC;QANG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAC,MAAM;YAC5B,KAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,CAAC,KAAI,CAAC,YAAY,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAEO,+CAAwB,GAAhC,UAAiC,MAAc;QAC3C,wBAAwB;QACxB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;YACnD,IAAI,CAAC,kBAAkB,CAAC,2BAAU,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SAC9E;QACD,iBAAiB;aACZ,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxD,4CAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE;YAC1D,IAAI,CAAC,kBAAkB,CAAC,2BAAU,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SAClF;IACL,CAAC;IAEO,iDAA0B,GAAlC,UAAmC,MAAc;QAC7C,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,8BAA8B;QAC9B,IAAI,MAAM,CAAC,aAAa,EAAE;YACtB,wDAAwD;YACxD,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;gBACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACpE;iBACI;gBACD,IAAI,4CAAW,CAAC,WAAW,CAAC,KAAK,0BAAS,CAAC,MAAM,EAAE;oBAC/C,2EAA2E;oBAC3E,sCAAsC;oBACtC,IAAI,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;wBACpD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;qBACtD;iBACJ;aACJ;SACJ;QACD,uBAAuB;aAClB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;SAC5C;QACD,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAEO,yCAAkB,GAA1B,UAA2B,KAAiB,EAAE,OAAe;QACzD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,+BAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACL,mBAAC;AAAD,CAAC;;;;;;;;;;;;;AClE8C;AAC8C;AACxC;AACP;AAE9C;IAKI,uBAAY,KAAY,EAAE,MAAgB;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,4CAAoB,GAApB;QAAA,iBAeC;QAdG,OAAO,kCAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC3B,IAAM,uBAAuB,GAAG,UAAC,mBAAmB;gBAChD,KAAI,CAAC,eAAe,GAAG,IAAI,0BAAY,CAAC,KAAI,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;gBACzE,KAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC,CAAC;YACF,IAAI,uCAAa,CAAC,kBAAkB,KAAK,KAAK,EAAE;gBAC5C,+DAAsB,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAa;oBACjD,uBAAuB,CAAC,aAAa,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACpB;iBACI;gBACD,uBAAuB,CAAC,wBAAW,CAAC,mBAAmB,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aAC7E;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,qCAAa,GAArB;QAAA,iBAmBC;QAlBG,OAAO,kCAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC3B,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAC,IAAI;gBACnB,OAAO,GAAG,KAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBACzD,OAAO,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,EAAE;gBACT,IAAM,KAAK,GAAG,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,CAAC;aACjB;YACD,IAAM,UAAU,GAAG,8DAAqB,CAAC,KAAI,CAAC,KAAK,EAAE,KAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAC9F,IAAI,uCAAa,CAAC,kBAAkB,KAAK,KAAK,EAAE;gBAC5C,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAC1C;iBACI;gBACD,OAAO,EAAE,CAAC;aACb;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACL,oBAAC;AAAD,CAAC;;;;ACrDD;AAAmG;AAC1D;AACC;AACD;AACA;AAEE;AACE;AAE7C;IAOI,qBAAY,GAAQ,EAAE,KAAU;QAHhC,kBAAa,GAAG,KAAK,CAAC;QAIlB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,oCAAc,GAAd;QAAA,iBA8BC;QA7BG,OAAO,kCAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC3B,IAAM,aAAa,GAAG;gBAClB,IAAI,KAAI,CAAC,KAAK,IAAI,IAAI,EAAE;oBACpB,OAAO,EAAE,CAAC;iBACb;qBACI;oBACD,MAAM,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;iBACtB;YACL,CAAC,CAAC;YACF,QAAQ,KAAI,CAAC,GAAG,EAAE;gBACd,KAAK,oBAAG,CAAC,MAAM,CAAC;gBAChB,KAAK,oBAAG,CAAC,MAAM,CAAC;gBAChB,KAAK,oBAAG,CAAC,KAAK;oBACV,KAAI,CAAC,gBAAgB,EAAE,CAAC;oBACxB,aAAa,EAAE,CAAC;oBAChB,MAAM;gBACV,KAAK,oBAAG,CAAC,MAAM;oBACX,KAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;wBACxC,KAAK,CAAC,UAAC,GAAG;wBACN,KAAI,CAAC,KAAK,GAAG,GAAG,CAAC;wBACjB,aAAa,EAAE,CAAC;oBACpB,CAAC,CAAC,CAAC;oBACP,MAAM;gBACV,KAAK,oBAAG,CAAC,MAAM;oBACX,KAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,aAAa,EAAE,CAAC;oBAChB,MAAM;aACb;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,uCAAiB,GAAzB,UAA0B,QAA8B;QACpD,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAE,IAAI,CAAC,KAAqB,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,GAAc,CAAC;QACnB,IAAI,KAAK,EAAE;YACP,QAAQ,4CAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBACpC,KAAK,0BAAS,CAAC,KAAK;oBAChB,MAAM;gBACV,KAAK,0BAAS,CAAC,IAAI;oBACf,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,eAAe,CAAC,CAAC;oBAChD,MAAM;gBACV;oBACI,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,QAAQ,CAAC,CAAC;aAChD;SACJ;aACI;YACD,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,aAAa,EAAE,EAAE,SAAS,EAAG,IAAI,CAAC,KAAqB,CAAC,IAAI,EAAE,CAAC,CAAC;SAClG;QACD,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAC1C,CAAC;IAEO,uCAAiB,GAAzB;QAAA,iBAsBC;QArBG,OAAO,kCAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC3B,IAAI,KAAK,CAAC;YACV,IAAM,GAAG,GAAG,KAAI,CAAC,iBAAiB,CAAC,UAAC,GAAG;gBACnC,KAAK,GAAG,GAAG,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,IAAI,IAAI,EAAE;gBACb,IAAI,KAAI,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE;oBACnC,OAAO,EAAE,CAAC;iBACb;qBACI;oBACD,IAAM,sBAAoB,GAAG,IAAI,4BAAoB,CAAC,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAChF,sBAAoB,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC;wBAC5C,KAAI,CAAC,KAAqB,CAAC,MAAM,GAAG,sBAAoB,CAAC,MAAM,CAAC;wBACjE,OAAO,EAAE,CAAC;oBACd,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBACpB;aACJ;iBACI;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC;aACf;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,uCAAiB,GAAzB;QACI,IAAI,CAAC,KAAK,GAAG,IAAI,4BAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACpB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;gBAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;oBACpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;iBAClC;aACJ;SACJ;IACL,CAAC;IAEO,0CAAoB,GAA5B;QACI,KAAK,IAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAChC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;gBAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC/E,OAAO;aACV;SACJ;IACL,CAAC;IAEO,sCAAgB,GAAxB;QACI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;gBAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;oBACpB,IAAI,CAAC,uBAAuB,EAAE,CAAC;iBAClC;aACJ;SAEJ;aACI;YACD,IAAI,CAAC,KAAK,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;SAC9F;IACL,CAAC;IAEO,mCAAa,GAArB,UAAsB,SAAiB;QACnC,IAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,eAAK,IAAI,YAAK,CAAC,IAAI,KAAK,SAAS,EAAxB,CAAwB,CAAC,CAAC;QACjF,OAAO,KAAK,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,sBAAY,kCAAS;aAArB;YACI,OAAO,+BAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;;;OAAA;IAEO,+BAAS,GAAjB,UAAkB,SAAiB;QAC/B,OAAO,+BAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAEO,6CAAuB,GAA/B;QACI,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,IAAM,WAAW,GAAG,UAAC,GAAW,EAAE,IAAc;YAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,aAAG,IAAI,UAAG,CAAC,GAAG,CAAC,CAAC,6BAAY,CAAC,UAAU,CAAC,IAAI,IAAI,EAAzC,CAAyC,CAAC,IAAI,CAAC,CAAC;QACjF,CAAC,CAAC;QACF,IAAM,cAAc,GAAG,UAAC,GAAG,EAAE,IAAc;YACvC,IAAI,KAAK,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,UAAC,IAAI;gBACd,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,KAAK,CAAC,6BAAY,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;oBACxC,GAAG,CAAC,IAAI,CAAC,CAAC,6BAAY,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,6BAAY,CAAC,UAAU,CAAC,CAAC;oBACrE,IAAI,GAAG,CAAC,6BAAY,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;wBACpC,GAAG,CAAC,6BAAY,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;wBAC1B,GAAG,CAAC,6BAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;qBACnC;yBACI,IAAI,GAAG,CAAC,6BAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;wBAC/C,GAAG,CAAC,6BAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;qBACnC;oBACD,GAAG,CAAC,6BAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,6BAAY,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,6BAAY,CAAC,UAAU,CAAC,CAAC;oBACnF,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,6BAAY,CAAC,UAAU,CAAC,CAAC;iBAC7C;YACL,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACf,CAAC,CAAC;QACF,QAAQ,4CAAW,CAAC,UAAU,CAAC,EAAE;YAC7B,KAAK,0BAAS,CAAC,MAAM;gBACjB,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1C,IAAI,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;oBACpC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;wBACxB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;qBAC5D;yBACI;wBACD,IAAM,aAAW,GAAG,EAAE,CAAC;wBACvB,SAAS,CAAC,OAAO,CAAC,UAAC,IAAI;;4BACnB,aAAW,CAAC,IAAI,CAAC,cAAc,WAAG,GAAC,IAAI,IAAG,UAAU,CAAC,IAAI,CAAC,OAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC3E,CAAC,CAAC,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,aAAW,CAAC;qBAClC;iBACJ;gBACD,MAAM;YACV;gBACI,IAAM,UAAQ,GAAG,EAAE,CAAC;gBACnB,UAAuB,CAAC,OAAO,CAAC,aAAG;oBAChC,IAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjC,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;wBAC3B,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;qBACtC;oBACD,UAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAQ,CAAC;SACnC;IACL,CAAC;IAxLM,+BAAmB,GAA0D,EAAE,CAAC;IA4L3F,kBAAC;CAAA;AAjMuB;;;;;;;;;;ACTxB,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,4CAAuB;IACvB,sCAAiB;IACjB,iDAA4B;AAChC,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;;;ACFD;IAAA;QACI,YAAO,GAAG,IAAI,CAAC;QAGf,iBAAY,GAAG,KAAK,CAAC;QACrB,eAAU,GAAG,CAAC,CAAC;IAanB,CAAC;IATa,6BAAc,GAAxB,UAAyB,CAAC;QACtB,EAAE,IAAI,CAAC,UAAU,CAAC;QAClB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;YACvB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,OAAO,CAAE,CAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACzC;SACJ;QACD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACL,WAAC;AAAD,CAAC;;;;ACpB4C;AAG7C;IAAA;IA2BA,CAAC;IAlBU,gCAAsB,GAA7B;QACI,SAAS,CAAC,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,KAAK,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACjH,CAAC;IAEM,2BAAiB,GAAxB,UAAyB,UAAU,EAAE,QAAoB,EAAE,IAAK;QAC5D,IAAI,SAAS,CAAC,WAAW,KAAK,IAAI,EAAE;YAChC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;YACjC,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7E,SAAS,CAAC,WAAW,CAAC,UAAU,GAAG;gBAC/B,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC7B,QAAQ,EAAE,CAAC;YACf,CAAC,CAAC;YACD,SAAS,CAAC,WAAmB,CAAC,SAAS,GAAG;gBACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC,CAAC;SACL;IACL,CAAC;IAvBM,qBAAW,GAAmB,IAAI,CAAC;IAEnC,kBAAQ,GAAc;QACzB,SAAS,EAAE,iBAAiB,CAAC,UAAU;KAC1C,CAAC;IAoBN,gBAAC;CAAA;AA3BqB;;;;;;;;;;;;;;;;ACHc;AAEc;AACT;AAEzC;IAA4B,0BAAI;IAG5B,gBAAY,GAAW,EAAE,SAA0C,EAAE,OAA8B;QAAnG,YACI,iBAAO,SAIV;QAND,iBAAW,GAAG,CAAC,CAAC;QAGZ,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;IAC3B,CAAC;IAED,wBAAO,GAAP;QAAA,iBAqBC;QApBG,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAM,UAAU,GAAG,UAAC,MAAM,EAAE,KAAK;YAC7B,IAAM,aAAa,GAAG,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzF,aAAa,CAAC,OAAO,GAAG,UAAC,CAAC;gBACtB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC;YACF,aAAa,CAAC,SAAS,GAAG,UAAC,CAAM;gBAC7B,IAAM,MAAM,GAAuB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnD,IAAI,MAAM,EAAE;oBACR,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChB,EAAE,KAAI,CAAC,WAAW,CAAC;oBACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;iBACrB;YACL,CAAC,CAAC;QACN,CAAC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,UAAU,CAAC,4BAAa,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SAClD;IACL,CAAC;IAEO,gCAAe,GAAvB;QACI,oBAAS,CAAC,iBAAiB,CAAC,CAAC,4BAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,WAAW,GAAG,oBAAS,CAAC,WAAW,CAAC,WAAW,CAAC,4BAAa,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC;IAEO,uCAAsB,GAA9B;QACI,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACpC;IACL,CAAC;IACL,aAAC;AAAD,CAAC,CA3C2B,IAAI,GA2C/B;;;;;;;;;;;;;;;;;AChDmC;AAEK;AACS;AAElD;IAAyB,+BAAI;IAEzB,aAAY,KAAc,EAAE,SAA2B,EAAE,OAA8B;QAAvF,YACI,iBAAO,SASV;QAuCO,6BAAuB,GAAG;YAC9B,IAAI,KAAI,CAAC,YAAY,KAAK,KAAK,IAAI,KAAI,CAAC,SAAS,EAAE;gBAC/C,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACxB;QACL,CAAC;QAnDG,IAAI;YACA,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SAC1B;QACD,OAAO,EAAE,EAAE;YACP,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACrB;;IACL,CAAC;IAED,qBAAO,GAAP;QAAA,iBA8BC;QA7BG,IAAM,uBAAuB,GAAG;YAC5B,IAAM,aAAa,GAAG,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,4BAAa,CAAC,UAAU,CAAC,CAAC,UAAU,CAC7E,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,4BAAa,CAAC,UAAU,CAAC,CAAC,CACzD,CAAC;YACF,aAAa,CAAC,SAAS,GAAG,UAAC,CAAC;gBACxB,IAAM,MAAM,GAAwB,CAAS,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC5D,IAAI,MAAM,EAAE;oBACR,MAAM,CAAC,MAAM,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;iBAC7B;qBACI;oBACD,UAAU,EAAE,CAAC;iBAChB;YACL,CAAC,CAAC;YAEF,aAAa,CAAC,OAAO,GAAG,UAAC,CAAC;gBACtB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC;QAEN,CAAC,CAAC;QACF,IAAM,UAAU,GAAG;YACf,IAAM,SAAS,GAAG,KAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;YACnD,SAAS,CAAC,OAAO,GAAG,UAAC,CAAC;gBAClB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC;QACN,CAAC,CAAC;QACF,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,uBAAuB,EAAE,CAAC;IAC9B,CAAC;IAEO,6BAAe,GAAvB;QACI,oBAAS,CAAC,iBAAiB,CAAC,CAAC,4BAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrF,IAAI,CAAC,WAAW,GAAG,oBAAS,CAAE,WAAW,CAAC,WAAW,CAAC,4BAAa,CAAC,SAAS,CAAC,CAAC;IACnF,CAAC;IAOL,UAAC;AAAD,CAAC,CAxDwB,IAAI,GAwD5B;;;;AC5DiD;AAElD;IAAA;IAaA,CAAC;IAXU,oBAAc,GAArB,UAAsB,MAAyB,EAAE,GAAI;QACjD,IAAI,GAAG,KAAK,SAAS,EAAE;YACnB,oBAAS,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC;SACzC;aACI;YACD,oBAAS,CAAC,QAAQ,GAAG;gBACjB,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE,GAAG;aACjB,CAAC;SACL;IACL,CAAC;IACL,YAAC;AAAD,CAAC;;;;;;;ACf4C;AACN;AACE;AACS;AACC;AAE5C,IAAI,SAAS,CAAC;AACrB;IACI,gBAAY,MAAc,EAAE,SAAqB,EAAE,OAA8B;QAC7E,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjD,oBAAS,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACvC,SAAS,CAAC,OAAO,GAAG,UAAC,KAAK;YACtB,IAAK,KAAa,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;gBAC1D,OAAO,CAAC;oBACJ,OAAO,EAAE,sBAAsB;oBAC/B,IAAI,EAAE,2BAAU,CAAC,qBAAqB;iBAC/B,CAAC,CAAC;aAChB;iBACI;gBACD,OAAO,CAAE,KAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACxC;QACL,CAAC,CAAC;QAEF,SAAS,CAAC,SAAS,GAAG,UAAC,KAAK;YACxB,oBAAS,CAAC,QAAQ,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;YAC3D,oBAAS,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;YAC1C,oBAAS,CAAC,YAAY,CAAC,OAAO,GAAG;gBAC7B,oBAAS,CAAC,sBAAsB,EAAE,CAAC;gBACnC,iBAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,EAAE,2BAAU,CAAC,gBAAgB,CAAC,CAAC;YAChF,CAAC,CAAC;YAEF,oBAAS,CAAC,YAAY,CAAC,eAAe,GAAG,UAAC,CAAM;gBAC5C,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,EAAE,EAAE,sCAAsC;oBAC/D,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,0CAA0C;oBAC5D,oBAAS,CAAC,sBAAsB,EAAE,CAAC;oBACnC,iBAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,EAAE,2BAAU,CAAC,gBAAgB,CAAC,CAAC;iBAC/E;YACL,CAAC,CAAC;YAEF,oBAAS,CAAC,YAAY,CAAC,OAAO,GAAG,UAAC,CAAM;gBACpC,oBAAS,CAAC,QAAQ,CAAC,SAAS,GAAG,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACrF,CAAC,CAAC;YAEF,oBAAS,CAAC,YAAY,CAAC,OAAO,GAAG,UAAC,CAAC;gBAC/B,oBAAS,CAAC,QAAQ,GAAG;oBACjB,SAAS,EAAE,iBAAiB,CAAC,MAAM;oBACnC,SAAS,EAAE,oBAAoB;iBAClC,CAAC;YACN,CAAC,CAAC;YAEF,IAAI,SAAS,IAAI,IAAI,EAAE;gBACnB,SAAS,EAAE,CAAC;aACf;QACL,CAAC,CAAC;QAEF,SAAS,CAAC,eAAe,GAAG,UAAC,KAAU;YACnC,IAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAC1B,MAAM,GAAG,KAAK,CAAC;YACnB,EAAE,CAAC,iBAAiB,CAAC,4BAAa,CAAC,SAAS,EAAE;gBAC1C,OAAO,EAAE,MAAM;aAClB,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC;IACN,CAAC;IACL,aAAC;AAAD,CAAC;;;;;;;;;;;;;;;;;AChEmC;AAEc;AACT;AAEzC;IAAyB,+BAAI;IAEzB,aAAY,GAAW,EAAE,SAA2B,EAAE,OAA8B;QAApF,YACI,iBAAO,SAIV;QA0BO,6BAAuB,GAAG;YAC9B,IAAI,KAAI,CAAC,YAAY,KAAK,KAAK,EAAE;gBAC7B,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;aAChC;QACL,CAAC;QAjCG,KAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;IAC3B,CAAC;IAED,qBAAO,GAAP;QAAA,iBAiBC;QAhBG,IAAM,OAAO,GAAG,UAAC,MAAM,EAAE,KAAK;YAC1B,IAAM,aAAa,GAAG,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzF,aAAa,CAAC,OAAO,GAAG,UAAC,CAAC;gBACtB,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC;YACF,aAAa,CAAC,SAAS,GAAG,UAAC,CAAM;gBAC7B,IAAM,MAAM,GAAuB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnD,IAAI,MAAM,EAAE;oBACR,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBACxC;YACL,CAAC,CAAC;QACN,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,CAAC,4BAAa,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhD,CAAC;IAEO,8BAAgB,GAAxB;QACI,oBAAS,CAAC,iBAAiB,CAAC,CAAC,4BAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;QACjG,IAAI,CAAC,WAAW,GAAG,oBAAS,CAAE,WAAW,CAAC,WAAW,CAAC,4BAAa,CAAC,SAAS,CAAC,CAAC;IACnF,CAAC;IAOL,UAAC;AAAD,CAAC,CAtCwB,IAAI,GAsC5B;;;;AC1C4C;AAEL;AACN;AACO;AACP;AACO;AAEzC;IAEI,cAAY,eAAsB;QAAtB,wDAAsB;QAC9B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;IAED,6CAA8B,GAA9B,UAA+B,OAAsB;QAArD,iBAsBC;QArBG,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SAC9B;aACI;YACD,QAAQ,oBAAS,CAAC,QAAQ,CAAC,SAAS,EAAE;gBAClC,KAAK,iBAAiB,CAAC,SAAS;oBAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBAAC,MAAM;gBACpE,KAAK,iBAAiB,CAAC,UAAU;oBAC7B,UAAU,CAAC;wBACP,KAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;oBACjD,CAAC,EAAE,GAAG,CAAC,CAAC;oBAAC,MAAM;gBACnB,KAAK,iBAAiB,CAAC,MAAM;oBACzB,IAAI,oBAAS,CAAC,oBAAoB,EAAE;wBAChC,IAAI,CAAC,QAAQ,CAAC;4BACV,oBAAS,CAAC,oBAAoB,GAAG,KAAK,CAAC;4BACvC,KAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;wBACjD,CAAC,EAAE,UAAC,GAAG;4BACH,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACvB,CAAC,CAAC,CAAC;qBACN;aACR;SACJ;IACL,CAAC;IAEO,2BAAY,GAApB,UAAqB,MAAM;QACvB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,2BAAY,GAApB,UAAqB,OAAsB;QAA3C,iBAwBC;QAvBG,IAAM,SAAS,GAAG,UAAC,OAAQ;YACvB,KAAI,CAAC,YAAY,CAAC;gBACd,aAAa,EAAE,OAAO;aACT,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,IAAM,OAAO,GAAG,UAAC,GAAG;YAChB,KAAI,CAAC,YAAY,CAAC;gBACd,YAAY,EAAE,GAAG;gBACjB,YAAY,EAAE,IAAI;aACL,CAAC,CAAC;QACvB,CAAC,CAAC;QAEF,QAAQ,OAAO,CAAC,IAAI,EAAE;YAClB,KAAK,KAAK;gBACN,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM;YACV,KAAK,KAAK;gBAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM;YACV,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC1D,MAAM;YACV,KAAK,SAAS;gBAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAAC,MAAM;YACzD,KAAK,UAAU;gBAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAAC,MAAM;SAC5D;IACL,CAAC;IAED,kBAAG,GAAH,UAAI,KAAc,EAAE,SAA2B,EAAE,OAA8B;QAC3E,IAAM,cAAc,GAAG,IAAI,aAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1D,cAAc,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,qBAAM,GAAN,UAAO,GAAW,EAAE,SAA2B,EAAE,OAA8B;QAC3E,IAAM,cAAc,GAAG,IAAI,mBAAM,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3D,cAAc,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,kBAAG,GAAH,UAAI,GAAW,EAAE,SAA2B,EAAE,OAA8B;QACxE,IAAM,WAAW,GAAG,IAAI,aAAG,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrD,WAAW,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IAED,uBAAQ,GAAR,UAAS,SAAqB,EAAE,OAA8B;QAC1D,IAAM,MAAM,GAAG,UAAU,CAAC;QAC1B,IAAM,cAAc,GAAG,IAAI,oBAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,sBAAO,GAAP,UAAQ,SAAqB,EAAE,OAA8B;QACzD,IAAI,oBAAS,CAAC,QAAQ,CAAC,SAAS,KAAK,iBAAiB,CAAC,SAAS,EAAE;YAC9D,oBAAS,CAAC,QAAQ,CAAC,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC;YACxD,oBAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;SAClC;QACD,SAAS,EAAE,CAAC;IAChB,CAAC;IACL,WAAC;AAAD,CAAC;;;;;;;AC/F4C;AACF;AAE3C;IAAA;IA2CA,CAAC;IAtCU,0BAAY,GAAnB,UAAuB,OAAsB;QAA7C,iBAcC;QAbG,OAAO,kCAAO,CAAI,UAAC,OAAO,EAAE,MAAM;YAC9B,OAAO,CAAC,SAAS,GAAG,UAAC,MAAM;gBACvB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;YACF,OAAO,CAAC,OAAO,GAAG,UAAC,KAAK;gBACpB,IAAI,IAA8B,EAAE;oBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBACxB;gBACD,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC;YACF,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,KAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,yBAAW,GAAlB;QACI,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAM,OAAO,GAAkB;gBAC3B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC/B,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;aACnB,CAAC;YACnB,IAAI,eAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;SACrF;IACL,CAAC;IAEM,6BAAe,GAAtB,UAAuB,OAAqB;QACxC,IAAM,eAAe,GAAkB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACjE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,OAAO,CAAC,YAAY,EAAE;YACtB,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACjD;aACI;YACD,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACpD;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAzCM,0BAAY,GAAoB,EAAE,CAAC;IACnC,uBAAS,GAAG,YAAY,CAAC;IACzB,wBAAU,GAAG,KAAK,CAAC;IACnB,6BAAe,GAAG,KAAK,CAAC;IAuCnC,oBAAC;CAAA;AA3CyB;;;ACJ1B;AAAiD;AAGjD;IAAA;IAsEA,CAAC;IArEG;;;OAGG;IACI,aAAI,GAAG;QACV,IAAI,SAAS,EAAE;YACX,OAAO,4BAAa,CAAC,YAAY,CAAC;gBAC9B,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,IAAI;aACG,CAAC,CAAC;SACvB;IACL,CAAC,CAAC;IAEK,cAAK,GAAG;QACX,OAAO,4BAAa,CAAC,YAAY,CAAC;YAC9B,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,IAAI;SACG,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF;;;;;;;OAOG;IACI,YAAG,GAAG,UAAI,GAAW;QACxB,OAAO,4BAAa,CAAC,YAAY,CAAI;YACjC,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,GAAG;SACb,CAAC,CAAC;IACP,CAAC,CAAC;IAEF;;;;;;;;OAQG;IACI,YAAG,GAAG,UAAC,GAAG,EAAE,KAAK;QACpB,IAAM,KAAK,GAAG;YACV,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,KAAK;SACJ,CAAC;QACb,OAAO,4BAAa,CAAC,YAAY,CAAC;YAC9B,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;SACE,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF;;;;;;;OAOG;IACI,eAAM,GAAG,UAAC,GAAW;QACxB,OAAO,4BAAa,CAAC,YAAY,CAAC;YAC9B,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;SACI,CAAC,CAAC;IACxB,CAAC,CAAC;IACN,eAAC;CAAA;AAtEoB;;;;;;;;ACHrB;AAAA;IAAA;IAGA,CAAC;IAFU,mBAAY,GAAG,KAAK,CAAC;IACrB,uBAAgB,GAAG,KAAK,CAAC;IACpC,aAAC;CAAA;AAHkB;;;;;;;;;;;;;;;;ACAsB;AACS;AAGlD;IAAA;IAwFA,CAAC;IAlFG,sBAAc,gCAAQ;QAFtB,mBAAmB;aAEnB;YACI,OAAO,+BAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;;;OAAA;IAED,sBAAc,oCAAY;aAA1B;YACI,OAAO,+BAAS,CAAC,YAAY,CAAC;QAClC,CAAC;;;OAAA;IAED,sBAAc,mCAAW;aAAzB;YACI,OAAO,+BAAS,CAAC,WAAW,CAAC;QACjC,CAAC;;;OAAA;IAES,sCAAiB,GAA3B,UAA4B,UAAoB,EAAE,QAAoB,EAAE,IAAK;QACzE,+BAAS,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAES,8BAAS,GAAnB,UAAoB,KAAK;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAES,iCAAY,GAAtB,UAAuB,SAAiB;QACpC,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,eAAK,IAAI,YAAK,CAAC,IAAI,KAAK,SAAS,EAAxB,CAAwB,CAAC,CAAC;QAChF,OAAO,KAAK,IAAI,CAAC,CAAC;IACtB,CAAC;IAES,6BAAQ,GAAlB,UAAmB,SAAiB;QAChC,OAAO,+BAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAES,gCAAW,GAArB,UAAsB,KAAK,EAAE,EAAG;QAC5B,IAAI,QAAqB,CAAC;QAC1B,QAAQ,EAAE,EAAE;YACR,KAAK,6BAAY,CAAC,OAAO;gBAAE,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAAC,MAAM;YACpG,KAAK,6BAAY,CAAC,WAAW;gBAAE,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAAC,MAAM;YACrF,KAAK,6BAAY,CAAC,kBAAkB;gBAAE,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;YACtF,KAAK,6BAAY,CAAC,QAAQ;gBAAE,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAAC,MAAM;YAClF,KAAK,6BAAY,CAAC,eAAe;gBAAE,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;YACnF;gBAAS,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;SACtD;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAES,kCAAa,GAAvB,UAAwB,SAAS;QAC7B,IAAM,UAAU,GAAW,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC;QAC/D,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAES,+BAAU,GAApB,UAAqB,SAAS;QAC1B,IAAM,WAAW,GAAmB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,EACtF,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,OAAiB,CAAC;IACzC,CAAC;IAES,4CAAuB,GAAjC,UAAkC,IAAY,EAAE,OAAiB;QAC7D,IAAI,OAAO,EAAE;YACT,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;gBACnD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3D;YACD,OAAO,OAAO,CAAC;SAClB;aACI;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACrC;IACL,CAAC;IAEO,oCAAe,GAAvB,UAAwB,IAAY;QAChC,IAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAM,oBAAoB,GAAG,UAAC,OAAe,EAAE,KAAK,EAAE,KAAa;YAC/D,IAAI,KAAK,KAAK,OAAO,CAAC,MAAM,EAAE;gBAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAChC;iBAAM;gBACH,IAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAChD,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;aACnD;QACL,CAAC,CAAC;QACF,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC;IACnB,CAAC;IACL,iBAAC;AAAD,CAAC;;;;AC5F4D;AAE7D;;;;;GAKG;AACH;IAKE,sBAAY,KAAa,EAAE,SAAkB;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,4BAAK,GAAL,UAAM,QAAQ;QACZ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;YAC3B,KAAK,IAAM,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE;gBACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAChB,MAAM;iBACP;gBACD,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC3C,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;oBACnC,KAAK,IAAM,GAAG,IAAI,WAAW,EAAE;wBAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;4BAChB,MAAM;yBACP;wBACD,QAAQ,GAAG,EAAE;4BACX,KAAK,6BAAY,CAAC,EAAE;gCAClB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gCAAC,MAAM;4BACxD,KAAK,6BAAY,CAAC,IAAI;gCACpB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gCAAC,MAAM;4BAC1D,KAAK,6BAAY,CAAC,KAAK;gCACrB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gCAAC,MAAM;4BAC3D,KAAK,6BAAY,CAAC,OAAO,CAAC;4BAC1B,KAAK,6BAAY,CAAC,WAAW,CAAC;4BAC9B,KAAK,6BAAY,CAAC,QAAQ,CAAC;4BAC3B,KAAK,6BAAY,CAAC,kBAAkB,CAAC;4BACrC,KAAK,6BAAY,CAAC,eAAe,CAAC;4BAClC,KAAK,6BAAY,CAAC,UAAU;gCAC1B,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;gCAC/D,MAAM;yBACT;qBACF;iBACF;qBACI;oBACH,IAAI,CAAC,MAAM,GAAG,WAAW,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAC;iBACpD;aACF;SACF;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,8BAAO,GAAf,UAAgB,MAAM,EAAE,KAAK;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,6BAAY,CAAC,EAAE,CAAC,EAAE,QAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE,EAAE;YACrG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;gBACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,MAAM;aACP;iBACI;gBACH,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;aACrB;SACF;IACH,CAAC;IAEO,gCAAS,GAAjB,UAAkB,MAAM,EAAE,KAAK;QAC7B,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,6BAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,UAAqB,EACvB,SAAS,EACT,WAAW,CAAC;QACd,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACb,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,0BAAS,CAAC,GAAG,CAAC,CAAC,CAAC,0BAAS,CAAC,IAAI,CAAC;SACjE;aACI;YACH,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,UAAU,GAAG,0BAAS,CAAC,KAAK,CAAC;SAC9B;QACD,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAE5B,QAAQ,UAAU,EAAE;YAClB,KAAK,0BAAS,CAAC,GAAG;gBAChB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;gBACrD,IAAI,WAAW,GAAG,CAAC,EAAE;oBACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACrB;gBAAC,MAAM;YACV,KAAK,0BAAS,CAAC,KAAK;gBAClB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;gBACrD,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE;oBACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACrB;gBAAC,MAAM;YACV;gBACE,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;gBACzD,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;oBACjD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACrB;SACJ;IACH,CAAC;IAEO,iCAAU,GAAlB,UAAmB,MAAM,EAAE,KAAK;QAC9B,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,6BAAY,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,yCAAkB,GAA1B,UAA2B,MAAM,EAAE,KAAK,EAAE,MAAM;QAC9C,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAChD,QAAQ,MAAM,EAAE;YACd,eAAe;YACf,KAAK,6BAAY,CAAC,WAAW;gBAAE,IAAI,KAAK,IAAI,YAAY,EAAE;oBACxD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACrB;gBAAC,MAAM;YACR,YAAY;YACZ,KAAK,6BAAY,CAAC,QAAQ;gBAAE,IAAI,KAAK,IAAI,YAAY,EAAE;oBACrD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACrB;gBAAC,MAAM;YACR,kBAAkB;YAClB,KAAK,6BAAY,CAAC,eAAe;gBAAE,IAAI,KAAK,GAAG,YAAY,EAAE;oBAC3D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACrB;gBAAC,MAAM;YACR,sBAAsB;YACtB,KAAK,6BAAY,CAAC,kBAAkB;gBAAE,IAAI,KAAK,GAAG,YAAY,EAAE;oBAC9D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACrB;gBAAC,MAAM;YACR,UAAU;YACV,KAAK,6BAAY,CAAC,OAAO;gBAAE,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE;oBACpF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACrB;gBAAC,MAAM;YACR,eAAe;YACf,KAAK,6BAAY,CAAC,UAAU;gBAAE,IAAI,KAAK,KAAK,YAAY,EAAE;oBACxD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACrB;gBAAC,MAAM;SACT;IACH,CAAC;IACH,mBAAC;AAAD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1I0C;AACiD;AAC7C;AACL;AAEsB;AAEhE;IAAmC,wBAAU;IAA7C;QAAA,qEAqKC;QAnKG,iBAAW,GAAG,CAAC,CAAC;;IAmKpB,CAAC;IAvJa,6BAAc,GAAxB,UAAyB,CAAC,EAAE,WAAmB;QAAnB,iDAAmB;QAC3C,IAAI,WAAW,EAAE;YACb,CAAC,CAAC,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,GAAI,CAAe,CAAC,GAAG,EAAE,CAAC;SACvC;aACI;YACD,IAAI,KAAK,UAAC;YACV,IAAI,CAAC,CAAC,IAAI,EAAE;gBACR,KAAK,GAAG,IAAI,+BAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;aAC7B;iBACI;gBACD,KAAK,GAAG,IAAI,+BAAS,CAAE,CAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpD,KAAK,CAAC,OAAO,GAAI,CAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;aACnD;YACD,IAAI,IAA8B,EAAE;gBAChC,KAAK,CAAC,QAAQ,EAAE,CAAC;aACpB;YACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;SAC5B;IACL,CAAC;IAES,iCAAkB,GAA5B,UAA6B,EAAgB;QACzC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC;YACT,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,IAAI,EAAE,2BAAU,CAAC,YAAY;SAChC,CAAC,CAAC;IACP,CAAC;IAES,4BAAa,GAAvB,UAAwB,UAAkB,EAAE,SAAiB;QACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAM,IAAI,aAAM,CAAC,IAAI,KAAK,UAAU,EAA1B,CAA0B,CAAC,CAAC;IACvF,CAAC;IAEO,0CAA2B,GAAnC,UAAoC,cAAsB;QACtD,IAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,WAAmB,CAAC;QACxB,IAAI,SAAoB,CAAC;QACzB,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;YACjB,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9B,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,0BAAS,CAAC,GAAG,CAAC,CAAC,CAAC,0BAAS,CAAC,IAAI,CAAC;SACxE;aACI;YACD,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9B,SAAS,GAAG,0BAAS,CAAC,KAAK,CAAC;SAC/B;QACD,QAAQ,SAAS,EAAE;YACf,KAAK,0BAAS,CAAC,KAAK;gBAChB,OAAO,IAAI,MAAM,CAAC,MAAI,WAAa,EAAE,GAAG,CAAC,CAAC;YAC9C,KAAK,0BAAS,CAAC,IAAI;gBACf,OAAO,IAAI,MAAM,CAAI,WAAW,MAAG,EAAE,GAAG,CAAC,CAAC;YAC9C;gBACI,OAAO,IAAI,MAAM,CAAC,KAAG,WAAa,EAAE,GAAG,CAAC,CAAC;SAChD;IACL,CAAC;IAES,6BAAc,GAAxB;QACI,IAAM,UAAU,GAAG,yDAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACpE;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAClD,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC3B,IAAM,SAAS,GAAG,OAAO,CACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAC3C,CAAC;gBACF,IAAI,CAAC,oBAAoB,GAAG,IAAI,0BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC1E,IAAM,GAAG,GAAG,yDAAiB,CAAC,KAAK,CAAC,CAAC;gBACrC,QAAQ,GAAG,EAAE;oBACT,KAAK,6BAAY,CAAC,IAAI;wBAAE;4BACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,6BAAY,CAAC,IAAI,CAAC,CAAC,CAAC;4BAC3E,IAAY,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;yBACzD;wBAAC,MAAM;oBACR,KAAK,6BAAY,CAAC,KAAK;wBAClB,IAAY,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,6BAAY,CAAC,KAAK,CAAC,CAAC,CAAC;wBACvE,MAAM;oBACV,KAAK,6BAAY,CAAC,EAAE;wBACf,IAAY,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,6BAAY,CAAC,EAAE,CAAC,CAAC,CAAC;wBACjE,MAAM;oBACV,KAAK,6BAAY,CAAC,OAAO,CAAC;oBAC1B,KAAK,6BAAY,CAAC,WAAW,CAAC;oBAC9B,KAAK,6BAAY,CAAC,QAAQ,CAAC;oBAC3B,KAAK,6BAAY,CAAC,kBAAkB,CAAC;oBACrC,KAAK,6BAAY,CAAC,eAAe;wBAC5B,IAAY,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;wBAChE,MAAM;oBACV,KAAK,6BAAY,CAAC,SAAS,CAAC,CAAC,MAAM;oBACnC,OAAO,CAAC,CAAE,IAAY,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBAC7E;aACJ;iBACI;gBACD,IAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpE,IAAI,CAAC,oBAAoB,GAAG,IAAI,0BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACzE,IAAY,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;aACpE;SACJ;aACI;YACD,IAAM,MAAM,GAAW,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACtE,IAAM,KAAK,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC;gBAC1B,IAAI,+BAAS,CAAC,2BAAU,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;gBAClE,IAAI,+BAAS,CAAC,2BAAU,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACpC;IACL,CAAC;IAES,qCAAsB,GAAhC,UAAiC,GAAG;QAChC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,WAAW,EACX,QAAQ,CAAC;QACb,KAAK,IAAM,MAAM,IAAI,GAAG,EAAE;YACtB,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1B,QAAQ,4CAAW,CAAC,WAAW,CAAC,EAAE;gBAC9B,KAAK,0BAAS,CAAC,MAAM;oBACjB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC;oBACpE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;oBACjB,GAAG,CAAC,MAAM,CAAC,CAAC,6BAAY,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;oBACvC,MAAM;gBACV,KAAK,0BAAS,CAAC,MAAM;oBACjB,KAAK,IAAM,GAAG,IAAI,WAAW,EAAE;wBAC3B,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;wBAC5B,IAAM,YAAY,GAAG,4CAAW,CAAC,QAAQ,CAAC,CAAC;wBAC3C,QAAQ,YAAY,EAAE;4BAClB,KAAK,0BAAS,CAAC,MAAM;gCACjB,QAAQ,GAAG,EAAE;oCACT,KAAK,6BAAY,CAAC,IAAI,CAAC;oCACvB,KAAK,6BAAY,CAAC,KAAK;wCACnB,MAAM;oCACV;wCACI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;iCACxE;gCACD,MAAM;4BACV,KAAK,0BAAS,CAAC,KAAK;gCAChB,QAAQ,GAAG,EAAE;oCACT,KAAK,6BAAY,CAAC,EAAE;wCAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;wCACvE,MAAM;iCAEb;yBACR;qBACJ;oBACD,GAAG,CAAC,MAAM,CAAC,CAAC,6BAAY,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;oBACvC,MAAM;aACb;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAGL,WAAC;AAAD,CAAC,CArKkC,sBAAU,GAqK5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5K6B;AAGe;AAE7C;IAA2B,yBAAI;IAC3B,eAAY,SAAiB,EAAE,SAAqB,EAAE,OAA8B;QAApF,YACI,iBAAO,SAIV;QAHG,KAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;IAC3B,CAAC;IAED,uBAAO,GAAP;QAAA,iBAoBC;QAnBG,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACjC,IAAI,KAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACpB,KAAI,CAAC,SAAS,EAAE,CAAC;aACpB;iBACI;gBACD,KAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;QACL,CAAC,CAAC,CAAC;QACH,IAAM,YAAY,GAAe,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAClF,YAAY,CAAC,SAAS,GAAG,UAAC,CAAC;YACvB,IAAM,YAAY,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,MAAc;gBACxC,IAAI,MAAM,CAAC,aAAa,EAAE;oBACtB,4BAAQ,CAAC,GAAG,CAAC,aAAW,KAAI,CAAC,QAAQ,CAAC,IAAI,SAAI,KAAI,CAAC,KAAK,SAAI,MAAM,CAAC,IAAI,WAAQ,EAAE,CAAC,CAAC,CAAC;iBACvF;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;IAC/C,CAAC;IACL,YAAC;AAAD,CAAC,CA7B0B,oBAAI,GA6B9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjC8D;AAClB;AACV;AACQ;AAE3C;IAA4B,gCAAM;IAG9B,gBAAY,SAAyC,EAAE,OAA8B;QAArF,YACI,iBAAO,SAGV;QAFG,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;IAC3B,CAAC;IAED,wBAAO,GAAP,UAAQ,cAA6B;QAArC,iBAiFC;QAhFG,IAAM,kBAAkB,GAAG,EAAE,CAAC;QAC9B,IAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,SAAS,CAAC,OAAO,GAAG,UAAC,KAAK;YACtB,IAAI,KAAI,CAAC,OAAO,IAAI,IAAI,EAAE;gBACtB,KAAI,CAAC,OAAO,CAAE,KAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC7C;QACL,CAAC,CAAC;QAEF,SAAS,CAAC,SAAS,GAAG,UAAC,KAAK;YACxB,KAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,kCAAiB,CAAC,SAAS,CAAC;YACtD,KAAI,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;YACpC,KAAI,CAAC,YAAoB,CAAC,OAAO,GAAG,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;YAE/D,KAAI,CAAC,YAAY,CAAC,eAAe,GAAG,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;YACtE,KAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;YAEzD,IAAI,WAAW,EAAE;gBACb,wBAAwB;gBACxB,KAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;oBAC9B,IAAI,KAAI,CAAC,SAAS,IAAI,IAAI,EAAE;wBACxB,KAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;qBAC/B;gBACL,CAAC,CAAC,CAAC;aACN;iBACI;gBACD,KAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,KAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;aAC/B;QACL,CAAC,CAAC;QAEF,SAAS,CAAC,eAAe,GAAG,UAAC,KAAK;YAC9B,WAAW,GAAG,IAAI,CAAC;YACnB,IAAM,YAAY,GAAI,KAAa,CAAC,MAAM,CAAC,MAAM,CAAC;YAClD,IAAM,iBAAiB,GAAG,UAAC,IAAiB,EAAE,KAAK;gBAC/C,IAAI;oBACA,IAAI,OAAqB,CAAC;oBAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC5B,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;wBACzD,OAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE;4BAC9C,OAAO,EAAE,IAAI,CAAC,UAAU;yBAC3B,CAAC,CAAC;qBACN;yBACI;wBACD,OAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE;4BAC9C,aAAa,EAAE,IAAI;yBACtB,CAAC,CAAC;qBACN;oBACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,MAAc;wBAChC,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;4BAC9B,IAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;4BACjF,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;4BAC1C,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;4BACtE,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;4BACjD,IAAI,MAAM,CAAC,aAAa,EAAE;gCACtB,4BAAQ,CAAC,GAAG,CAAC,aAAW,KAAI,CAAC,MAAM,SAAI,IAAI,CAAC,IAAI,SAAI,MAAM,CAAC,IAAI,WAAQ,EAAE,CAAC,CAAC,CAAC;6BAC/E;yBACJ;oBACL,CAAC,CAAC,CAAC;oBACH,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnC,4BAA4B;oBAC5B,4BAAQ,CAAC,GAAG,CAAC,aAAW,KAAI,CAAC,MAAM,SAAI,IAAI,CAAC,IAAI,aAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC7E;gBACD,OAAO,CAAC,EAAE;oBACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACpB;YACL,CAAC,CAAC;YACF,cAAc,CAAC,OAAO,CAAC,UAAC,IAAiB,EAAE,KAAK;gBAC5C,IAAI,IAAI,CAAC,aAAa,EAAE;oBACpB,gCAAgC;oBAChC,IAAI,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACnD,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC7C;oBACD,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAClC;qBACI,IAAI,IAAI,CAAC,eAAe,EAAE;oBAC3B,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAClC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC;IAEO,sCAAqB,GAA7B;QAAA,iBAYC;QAXG,OAAO,kCAAO,CAAC,UAAC,GAAG,EAAE,GAAG;YACpB,KAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,gBAAM;gBACxB,IAAI,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;oBACjC,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;oBACzB,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC/C;qBACI;oBACD,GAAG,EAAE,CAAC;iBACT;YACL,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,+BAAc,GAAtB;QAAA,iBAOC;QANG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,KAAK;YACtC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAI;gBACpB,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC5B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACL,aAAC;AAAD,CAAC,CAlH2B,yBAAM,GAkHjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtH4C;AACC;AACH;AAE3C;IAWI,qBAAY,KAAY;QATxB,YAAO,GAAa,EAAE,CAAC;QAKvB,kBAAa,GAAG,KAAK,CAAC;QACtB,oBAAe,GAAG,KAAK,CAAC;QAIpB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED,oCAAc,GAAd,UAAe,MAAc;QAA7B,iBAMC;QALG,OAAO,kCAAO,CAAC,UAAC,OAAO;YACnB,KAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,KAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC/B,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,oCAAc,GAAtB;QAAA,iBAKC;QAJG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAC,IAAI;YACpB,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,uCAAiB,GAAzB,UAA0B,MAAc;QAAxC,iBAUC;QATG,4BAAQ,CAAC,GAAG,CAAS,aAAW,MAAM,SAAI,IAAI,CAAC,IAAI,aAAU,CAAC,CAAC,IAAI,CAAC,sBAAY;YAC5E,IAAI,YAAY,IAAI,IAAI,EAAE;gBACtB,KAAI,CAAC,eAAe,GAAG,IAAI,CAAC;aAC/B;YACD,+DAA+D;iBAC1D,IAAI,YAAY,GAAG,KAAI,CAAC,OAAO,EAAE;gBAClC,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC7B;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,mCAAa,GAArB,UAAsB,MAAc;QAApC,iBASC;QARG,+BAAS,CAAC,eAAe,GAAG,+BAAS,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,+BAAS,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAChH,qBAAqB;QACrB,4BAAQ,CAAC,GAAG,CAAC,aAAW,MAAM,gBAAa,EAAE,+BAAS,CAAC,eAAe,CAAC,CAAC;QACxE,wBAAwB;QACxB,4BAAQ,CAAC,GAAG,CAAC,aAAW,MAAM,SAAI,IAAI,CAAC,IAAI,aAAU,EAAE,+BAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC;YACnF,KAAI,CAAC,OAAO,GAAG,+BAAS,CAAC,eAAe,CAAC;YACzC,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC;IACL,kBAAC;AAAD,CAAC;;;;;;;AC5D4C;AAEC;AAE9C;IAII,kBAAY,QAAkB;QAF9B,WAAM,GAAY,EAAE,CAAC;QAGjB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,iCAAc,GAAd;QAAA,iBAMC;QALG,OAAO,yCAAU,CACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK;YAClB,OAAO,IAAI,wBAAW,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IACL,eAAC;AAAD,CAAC;;;;ACnBD;IAYI,gBAAY,GAAW;QACnB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3E,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5F,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QACvE,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEL,aAAC;AAAD,CAAC;;;;AC3BiC;AAGlC;IAMI,eAAY,KAAa;QAJzB,YAAO,GAAa,EAAE,CAAC;QAKnB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACzD,KAAK,IAAM,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE;YACpC,IAAM,MAAM,GAAG;gBACX,IAAI,EAAE,UAAU;aACT,CAAC;YAEZ,KAAK,IAAM,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC7C,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;gBACjD,QAAQ,OAAO,EAAE;oBACb,KAAK,YAAY,CAAC;oBAClB,KAAK,eAAe,CAAC;oBACrB,KAAK,QAAQ,CAAC;oBACd,KAAK,UAAU,CAAC;oBAChB,KAAK,cAAc,CAAC;oBACpB,KAAK,SAAS,CAAC;oBACf,KAAK,YAAY,CAAC;oBAClB,KAAK,SAAS,CAAC;oBACf,KAAK,SAAS;wBACV,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;wBAAC,MAAM;iBACtC;aACJ;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;SACzC;IACL,CAAC;IACL,YAAC;AAAD,CAAC;;;;AClC+B;AAGhC;IAII,kBAAY,QAAmB;QAA/B,iBAKC;QAPD,WAAM,GAAY,EAAE,CAAC;QAGjB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,IAAI;YACzB,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC;IACL,eAAC;AAAD,CAAC;;;;;;;ACdyC;AAI1C;IAAA;IA6BA,CAAC;IA5BG,uBAAO,GAAP,UAAQ,KAAoB,EAAE,SAAsC,EAAE,OAA8B;QAChG,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAM,SAAS,GAAG;YACd,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;gBACtB,IAAI,mCAAe,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,UAAC,YAAY;oBAC7C,YAAY,CAAC,OAAO,CAAC,aAAG;wBACpB,IAAI,YAAY,GAAG,EAAE,CAAC;wBACtB,KAAK,IAAM,GAAG,IAAI,GAAG,EAAE;4BACnB,YAAY,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;yBAC5B;wBACD,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;oBAChC,CAAC,CAAC,CAAC;oBACH,SAAS,EAAE,CAAC;gBAChB,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;aACzB;iBACI;gBACD,IAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KAAK,IAAM,GAAG,IAAI,OAAO,EAAE;oBACvB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC9B;gBACD,SAAS,CAAC,OAAO,CAAC,CAAC;aACtB;QACL,CAAC,CAAC;QACF,SAAS,EAAE,CAAC;IAChB,CAAC;IAGL,YAAC;AAAD,CAAC;;;;ACjCD;AAAiF;AAC/B;AACF;AACE;AACA;AACA;AACU;AACnB;AAKhB;AACS;AACU;AACoB;AACtB;AACE;AACG;AAE/C;IAII,uBAAY,EAA0B;QAClC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,mCAAW,CAAC,mBAAmB,GAAG,EAAE,CAAC;IACzC,CAAC;IAED,sDAA8B,GAA9B,UAA+B,OAAyB;QAAxD,iBA+CC;QA9CG,+BAAS,CAAC,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,QAAQ,OAAO,CAAC,IAAI,EAAE;YAClB,KAAK,oBAAG,CAAC,MAAM,CAAC;YAChB,KAAK,oBAAG,CAAC,SAAS,CAAC;YACnB,KAAK,oBAAG,CAAC,YAAY,CAAC;YACtB,KAAK,oBAAG,CAAC,SAAS,CAAC;YACnB,KAAK,oBAAG,CAAC,WAAW,CAAC;YACrB,KAAK,oBAAG,CAAC,GAAG,CAAC;YACb,KAAK,oBAAG,CAAC,GAAG,CAAC;YACb,KAAK,oBAAG,CAAC,eAAe,CAAC;YACzB,KAAK,oBAAG,CAAC,SAAS,CAAC;YACnB,KAAK,oBAAG,CAAC,MAAM,CAAC;YAChB,KAAK,oBAAG,CAAC,YAAY,CAAC;YACtB,KAAK,oBAAG,CAAC,OAAO;gBACZ,IAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACvC,IAAI,GAAG,IAAI,IAAI,EAAE;oBACb,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBAC/B;qBACI;oBACD,IAAI,CAAC,aAAa,CAAC;wBACf,YAAY,EAAE,GAAG;wBACjB,YAAY,EAAE,IAAI;qBACF,CAAC,CAAC;iBACzB;gBACD,MAAM;YACV;gBACI,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;oBAC9B,KAAK,kCAAiB,CAAC,SAAS;wBAAE;4BAC9B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;yBAC/B;wBAAC,MAAM;oBACR,KAAK,kCAAiB,CAAC,MAAM;wBAAE;4BAC3B,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE;gCACrC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;oCACf,KAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;oCACnC,KAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;gCACjD,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;6BACvB;iCACI;gCACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAgB,EAAE;oCAChC,KAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;gCACjD,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;6BACvB;yBACJ;wBAAC,MAAM;iBAEX;SACR;IACL,CAAC;IAEO,wCAAgB,GAAxB,UAAyB,MAAe,EAAE,SAAS,EAAE,OAAO;QACxD,wBAAM,CAAC,YAAY,GAAG,MAAM,CAAC;QAC7B,SAAS,EAAE,CAAC;IAChB,CAAC;IAEO,qCAAa,GAArB,UAAsB,MAAM;QACxB,IAAI,wBAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE;YACjC,IAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SACrC;aACI;YACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SAChC;IAEL,CAAC;IAEO,qCAAa,GAArB,UAAsB,OAAyB;QAA/C,iBAiFC;QAhFG,IAAM,SAAS,GAAG,UAAC,OAAQ;YACvB,KAAI,CAAC,aAAa,CAAC;gBACf,aAAa,EAAE,OAAO;aACN,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,IAAM,OAAO,GAAG,UAAC,GAAG;YAChB,KAAI,CAAC,aAAa,CAAC;gBACf,YAAY,EAAE,GAAG;gBACjB,YAAY,EAAE,IAAI;aACF,CAAC,CAAC;QAC1B,CAAC,CAAC;QAEF,aAAa,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,KAAK,oBAAG,CAAC,WAAW,CAAC;QACpE,QAAQ,OAAO,CAAC,IAAI,EAAE;YAClB,KAAK,oBAAG,CAAC,MAAM;gBACX,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,EAAE;oBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;wBACf,KAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;wBACnC,SAAS,EAAE,CAAC;oBAChB,CAAC,EAAE,OAAO,CAAC,CAAC;iBACf;qBACI;oBACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;iBAChE;gBACD,MAAM;YACV,KAAK,oBAAG,CAAC,MAAM;gBACX,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAAC,MAAM;YAC3D,KAAK,oBAAG,CAAC,MAAM;gBACX,IAAI,mCAAe,CAAC,OAAO,CAAC,KAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;gBAChF,MAAM;YACV,KAAK,oBAAG,CAAC,MAAM;gBAAE,IAAI,mCAAe,CAAC,OAAO,CAAC,KAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7F,MAAM;YACV,KAAK,oBAAG,CAAC,MAAM;gBACX,IAAI,mCAAe,CAAC,OAAO,CAAC,KAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;gBAChF,MAAM;YACV,KAAK,oBAAG,CAAC,MAAM;gBACX,IAAI,mCAAe,CAAC,OAAO,CAAC,KAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;gBAChF,MAAM;YACV,KAAK,oBAAG,CAAC,SAAS;gBAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACnE,MAAM;YACV,KAAK,oBAAG,CAAC,YAAY;gBACjB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC3E,MAAM;YACV,KAAK,oBAAG,CAAC,SAAS;gBACd,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM;YACV,KAAK,oBAAG,CAAC,WAAW;gBAChB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1E,MAAM;YACV,KAAK,oBAAG,CAAC,KAAK;gBAAE,IAAI,WAAK,CAAC,OAAO,CAAC,KAAe,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7E,MAAM;YACV,KAAK,oBAAG,CAAC,MAAM;gBAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC9C,MAAM;YACV,KAAK,oBAAG,CAAC,KAAK;gBACV,IAAI,kCAAc,CAAC,OAAO,CAAC,KAAmB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC9E,MAAM;YACV,KAAK,oBAAG,CAAC,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5E,MAAM;YACV,KAAK,oBAAG,CAAC,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC9E,MAAM;YACV,KAAK,oBAAG,CAAC,eAAe;gBACpB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACpE,MAAM;YACV,KAAK,oBAAG,CAAC,WAAW;gBAAE,IAAI,wCAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;gBACxF,MAAM;YACV,KAAK,oBAAG,CAAC,OAAO,CAAC;YACjB,KAAK,oBAAG,CAAC,SAAS;gBACd,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACpC,MAAM;YACV,KAAK,oBAAG,CAAC,KAAK;gBACV,IAAI,WAAK,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBACvD,MAAM;YACV,KAAK,oBAAG,CAAC,YAAY;gBACjB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM;YACV;gBACI,IAAI,IAA8B,EAAE;oBAChC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC,CAAC;iBACpE;SACR;IACL,CAAC;IAEO,+BAAO,GAAf,UAAgB,MAAc,EAAE,SAAS,EAAE,OAAO;QAAlD,iBAcC;QAbG,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;YAC1D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACvE;aACI;YACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,EAAE;gBAC9B,IAAI,EAAE,IAAI,IAAI,EAAE;oBACZ,KAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAC3D;qBACI;oBACD,OAAO,CAAC,IAAI,+BAAS,CAAC,2BAAU,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;iBAC3E;YACL,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACrB;IACL,CAAC;IAEO,qCAAa,GAArB,UAAsB,SAAS;QAC3B,4BAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC;YACpC,+BAAS,CAAC,QAAQ,GAAG;gBACjB,SAAS,EAAE,kCAAiB,CAAC,aAAa;gBAC1C,SAAS,EAAE,2BAAU,CAAC,qBAAqB;aAC9C,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,oCAAY,GAApB,UAAqB,MAAc;QAC/B,OAAO,+BAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAEO,kCAAU,GAAlB,UAAmB,SAAqB,EAAE,OAA8B;QAAxE,iBAKC;QAJG,4BAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;YAClB,KAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,sBAAY,gDAAqB;aAAjC;YACI,OAAO,+BAAS,CAAC,oBAAoB,CAAC;QAC1C,CAAC;aAED,UAAkC,KAAK;YACnC,+BAAS,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAC3C,CAAC;;;OAJA;IAMO,kCAAU,GAAlB;QACI,OAAO,+BAAS,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,sBAAY,oCAAS;aAArB;YACI,OAAO,+BAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;aAED,UAAsB,KAAK;YACvB,+BAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC/B,CAAC;;;OAJA;IAMO,gCAAQ,GAAhB;QACI,IAAI,+BAAS,CAAC,QAAQ,CAAC,SAAS,KAAK,kCAAiB,CAAC,SAAS,EAAE;YAC9D,+BAAS,CAAC,QAAQ,CAAC,SAAS,GAAG,kCAAiB,CAAC,eAAe,CAAC;YACjE,+BAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;SAClC;IACL,CAAC;IAEO,+BAAO,GAAf,UAAgB,SAAqB,EAAE,OAA8B;QACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,yBAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAIO,uCAAe,GAAvB,UAAwB,EAAY;QAApC,iBAeC;QAdG,OAAO,kCAAO,CAAC,UAAC,GAAG,EAAE,GAAG;YACpB,mBAAmB;YACnB,IAAM,QAAQ,GAAG,IAAI,kBAAQ,CAAC,EAAE,CAAC,CAAC;YAClC,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,UAAC,cAA6B;gBACzD,KAAI,CAAC,SAAS,GAAG,EAAE,CAAC;gBACpB,IAAM,gBAAgB,GAAG,IAAI,cAAM,CAAC,UAAC,WAAW;oBAC5C,KAAI,CAAC,SAAS,GAAG,EAAE,CAAC;oBACpB,4BAA4B;oBAC5B,4BAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC;oBACnD,GAAG,CAAC,WAAW,CAAC,CAAC;gBACrB,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,+BAAO,GAAf,UACI,QAAmB,EAAE,SAAqB,EAAE,OAA8B;QAD9E,iBAcC;QAXG,IAAI,QAAQ,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACxC;aACI;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAO;gBAC1C,KAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,KAAI,CAAC,eAAe,CAAC,IAAI,iBAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChF,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACrB;IAEL,CAAC;IAED,sBAAY,2CAAgB;aAA5B;YACI,OAAO,+BAAS,CAAC,eAAe,CAAC;QACrC,CAAC;aAED,UAA6B,KAAK;YAC9B,+BAAS,CAAC,eAAe,GAAG,KAAK,CAAC;QACtC,CAAC;;;OAJA;IAMO,qCAAa,GAArB,UAAsB,MAAc;QAChC,OAAO,+BAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,sBAAY,oCAAS;aAArB;YACI,OAAO,+BAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;;;OAAA;IAEO,2CAAmB,GAA3B;QACI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,KAAK,kCAAiB,CAAC,aAAa,EAAE;YAC9D,IAAM,KAAK,GAAG;gBACV,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;aACvB,CAAC;YACZ,QAAQ,KAAK,CAAC,IAAI,EAAE;gBAChB,KAAK,2BAAU,CAAC,qBAAqB;oBACjC,KAAK,CAAC,OAAO,GAAG,oCAAoC,CAAC;oBAAC,MAAM;gBAChE;oBACI,KAAK,CAAC,OAAO,GAAG,uBAAuB,CAAC;aAC/C;YACD,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEO,kCAAU,GAAlB,UAAmB,MAAM,EAAE,SAAqC,EAAE,OAA8B;QAC5F,IAAI,4CAAW,CAAC,MAAM,CAAC,KAAK,0BAAS,CAAC,MAAM,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,SAAS;gBAC/C,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;SACN;aACI;YACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,SAAS;gBACtD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAEO,4BAAI,GAAZ,UAAa,GAAW;QACpB,OAAO,4BAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEO,4BAAI,GAAZ,UAAa,KAAe;QACxB,OAAO,4BAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IApTM,gCAAkB,GAAG,KAAK,CAAC;IAqTtC,oBAAC;CAAA;AAtTyB;;;;;;;;;;;;;;;;;;;;;;;;ACpBI;AAE9B;IAA+B,6BAAI;IAAnC;QAAA,qEAMC;QALa,aAAO,GAAU,EAAE,CAAC;;IAKlC,CAAC;IAHa,mCAAe,GAAzB;QACI,UAAU;IACd,CAAC;IACL,gBAAC;AAAD,CAAC,CAN8B,kDAAI,GAMlC;;;;;;;;;ACRD;AAAO,IAAM,OAAO,GAAG,UAAI,QAAmC;IAC1D,OAAO,IAAI,OAAO,CAAI,QAAQ,CAAC,CAAC;AACpC,CAAC,CAAC;;;;;;;;;ACFF;AAAO,IAAM,UAAU,GAAG,UAAI,QAAa;IACvC,OAAO,OAAO,CAAC,GAAG,CAAI,QAAQ,CAAC,CAAC;AACpC,CAAC,CAAC;;;;;;;;;ACFF;AAAA;AAAA;AAAyC;AACkC;AAC3E;IAAA;IAiEA,CAAC;IA9DG,sBAAc,0BAAM;aAApB;YACI,OAAO,6DAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnC,CAAC;;;OAAA;IAED,sBAAc,4BAAQ;aAAtB;YACI,OAAO,6DAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;aAED,UAAuB,KAAK;YACxB,6DAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC/B,CAAC;;;OAJA;IAOD,sBAAc,gCAAY;aAI1B;YACI,OAAO,6DAAS,CAAC,YAAY,CAAC;QAClC,CAAC;aAND,UAA2B,KAAK;YAC5B,6DAAS,CAAC,YAAY,GAAG,KAAK,CAAC;QACnC,CAAC;;;OAAA;IAMS,+BAAc,GAAxB,UAAyB,MAAyB,EAAE,GAAgB;QAChE,6DAAS,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAES,qCAAoB,GAA9B,UAA+B,cAAwB;QACnD,6DAAS,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,sBAAc,6BAAS;aAAvB;YACI,OAAO,QAAQ,CAAC,6DAAS,CAAC,eAAsB,CAAC,CAAC;QACtD,CAAC;;;OAAA;IAED,sBAAc,4BAAQ;aAAtB;YACI,OAAO,6DAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;;;OAAA;IAES,0BAAS,GAAnB;QACI,OAAO,6DAAS,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAES,0BAAS,GAAnB,UAAoB,KAAK;QACrB,OAAO,6DAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAGS,0BAAS,GAAnB,UAAoB,KAAK;QACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,uEAAiB,CAAC,MAAM,EAAE,gEAAU,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IAES,kCAAiB,GAA3B,UAA4B,CAAwB;QAChD,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,EAAE,EAAE,sCAAsC;YAC9D,CAAC,CAAC,MAAc,CAAC,KAAK,EAAE,CAAC,CAAC,0CAA0C;YACrE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,uEAAiB,CAAC,MAAM,EAAE,gEAAU,CAAC,gBAAgB,CAAC,CAAC;SAC9E;IACL,CAAC;IAES,6BAAY,GAAtB,UAAuB,CAAC;QACpB,6DAAS,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,+BAA+B,GAAI,CAAC,CAAC,MAAc,CAAC,MAAM,CAAQ,CAAC;IACvG,CAAC;IACL,aAAC;AAAD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnE0E;AAC9B;AAEH;AACP;AACQ;AAE3C;IAA4B,0BAAM;IAI9B,gBAAY,SAAqB,EAAE,OAA8B;QAAjE,YACI,iBAAO,SAGV;QAFG,KAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,KAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;;IAC5B,CAAC;IAED,+BAAc,GAAd;QAAA,iBAqBC;QApBG,OAAO,sEAAO,CAAC,UAAC,GAAG,EAAE,GAAG;YACpB,gEAAQ,CAAC,MAAM,CAAC,aAAW,KAAI,CAAC,MAAM,gBAAa,CAAC,CAAC;YACrD,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAY;gBACtC,gEAAQ,CAAC,MAAM,CAAC,aAAW,KAAI,CAAC,MAAM,SAAI,KAAK,CAAC,IAAI,aAAU,CAAC,CAAC;gBAChE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,MAAc;oBACjC,IAAI,MAAM,CAAC,aAAa,EAAE;wBACtB,gEAAQ,CAAC,MAAM,CAAC,aAAW,KAAI,CAAC,MAAM,SAAI,KAAK,CAAC,IAAI,SAAI,MAAM,CAAC,IAAI,WAAQ,CAAC,CAAC;qBAChF;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,6BAA6B;YAC7B,KAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,gBAAM;gBACxB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9C,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;oBACxB,iCAAiC;oBACjC,gEAAQ,CAAC,MAAM,CAAC,aAAW,KAAI,CAAC,MAAM,YAAS,CAAC;wBAC5C,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,yBAAQ,GAAR;QAAA,iBAoBC;QAnBG,UAAU,CAAC;YACP,IAAM,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,aAAa,CAAC,SAAS,GAAG;gBACtB,IAAI,KAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;oBACvB,KAAI,CAAC,QAAQ,CAAC,IAAI,6DAAS,CAAC,gEAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;iBAC5D;YACL,CAAC,CAAC;YACF,aAAa,CAAC,OAAO,GAAG,UAAC,CAAC;gBACtB,IAAI,KAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;oBACvB,KAAI,CAAC,QAAQ,CAAE,KAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9C;YACL,CAAC,CAAC;YACF,aAAa,CAAC,SAAS,GAAG;gBACtB,KAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC;oBACvB,KAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,KAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,uEAAiB,CAAC,MAAM,CAAC;gBACvD,CAAC,CAAC,CAAC,KAAK,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC,CAAC;QACN,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC;IACL,aAAC;AAAD,CAAC,CAtD2B,uDAAM,GAsDjC;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DgD;AACf;AACW;AACmB;AAEzD,IAAM,UAAU,GAAG;IACtB,IAAI,OAAQ,IAAY,CAAC,KAAK,KAAK,WAAW,IAAI,OAAO,wBAAwB,KAAK,WAAW,EAAE;QAC/F,wBAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC9B,IAAY,CAAC,SAAS,GAAG,UAAU,CAAC;YACjC,IAAI,uCAAa,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAC;KACL;AACL,CAAC,CAAC;AAEF,IAAM,iBAAiB,GAAG;IACtB,+BAAS,CAAC,QAAQ,GAAG;QACjB,SAAS,EAAE,kCAAiB,CAAC,aAAa;QAC1C,SAAS,EAAE,2BAAU,CAAC,qBAAqB;KAC9C,CAAC;AACN,CAAC,CAAC;AAEF,IAAM,wBAAwB,GAAG;IAC7B,IAAI;QACA,IAAI,CAAC,SAAS,EAAE;YACZ,SAAS,GAAI,IAAY,CAAC,YAAY;gBACjC,IAAY,CAAC,eAAe,IAAK,IAAY,CAAC,WAAW,CAAC;SAClE;QACD,IAAI,SAAS,EAAE;YACX,cAAc,GAAG,cAAc;gBAC1B,IAAY,CAAC,oBAAoB,IAAK,IAAY,CAAC,gBAAgB,CAAC;YACxE,IAAY,CAAC,WAAW,GAAI,IAAY,CAAC,WAAW;gBAChD,IAAY,CAAC,iBAAiB,IAAK,IAAY,CAAC,aAAa,CAAC;SACtE;aACI;YACD,iBAAiB,EAAE,CAAC;SACvB;KACJ;IAAC,OAAO,EAAE,EAAE;QACT,iBAAiB,EAAE,CAAC;KACvB;AACL,CAAC,CAAC;AAEF,wBAAwB,EAAE,CAAC;AAC3B,UAAU,EAAE,CAAC;;;;;;AC1Cb;AAAA;AAAA;AAAA;AAAiC;AACT;AACC;AACW;;;;;;;;ACFpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2D;AACd;AACU;AACL;AAE3C,IAAM,sBAAsB,GAAG,UAAC,KAAY;IAE/C,IAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAC,GAAG;QAC5C,OAAO,GAAG,CAAC,aAAa,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,sEAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QAC3B,yEAAU,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAM;YAChC,IAAM,gBAAgB,GAAG,aAAW,iEAAS,CAAC,QAAQ,CAAC,IAAI,SAAI,KAAK,CAAC,IAAI,SAAI,MAAM,CAAC,IAAI,WAAQ,CAAC;YACjG,OAAO,gEAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAO;YACZ,IAAM,aAAa,GAAG,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;aACtD;YACD,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEK,IAAM,qBAAqB,GAAG,UAAC,KAAY,EAAE,kBAA0B;IAC1E,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7C,OAAO,yEAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,UAAU;QAClC,IAAM,gBAAgB,GAAG,aAAW,iEAAS,CAAC,QAAQ,CAAC,IAAI,SAAI,KAAK,CAAC,IAAI,SAAI,UAAU,WAAQ,CAAC;QAChG,IAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,qEAAa,CAAC,kBAAkB,KAAK,IAAI,EAAE;YAC3C,mEAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;SACnE;QACD,OAAO,gEAAQ,CAAC,GAAG,CACf,gBAAgB,EAChB,KAAK,CACR,CAAC;IACN,CAAC,CAAC,CAAC,CAAC;AACR,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtC6B;AACkC;AAEP;AACZ;AAE9C;IAA8B,4BAAI;IAK9B,kBAAY,KAAkB,EAAE,SAAyC,EAAE,OAA8B;QAAzG,YACI,iBAAO,SAKV;QAVO,qBAAe,GAAG,EAAE,CAAC;QAoBrB,6BAAuB,GAAG;YAC9B,IAAI,KAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACpB,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;aACxF;iBACI;gBACD,KAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;QACL,CAAC;QArBG,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;IACrC,CAAC;IAED,0BAAO,GAAP;QAAA,iBAMC;QALG,IAAM,WAAW,GAAG,IAAI,iEAAW,CAAC,yDAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,WAAW,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC;YAC9B,KAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;YAC/B,KAAI,CAAC,WAAW,CAAC,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAWO,mCAAgB,GAAxB;QACI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;IACL,CAAC;IAEO,8BAAW,GAAnB,UAAoB,MAAa;QAC7B,sBAAsB;QAD1B,iBAqCC;QAlCG,IAAI,WAA2B,CAAC;QAChC,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/D,IAAI,YAAY,CAAC;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YAC5B,YAAY,GAAG,UAAC,KAAK;gBACjB,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC,CAAC;SAEL;aACI;YACD,YAAY,GAAG,UAAC,KAAK;gBACjB,EAAE,KAAI,CAAC,WAAW,CAAC;YACvB,CAAC,CAAC;SACL;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvE,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,yEAAU,CACN,MAAM,CAAC,GAAG,CAAC,UAAU,KAAK;YACtB,OAAO,sEAAO,CAAC,UAAU,GAAG,EAAE,GAAG;gBAC7B,IAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;gBAClD,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC;gBACxB,SAAS,CAAC,SAAS,GAAG;oBAClB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,GAAG,EAAE,CAAC;gBACV,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CACL,CAAC,IAAI,CAAC;YACH,KAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC,KAAK,CAAC,UAAC,GAAG;YACT,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IACL,eAAC;AAAD,CAAC,CA1E6B,kDAAI,GA0EjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChFyC;AACoC;AAG9E;IAAgC,8BAAS;IAAzC;QAAA,qEAmHC;QAlHG,YAAM,GAAG,KAAK,CAAC;QAUf,gBAAU,GAAG,KAAK,CAAC;QAEnB,sBAAgB,GAAG,KAAK,CAAC;QACzB,qBAAe,GAAG,KAAK,CAAC;;IAqG5B,CAAC;IAnGa,+BAAU,GAApB,UAAqB,KAAK;QACtB,KAAK,IAAM,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACtC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7E;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAES,iCAAY,GAAtB,UAAuB,UAAkB,EAAE,KAAK,EAAE,SAAc;QAC5D,IAAM,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,IAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAClD,IAAM,WAAW,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,cAAM,YAAK,CAAC,UAAU,CAAC,EAAjB,CAAiB,CAAC,CAAC,CAAC,cAAM,eAAQ,EAAR,CAAQ,CAAC;QAChF,IAAM,SAAS,GAAG,UAAC,IAAgB;YAC/B,KAAK,IAAM,WAAW,IAAI,IAAI,EAAE;gBAC5B,QAAQ,WAAW,EAAE;oBACjB,KAAK,6BAAY,CAAC,WAAW;wBACzB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE;4BACvC,OAAO,IAAI,CAAC;yBACf;wBAAC,MAAM;oBACZ,KAAK,6BAAY,CAAC,KAAK;wBACnB,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE;4BACzC,OAAO,IAAI,CAAC;yBACf;wBAAC,MAAM;oBACZ,KAAK,6BAAY,CAAC,QAAQ;wBACtB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE;4BACvC,OAAO,IAAI,CAAC;yBACf;wBAAC,MAAM;oBACZ,KAAK,6BAAY,CAAC,kBAAkB;wBAChC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;4BACxC,OAAO,IAAI,CAAC;yBACf;wBAAC,MAAM;oBACZ,KAAK,6BAAY,CAAC,eAAe;wBAC7B,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;4BACxC,OAAO,IAAI,CAAC;yBACf;wBAAC,MAAM;oBACZ,KAAK,6BAAY,CAAC,UAAU;wBACxB,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE;4BACzC,OAAO,IAAI,CAAC;yBACf;iBACR;gBACD,OAAO,KAAK,CAAC;aAChB;QACL,CAAC,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7B,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBACxC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aAClC;SACJ;QACD,OAAO,WAAW,EAAE,CAAC;IACzB,CAAC;IAES,8BAAS,GAAnB,UAAoB,UAAkB,EAAE,IAAgB,EAAE,KAAK;QAC3D,KAAK,IAAM,WAAW,IAAI,IAAI,EAAE;YAC5B,QAAQ,WAAW,EAAE;gBACjB,KAAK,6BAAY,CAAC,WAAW;oBACzB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE;wBACvC,OAAO,IAAI,CAAC;qBACf;oBAAC,MAAM;gBACZ,KAAK,6BAAY,CAAC,KAAK;oBACnB,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE;wBACzC,OAAO,IAAI,CAAC;qBACf;oBAAC,MAAM;gBACZ,KAAK,6BAAY,CAAC,QAAQ;oBACtB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE;wBACvC,OAAO,IAAI,CAAC;qBACf;oBAAC,MAAM;gBACZ,KAAK,6BAAY,CAAC,kBAAkB;oBAChC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;wBACxC,OAAO,IAAI,CAAC;qBACf;oBAAC,MAAM;gBACZ,KAAK,6BAAY,CAAC,eAAe;oBAC7B,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;wBACxC,OAAO,IAAI,CAAC;qBACf;oBAAC,MAAM;gBACZ,KAAK,6BAAY,CAAC,UAAU;oBACxB,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE;wBACzC,OAAO,IAAI,CAAC;qBACf;aACR;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAES,qCAAgB,GAA1B;QACI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,sBAAsB;QACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1C;QACD,oBAAoB;QACpB,KAAK,GAAG,EAAE,CAAC;QACX,KAAK,IAAM,CAAC,IAAI,YAAY,EAAE;YAC1B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IACL,iBAAC;AAAD,CAAC,CAnH+B,+BAAS,GAmHxC;;;;;;;;;;;;;;;;;;;;ACvH0C;AACE;AACM;AACnD,IAAI,uBAAyB,CAAC;AAC9B;IAA8B,oCAAU;IAAxC;;IA2GA,CAAC;IA1Ga,6CAA0B,GAApC;QACI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,KAAK,EAAE;YAClF,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;gBAC3D,IAAM,SAAS,GAAuB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;oBACvD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,uBAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvD,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;aACnC;iBACI;gBACD,IAAM,KAAK,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACjC,OAAO;aACV;SACJ;aACI;YACD,uBAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;SACjD;QAED,uBAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QAE5C,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;YACnE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;gBACrC,IAAI,CAAC,8BAA8B,EAAE,CAAC;aACzC;iBACI,IAAI,IAAI,CAAC,UAAU,EAAE;gBACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC;aACjC;iBACI,IAAI,IAAI,CAAC,WAAW,EAAE;gBACvB,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACnC;iBACI;gBACD,IAAI,CAAC,yBAAyB,EAAE,CAAC;aACpC;SACJ;aACI;YACD,IAAI,CAAC,yBAAyB,EAAE,CAAC;SACpC;IACL,CAAC;IAEO,iDAA8B,GAAtC;QAAA,iBAkBC;QAjBG,IAAI,aAAa,GAAG,KAAK,EACrB,MAA0B,CAAC;QAC/B,uBAAa,CAAC,SAAS,GAAG,UAAC,CAAC;YACxB,MAAM,GAAI,CAAS,CAAC,MAAM,CAAC,MAAM,CAAC;YAClC,IAAI,MAAM,EAAE;gBACR,IAAI,aAAa,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAI,CAAC,WAAW,EAAE;oBAC3D,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC;iBACrB;qBACI;oBACD,aAAa,GAAG,IAAI,CAAC;oBACrB,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;iBACnC;aACJ;iBAAM;gBACH,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IAEO,yCAAsB,GAA9B;QAAA,iBAkBC;QAjBG,IAAI,aAAa,GAAG,KAAK,EACrB,MAAM,CAAC;QACX,uBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,EAAE;gBACR,IAAI,aAAa,EAAE;oBACf,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC;iBACrB;qBACI;oBACD,aAAa,GAAG,IAAI,CAAC;oBACrB,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;iBACnC;aACJ;iBAAM;gBACH,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IAEO,4CAAyB,GAAjC;QAAA,iBAYC;QAXG,IAAI,MAAM,CAAC;QACX,uBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,EAAE;gBACR,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,MAAc,CAAC,QAAQ,EAAE,CAAC;aAC9B;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IAEO,2CAAwB,GAAhC;QAAA,iBAWC;QAVG,IAAI,MAAM,CAAC;QACX,uBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAI,CAAC,WAAW,EAAE;gBACpD,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBAAM;gBACH,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IACL,eAAC;AAAD,CAAC,CA3G6B,sBAAU,GA2GvC;;;;;;;;;;;;;;;;;;;;;;;AC/GsC;AACmB;AAE1D,IAAI,cAA6B,CAAC;AAClC,IAAI,UAAyB,CAAC;AAC9B,IAAI,IAAI,CAAC;AACT,IAAI,MAA0B,CAAC;AAC/B;IAAwB,uBAAQ;IAAhC;;IAsKA,CAAC;IArKa,2BAAc,GAAxB,UAAyB,MAAM,EAAE,MAAM;QAAvC,iBA8BC;QA7BG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QACvB,UAAU,GAAG,UAAC,GAAG;YACb,IAAI,IAAI,KAAK,CAAC,EAAE;gBACZ,KAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACxB;iBACI;gBACD,EAAE,IAAI,CAAC;aACV;QACL,CAAC,CAAC;QACF,cAAc,GAAG;YACb,OAAO,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;YACnE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;gBACrC,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aAClD;iBACI,IAAI,IAAI,CAAC,UAAU,EAAE;gBACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aAC1C;iBACI,IAAI,IAAI,CAAC,WAAW,EAAE;gBACvB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aAC3C;iBACI;gBACD,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aAC5C;SACJ;aACI;YACD,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC5C;IACL,CAAC;IAEO,sCAAyB,GAAjC,UAAkC,MAAM,EAAE,MAAM;QAAhD,iBAgCC;QA/BG,IAAI,aAAyB,CAAC;QAC9B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAM,UAAU,GAA2B,UAAC,KAAK;YAC7C,OAAO,kCAAO,CAAC,UAAC,GAAG,EAAE,GAAG;gBACpB,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,aAAa,CAAC,SAAS,GAAG,UAAC,CAAM;oBAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzB,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAI,CAAC,WAAW,IAAI,MAAM,EAAE;wBACpD,IAAI,cAAc,EAAE,EAAE;4BAClB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;yBAC5B;wBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;qBACrB;yBACI;wBACD,GAAG,EAAE,CAAC;qBACT;gBACL,CAAC,CAAC;gBACF,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,yCAAU,CACN,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG;YACpB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CACL,CAAC,IAAI,CAAC;YACH,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,aAAG;YACR,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,8BAAiB,GAAzB,UAA0B,MAAM,EAAE,MAAM;QAAxC,iBAgCC;QA9BG,IAAI,aAAyB,CAAC;QAC9B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,IAAM,UAAU,GAA2B,UAAC,KAAK;YAC7C,OAAO,kCAAO,CAAC,UAAC,GAAG,EAAE,GAAG;gBACpB,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,aAAa,CAAC,SAAS,GAAG,UAAC,CAAM;oBAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzB,IAAI,MAAM,EAAE;wBACR,IAAI,cAAc,EAAE,EAAE;4BAClB,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;yBAC9B;wBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;qBACrB;yBACI;wBACD,GAAG,EAAE,CAAC;qBACT;gBACL,CAAC,CAAC;gBACF,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,yCAAU,CACN,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG;YACpB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CACL,CAAC,IAAI,CAAC;YACH,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,aAAG;YACR,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,+BAAkB,GAA1B,UAA2B,MAAM,EAAE,MAAM;QAAzC,iBA+BC;QA9BG,IAAI,aAAyB,CAAC;QAC9B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,IAAM,UAAU,GAAG,UAAC,KAAK;YACrB,OAAO,kCAAO,CAAC,UAAC,GAAG,EAAE,GAAG;gBACpB,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,aAAa,CAAC,SAAS,GAAG,UAAC,CAAM;oBAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzB,IAAI,MAAM,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAI,CAAC,WAAW,EAAE;wBACpD,IAAI,cAAc,EAAE,EAAE;4BAClB,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;yBACjC;wBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;qBACrB;yBACI;wBACD,GAAG,EAAE,CAAC;qBACT;gBACL,CAAC,CAAC;gBACF,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,yCAAU,CACN,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG;YACpB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CACL,CAAC,IAAI,CAAC;YACH,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,aAAG;YACR,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,gCAAmB,GAA3B,UAA4B,MAAM,EAAE,MAAM;QAA1C,iBA+BC;QA9BG,IAAI,aAAyB,CAAC;QAC9B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,IAAM,UAAU,GAAG,UAAC,KAAK;YACrB,OAAO,kCAAO,CAAC,UAAC,GAAG,EAAE,GAAG;gBACpB,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,aAAa,CAAC,SAAS,GAAG,UAAC,CAAM;oBAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzB,IAAI,MAAM,EAAE;wBACR,IAAI,cAAc,EAAE,EAAE;4BAClB,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;yBACjC;wBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;qBACrB;yBACI;wBACD,GAAG,EAAE,CAAC;qBACT;gBACL,CAAC,CAAC;gBACF,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,yCAAU,CACN,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG;YACpB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CACL,CAAC,IAAI,CAAC;YACH,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,aAAG;YACR,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IACL,SAAC;AAAD,CAAC,CAtKuB,kBAAQ,GAsK/B;;;;;;;;;;;;;;;;;AC7KyB;AAE1B,IAAI,oBAA6B,CAAC;AAClC,IAAI,gBAAyB,CAAC;AAC9B,IAAI,UAAI,CAAC;AACT,IAAI,YAA0B,CAAC;AAC/B,IAAI,mBAAyB,CAAC;AAC9B;IAA2B,6BAAE;IAA7B;;IA8FA,CAAC;IA7Fa,iCAAiB,GAA3B,UAA4B,MAAM,EAAE,GAAW;QAA/C,iBAoCC;QAlCG,UAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3B,gBAAU,GAAG,UAAC,GAAG;YACb,IAAI,UAAI,KAAK,CAAC,EAAE;gBACZ,KAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACxB;iBACI;gBACD,EAAE,UAAI,CAAC;aACV;QACL,CAAC,CAAC;QACF,oBAAc,GAAG;YACb,OAAO,KAAI,CAAC,SAAS,CAAC,YAAM,CAAC,GAAG,CAAC;gBAC7B,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC;QAEF,mBAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5D,mBAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QAC5C,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;YACnE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;gBACrC,IAAI,CAAC,4BAA4B,EAAE,CAAC;aACvC;iBACI,IAAI,IAAI,CAAC,UAAU,EAAE;gBACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;iBACI,IAAI,IAAI,CAAC,WAAW,EAAE;gBACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAChC;iBACI;gBACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;aACjC;SACJ;aACI;YACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;IACL,CAAC;IAEO,4CAA4B,GAApC;QAAA,iBAYC;QAXG,mBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,YAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAI,CAAC,WAAW,IAAI,YAAM,EAAE;gBACpD,IAAI,oBAAc,EAAE,EAAE;oBAClB,gBAAU,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBACD,YAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBAAM;gBACH,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IAEO,oCAAoB,GAA5B;QAAA,iBAYC;QAXG,mBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,YAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,YAAM,EAAE;gBACR,IAAI,oBAAc,EAAE,EAAE;oBAClB,gBAAU,CAAC,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC9B;gBACD,YAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBAAM;gBACH,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IAEO,qCAAqB,GAA7B;QAAA,iBAYC;QAXG,mBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,YAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAI,CAAC,WAAW,IAAI,YAAM,EAAE;gBACpD,IAAI,oBAAc,EAAE,EAAE;oBAClB,KAAI,CAAC,UAAU,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC;iBACjC;gBACD,YAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBAAM;gBACH,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IAEO,sCAAsB,GAA9B;QAAA,iBAYC;QAXG,mBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,YAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,YAAM,EAAE;gBACR,IAAI,oBAAc,EAAE,EAAE;oBAClB,KAAI,CAAC,UAAU,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC;iBACjC;gBACD,YAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBAAM;gBACH,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IACL,YAAC;AAAD,CAAC,CA9F0B,KAAE,GA8F5B;;;;;;;;;;;;;;;;;ACrG+B;AAEhC,IAAI,oBAA6B,CAAC;AAClC,IAAI,YAA0B,CAAC;AAC/B,IAAI,mBAAyB,CAAC;AAC9B;IAA2B,6BAAK;IAAhC;;IA6GA,CAAC;IA3Ga,iCAAiB,GAA3B,UAA4B,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG;QAAlD,iBA8BC;QA7BG,oBAAc,GAAG;YACb,OAAO,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/B,mBAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CACrD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,EAC3B,GAAG,CACN,CAAC;QAEF,mBAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QAE5C,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;YACnE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;gBACrC,IAAI,CAAC,4BAA4B,EAAE,CAAC;aACvC;iBACI,IAAI,IAAI,CAAC,UAAU,EAAE;gBACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;iBACI,IAAI,IAAI,CAAC,WAAW,EAAE;gBACvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAChC;iBACI;gBACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;aACjC;SACJ;aACI;YACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;IAEL,CAAC;IAEO,4CAA4B,GAApC;QAAA,iBAoBC;QAnBG,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,mBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,YAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,YAAM,EAAE;gBACR,IAAI,aAAa,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAI,CAAC,WAAW,EAAE;oBAC3D,IAAI,oBAAc,EAAE,EAAE;wBAClB,KAAI,CAAC,UAAU,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC;qBACjC;oBACD,YAAM,CAAC,QAAQ,EAAE,CAAC;iBACrB;qBACI;oBACD,aAAa,GAAG,IAAI,CAAC;oBACrB,YAAM,CAAC,OAAO,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;iBACnC;aACJ;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IAEO,oCAAoB,GAA5B;QAAA,iBAqBC;QApBG,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,mBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,YAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,YAAM,EAAE;gBACR,IAAI,aAAa,EAAE;oBACf,IAAI,oBAAc,EAAE,EAAE;wBAClB,KAAI,CAAC,UAAU,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC;qBACjC;oBACD,YAAM,CAAC,QAAQ,EAAE,CAAC;iBACrB;qBACI;oBACD,aAAa,GAAG,IAAI,CAAC;oBACrB,YAAM,CAAC,OAAO,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;iBACnC;aACJ;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IAEO,qCAAqB,GAA7B;QAAA,iBAcC;QAbG,mBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,YAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,YAAM,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAI,CAAC,WAAW,EAAE;gBACpD,IAAI,oBAAc,EAAE,EAAE;oBAClB,KAAI,CAAC,UAAU,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC;iBACjC;gBACD,YAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IAEN,CAAC;IAEO,sCAAsB,GAA9B;QAAA,iBAaC;QAZG,mBAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,YAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,YAAM,EAAE;gBACR,IAAI,oBAAc,EAAE,EAAE;oBAClB,KAAI,CAAC,UAAU,CAAC,YAAM,CAAC,KAAK,CAAC,CAAC;iBACjC;gBACD,YAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;IACN,CAAC;IACL,YAAC;AAAD,CAAC,CA7G0B,KAAK,GA6G/B;;;;;;;;;;;;;;;;;;;;AClH+B;AACgC;AAChB;AAEhD;IAAmC,+CAAK;IAAxC;;IAqMA,CAAC;IApMa,sCAAc,GAAxB;QACI,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAc,CAAC;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,IAAM,SAAS,GAAG,EAAE,CAAC;QACrB,sBAAsB;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACzC,IAAI,4CAAW,CAAC,MAAM,CAAC,KAAK,0BAAS,CAAC,MAAM,EAAE;YAC1C,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;gBACnB,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;aACpD;SACJ;aACI;YACD,IAAI,MAAM,UAAC;YACX,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;gBACnB,MAAM,GAAG,EAAE,CAAC;gBACZ,KAAK,IAAM,MAAM,IAAI,MAAM,EAAE;oBACzB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;iBACtC;gBACD,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;aAChC;SACJ;QACD,oBAAoB;QACpB,KAAK,GAAG,EAAE,CAAC;QACX,KAAK,IAAM,CAAC,IAAI,SAAS,EAAE;YACvB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5B;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAES,+CAAuB,GAAjC;QACI,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAc,CAAC;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,sBAAsB;QACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAM,SAAS,GAAG,EAAE,CAAC;QACrB,mBAAmB;QACnB,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAE1C,IAAI,KAAK,CAAC;QACV,IAAI,MAAM,CAAC;QACX,IAAI,KAAK,CAAC;QACV,IAAI,iBAAiB,CAAC;QACtB,IAAM,kBAAkB,GAAG;YACvB,IAAM,QAAQ,GAAG;gBACb,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1B,gBAAgB;gBAChB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,mCAAmC;gBACnC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC;YACF,IAAM,MAAM,GAAG;gBACX,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1B,gBAAgB;gBAChB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBAC/D,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,0CAA0C;gBAC1C,OAAO,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC7F,CAAC,CAAC;YACF,IAAM,MAAM,GAAG;gBACX,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1B,gBAAgB;gBAChB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACnE,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBAC/D,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC/C,0CAA0C;gBAC1C,OAAO,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC7F,CAAC,CAAC;YACF,IAAM,MAAM,GAAG;gBACX,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1B,gBAAgB;gBAChB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,mCAAmC;gBACnC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/E,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC;YACF,IAAM,MAAM,GAAG;gBACX,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1B,oBAAoB;gBACpB,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,mCAAmC;gBACnC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrF,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,iBAAiB,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC;gBAC7D,sBAAsB;gBACtB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,mCAAmC;gBACnC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjD,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,iBAAiB,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;YAC7D,CAAC,CAAC;YACF,KAAK,IAAM,IAAI,IAAI,YAAY,EAAE;gBAC7B,IAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAM,gBAAgB,GAAG,4CAAW,CAAC,eAAe,CAAC,CAAC;gBACtD,IAAI,mBAAmB,UAAC;gBACxB,QAAQ,IAAI,EAAE;oBACV,KAAK,6BAAY,CAAC,KAAK;wBACnB,mBAAmB,GAAG,QAAQ,CAAC;wBAC/B,MAAM;oBACV,KAAK,6BAAY,CAAC,GAAG;wBACjB,mBAAmB,GAAG,MAAM,CAAC;wBAC7B,MAAM;oBACV,KAAK,6BAAY,CAAC,GAAG;wBACjB,mBAAmB,GAAG,MAAM,CAAC;wBAC7B,MAAM;oBACV,KAAK,6BAAY,CAAC,GAAG;wBACjB,mBAAmB,GAAG,MAAM,CAAC;wBAC7B,MAAM;oBACV,KAAK,6BAAY,CAAC,GAAG;wBACjB,mBAAmB,GAAG,MAAM,CAAC;wBAC7B,MAAM;iBACb;gBACD,QAAQ,gBAAgB,EAAE;oBACtB,KAAK,0BAAS,CAAC,MAAM;wBACjB,iBAAiB,GAAG,eAAe,CAAC;wBACpC,KAAK,CAAC,KAAK,CAAC,CAAI,IAAI,SAAI,iBAAiB,MAAG,CAAC,GAAG,mBAAmB,EAAE,CAAC;wBACtE,MAAM;oBACV,KAAK,0BAAS,CAAC,KAAK;wBAChB,KAAK,IAAM,IAAI,IAAI,eAAe,EAAE;4BAChC,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;4BAC1C,KAAK,CAAC,KAAK,CAAC,CAAI,IAAI,SAAI,iBAAiB,MAAG,CAAC,GAAG,mBAAmB,EAAE,CAAC;yBACzE;iBACR;aACJ;QACL,CAAC,CAAC;QAEF,IAAI,4CAAW,CAAC,MAAM,CAAC,KAAK,0BAAS,CAAC,MAAM,EAAE;YAC1C,KAAK,KAAK,IAAI,KAAK,EAAE;gBACjB,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC9B,kBAAkB,EAAE,CAAC;gBACrB,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;aACpC;SACJ;aACI;YACD,KAAK,KAAK,IAAI,KAAK,EAAE;gBACjB,MAAM,GAAG,EAAE,CAAC;gBACZ,KAAK,IAAM,MAAM,IAAI,MAAM,EAAE;oBACzB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;iBAC1C;gBACD,kBAAkB,EAAE,CAAC;gBACrB,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;aACpC;SAEJ;QACD,oBAAoB;QACpB,KAAK,GAAG,EAAE,CAAC;QACX,KAAK,IAAM,CAAC,IAAI,SAAS,EAAE;YACvB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5B;QACD,qDAAqD;QACrD,IAAI,YAAY,CAAC,GAAG,EAAE;YAClB,IAAI,4CAAW,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,0BAAS,CAAC,MAAM,EAAE;gBACpD,KAAK,KAAK,IAAI,KAAK,EAAE;oBACjB,IAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,EAC3D,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;oBAClE,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC;oBACxE,IAAI,YAAY,CAAC,KAAK,KAAK,YAAY,CAAC,GAAG,EAAE;wBACzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;qBAC1D;oBACD,IAAI,YAAY,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG,EAAE;wBACvC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;qBACxD;iBACJ;aACJ;iBACI;gBACD,IAAM,iBAAiB,GAAG,4CAAW,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,0BAAS,CAAC,MAAM,CAAC;gBAC/E,IAAM,eAAe,GAAG,4CAAW,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,0BAAS,CAAC,MAAM,CAAC;gBAC3E,KAAK,KAAK,IAAI,KAAK,EAAE;oBACjB,KAAK,IAAM,MAAM,IAAI,YAAY,CAAC,GAAU,EAAE;wBAC1C,IAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EACtC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,EAC5C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;wBACrD,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;wBAErD,IAAI,iBAAiB,EAAE;4BACnB,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE;gCAClC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;6BACnD;iCACI,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;gCACnD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;6BACnD;yBACJ;wBAED,IAAI,eAAe,EAAE;4BACjB,IAAI,YAAY,CAAC,GAAG,KAAK,SAAS,EAAE;gCAChC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;6BACjD;iCACI,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;gCACjD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;6BACjD;yBACJ;qBACJ;iBACJ;aACJ;SACJ;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IACL,oBAAC;AAAD,CAAC,CArMkC,KAAK,GAqMvC;;;;ACzMM,IAAM,WAAW,GAAG,UAAC,KAAa;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC;;;;;;;;;;;;;;;;ACFgD;AACsC;AAC3C;AACgB;AAG7D;IAA4B,uCAAa;IAAzC;;IAoOA,CAAC;IAlOG,yCAAwB,GAAxB;QACI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACrB,IAAM,OAAO,GAAG,EAAE,CAAC;YACnB,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,KAAK,IAAM,GAAG,IAAI,MAAM,EAAE;gBACtB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACrB;YACD,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAClD,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;SAC5D;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACpB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACtB,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAClC;iBACI;gBACD,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;SACJ;aACI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;IACL,CAAC;IAEO,oCAAmB,GAA3B,UAA4B,WAAmB;QAC3C,IAAI,MAAc,CAAC;QACnB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;YACzB,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC7D;aACI;YACD,IAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1D,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;QACD,IAAI,MAAM,IAAI,IAAI,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,IAAI,+BAAS,CAAC,2BAAU,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;SAC/G;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,qCAAoB,GAA5B,UAA6B,CAAS,EAAE,CAAS;QAC7C,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEO,oCAAmB,GAA3B,UAA4B,CAAS,EAAE,CAAS;QAC5C,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEO,sCAAqB,GAA7B,UAA8B,CAAS,EAAE,CAAS;QAC9C,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,qCAAoB,GAA5B,UAA6B,CAAS,EAAE,CAAS;QAC7C,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,qCAAoB,GAA5B,UAA6B,CAAS,EAAE,CAAS;QAC7C,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAEO,oCAAmB,GAA3B,UAA4B,CAAS,EAAE,CAAS;QAC5C,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAEO,mCAAkB,GAA1B,UAA2B,CAAO,EAAE,CAAO;QACvC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAEO,kCAAiB,GAAzB,UAA0B,CAAO,EAAE,CAAO;QACtC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAEO,kCAAiB,GAAzB,UAA0B,MAAc,EAAE,KAAiB;QAEvD,QAAQ,MAAM,CAAC,QAAQ,EAAE;YACrB,KAAK,0BAAS,CAAC,MAAM;gBACjB,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACvF,KAAK,0BAAS,CAAC,MAAM;gBACjB,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACvF,KAAK,0BAAS,CAAC,QAAQ;gBACnB,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACnF;gBACI,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;SAC5F;IAEL,CAAC;IAEO,yBAAQ,GAAhB,UAAiB,KAAiB;QAAlC,iBAoBC;QAnBG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,UAAU,IAAI,IAAI,EAAE;YACpB,IAAM,aAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC9D,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC;YAC9B,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE;gBACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;oBACnB,OAAO,aAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;aACN;iBACI;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;oBACnB,OAAO,aAAW,CACd,KAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAC7C,KAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;aACN;SACJ;IACL,CAAC;IAEO,8BAAa,GAArB,UAAsB,IAAY;QAC9B,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrD,CAAC;IAES,+BAAc,GAAxB;QACI,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAClD,IAAM,cAAc,GAAG,4CAAW,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,cAAc,KAAK,0BAAS,CAAC,MAAM,EAAE;gBACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACxB;iBACI,IAAI,cAAc,KAAK,0BAAS,CAAC,KAAK,EAAE;gBACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wCACf,CAAC,EAAM,QAAM;oBAClB,IAAI,OAAK,KAAK,IAAI,IAAI,EAAE;wBACpB,IAAM,kBAAgB,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzC,IAAM,iBAAiB,GAAe,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAI,qBAAmB,GAAG,iBAAiB,CAAC,EAAE,CAAC;wBAC/C,IAAM,iBAAiB,GAAG,OAAK,mBAAmB,CAAC,qBAAmB,CAAC,CAAC;wBACxE,IAAI,iBAAiB,IAAI,IAAI,EAAE;4BAC3B,qBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC;4BAC7C,iBAAiB,CAAC,IAAI,GAAG,OAAK,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;4BACpE,IAAM,aAAW,GAAG,OAAK,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;4BACjF,OAAK,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC;gCACnB,IAAI,CAAC,CAAC,kBAAgB,CAAC,KAAK,CAAC,CAAC,kBAAgB,CAAC,EAAE;oCAC7C,OAAO,aAAW,CAAC,CAAC,CAAC,qBAAmB,CAAC,EAAE,CAAC,CAAC,qBAAmB,CAAC,CAAC,CAAC;iCACtE;gCACD,OAAO,CAAC,CAAC;4BACb,CAAC,CAAC,CAAC;yBACN;qBACJ;;;gBAjBL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,QAAM,GAAI,KAAa,CAAC,MAAM,EAAE,CAAC,GAAG,QAAM,EAAE,CAAC,EAAE;4BAAtD,CAAC,EAAM,QAAM;iBAkBrB;aACJ;SACJ;IACL,CAAC;IAES,oCAAmB,GAA7B;QACI,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;QACjC,IAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,iBAAiB,CAAC;QACtB,sBAAsB;QACtB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAM,QAAQ,GAAG;YACb,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjD;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QACF,IAAM,MAAM,GAAG;YACX,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;gBACnB,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBAC3C,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;aAC5C;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QACF,IAAM,MAAM,GAAG;YACX,IAAI,MAAM,GAAG,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;YACxC,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;gBACnB,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBACjC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC3C,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;aAC5C;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QACF,IAAM,MAAM,GAAG;YACX,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;aACzC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QACF,IAAM,MAAM,GAAG;YACX,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,IAAM,CAAC,IAAI,KAAK,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;aACzC;YACD,OAAO,MAAM,GAAG,WAAW,CAAC;QAChC,CAAC,CAAC;QACF,KAAK,IAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACrC,IAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACnD,IAAM,gBAAgB,GAAG,4CAAW,CAAC,eAAe,CAAC,CAAC;YACtD,IAAI,mBAAmB,UAAC;YACxB,QAAQ,IAAI,EAAE;gBACV,KAAK,OAAO;oBACR,mBAAmB,GAAG,QAAQ,CAAC;oBAAC,MAAM;gBAC1C,KAAK,KAAK;oBACN,mBAAmB,GAAG,MAAM,CAAC;oBAAC,MAAM;gBACxC,KAAK,KAAK;oBACN,mBAAmB,GAAG,MAAM,CAAC;oBAAC,MAAM;gBACxC,KAAK,KAAK;oBACN,mBAAmB,GAAG,MAAM,CAAC;oBAAC,MAAM;gBACxC,KAAK,KAAK;oBACN,mBAAmB,GAAG,MAAM,CAAC;oBAAC,MAAM;aAC3C;YACD,QAAQ,gBAAgB,EAAE;gBACtB,KAAK,0BAAS,CAAC,MAAM;oBACjB,iBAAiB,GAAG,eAAe,CAAC;oBACpC,OAAO,CAAI,IAAI,SAAI,iBAAiB,MAAG,CAAC,GAAG,mBAAmB,EAAE,CAAC;oBACjE,MAAM;gBACV,KAAK,0BAAS,CAAC,KAAK;oBAChB,KAAK,IAAM,GAAG,IAAI,eAAe,EAAE;wBAC/B,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;wBACzC,OAAO,CAAI,IAAI,SAAI,iBAAiB,MAAG,CAAC,GAAG,mBAAmB,EAAE,CAAC;qBACpE;aACR;SACJ;QAED,2CAA2C;QAC3C,KAAK,IAAM,IAAI,IAAI,OAAO,EAAE;YACxB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACL,aAAC;AAAD,CAAC,CApO2B,6BAAa,GAoOxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1OoC;AACkD;AAC7C;AACG;AACgB;AAE7D;IAA0B,2BAAM;IAAhC;QAAA,qEA8RC;QA5RW,qBAAe,GAAgB,EAAE,CAAC;QAClC,6BAAuB,GAAG,CAAC,CAAC;QACpC,mBAAa,GAAG,EAAE,CAAC;;IA0RvB,CAAC;IAxRG,+BAAgB,GAAhB;QAAA,iBAuBC;QAtBG,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,4CAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,0BAAS,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,IAAiB,CAAC,CAAC;SACpD;aACI;YACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAmB,CAAC;SACpD;QACD,+BAA+B;QAC/B,IAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC7B,IAAI,iBAAe,CAAC;YAChB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;SACnB,EAAE,iBAAO;YACN,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAC,IAAI;;gBAC5B;oBACI,GAAC,KAAI,CAAC,uBAAuB,IAAG,IAAI;uBACvC;YACL,CAAC,CAAC,CAAC;YACH,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnC,KAAI,CAAC,wBAAwB,EAAE,CAAC;QACpC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAEO,mCAAoB,GAA5B;QAAA,iBAuFC;QAtFG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAEzB,IAAI,IAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,KAAK,CAAC,EAAE;oBAClE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,IAAI,CAAC,CAAC,CAAC;iBACzD;gBAED,IAAI;oBACA,IAAI,SAAO,GAAG,EAAE,CAAC;oBACjB,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAM,cAAY,GAAG,MAAM,CAAC,MAAM,CAAC;oBACnC,IAAM,cAAY,GAAG,UAAC,KAAgB,EAAE,KAAa;wBACjD,IAAI,KAAK,CAAC,EAAE,IAAI,IAAI,EAAE;4BAClB,KAAK,IAAM,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;gCACxB,IAAI,KAAK,CAAE,KAAK,CAAC,EAAU,CAAC,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE;oCAC7C,KAAK,CAAE,KAAK,CAAC,EAAU,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;oCAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;iCACrB;6BACJ;yBACJ;wBACD,OAAO,KAAK,CAAC;oBACjB,CAAC,CAAC;oBACF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM;wBACxB,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB;wBAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAY,EAAE,CAAC,EAAE,EAAE;4BACnC,IAAM,KAAK,GAAG,KAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;4BAC1C,IAAI,gBAAQ,IAAI,EAAK,cAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;yBACzD;wBACD,SAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvB,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,OAAO,GAAG,SAAO,CAAC;oBACvB,sBAAsB;oBACtB,SAAO,GAAG,IAAI,CAAC;oBACf,IAAI,IAA8B,EAAE;wBAChC,IAAI;4BACA,IAAI,CAAC,cAAc,EAAE,CAAC;yBACzB;wBACD,OAAO,EAAE,EAAE;4BACP,IAAI,CAAC,OAAO,CAAC;gCACT,OAAO,EAAE,EAAE,CAAC,OAAO;gCACnB,IAAI,EAAE,2BAAU,CAAC,iBAAiB;6BACrC,CAAC,CAAC;4BACH,OAAO;yBACV;qBACJ;yBACI,EAEJ;oBAED,IAAI,IAA8B,EAAE;wBAChC,IAAI;4BACA,IAAI,CAAC,wBAAwB,EAAE,CAAC;yBACnC;wBACD,OAAO,EAAE,EAAE;4BACP,IAAI,CAAC,OAAO,CAAC;gCACT,OAAO,EAAE,EAAE,CAAC,OAAO;gCACnB,IAAI,EAAE,2BAAU,CAAC,iBAAiB;6BACrC,CAAC,CAAC;4BACH,OAAO;yBACV;qBACJ;yBACI,EAEJ;iBACJ;gBACD,OAAO,EAAE,EAAE;oBACP,IAAI,CAAC,OAAO,CAAC;wBACT,OAAO,EAAE,EAAE,CAAC,OAAO;wBACnB,IAAI,EAAE,2BAAU,CAAC,gBAAgB;qBACpC,CAAC,CAAC;oBACH,OAAO;iBACV;gBAED,IAAI,IAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,KAAK,CAAC,EAAE;oBACjE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,KAAK,CAAC,CAAC,CAAC;iBACxE;qBACI,IAAI,IAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,KAAK,CAAC,EAAE;oBACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,KAAK,CAAC,CAAC,CAAC;iBACxE;aACJ;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAChC;aACI;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;IACL,CAAC;IAEO,uCAAwB,GAAhC;QAAA,iBAuCC;QAtCG,IAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACjE,IAAI,KAAK,EAAE;YACP,IAAI;gBACA,IAAI,aAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACnD,2DAA2D;gBAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,aAAW,CAAC,MAAM,CAAC,KAAK,EAAE;oBACzC,aAAW,GAAG;wBACV,MAAM,EAAE,aAAW,CAAC,MAAM;wBAC1B,MAAM,EAAE,aAAW,CAAC,MAAM;qBAC7B,CAAC;iBACL;gBAED,IAAI,IAA8B,EAAE;oBAChC,IAAI,CAAC,eAAe,CAAC,aAAW,EAAE,KAAK,CAAC,CAAC;oBACzC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;wBACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC5B,OAAO;qBACV;iBACJ;gBAED,IAAI,iBAAe,CAAC;oBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;iBACnB,EAAE,iBAAO;oBACN,KAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,aAAW,EAAE,OAAO,CAAC,CAAC;oBAClD,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClD,EAAE,KAAI,CAAC,uBAAuB,CAAC;oBAC/B,KAAI,CAAC,wBAAwB,EAAE,CAAC;gBACpC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;aAC9B;YACD,OAAO,EAAE,EAAE;gBACP,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;aAC/B;SACJ;aACI;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;IACL,CAAC;IAEO,yBAAU,GAAlB,UAAmB,QAAgB,EAAE,WAA0B,EAAE,eAAsB;QAAvF,iBA4DC;QA1DG,IAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1C,IAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1C,IAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzE,IAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACrD,IAAM,gBAAgB,GAAG;YACrB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,6BAAmB;gBACpC,eAAe,CAAC,OAAO,CAAC,UAAC,oBAAoB;oBACzC,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,oBAAoB,CAAC,OAAO,CAAC,EAAE;wBAC7E,OAAO,CAAC,KAAK,CAAC,gBAAQ,mBAAmB,CAAE,CAAC;wBAC5C,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,oBAAoB,CAAC;qBACxD;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,IAAM,eAAe,GAAG;YACpB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,2BAAkC,CAAC;YACvC,IAAI,QAAQ,CAAC;YACb,IAAM,kBAAkB,GAAG,EAAE,CAAC;YAC9B,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAG;gBACvD,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,mBAAmB;gBACrC,2BAA2B,GAAG,EAAE,CAAC;gBACjC,IAAI,WAAW,KAAK,CAAC,EAAE;oBACnB,QAAQ,GAAG,UAAU,oBAAoB;wBACrC,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,oBAAoB,CAAC,OAAO,CAAC,EAAE;4BAC7E,2BAA2B,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;yBAC1D;oBACL,CAAC,CAAC;iBACL;qBACI;oBACD,QAAQ,GAAG,UAAU,oBAAoB;wBACrC,IAAM,KAAK,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;wBAC/C,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,oBAAoB,CAAC,OAAO,CAAC,EAAE;4BACnE,2BAA2B,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;yBAC1D;oBACL,CAAC,CAAC;iBACL;gBACD,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,2BAA2B,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1C,2BAA2B,GAAG,CAAC,kBAAkB,CAAC,CAAC;iBACtD;gBACD,2BAA2B,CAAC,OAAO,CAAC,UAAU,KAAK;oBAC/C,OAAO,CAAC,KAAK,CAAC,gBAAQ,mBAAmB,CAAE,CAAC;oBAC5C,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,QAAQ,QAAQ,EAAE;YACd,KAAK,MAAM;gBACP,eAAe,EAAE,CAAC;gBAAC,MAAM;YAC7B;gBACI,gBAAgB,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEO,gCAAiB,GAAzB,UAA0B,MAAc;QACpC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,IAAM,wBAAwB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAM,yBAAyB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAM,IAAI,GAAG;YACT,MAAM,EAAE;gBACJ,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC;gBAClC,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;aACtC;YACD,MAAM,EAAE;gBACJ,KAAK,EAAE,yBAAyB,CAAC,CAAC,CAAC;gBACnC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;aACvC;SACa,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,8BAAe,GAAvB,UAAwB,WAA0B,EAAE,GAAc;QAC9D,IAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QAClC,IAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QAClC,IAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,GAAc,CAAC;QAEnB,6BAA6B;QAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE;YAC3B,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,gBAAgB,EAC3C,wCAAwC,CAC3C,CAAC;SACL;QAED,6BAA6B;QAE7B,IAAI,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAC,IAAI,QAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAxB,CAAwB,CAAC,IAAI,IAAI,EAAE;YAC3E,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,gBAAgB,EAC3C,YAAU,MAAM,CAAC,MAAM,iCAA4B,MAAM,CAAC,KAAO,CACpE,CAAC;SACL;aACI,IAAI,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAC,IAAI,QAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAxB,CAAwB,CAAC,IAAI,IAAI,EAAE;YAChF,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,gBAAgB,EAC3C,YAAU,MAAM,CAAC,MAAM,iCAA4B,MAAM,CAAC,KAAO,CACpE,CAAC;SACL;QAED,uCAAuC;QACvC,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE;YAChB,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;SACf;QACD,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM;YAChD,IAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAC,IAAI,QAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAlD,CAAkD,CAAC,CAAC;YAChH,IAAI,WAAW,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;gBACzD,GAAG,GAAG,IAAI,+BAAS,CAAC,2BAAU,CAAC,gBAAgB,EAC3C,YAAU,MAAM,CAAC,IAAI,6BAAwB,MAAM,CAAC,KAAK,WAAM,MAAM,CAAC,KAAO,CAChF,CAAC;gBACF,OAAO,KAAK,CAAC;aAChB;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,IAAI,IAAI,EAAE;YACb,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAClC;IACL,CAAC;IACL,WAAC;AAAD,CAAC,CA9RyB,qBAAM,GA8R/B;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpSwF;AAC3D;AACgB;AACiB;AAE/D;IAA8B,mCAAI;IAE9B,kBAAY,KAAkB,EAAE,SAAsC,EAAE,OAA8B;QAAtG,YACI,iBAAO,SAuBV;QA2IO,6BAAuB,GAAG;YAC9B,IAAI,KAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACpB,KAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAI,CAAC,KAAK,EAAE;oBACb,IAAI,KAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE;wBACrC,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBAC3C;oBACD,IAAI,KAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;wBAChC,KAAI,CAAC,OAAO,GAAG,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC1D;oBACD,KAAI,CAAC,wBAAwB,EAAE,CAAC;oBAChC,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;iBAChC;qBACI;oBACD,KAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;iBAC5B;aACJ;iBACI;gBACD,KAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;QACL,CAAC;QArLG,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;YACpB,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;SACnB;QACD,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;QAC7B,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;QAC/B,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC5B,IAAI,KAAK,CAAC,KAAK,EAAE;YACb,IAAI,mCAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;gBAClD,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;aACvC;YAED,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;gBACrB,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAChC;YACD,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;gBACpB,KAAI,CAAC,eAAe,GAAG,IAAI,CAAC;aAC/B;SACJ;;IAEL,CAAC;IAED,0BAAO,GAAP;QACI,IAAM,WAAW,GAAG,IAAI,mCAAW,CAAC,oBAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,WAAW,CAAC,cAAc,EAAE,CAAC;QAC7B,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,EAAE;YAC3B,IAAI;gBACA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;oBACzB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;wBAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACxB,IAAI,mCAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;4BAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;yBAC/B;6BACI;4BACD,IAAI,CAAC,aAAa,EAAE,CAAC;yBACxB;qBACJ;yBACI;wBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACxB,IAAI,CAAC,0BAA0B,EAAE,CAAC;qBACrC;iBAEJ;qBACI;oBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBAC3B;aACJ;YACD,OAAO,EAAE,EAAE;gBACP,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;aAC/B;SACJ;aACI;YACD,IAAI,CAAC,OAAO,CACR,WAAW,CAAC,KAAK,CACpB,CAAC;SACL;IACL,CAAC;IAGO,uCAAoB,GAA5B;QAAA,iBA0EC;QAzEG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAC/B,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,YAAY,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,SAAS,CAAC;QAEhD,IAAM,WAAW,GAAG,UAAC,QAAQ;YACzB,OAAO,MAAM,CAAC,SAAS,CAAC,cAAI,IAAI,WAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAvB,CAAuB,CAAC,IAAI,CAAC,CAAC;QAClE,CAAC,CAAC;QACF,IAAM,SAAS,GAAG;YACd,IAAI,SAAS,KAAK,6BAAY,CAAC,GAAG,EAAE;gBAChC,IAAM,KAAK,GAAG;oBACV,IAAI,UAAU,GAAG,EAAE,CAAC;oBACpB,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,IAAI;wBACtB,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;4BACzB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;yBACzB;oBACL,CAAC,CAAC,CAAC;oBACH,MAAM,GAAG,UAAU,CAAC;oBACpB,UAAU,GAAG,IAAI,CAAC;gBACtB,CAAC,CAAC;gBACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnB,KAAK,EAAE,CAAC;iBACX;qBACI,IAAI,YAAY,KAAK,IAAI,EAAE;oBAC5B,MAAM,GAAG,KAAI,CAAC,OAAO,CAAC;iBACzB;qBACI;oBACD,KAAK,EAAE,CAAC;iBACX;aACJ;iBACI;gBACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnB,KAAI,CAAC,OAAO,GAAO,MAAM,QAAK,KAAI,CAAC,OAAO,CAAC,CAAC;oBAC5C,KAAI,CAAC,gBAAgB,EAAE,CAAC;oBACxB,MAAM,GAAG,KAAI,CAAC,OAAO,CAAC;iBACzB;qBACI;oBACD,MAAM,GAAG,KAAI,CAAC,OAAO,CAAC;iBACzB;aACJ;YACD,YAAY,GAAG,KAAK,CAAC;YACrB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,KAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAClB,eAAe,EAAE,CAAC;aACrB;iBACI;gBACD,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC;gBACtB,IAAI,KAAI,CAAC,UAAU,KAAK,IAAI,EAAE;oBAC1B,KAAI,CAAC,uBAAuB,EAAE,CAAC;iBAClC;aACJ;QAEL,CAAC,CAAC;QACF,IAAM,eAAe,GAAG;YACpB,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,6BAAY,CAAC,EAAE,CAAC,EAAE;gBACnC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5C,SAAS,GAAG,6BAAY,CAAC,EAAE,CAAC;oBAC5B,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,6BAAY,CAAC,EAAE,CAAC,CAAC;oBACrD,KAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;iBAC3C;qBACI;oBACD,SAAS,GAAG,6BAAY,CAAC,GAAG,CAAC;oBAC7B,KAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;iBAC3C;aACJ;iBACI;gBACD,SAAS,GAAG,6BAAY,CAAC,GAAG,CAAC;gBAC7B,KAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;aAC3C;YACD,KAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC;QACF,eAAe,EAAE,CAAC;IACtB,CAAC;IAES,kCAAe,GAAzB;QACI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;aACI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;YAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;aACI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;YAC9D,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;IACL,CAAC;IAEO,mCAAgB,GAAxB;QACI,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,yBAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;IAEO,gCAAa,GAArB;QACI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAwBO,iCAAc,GAAtB;QACI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,sBAAsB;QACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAEO,kCAAe,GAAvB;QACI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,QAAK,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACtE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAM,GAAG,GAAG,yDAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,GAAG,IAAI,IAAI,EAAE;gBACb,IAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;iBACI;gBACD,IAAI,CAAC,cAAc,EAAE,CAAC;aACzB;SACJ;aACI;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;IACL,CAAC;IAEO,kCAAe,GAAvB;QACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG;YACV,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,EAAE,EAAE;SACd,CAAC;QACF,iBAAiB;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,CAAC;IACL,eAAC;AAAD,CAAC,CAlO6B,SAAI,GAkOjC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvOyC;AAG1C;IAA+B,6BAAS;IAAxC;QAAA,qEAkBC;QAjBG,iBAAW,GAAG,CAAC,CAAC;QASN,6BAAuB,GAAG;YAChC,IAAI,KAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACpB,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;aACpC;iBACI;gBACD,KAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;QACL,CAAC;;IACL,CAAC;IAda,mCAAe,GAAzB;QACI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;IACL,CAAC;IAUL,gBAAC;AAAD,CAAC,CAlB8B,+BAAS,GAkBvC;;;;;;;;;;;;;;;;;ACrBwC;AAEzC;IAA8B,oCAAS;IAAvC;;IA0BA,CAAC;IAzBa,6CAA0B,GAApC;QAAA,iBAwBC;QAvBG,IAAI,YAAY,CAAC;QACjB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YACxB,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACxC,YAAY,CAAC,SAAS,GAAG;gBACrB,KAAI,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;gBACvC,KAAI,CAAC,eAAe,EAAE,CAAC;YAC3B,CAAC,CAAC;SACL;aACI;YACD,IAAI,QAAM,CAAC;YACX,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAC7C,YAAY,CAAC,SAAS,GAAG,UAAC,CAAM;gBAC5B,QAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACzB,IAAI,QAAM,EAAE;oBACR,EAAE,KAAI,CAAC,WAAW,CAAC;oBACnB,QAAM,CAAC,QAAQ,EAAE,CAAC;iBACrB;qBACI;oBACD,KAAI,CAAC,eAAe,EAAE,CAAC;iBAC1B;YACL,CAAC,CAAC;SACL;QACD,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IACL,eAAC;AAAD,CAAC,CA1B6B,SAAS,GA0BtC;;;;;;;;;;;;;;;;;;;;;;;AC5BsC;AACmB;AAE1D;IAAwB,uBAAQ;IAAhC;;IA8CA,CAAC;IA7Ca,2BAAc,GAAxB,UAAyB,MAAM,EAAE,MAAM;QAAvC,iBA4CC;QA3CG,IAAI,MAA0B,EAAE,aAAa,CAAC;QAC9C,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,UAAU,GAA2B,UAAC,KAAK;YAC3C,OAAO,kCAAO,CAAO,UAAC,GAAG,EAAE,GAAG;gBAC1B,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,aAAa,CAAC,SAAS,GAAG,UAAC,CAAC;oBACxB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzB,IAAI,MAAM,EAAE;wBACR,IAAI,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;4BAC/C,EAAE,KAAI,CAAC,WAAW,CAAC;yBACtB;wBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;qBACrB;yBACI;wBACD,GAAG,EAAE,CAAC;qBACT;gBACL,CAAC,CAAC;gBACF,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YACxB,UAAU,GAAG,UAAC,KAAK;gBACf,OAAO,kCAAO,CAAC,UAAC,GAAG,EAAE,GAAG;oBACpB,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC3D,aAAa,CAAC,SAAS,GAAG,UAAC,CAAC;wBACxB,KAAI,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;wBACpC,GAAG,EAAE,CAAC;oBACV,CAAC,CAAC;oBACF,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;gBAChC,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;SACL;QAED,yCAAU,CACN,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG;YACpB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CACL,CAAC,IAAI,CAAC;YACH,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,aAAG;YACR,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IACL,SAAC;AAAD,CAAC,CA9CuB,QAAQ,GA8C/B;;;;;;;;;;;;;;;;;ACjDyB;AAC1B;IAA2B,6BAAE;IAA7B;;IAuBA,CAAC;IAtBa,iCAAiB,GAA3B,UAA4B,MAAc,EAAE,GAAW;QAAvD,iBAqBC;QApBG,IAAI,MAA0B,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3B,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAElE,aAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,EAAE;gBACR,IAAI,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC1B,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC/C,EAAE,KAAI,CAAC,WAAW,CAAC;iBACtB;gBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;QAEF,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3D,CAAC;IACL,YAAC;AAAD,CAAC,CAvB0B,KAAE,GAuB5B;;;;;;;;;;;;;;;;;ACxB+B;AAEhC;IAA2B,6BAAK;IAAhC;;IAqCA,CAAC;IApCa,iCAAiB,GAA3B,UAA4B,MAAM,EAAE,KAAK,EAAE,EAAE;QAA7C,iBAmCC;QAlCG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/B,IAAI,aAAa,CAAC;QAClB,IAAI,MAA0B,CAAC;QAC/B,IAAI,mBAAmB,CAAC;QACxB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YACxB,mBAAmB,GAAG;gBAClB,aAAa,GAAG,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBAClF,aAAa,CAAC,SAAS,GAAG;oBACtB,KAAI,CAAC,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;oBACxC,KAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,CAAC,CAAC;YACN,CAAC,CAAC;SAEL;aACI;YACD,mBAAmB,GAAG;gBAClB,aAAa,GAAG,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACvF,aAAa,CAAC,SAAS,GAAG,UAAC,CAAC;oBACxB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzB,IAAI,MAAM,EAAE;wBACR,IAAI,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;4BAC/C,EAAE,KAAI,CAAC,WAAW,CAAC;yBACtB;wBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;qBACrB;yBACI;wBACD,KAAI,CAAC,eAAe,EAAE,CAAC;qBAC1B;gBACL,CAAC,CAAC;YACN,CAAC,CAAC;SACL;QACD,mBAAmB,EAAE,CAAC;QAEtB,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACL,YAAC;AAAD,CAAC,CArC0B,KAAK,GAqC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvC+B;AAC2C;AACjC;AACI;AACF;AAE5C;IAA8B,mCAAK;IAE/B,kBAAY,KAAiB,EAAE,SAAuC,EAAE,OAAgC;QAAxG,YACI,iBAAO,SAIV;QAHG,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;IACvB,CAAC;IAED,0BAAO,GAAP;QAAA,iBAyCC;QAxCG,IAAM,WAAW,GAAG,IAAI,mCAAW,CAAC,oBAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,WAAW,CAAC,cAAc,EAAE,CAAC;QAC7B,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,EAAE;YAC3B,IAAI;gBACA,IAAM,iBAAiB,GAAG;oBACtB,IAAM,cAAc,GAAG,IAAI,4BAAe,CAAC,KAAI,CAAC,KAAY,EACxD,UAAC,OAAO;wBACJ,KAAI,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;wBAClC,KAAI,CAAC,uBAAuB,EAAE,CAAC;oBACnC,CAAC,EAAE,KAAI,CAAC,OAAO,CAAC,CAAC;oBACrB,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC7B,CAAC,CAAC;gBACF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE;oBACzB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;wBAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,mCAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;4BAClD,iBAAiB,EAAE,CAAC;yBACvB;6BACI;4BACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BACxB,IAAI,CAAC,cAAc,EAAE,CAAC;yBACzB;qBACJ;yBACI;wBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACxB,IAAI,CAAC,0BAA0B,EAAE,CAAC;qBACrC;iBACJ;qBACI;oBACD,iBAAiB,EAAE,CAAC;iBACvB;aACJ;YACD,OAAO,EAAE,EAAE;gBACP,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;aAC/B;SACJ;aACI;YACD,IAAI,CAAC,OAAO,CACR,WAAW,CAAC,KAAK,CACpB,CAAC;SACL;IACL,CAAC;IAEO,mCAAgB,GAAxB;QACI,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,yBAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IACL,eAAC;AAAD,CAAC,CAxD6B,KAAK,GAwDlC;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9DyC;AAG1C;IAAgC,8BAAS;IAAzC;;IAQA,CAAC;IAHa,oCAAe,GAAzB;QACI,KAAK;IACT,CAAC;IACL,iBAAC;AAAD,CAAC,CAR+B,+BAAS,GAQxC;;;;;;;;;;;;;;;;;ACX0C;AAE3C;IAA8B,oCAAU;IAAxC;;IAiBA,CAAC;IAhBa,6CAA0B,GAApC;QAAA,iBAeC;QAdG,IAAI,MAAM,CAAC;QACX,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACpD,aAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,EAAE,KAAI,CAAC,WAAW,CAAC;gBAClB,MAAc,CAAC,QAAQ,EAAE,CAAC;aAC9B;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;QACF,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACL,eAAC;AAAD,CAAC,CAjB6B,UAAU,GAiBvC;;;;;;;;;;;;;;;;;;;;;;;ACnBsC;AACmB;AAE1D;IAAwB,uBAAQ;IAAhC;;IAiCA,CAAC;IAhCa,2BAAc,GAAxB,UAAyB,MAAM,EAAE,MAAM;QAAvC,iBA+BC;QA9BG,IAAI,MAA0B,EAAE,aAAa,CAAC;QAC9C,IAAM,UAAU,GAA2B,UAAC,KAAK;YAC7C,OAAO,kCAAO,CAAC,UAAC,GAAG,EAAE,GAAG;gBACpB,aAAa,GAAG,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnF,aAAa,CAAC,SAAS,GAAG,UAAC,CAAC;oBACxB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzB,IAAI,MAAM,EAAE;wBACR,IAAI,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;4BAC/C,MAAM,CAAC,MAAM,EAAE,CAAC;4BAChB,EAAE,KAAI,CAAC,WAAW,CAAC;yBACtB;wBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;qBACrB;yBACI;wBACD,GAAG,EAAE,CAAC;qBACT;gBACL,CAAC,CAAC;gBACF,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,yCAAU,CACN,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG;YACpB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CACL,CAAC,IAAI,CAAC;YACH,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,aAAG;YACR,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IACL,SAAC;AAAD,CAAC,CAjCuB,QAAQ,GAiC/B;;;;;;;;;;;;;;;;;ACpCyB;AAE1B;IAA2B,6BAAE;IAA7B;;IAsBA,CAAC;IArBa,iCAAiB,GAA3B,UAA4B,MAAc,EAAE,GAAW;QAAvD,iBAoBC;QAnBG,IAAI,MAA0B,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3B,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAElE,aAAa,CAAC,SAAS,GAAG,UAAC,CAAM;YAC7B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,EAAE;gBACR,IAAI,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC1B,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC/C,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChB,EAAE,KAAI,CAAC,WAAW,CAAC;iBACtB;gBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;QACF,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACL,YAAC;AAAD,CAAC,CAtB0B,KAAE,GAsB5B;;;;;;;;;;;;;;;;;ACxB+B;AAEhC;IAA2B,6BAAK;IAAhC;;IAuBA,CAAC;IAtBa,iCAAiB,GAA3B,UAA4B,MAAM,EAAE,KAAK,EAAE,EAAE;QAA7C,iBAqBC;QApBG,IAAI,MAA0B,EAC1B,aAAa,CAAC;QAClB,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/B,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAEvF,aAAa,CAAC,SAAS,GAAG,UAAC,CAAC;YACxB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,EAAE;gBACR,IAAI,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC/C,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChB,EAAE,KAAI,CAAC,WAAW,CAAC;iBACtB;gBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;aACrB;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;QAEF,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACL,YAAC;AAAD,CAAC,CAvB0B,KAAK,GAuB/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzB+B;AAC+C;AACrC;AACH;AACwB;AAE/D;IAA8B,mCAAK;IAG/B,kBACI,KAAkB,EAAE,SAA0C,EAC9D,OAA8B;QAFlC,YAII,iBAAO,SAIV;QA6DO,6BAAuB,GAAG;YAC9B,IAAI,KAAI,CAAC,KAAK,IAAI,IAAI,EAAE;gBACpB,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;aACpC;iBACI;gBACD,KAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;QACL,CAAC;QAvEG,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;IAC3B,CAAC;IAED,0BAAO,GAAP;QACI,IAAM,WAAW,GAAG,IAAI,mCAAW,CAAC,oBAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,WAAW,CAAC,cAAc,EAAE,CAAC;QAC7B,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,EAAE;YAC3B,IAAI;gBACA,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;oBAC1B,IAAI,mCAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;qBAC/B;yBACI;wBACD,IAAI,CAAC,aAAa,EAAE,CAAC;qBACxB;iBACJ;qBACI;oBACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;iBACrC;aAEJ;YACD,OAAO,EAAE,EAAE;gBACP,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;aAC/B;SACJ;aACI;YACD,IAAI,CAAC,OAAO,CACR,WAAW,CAAC,KAAK,CACpB,CAAC;SACL;IACL,CAAC;IAEO,uCAAoB,GAA5B;QAAA,iBAeC;QAdG,IAAM,YAAY,GAAG,IAAI,4BAAe,CAAC,IAAI,CAAC,KAAK,EAAE,UAAC,OAAO;;YACzD,IAAM,OAAO,GAAG,EAAE,CAAC;YACnB,IAAM,IAAI,GAAG,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,UAAC,IAAI;gBACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,IAAI,CAAC;YACf,IAAM,QAAQ,aAAK,GAAC,IAAI,cAAK,GAAC,6BAAY,CAAC,EAAE,IAAG,OAAO,KAAE,KAAE,CAAC;YAC5D,KAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YAC7B,KAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;YAC1C,KAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;QAC/B,YAAY,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAEO,gCAAa,GAArB;QACI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAEO,mCAAgB,GAAxB;QACI,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAWS,kCAAe,GAAzB;QACI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;aACI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;IACL,CAAC;IAEO,kCAAe,GAAvB;QACI,IAAM,GAAG,GAAG,yDAAiB,CAAE,IAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,GAAG,IAAI,IAAI,EAAE;YACb,IAAM,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,CAAC,GAAG,CAAC,GAAI,IAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChD,OAAQ,IAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;aACI;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SACpB;IACL,CAAC;IAEO,iCAAc,GAAtB;QACI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,IAAY,CAAC,OAAO,GAAG;YACpB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;SAC/B,CAAC;QAEF,iBAAiB;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,CAAC;IACL,eAAC;AAAD,CAAC,CAjH6B,KAAK,GAiHlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvH8B;AACiB;AACe;AAExD,IAAM,WAAW,GAAG,UAAC,aAAa,EAAE,WAAW;IAClD,KAAK,IAAM,GAAG,IAAI,aAAa,EAAE;QAC7B,IAAI,4CAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,0BAAS,CAAC,MAAM,EAAE;YACtD,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;SACzC;aACI;YACD,KAAK,IAAM,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;gBACjC,QAAQ,EAAS,EAAE;oBACf,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAC,MAAM;oBAC5D,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAC,MAAM;oBAC5D,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAC,MAAM;oBAC5D,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAC,MAAM;oBAC5D,OAAO,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;iBAClD;gBACD,MAAM;aACT;SACJ;KACJ;IACD,OAAO,WAAW,CAAC;AACvB,CAAC,CAAC;AAEF;IAAgC,8BAAI;IAApC;QAAA,qEAqBC;QARW,6BAAuB,GAAG;YAC9B,IAAI,KAAI,CAAC,KAAK,EAAE;gBACZ,KAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;iBACI;gBACD,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;aACpC;QACL,CAAC;;IACL,CAAC;IAnBa,oCAAe,GAAzB;QACI,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAES,oCAAe,GAAzB;QACI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;IACL,CAAC;IAUL,iBAAC;AAAD,CAAC,CArB+B,oBAAI,GAqBnC;;;;;;;;;;;;;;;;;AC9CuD;AAExD;IAA8B,oCAAU;IAAxC;;IA2BA,CAAC;IAzBa,6CAA0B,GAApC;QAAA,iBAwBC;QAvBG,IAAI,MAA0B,CAAC;QAC/B,IAAM,aAAa,GAAmC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACpF,aAAa,CAAC,SAAS,GAAG,UAAC,CAAC;YACxB,MAAM,GAAI,CAAS,CAAC,MAAM,CAAC,MAAM,CAAC;YAClC,IAAI,MAAM,EAAE;gBACR,IAAI;oBACA,IAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrF,mBAAmB,CAAC,SAAS,GAAG;wBAC5B,EAAE,KAAI,CAAC,WAAW,CAAC;wBACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtB,CAAC,CAAC;oBACF,mBAAmB,CAAC,OAAO,GAAG,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;iBAChE;gBAAC,OAAO,GAAG,EAAE;oBACV,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;oBACzB,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;iBAC5B;aACJ;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QAEL,CAAC,CAAC;QACF,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACL,eAAC;AAAD,CAAC,CA3B6B,UAAU,GA2BvC;;;;;;;;;;;;;;;;;;;;;;;AC7BsC;AACK;AACc;AAE1D;IAAwB,uBAAQ;IAAhC;;IAmCA,CAAC;IAlCW,2BAAc,GAAtB,UAAuB,MAAM,EAAE,MAAa;QAA5C,iBAiCC;QAhCG,IAAI,MAA0B,CAAC;QAC/B,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,aAAa,CAAC;QAClB,IAAM,UAAU,GAA2B,UAAC,KAAK;YAC7C,OAAO,kCAAO,CAAC,UAAC,GAAG,EAAE,GAAG;gBACpB,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,aAAa,CAAC,SAAS,GAAG,UAAC,CAAC;oBACxB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzB,IAAI,MAAM,EAAE;wBACR,IAAI,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;4BAC/C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;4BACzD,EAAE,KAAI,CAAC,WAAW,CAAC;yBACtB;wBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;qBACrB;yBACI;wBACD,GAAG,EAAE,CAAC;qBACT;gBACL,CAAC,CAAC;gBACF,aAAa,CAAC,OAAO,GAAG,GAAG,CAAC;YAChC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,yCAAU,CACN,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG;YACpB,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC,CAAC,CACL,CAAC,IAAI,CAAC;YACH,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,aAAG;YACR,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IACL,SAAC;AAAD,CAAC,CAnCuB,kBAAQ,GAmC/B;;;;;;;;;;;;;;;;;ACvCyB;AACkB;AAE5C;IAA2B,6BAAE;IAA7B;;IAiCA,CAAC;IAhCa,iCAAiB,GAA3B,UAA4B,MAAc,EAAE,GAAW;QAAvD,iBA+BC;QA9BG,IAAI,MAA0B,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3B,IAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QACtE,iBAAiB,CAAC,SAAS,GAAG,UAAC,CAAM;YACjC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,EAAE;gBACR,IAAI,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC1B,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC/C,IAAI;wBACA,IAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wBACrF,mBAAmB,CAAC,SAAS,GAAG;4BAC5B,EAAE,KAAI,CAAC,WAAW,CAAC;4BACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;wBACtB,CAAC,CAAC;wBACF,mBAAmB,CAAC,OAAO,GAAG,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;qBAChE;oBAAC,OAAO,GAAG,EAAE;wBACV,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;wBACzB,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;qBAC5B;iBACJ;qBACI;oBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;iBACrB;aAEJ;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;QACF,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IACL,YAAC;AAAD,CAAC,CAjC0B,KAAE,GAiC5B;;;;;;;;;;;;;;;;;ACpC2C;AACZ;AAEhC;IAA2B,6BAAK;IAAhC;;IAkCA,CAAC;IAjCa,iCAAiB,GAA3B,UAA4B,MAAM,EAAE,KAAK,EAAE,EAAE;QAA7C,iBAgCC;QA/BG,IAAI,MAA0B,EAC1B,aAAa,CAAC;QAClB,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/B,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAEvF,aAAa,CAAC,SAAS,GAAG,UAAC,CAAC;YACxB,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,EAAE;gBACR,IAAI,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC/C,IAAI;wBACA,IAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;wBACrF,mBAAmB,CAAC,SAAS,GAAG;4BAC5B,EAAE,KAAI,CAAC,WAAW,CAAC;4BACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;wBACtB,CAAC,CAAC;wBACF,mBAAmB,CAAC,OAAO,GAAG,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;qBAChE;oBAAC,OAAO,GAAG,EAAE;wBACV,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;wBACzB,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;qBAC5B;iBACJ;qBACI;oBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;iBACrB;aACJ;iBACI;gBACD,KAAI,CAAC,eAAe,EAAE,CAAC;aAC1B;QACL,CAAC,CAAC;QACF,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3D,CAAC;IACL,YAAC;AAAD,CAAC,CAlC0B,WAAK,GAkC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrC+B;AACU;AACI;AACF;AACgD;AAE5F;IAA8B,mCAAK;IAE/B,kBAAY,KAAkB,EAAE,SAAwC,EAAE,OAA8B;QAAxG,YACI,iBAAO,SAKV;QAJG,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,EAAE,CAAC;;IACnC,CAAC;IAED,0BAAO,GAAP;QACI,IAAM,WAAW,GAAG,IAAI,mCAAW,CAAC,oBAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,WAAW,CAAC,cAAc,EAAE,CAAC;QAC7B,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,EAAE;YAC3B,IAAI;gBACA,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;oBAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,mCAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBAClD,IAAI,CAAC,oBAAoB,EAAE,CAAC;qBAC/B;yBACI;wBACD,IAAI,CAAC,cAAc,EAAE,CAAC;qBACzB;iBACJ;qBACI;oBACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;iBACrC;aACJ;YACD,OAAO,EAAE,EAAE;gBACP,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;aAC/B;SACJ;aACI;YACD,IAAI,CAAC,OAAO,CACR,WAAW,CAAC,KAAK,CACpB,CAAC;SACL;IACL,CAAC;IAEO,uCAAoB,GAA5B;QAAA,iBAoBC;QAnBG,IAAM,YAAY,GAAG,IAAI,4BAAe,CAAC;YACrC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;SACrB,EAAE,UAAC,OAAc;;YAC7B,IAAM,GAAG,GAAG,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAM,OAAO,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK;gBAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,IAAI,CAAC;YACf,IAAM,QAAQ,aAAK,GAAC,GAAG,cAAK,GAAC,6BAAY,CAAC,EAAE,IAAG,OAAO,KAAE,KAAE,CAAC;YAC3D,KAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YAC7B,KAAI,CAAC,KAAK,CAAC,6BAAY,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;YAC1C,KAAI,CAAC,eAAe,EAAE,CAAC;YACvB,KAAI,CAAC,cAAc,EAAE,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;QAC/B,YAAY,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACL,eAAC;AAAD,CAAC,CA5D6B,WAAK,GA4DlC;;;;;;;;;;;AClED;AAAA;AAA+C;AAExC,IAAM,WAAW,GAAG,UAAC,KAAK;IAC7B,IAAI,KAAK,IAAI,IAAI,EAAE;QACf,OAAO,+DAAS,CAAC,IAAI,CAAC;KACzB;IACD,IAAM,IAAI,GAAG,OAAO,KAAK,CAAC;IAC1B,QAAQ,IAAI,EAAE;QACV,KAAK,QAAQ;YACT,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,+DAAS,CAAC,KAAK,CAAC;aAC1B;iBACI,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;gBACrC,OAAO,+DAAS,CAAC,QAAQ,CAAC;aAC7B;QACL;YACI,OAAO,IAAI,CAAC;KACnB;AACL,CAAC;;;;;;;;AClBD;AAAO,IAAM,OAAO,GAAG,UAAC,KAAK;IACzB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC;;;;;;;;ACFF;AAAO,IAAM,iBAAiB,GAAG,UAAC,KAAK;IACnC,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;QACrB,OAAO,GAAG,CAAC;KACd;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACF6B;AACA;AACW;AACF;AACE;AACA;AACA;AACI;AACD;AACqC;AAC5C;AAEtC;IAA8B,4BAAI;IAQ9B,kBAAY,GAAqB,EAAE,SAAiC,EAAE,OAA8B;QAApG,YACI,iBAAO,SAKV;QAXD,kBAAY,GAAuB,EAAE,CAAC;QACtC,sBAAgB,GAAG,KAAK,CAAC;QAEzB,kBAAY,GAAG,KAAK,CAAC;QAIjB,KAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,OAAO,GAAG,EAAE,CAAC;;IACtB,CAAC;IAED,0BAAO,GAAP;QAAA,iBAcC;QAbG,IAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,gBAAgB,IAAI,IAAI,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,6DAAS,CAAC,gEAAU,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7F,OAAO;SACV;QACD,yEAAU,CAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,eAAK;YAC1C,OAAO,sFAAsB,CAAC,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAO;YACZ,OAAO,CAAC,OAAO,CAAC,UAAC,MAAW,EAAE,KAAK;gBAC/B,iEAAW,CAAC,mBAAmB,CAAC,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;YACvE,CAAC,CAAC,CAAC;YACH,KAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAEO,kCAAe,GAAvB;QAAA,iBAoEC;QAnEG,IAAM,MAAM,GAAG,UAAC,GAAgB;YAC5B,OAAO,KAAI,CAAC,YAAY,CAAC;gBACrB,IAAI,EAAE,yDAAG,CAAC,MAAM;gBAChB,KAAK,EAAE,GAAG;aACO,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,IAAM,MAAM,GAAG,UAAC,GAAgB;YAC5B,OAAO,KAAI,CAAC,YAAY,CAAC;gBACrB,IAAI,EAAE,yDAAG,CAAC,MAAM;gBAChB,KAAK,EAAE,GAAG;aACO,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,IAAM,MAAM,GAAG,UAAC,GAAgB;YAC5B,OAAO,KAAI,CAAC,YAAY,CAAC;gBACrB,IAAI,EAAE,yDAAG,CAAC,MAAM;gBAChB,KAAK,EAAE,GAAG;aACO,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,IAAM,MAAM,GAAG,UAAC,GAAgB;YAC5B,OAAO,KAAI,CAAC,YAAY,CAAC;gBACrB,IAAI,EAAE,yDAAG,CAAC,MAAM;gBAChB,KAAK,EAAE,GAAG;aACO,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,IAAM,KAAK,GAAG,UAAC,GAAe;YAC1B,OAAO,KAAI,CAAC,YAAY,CAAC;gBACrB,IAAI,EAAE,yDAAG,CAAC,KAAK;gBACf,KAAK,EAAE,GAAG;aACO,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,IAAM,SAAS,GAAG,UAAC,GAAW,EAAE,KAAK;YACjC,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC,CAAC;QACF,IAAM,SAAS,GAAG,UAAC,GAAW;YAC1B,OAAO,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,IAAM,KAAK,GAAG,UAAC,GAAW;YACtB,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,IAAM,KAAK,GAAG;YACV,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAC,OAAO;gBAC/C,KAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC,KAAK,CAAC,UAAC,GAAG;gBACT,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,uDAAM,CAAC,gBAAgB,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAExC;aACI;YACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SAC9B;QACD,OAAO,CAAC,IAAI,CACR,IAAI,EACJ;YACI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,MAAM,UAAE,MAAM,UAAE,MAAM,UAAE,MAAM;YAC9B,KAAK,SAAE,SAAS,aAAE,SAAS,aAAE,KAAK,SAAE,KAAK;SAC5C,CACJ,CAAC;QAEF,IAAI,IAA8B,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;SAC5C;IACL,CAAC;IAEO,oCAAiB,GAAzB;QACI,IAAI;YACA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;QACD,OAAO,EAAE,EAAE;YACP,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;SAC/B;IACL,CAAC;IAEO,mCAAgB,GAAxB,UAAyB,UAAoB;QACzC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,CAAC;IAEO,0CAAuB,GAA/B;QACI,IAAI,IAA8B,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEO,qCAAkB,GAA1B,UAA2B,MAAM;QAC7B,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAClD,IAAI,IAA8B,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,wBAAsB,eAAe,CAAC,IAAI,MAAG,CAAC,CAAC;SAC9D;QACD,IAAI,eAAe,EAAE;YACjB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,iBAAiB,CAAC,qDAAqD,CAAC,CAAC;gBAC9E,IAAI,IAA8B,EAAE;oBAChC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;iBAC3D;gBACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACnC;iBACI;gBACD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,IAAI,eAAe,CAAC,SAAS,EAAE;oBAC3B,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;iBACrC;gBACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;aACjC;SACJ;IACL,CAAC;IAEO,oCAAiB,GAAzB,UAA0B,GAAW;QACjC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,IAA8B,EAAE;gBAChC,OAAO,CAAC,GAAG,CAAC,gCAA8B,GAAK,CAAC,CAAC;aACpD;SACJ;IACL,CAAC;IAEO,kCAAe,GAAvB,UAAwB,OAAyB;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,UAAU,CAAC;QACf,IAAI,IAA8B,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,yBAAuB,OAAO,CAAC,IAAI,MAAG,CAAC,CAAC;SACvD;QACD,QAAQ,OAAO,CAAC,IAAI,EAAE;YAClB,KAAK,yDAAG,CAAC,MAAM;gBACX,UAAU,GAAG,IAAI,8DAAe,CAC5B,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7E,CAAC;gBACF,MAAM;YACV,KAAK,yDAAG,CAAC,MAAM;gBACX,UAAU,GAAG,IAAI,8DAAe,CAC5B,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7E,CAAC;gBACF,MAAM;YACV,KAAK,yDAAG,CAAC,MAAM;gBACX,UAAU,GAAG,IAAI,8DAAe,CAC5B,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7E,CAAC;gBACF,MAAM;YACV,KAAK,yDAAG,CAAC,MAAM;gBACX,UAAU,GAAG,IAAI,8DAAe,CAC5B,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7E,CAAC;gBACF,MAAM;YACV,KAAK,yDAAG,CAAC,KAAK;gBACV,UAAU,GAAG,IAAI,6DAAc,CAC3B,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7E,CAAC;gBACF,MAAM;SACb;QACD,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;QAChC,UAAU,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAEO,+BAAY,GAApB,UAAqB,OAAyB;QAA9C,iBA6BC;QA5BG,IAAM,IAAI,GAAG;YACT,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,IAAM,UAAU,GAAG,uEAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACvC,OAAO,CAAC,SAAS,GAAG,UAAC,MAAM;gBACvB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;YACF,OAAO,CAAC,OAAO,GAAG,UAAC,KAAK;gBACpB,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/B,IAAI,EAAE,CAAC;gBACP,KAAI,CAAC,sBAAsB,EAAE,CAAC;YAClC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAG;gBACR,KAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gBACjB,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;SACN;aACI;YACD,IAAI,EAAE,CAAC;SACV;QACD,IAAI,IAA8B,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,sBAAoB,OAAO,CAAC,IAAI,4BAAuB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAG,CAAC,CAAC;SACvG;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAEO,yCAAsB,GAA9B;QACI,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE;YACjE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9C;IACL,CAAC;IAEO,gCAAa,GAArB,UAAsB,YAAgC;QAClD,OAAO,yEAAU,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAO;YACtC,IAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,iEAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;QACzE,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAEO,uCAAoB,GAA5B,UAA6B,MAAgB;QAA7C,iBAUC;QATG,IAAI,YAAY,GAAW,IAAI,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,eAAK;YACd,IAAI,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;gBACpC,YAAY,GAAG,KAAK,CAAC;gBACrB,OAAO,KAAK,CAAC;aAChB;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACxB,CAAC;IACL,eAAC;AAAD,CAAC,CAxP6B,kDAAI,GAwPjC","file":"jsstore.worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 23);\n","export enum ERROR_TYPE {\n WorkerNotSupplied = \"worker_not_supplied\",\n IndexedDbUndefined = \"indexeddb_undefined\",\n UndefinedColumn = \"undefined_column\",\n UndefinedValue = \"undefined_value\",\n UndefinedColumnName = \"undefined_column_name\",\n UndefinedDbName = \"undefined_database_name\",\n UndefinedColumnValue = \"undefined_column_value\",\n NotArray = \"not_array\",\n NoValueSupplied = \"no_value_supplied\",\n ColumnNotExist = \"column_not_exist\",\n EnableSearchOff = \"enable_search_off\",\n InvalidOp = \"invalid_operator\",\n NullValue = \"null_value\",\n WrongDataType = \"wrong_data_type\",\n NextJoinNotExist = \"next_join_not_exist\",\n TableNotExist = \"table_not_exist\",\n DbNotExist = \"db_not_exist\",\n ConnectionAborted = \"connection_aborted\",\n ConnectionClosed = \"connection_closed\",\n NotObject = \"not_object\",\n InvalidConfig = \"invalid_config\",\n DbBlocked = \"Db_blocked\",\n IndexedDbNotSupported = \"indexeddb_not_supported\",\n NullValueInWhere = \"null_value_in_where\",\n InvalidJoinQuery = 'invalid_join_query',\n InvalidOrderQuery = 'invalid_order_query',\n InvalidQuery = 'invalid_query',\n InvalidGroupQuery = 'invalid_group_query',\n}\n\nexport enum WORKER_STATUS {\n Registered = \"registerd\",\n Failed = \"failed\",\n NotStarted = \"not_started\"\n}\n\nexport enum DATA_TYPE {\n String = \"string\",\n Object = \"object\",\n Array = \"array\",\n Number = \"number\",\n Boolean = \"boolean\",\n Null = \"null\",\n DateTime = \"date_time\"\n}\n\nexport enum API {\n InitDb = \"init_db\",\n IsDbExist = \"is_db_exist\",\n GetDbVersion = \"get_db_version\",\n GetDbList = \"get_db_list\",\n Get = \"get\",\n Set = \"set\",\n Select = \"select\",\n Insert = \"insert\",\n Update = \"update\",\n Remove = \"remove\",\n GetDbSchema = \"get_db_schema\",\n OpenDb = \"open_db\",\n Clear = \"clear\",\n DropDb = \"drop_db\",\n Count = \"count\",\n ChangeLogStatus = \"change_log_status\",\n Terminate = \"terminate\",\n Transaction = \"transaction\",\n InitKeyStore = \"init_keystore\",\n CloseDb = \"close_db\",\n Union = \"union\"\n}\n\nexport enum EVENT {\n RequestQueueEmpty = \"requestQueueEmpty\",\n RequestQueueFilled = \"requestQueueFilled\"\n}\n\nexport enum QUERY_OPTION {\n Where = \"where\",\n Like = 'like',\n Regex = 'regex',\n In = 'in',\n Equal = \"=\",\n Between = '-',\n GreaterThan = '>',\n LessThan = '<',\n GreaterThanEqualTo = \">=\",\n LessThanEqualTo = \"<=\",\n NotEqualTo = \"!=\",\n Aggregate = \"aggregate\",\n Max = \"max\",\n Min = \"min\",\n Avg = \"avg\",\n Count = \"count\",\n Sum = \"sum\",\n Or = \"or\",\n Skip = \"skip\",\n Limit = \"limit\",\n And = \"and\",\n IgnoreCase = \"ignoreCase\",\n Then = \"then\"\n}\n\nexport enum IDB_MODE {\n ReadOnly = \"readonly\",\n ReadWrite = \"readwrite\"\n}\n\nexport enum OCCURENCE {\n First = 'f',\n Last = 'l',\n Any = 'a'\n}\n\nexport enum CONNECTION_STATUS {\n Connected = \"connected\",\n Closed = \"closed\",\n NotStarted = \"not_started\",\n UnableToStart = \"unable_to_start\",\n ClosedByJsStore = \"closed_by_jsstore\"\n}","import { IError, ERROR_TYPE } from \"../common/index\";\nimport { Config } from \"./config\";\n\nexport class LogHelper implements IError {\n type: ERROR_TYPE;\n message: string;\n private info_: any;\n\n constructor(type: ERROR_TYPE, info: any = null) {\n this.type = type;\n this.info_ = info;\n this.message = this.getMsg_();\n }\n\n throw() {\n throw this.get();\n }\n\n static log(msg) {\n if (Config.isLogEnabled) {\n console.log(msg);\n }\n }\n\n logError() {\n console.error(this.get());\n }\n\n\n\n get() {\n return {\n message: this.message,\n type: this.type\n } as IError;\n }\n\n private getMsg_() {\n let errMsg: string;\n switch (this.type) {\n case ERROR_TYPE.NotArray:\n errMsg = \"Supplied value is not an array\";\n break;\n case ERROR_TYPE.UndefinedColumn:\n errMsg = \"Column is undefined in Where\";\n break;\n case ERROR_TYPE.UndefinedValue:\n errMsg = \"Value is undefined in Where\";\n break;\n case ERROR_TYPE.UndefinedColumnName:\n errMsg = \"Column name is undefined '\" + this.info_['TableName'] + \"'\";\n break;\n case ERROR_TYPE.UndefinedDbName:\n errMsg = \"Database name is not supplied\";\n break;\n case ERROR_TYPE.UndefinedColumnValue:\n errMsg = \"Column value is undefined\";\n break;\n case ERROR_TYPE.NoValueSupplied:\n errMsg = \"No value is supplied\";\n break;\n case ERROR_TYPE.InvalidOp:\n errMsg = \"Invalid Op Value '\" + this.info_['Op'] + \"'\";\n break;\n case ERROR_TYPE.ColumnNotExist:\n errMsg = this.info_['isOrder'] ?\n `Column '${this.info_['column']}' in order query does not exist` :\n `Column '${this.info_['column']}' does not exist`;\n break;\n case ERROR_TYPE.EnableSearchOff:\n errMsg = \"Search is turned off for the Column '\" + this.info_['column'] + \"'\";\n break;\n case ERROR_TYPE.NullValue:\n errMsg = \"Null value is not allowed for column '\" + this.info_['ColumnName'] + \"'\";\n break;\n case ERROR_TYPE.WrongDataType:\n errMsg = \"Supplied value for column '\" + this.info_['ColumnName'] +\n \"' have wrong data type\";\n break;\n case ERROR_TYPE.NextJoinNotExist: errMsg = \"Next join details not supplied\";\n break;\n case ERROR_TYPE.TableNotExist:\n errMsg = \"Table '\" + this.info_['tableName'] + \"' does not exist\";\n break;\n case ERROR_TYPE.DbNotExist:\n errMsg = `Database with name ${this.info_['dbName']} does not exist`;\n break;\n case ERROR_TYPE.NotObject:\n errMsg = \"supplied value is not object\";\n break;\n case ERROR_TYPE.InvalidOp:\n errMsg = \"Invalid Config '\" + this.info_['Config'] + \" '\";\n break;\n case ERROR_TYPE.DbBlocked:\n errMsg = `database is blocked, cant be deleted right now`;\n break;\n case ERROR_TYPE.NullValueInWhere:\n errMsg = `Null/undefined is not allowed in where. Column '${this.info_['column']}' has null`;\n break;\n case ERROR_TYPE.InvalidJoinQuery:\n errMsg = this.info_;\n break;\n default:\n errMsg = this.message;\n break;\n }\n return errMsg;\n }\n}","import { CONNECTION_STATUS, ERROR_TYPE, IDB_MODE, IDbStatus } from \"../../common/index\";\nimport { KeyStore } from \"../keystore/index\";\nimport { DataBase } from \"../model/index\";\nimport { DropDb } from \"./drop_db\";\nimport { promise } from \"../helpers/index\";\n\nexport class IdbHelper {\n\n static onDbDroppedByBrowser: () => void;\n static transaction: IDBTransaction = null;\n static isDbDeletedByBrowser: boolean;\n static dbConnection: IDBDatabase;\n static activeDb: DataBase;\n static activeDbVersion = 0;\n static dbStatus: IDbStatus = {\n conStatus: CONNECTION_STATUS.NotStarted\n };\n\n static callDbDroppedByBrowser(deleteMetaData?: boolean) {\n if (IdbHelper.dbStatus.conStatus === CONNECTION_STATUS.Connected) {\n IdbHelper.isDbDeletedByBrowser = true;\n if (deleteMetaData === true) {\n const dropDbObject = new DropDb(function () {\n\n }, function () {\n\n });\n dropDbObject.deleteMetaData();\n }\n }\n }\n\n static createTransaction(tableNames: string[], callBack: () => void, mode?) {\n if (IdbHelper.transaction === null) {\n mode = mode ? mode : IDB_MODE.ReadWrite;\n IdbHelper.transaction = IdbHelper.dbConnection.transaction(tableNames, mode);\n const onComplete = () => {\n IdbHelper.transaction = null;\n callBack();\n };\n IdbHelper.transaction.oncomplete = onComplete;\n IdbHelper.transaction.onabort = onComplete;\n }\n }\n\n static setDbList(list: string[]) {\n return KeyStore.set('DataBase_List', list);\n }\n\n static updateDbStatus(status: CONNECTION_STATUS, err?: ERROR_TYPE) {\n if (err === undefined) {\n IdbHelper.dbStatus.conStatus = status;\n }\n else {\n IdbHelper.dbStatus = {\n conStatus: status,\n lastError: err\n };\n }\n }\n\n static getDbList() {\n return promise((res, rej) => {\n KeyStore.get('DataBase_List').then(result => {\n res(result == null ? [] : result);\n }).catch(rej);\n });\n }\n\n static getDbVersion(dbName: string) {\n return promise((res, rej) => {\n KeyStore.get(`JsStore_${dbName}_Db_Version`).then(dbVersion => {\n res(Number(dbVersion));\n }).catch(rej);\n });\n }\n\n static getDbSchema(dbName: string) {\n return KeyStore.get(`JsStore_${dbName}_Schema`);\n }\n\n static getTable(tableName: string) {\n const currentTable = IdbHelper.activeDb.tables.find(table => table.name === tableName);\n return currentTable;\n }\n}","export const isNull = (value) => {\n if (value == null) {\n return true;\n } else {\n switch (typeof value) {\n case 'string': return value.length === 0;\n case 'number': return isNaN(value);\n }\n }\n return false;\n};","import { Table } from \"../../model/table\";\nimport { Column } from \"../../model/column\";\nimport { LogHelper } from \"../../log_helper\";\nimport { isNull, getDataType } from \"../../utils/index\";\nimport { DATA_TYPE, ERROR_TYPE } from \"../../../common/index\";\n\nexport class SchemaChecker {\n table: Table;\n constructor(table: Table) {\n this.table = table;\n }\n\n check(setValue: object, tblName: string) {\n let log: LogHelper = null;\n if (typeof setValue === DATA_TYPE.Object) {\n if (this.table) {\n // loop through table column and find data is valid\n this.table.columns.every((column: Column) => {\n if (log === null) {\n if (column.name in setValue) {\n log = this.checkByColumn_(column, setValue[column.name]);\n }\n return true;\n }\n else {\n return false;\n }\n });\n }\n else {\n log = new LogHelper(ERROR_TYPE.TableNotExist, { tableName: tblName });\n }\n }\n else {\n log = new LogHelper(ERROR_TYPE.NotObject);\n }\n if (log != null) {\n return log.get();\n }\n return null;\n }\n\n\n\n private checkByColumn_(column: Column, value) {\n let log: LogHelper = null;\n // check not null schema\n if (column.notNull === true && isNull(value)) {\n log = new LogHelper(ERROR_TYPE.NullValue, { ColumnName: column.name });\n }\n\n // check datatype\n const type = getDataType(value);\n const checkFurther = value != null;\n if (column.dataType && checkFurther) {\n if (type !== column.dataType && type !== 'object') {\n log = new LogHelper(ERROR_TYPE.WrongDataType, { ColumnName: column.name });\n }\n }\n\n // check allowed operators\n if (checkFurther && type === 'object') {\n const allowedOp = ['+', '-', '*', '/'];\n for (const prop of Object.keys(value)) {\n if (allowedOp.indexOf(prop) < 0 && column.dataType && type !== column.dataType) {\n log = new LogHelper(ERROR_TYPE.WrongDataType, { ColumnName: column.name });\n }\n break;\n }\n }\n return log;\n }\n}","import { Table, Column } from \"../../model/index\";\nimport { ERROR_TYPE, DATA_TYPE } from \"../../../common/index\";\nimport { LogHelper } from \"../../log_helper\";\nimport { isNull, getDataType } from \"../../utils/index\";\n\nexport class ValueChecker {\n table: Table;\n value: object;\n errorOccured = false;\n log: LogHelper;\n autoIncrementValue = {};\n\n constructor(table: Table, autoIncrementValue) {\n this.table = table;\n this.autoIncrementValue = autoIncrementValue;\n }\n\n checkAndModifyValue(value) {\n this.value = value;\n this.table.columns.every((column) => {\n this.checkAndModifyColumnValue_(column);\n return !this.errorOccured;\n });\n return this.errorOccured;\n }\n\n private checkNotNullAndDataType_(column: Column) {\n // check not null schema\n if (column.notNull && isNull(this.value[column.name])) {\n this.onValidationError_(ERROR_TYPE.NullValue, { ColumnName: column.name });\n }\n // check datatype\n else if (column.dataType && !isNull(this.value[column.name]) &&\n getDataType(this.value[column.name]) !== column.dataType) {\n this.onValidationError_(ERROR_TYPE.WrongDataType, { ColumnName: column.name });\n }\n }\n\n private checkAndModifyColumnValue_(column: Column) {\n const columnValue = this.value[column.name];\n // check auto increment scheme\n if (column.autoIncrement) {\n // if value is null, then create the autoincrement value\n if (isNull(columnValue)) {\n this.value[column.name] = ++this.autoIncrementValue[column.name];\n }\n else {\n if (getDataType(columnValue) === DATA_TYPE.Number) {\n // if column value is greater than autoincrement value saved, then make the\n // column value as autoIncrement value\n if (columnValue > this.autoIncrementValue[column.name]) {\n this.autoIncrementValue[column.name] = columnValue;\n }\n }\n }\n }\n // check Default Schema\n else if (column.default && isNull(columnValue)) {\n this.value[column.name] = column.default;\n }\n this.checkNotNullAndDataType_(column);\n }\n\n private onValidationError_(error: ERROR_TYPE, details: object) {\n this.errorOccured = true;\n this.log = new LogHelper(error, details);\n }\n}","import { Table } from \"../../model/index\";\nimport { ValueChecker } from \"./value_checker\";\nimport { promise, getAutoIncrementValues, setAutoIncrementValue } from \"../../helpers/index\";\nimport { QueryExecutor } from \"../../query_executor\";\nimport { QueryHelper } from \"../query_helper\";\n\nexport class ValuesChecker {\n table: Table;\n values: object[];\n valueCheckerObj: ValueChecker;\n\n constructor(table: Table, values: object[]) {\n this.table = table;\n this.values = values;\n }\n\n checkAndModifyValues() {\n return promise((resolve, reject) => {\n const onAutoIncValueEvaluated = (autoIncrementValues) => {\n this.valueCheckerObj = new ValueChecker(this.table, autoIncrementValues);\n this.startChecking().then(resolve).catch(reject);\n };\n if (QueryExecutor.isTransactionQuery === false) {\n getAutoIncrementValues(this.table).then(autoIncValues => {\n onAutoIncValueEvaluated(autoIncValues);\n }).catch(reject);\n }\n else {\n onAutoIncValueEvaluated(QueryHelper.autoIncrementValues[this.table.name]);\n }\n });\n }\n \n private startChecking() {\n return promise((resolve, reject) => {\n let isError = false;\n this.values.every((item) => {\n isError = this.valueCheckerObj.checkAndModifyValue(item);\n return !isError;\n });\n if (isError) {\n const error = this.valueCheckerObj.log.get();\n reject(error);\n }\n const promiseObj = setAutoIncrementValue(this.table, this.valueCheckerObj.autoIncrementValue);\n if (QueryExecutor.isTransactionQuery === false) {\n promiseObj.then(resolve).catch(reject);\n }\n else {\n resolve();\n }\n });\n }\n}","import { API, ERROR_TYPE, QUERY_OPTION, DATA_TYPE, InsertQuery, IError } from \"../../common/index\";\nimport { IdbHelper } from \"./idb_helper\";\nimport { LogHelper } from \"../log_helper\";\nimport * as Update from \"./update/index\";\nimport * as Insert from \"./insert/index\";\nimport { Table } from \"../model/index\";\nimport { promise } from \"../helpers/index\";\nimport { getDataType } from \"../utils/index\";\n\nexport class QueryHelper {\n api: API;\n query;\n error: IError;\n isTransaction = false;\n static autoIncrementValues: { [table: string]: { [columnName: string]: number } } = {};\n\n constructor(api: API, query: any) {\n this.api = api;\n this.query = query;\n }\n checkAndModify() {\n return promise((resolve, reject) => {\n const resolveReject = () => {\n if (this.error == null) {\n resolve();\n }\n else {\n reject(this.error);\n }\n };\n switch (this.api) {\n case API.Select:\n case API.Remove:\n case API.Count:\n this.checkFetchQuery_();\n resolveReject();\n break;\n case API.Insert:\n this.checkInsertQuery_().then(resolveReject).\n catch((err) => {\n this.error = err;\n resolveReject();\n });\n break;\n case API.Update:\n this.checkUpdateQuery_();\n resolveReject();\n break;\n }\n });\n }\n\n private isInsertQryValid_(callBack: (tbl: Table) => void) {\n const table = this.getTable_((this.query as InsertQuery).into);\n let log: LogHelper;\n if (table) {\n switch (getDataType(this.query.values)) {\n case DATA_TYPE.Array:\n break;\n case DATA_TYPE.Null:\n log = new LogHelper(ERROR_TYPE.NoValueSupplied);\n break;\n default:\n log = new LogHelper(ERROR_TYPE.NotArray);\n }\n }\n else {\n log = new LogHelper(ERROR_TYPE.TableNotExist, { tableName: (this.query as InsertQuery).into });\n }\n callBack(table);\n return log == null ? null : log.get();\n }\n\n private checkInsertQuery_() {\n return promise((resolve, reject) => {\n let table;\n const err = this.isInsertQryValid_((tbl) => {\n table = tbl;\n });\n if (err == null) {\n if (this.query.skipDataCheck === true) {\n resolve();\n }\n else {\n const valueCheckerInstance = new Insert.ValuesChecker(table, this.query.values);\n valueCheckerInstance.checkAndModifyValues().then(() => {\n (this.query as InsertQuery).values = valueCheckerInstance.values;\n resolve();\n }).catch(reject);\n }\n }\n else {\n reject(err);\n }\n });\n }\n\n private checkUpdateQuery_() {\n this.error = new Update.SchemaChecker(this.getTable_(this.query.in)).\n check(this.query.set, this.query.in);\n if (this.error == null) {\n if (this.query.where != null) {\n this.checkForNullInWhere_();\n if (this.error == null) {\n this.addGreatAndLessToNotOp_();\n }\n }\n }\n }\n\n private checkForNullInWhere_() {\n for (const key in this.query.where) {\n if (this.query.where[key] == null) {\n this.error = new LogHelper(ERROR_TYPE.NullValueInWhere, { column: key }).get();\n return;\n }\n }\n }\n\n private checkFetchQuery_() {\n if (this.isTableExist_(this.query.from) === true) {\n if (this.query.where != null) {\n this.checkForNullInWhere_();\n if (this.error == null) {\n this.addGreatAndLessToNotOp_();\n }\n }\n\n }\n else {\n this.error = new LogHelper(ERROR_TYPE.TableNotExist, { tableName: this.query.from }).get();\n }\n }\n\n private isTableExist_(tableName: string): boolean {\n const index = this.activeDb_.tables.findIndex(table => table.name === tableName);\n return index >= 0;\n }\n\n private get activeDb_() {\n return IdbHelper.activeDb;\n }\n\n private getTable_(tableName: string) {\n return IdbHelper.getTable(tableName);\n }\n\n private addGreatAndLessToNotOp_() {\n const whereQuery = this.query.where;\n const containsNot = (qry: object, keys: string[]) => {\n return keys.findIndex(key => qry[key][QUERY_OPTION.NotEqualTo] != null) >= 0;\n };\n const addToSingleQry = (qry, keys: string[]) => {\n let value;\n keys.forEach((prop) => {\n value = qry[prop];\n if (value[QUERY_OPTION.NotEqualTo] != null) {\n qry[prop][QUERY_OPTION.GreaterThan] = value[QUERY_OPTION.NotEqualTo];\n if (qry[QUERY_OPTION.Or] === undefined) {\n qry[QUERY_OPTION.Or] = {};\n qry[QUERY_OPTION.Or][prop] = {};\n }\n else if (qry[QUERY_OPTION.Or][prop] === undefined) {\n qry[QUERY_OPTION.Or][prop] = {};\n }\n qry[QUERY_OPTION.Or][prop][QUERY_OPTION.LessThan] = value[QUERY_OPTION.NotEqualTo];\n delete qry[prop][QUERY_OPTION.NotEqualTo];\n }\n });\n return qry;\n };\n switch (getDataType(whereQuery)) {\n case DATA_TYPE.Object:\n const queryKeys = Object.keys(whereQuery);\n if (containsNot(whereQuery, queryKeys)) {\n if (queryKeys.length === 1) {\n this.query.where = addToSingleQry(whereQuery, queryKeys);\n }\n else {\n const whereTmpQry = [];\n queryKeys.forEach((prop) => {\n whereTmpQry.push(addToSingleQry({ [prop]: whereQuery[prop] }, [prop]));\n });\n this.query.where = whereTmpQry;\n }\n }\n break;\n default:\n const whereTmp = [];\n (whereQuery as object[]).forEach(qry => {\n const qryKeys = Object.keys(qry);\n if (containsNot(qry, qryKeys)) {\n qry = addToSingleQry(qry, qryKeys);\n }\n whereTmp.push(qry);\n });\n this.query.where = whereTmp;\n }\n }\n\n\n\n}","export enum CONNECTION_STATUS {\n Connected = \"connected\",\n Closed = \"closed\",\n NotStarted = \"not_connected\"\n}","import { IError } from \"../interfaces\";\n\nexport class Base {\n results = null;\n onSuccess: (results) => void;\n onError: (err: IError) => void;\n errorOccured = false;\n errorCount = 0;\n transaction: IDBTransaction;\n objectStore: IDBObjectStore;\n\n protected onErrorOccured(e) {\n ++this.errorCount;\n if (this.errorCount === 1) {\n if (this.onError != null) {\n this.onError((e as any).target.error);\n }\n }\n console.error(e);\n }\n}","import { CONNECTION_STATUS } from '../enums';\nimport { IDbStatus } from '../interfaces';\n\nexport class IdbHelper {\n static dbConnection: IDBDatabase;\n static isDbDeletedByBrowser: boolean;\n static transaction: IDBTransaction = null;\n\n static dbStatus: IDbStatus = {\n conStatus: CONNECTION_STATUS.NotStarted,\n };\n\n static callDbDroppedByBrowser() {\n IdbHelper.isDbDeletedByBrowser = IdbHelper.dbStatus.conStatus === CONNECTION_STATUS.Connected ? true : false;\n }\n\n static createTransaction(tableNames, callBack: () => void, mode?) {\n if (IdbHelper.transaction === null) {\n mode = mode ? mode : \"readwrite\";\n IdbHelper.transaction = IdbHelper.dbConnection.transaction(tableNames, mode);\n IdbHelper.transaction.oncomplete = () => {\n IdbHelper.transaction = null;\n callBack();\n };\n (IdbHelper.transaction as any).ontimeout = function () {\n this._transaction = null;\n console.error('transaction timed out');\n };\n }\n }\n}","import { Base } from \"./base_logic\";\nimport { IError } from \"../interfaces\";\nimport { QueryExecutor } from \"../query_executor\";\nimport { IdbHelper } from \"./idb_helper\";\n\nexport class Remove extends Base {\n key: string;\n rowAffected = 0;\n constructor(key: string, onSuccess: (recordRemoved: number) => void, onError: (err: IError) => void) {\n super();\n this.key = key;\n this.onSuccess = onSuccess;\n this.onError = onError;\n }\n\n execute() {\n this.initTransaction();\n const removeData = (column, value) => {\n const cursorRequest = this.objectStore.index(column).openCursor(IDBKeyRange.only(value));\n cursorRequest.onerror = (e) => {\n this.errorOccured = true;\n this.onErrorOccured(e);\n };\n cursorRequest.onsuccess = (e: any) => {\n const cursor: IDBCursorWithValue = e.target.result;\n if (cursor) {\n cursor.delete();\n ++this.rowAffected;\n cursor.continue();\n }\n };\n };\n\n if (!this.errorOccured) {\n removeData(QueryExecutor.columnName, this.key);\n }\n }\n\n private initTransaction() {\n IdbHelper.createTransaction([QueryExecutor.tableName], this.onTransactionCompleted.bind(this));\n this.objectStore = IdbHelper.transaction.objectStore(QueryExecutor.tableName);\n }\n\n private onTransactionCompleted() {\n if (this.errorOccured === false) {\n this.onSuccess(this.rowAffected);\n }\n }\n}","import { Base } from \"./base_logic\";\nimport { IInsert, IError } from \"../interfaces\";\nimport { IdbHelper } from \"./idb_helper\";\nimport { QueryExecutor } from \"../query_executor\";\n\nexport class Set extends Base {\n query: IInsert;\n constructor(query: IInsert, onSuccess: (result) => void, onError: (err: IError) => void) {\n super();\n try {\n this.query = query;\n this.onSuccess = onSuccess;\n this.onError = onError;\n }\n catch (ex) {\n console.error(ex);\n }\n }\n\n execute() {\n const updateIfExistElseInsert = () => {\n const cursorRequest = this.objectStore.index(QueryExecutor.columnName).openCursor(\n IDBKeyRange.only(this.query[QueryExecutor.columnName])\n );\n cursorRequest.onsuccess = (e) => {\n const cursor: IDBCursorWithValue = (e as any).target.result;\n if (cursor) {\n cursor.update(this.query);\n }\n else {\n insertData();\n }\n };\n\n cursorRequest.onerror = (e) => {\n this.errorOccured = true;\n this.onErrorOccured(e);\n };\n\n };\n const insertData = () => {\n const addResult = this.objectStore.add(this.query);\n addResult.onerror = (e) => {\n this.errorOccured = true;\n this.onErrorOccured(e);\n };\n };\n this.initTransaction();\n updateIfExistElseInsert();\n }\n\n private initTransaction() {\n IdbHelper.createTransaction([QueryExecutor.tableName], this.onTransactionCompleted_);\n this.objectStore = IdbHelper. transaction.objectStore(QueryExecutor.tableName);\n }\n\n private onTransactionCompleted_ = () => {\n if (this.errorOccured === false && this.onSuccess) {\n this.onSuccess(null);\n }\n }\n}","import { CONNECTION_STATUS } from './enums';\nimport { IdbHelper } from './business/idb_helper';\n\nexport class Utils {\n\n static updateDbStatus(status: CONNECTION_STATUS, err?) {\n if (err === undefined) {\n IdbHelper.dbStatus.conStatus = status;\n }\n else {\n IdbHelper.dbStatus = {\n conStatus: status,\n lastError: err\n };\n }\n }\n}\n","import { IError } from \"../interfaces\";\nimport { CONNECTION_STATUS } from \"../enums\";\nimport { Utils } from \"../utils_logic\";\nimport { IdbHelper } from \"./idb_helper\";\nimport { QueryExecutor } from \"../query_executor\";\nimport { ERROR_TYPE } from \"../../../common/index\";\n\nexport let tempDatas;\nexport class InitDb {\n constructor(dbName: string, onSuccess: () => void, onError: (err: IError) => void) {\n const dbRequest = self.indexedDB.open(dbName, 1);\n IdbHelper.isDbDeletedByBrowser = false;\n dbRequest.onerror = (event) => {\n if ((event as any).target.error.name === 'InvalidStateError') {\n onError({\n message: \"Indexeddb is blocked\",\n type: ERROR_TYPE.IndexedDbNotSupported\n } as IError);\n }\n else {\n onError((event as any).target.error);\n }\n };\n\n dbRequest.onsuccess = (event) => {\n IdbHelper.dbStatus.conStatus = CONNECTION_STATUS.Connected;\n IdbHelper.dbConnection = dbRequest.result;\n IdbHelper.dbConnection.onclose = () => {\n IdbHelper.callDbDroppedByBrowser();\n Utils.updateDbStatus(CONNECTION_STATUS.Closed, ERROR_TYPE.ConnectionClosed);\n };\n\n IdbHelper.dbConnection.onversionchange = (e: any) => {\n if (e.newVersion === null) { // An attempt is made to delete the db\n e.target.close(); // Manually close our connection to the db\n IdbHelper.callDbDroppedByBrowser();\n Utils.updateDbStatus(CONNECTION_STATUS.Closed, ERROR_TYPE.ConnectionClosed);\n }\n };\n\n IdbHelper.dbConnection.onerror = (e: any) => {\n IdbHelper.dbStatus.lastError = \"Error occured in connection :\" + e.target.result;\n };\n\n IdbHelper.dbConnection.onabort = (e) => {\n IdbHelper.dbStatus = {\n conStatus: CONNECTION_STATUS.Closed,\n lastError: \"Connection aborted\"\n };\n };\n\n if (onSuccess != null) {\n onSuccess();\n }\n };\n\n dbRequest.onupgradeneeded = (event: any) => {\n const db = event.target.result,\n column = \"Key\";\n db.createObjectStore(QueryExecutor.tableName, {\n keyPath: column\n }).createIndex(column, column, { unique: true });\n };\n }\n}","import { Base } from \"./base_logic\";\nimport { IError } from \"../interfaces\";\nimport { QueryExecutor } from \"../query_executor\";\nimport { IdbHelper } from \"./idb_helper\";\n\nexport class Get extends Base {\n key: string;\n constructor(key: string, onSuccess: (result) => void, onError: (err: IError) => void) {\n super();\n this.key = key;\n this.onSuccess = onSuccess;\n this.onError = onError;\n }\n\n execute() {\n const getData = (column, value) => {\n const cursorRequest = this.objectStore.index(column).openCursor(IDBKeyRange.only(value));\n cursorRequest.onerror = (e) => {\n this.errorOccured = true;\n this.onErrorOccured(e);\n };\n cursorRequest.onsuccess = (e: any) => {\n const cursor: IDBCursorWithValue = e.target.result;\n if (cursor) {\n this.results = cursor.value['Value'];\n }\n };\n };\n this.initTransaction_();\n getData(QueryExecutor.columnName, this.key);\n\n }\n\n private initTransaction_() {\n IdbHelper.createTransaction([QueryExecutor.tableName], this.onTransactionCompleted_, 'readonly');\n this.objectStore = IdbHelper. transaction.objectStore(QueryExecutor.tableName);\n }\n\n private onTransactionCompleted_ = () => {\n if (this.errorOccured === false) {\n this.onSuccess(this.results);\n }\n }\n}\n","import { QueryExecutor } from '../query_executor';\nimport { CONNECTION_STATUS } from \"../enums\";\nimport { IInsert, IError, IQueryRequest, IQueryResult } from \"../interfaces\";\nimport { Remove } from \"./remove_logic\";\nimport { Set } from \"./set_logic\";\nimport { InitDb } from \"./init_db_logic\";\nimport { Get } from \"./get_logic\";\nimport { IdbHelper } from './idb_helper';\n\nexport class Main {\n onQueryFinished: (result) => void;\n constructor(onQueryFinished = null) {\n this.onQueryFinished = onQueryFinished;\n }\n\n checkConnectionAndExecuteLogic(request: IQueryRequest) {\n if (request.name === 'init_db') {\n this.executeLogic(request);\n }\n else {\n switch (IdbHelper.dbStatus.conStatus) {\n case CONNECTION_STATUS.Connected: this.executeLogic(request); break;\n case CONNECTION_STATUS.NotStarted:\n setTimeout(() => {\n this.checkConnectionAndExecuteLogic(request);\n }, 100); break;\n case CONNECTION_STATUS.Closed:\n if (IdbHelper.isDbDeletedByBrowser) {\n this.createDb(() => {\n IdbHelper.isDbDeletedByBrowser = false;\n this.checkConnectionAndExecuteLogic(request);\n }, (err) => {\n console.error(err);\n });\n }\n }\n }\n }\n\n private returnResult(result) {\n this.onQueryFinished(result);\n }\n\n private executeLogic(request: IQueryRequest) {\n const onSuccess = (results?) => {\n this.returnResult({\n returnedValue: results\n } as IQueryResult);\n };\n const onError = (err) => {\n this.returnResult({\n errorDetails: err,\n errorOccured: true\n } as IQueryResult);\n };\n\n switch (request.name) {\n case 'get':\n this.get(request.query, onSuccess, onError);\n break;\n case 'set': this.set(request.query, onSuccess, onError);\n break;\n case 'remove': this.remove(request.query, onSuccess, onError);\n break;\n case 'init_db': this.createDb(onSuccess, onError); break;\n case 'close_db': this.closeDb(onSuccess, onError); break;\n }\n }\n\n set(query: IInsert, onSuccess: (result) => void, onError: (err: IError) => void) {\n const insertInstance = new Set(query, onSuccess, onError);\n insertInstance.execute();\n }\n\n remove(key: string, onSuccess: (result) => void, onError: (err: IError) => void) {\n const deleteInstance = new Remove(key, onSuccess, onError);\n deleteInstance.execute();\n }\n\n get(key: string, onSuccess: (result) => void, onError: (err: IError) => void) {\n const getInstance = new Get(key, onSuccess, onError);\n getInstance.execute();\n }\n\n createDb(onSuccess: () => void, onError: (err: IError) => void) {\n const dbName = \"KeyStore\";\n const initDbInstance = new InitDb(dbName, onSuccess, onError);\n }\n\n closeDb(onSuccess: () => void, onError: (err: IError) => void) {\n if (IdbHelper.dbStatus.conStatus === CONNECTION_STATUS.Connected) {\n IdbHelper.dbStatus.conStatus = CONNECTION_STATUS.Closed;\n IdbHelper.dbConnection.close();\n }\n onSuccess();\n }\n}","import { IQueryResult, IQueryRequest } from \"./interfaces\";\nimport { Main } from \"./business/main_logic\";\nimport { promise } from \"../helpers/index\";\n\nexport class QueryExecutor {\n static requestQueue: IQueryRequest[] = [];\n static tableName = \"LocalStore\";\n static columnName = \"Key\";\n static isCodeExecuting = false;\n static prcoessQuery(request: IQueryRequest) {\n return promise((resolve, reject) => {\n request.onSuccess = (result) => {\n resolve(result);\n };\n request.onError = (error) => {\n if (process.env.NODE_ENV === 'dev') {\n console.error(error);\n }\n reject(error);\n };\n this.requestQueue.push(request);\n this.executeCode();\n });\n }\n\n static executeCode() {\n if (!this.isCodeExecuting && this.requestQueue.length > 0) {\n this.isCodeExecuting = true;\n const request: IQueryRequest = {\n name: this.requestQueue[0].name,\n query: this.requestQueue[0].query\n } as IQueryRequest;\n new Main(this.onQueryFinished.bind(this)).checkConnectionAndExecuteLogic(request);\n }\n }\n\n static onQueryFinished(message: IQueryResult) {\n const finishedRequest: IQueryRequest = this.requestQueue.shift();\n this.isCodeExecuting = false;\n if (message.errorOccured) {\n finishedRequest.onError(message.errorDetails);\n }\n else {\n finishedRequest.onSuccess(message.returnedValue);\n }\n this.executeCode();\n }\n}\n","import { QueryExecutor } from './query_executor';\nimport { IQueryRequest, IError, IInsert } from \"./interfaces\";\n\nexport class KeyStore {\n /**\n * Initialize KeyStore\n * \n */\n static init = () => {\n if (indexedDB) {\n return QueryExecutor.prcoessQuery({\n name: 'init_db',\n query: null\n } as IQueryRequest);\n }\n };\n\n static close = () => {\n return QueryExecutor.prcoessQuery({\n name: 'close_db',\n query: null\n } as IQueryRequest);\n };\n\n /**\n * return the value by key\n * \n * @param {string} key \n * @param {(result) => void} onSuccess \n * @param {(err: IError) => void} [onError=null] \n * @returns \n */\n static get = (key: string) => {\n return QueryExecutor.prcoessQuery({\n name: 'get',\n query: key\n });\n };\n\n /**\n * insert or update value\n * \n * @param {any} key \n * @param {any} value \n * @param {(result) => void} [onSuccess] \n * @param {(err: IError) => void} [onError] \n * @returns \n */\n static set = (key, value) => {\n const query = {\n Key: key,\n Value: value\n } as IInsert;\n return QueryExecutor.prcoessQuery({\n name: 'set',\n query: query\n } as IQueryRequest);\n };\n\n /**\n * delete value\n * \n * @param {string} key \n * @param {(result) => void} [onSuccess=null] \n * @param {(err: IError) => void} [onError=null] \n * @returns \n */\n static remove = (key: string) => {\n return QueryExecutor.prcoessQuery({\n name: 'remove',\n query: key\n } as IQueryRequest);\n };\n}\n\n\n","export class Config {\n static isLogEnabled = false;\n static isRuningInWorker = false;\n}","import { IdbHelper } from \"./idb_helper\";\nimport { QUERY_OPTION } from \"../../common/index\";\nimport { DataBase } from \"../model/index\";\n\nexport class BaseHelper {\n\n\n regexExpression: RegExp;\n // method helpers\n\n protected get activeDb(): DataBase {\n return IdbHelper.activeDb;\n }\n\n protected get dbConnection() {\n return IdbHelper.dbConnection;\n }\n\n protected get transaction() {\n return IdbHelper.transaction;\n }\n\n protected createTransaction(tableNames: string[], callBack: () => void, mode?) {\n IdbHelper.createTransaction(tableNames, callBack, mode);\n }\n\n protected regexTest(value) {\n return this.regexExpression.test(value);\n }\n\n protected isTableExist(tableName: string): boolean {\n const index = this.activeDb.tables.findIndex(table => table.name === tableName);\n return index >= 0;\n }\n\n protected getTable(tableName: string) {\n return IdbHelper.getTable(tableName);\n }\n\n protected getKeyRange(value, op?) {\n let keyRange: IDBKeyRange;\n switch (op) {\n case QUERY_OPTION.Between: keyRange = IDBKeyRange.bound(value.low, value.high, false, false); break;\n case QUERY_OPTION.GreaterThan: keyRange = IDBKeyRange.lowerBound(value, true); break;\n case QUERY_OPTION.GreaterThanEqualTo: keyRange = IDBKeyRange.lowerBound(value); break;\n case QUERY_OPTION.LessThan: keyRange = IDBKeyRange.upperBound(value, true); break;\n case QUERY_OPTION.LessThanEqualTo: keyRange = IDBKeyRange.upperBound(value); break;\n default: keyRange = IDBKeyRange.only(value); break;\n }\n return keyRange;\n }\n\n protected getPrimaryKey(tableName): string {\n const primaryKey: string = this.getTable(tableName).primaryKey;\n return primaryKey ? primaryKey : this.getKeyPath(tableName);\n }\n\n protected getKeyPath(tableName) {\n const transaction: IDBTransaction = this.dbConnection.transaction([tableName], \"readonly\"),\n objectStore = transaction.objectStore(tableName);\n return objectStore.keyPath as string;\n }\n\n protected getAllCombinationOfWord(word: string, isArray?: boolean) {\n if (isArray) {\n let results = [];\n for (let i = 0, length = word.length; i < length; i++) {\n results = results.concat(this.getCombination_(word[i]));\n }\n return results;\n }\n else {\n return this.getCombination_(word);\n }\n }\n\n private getCombination_(word: string) {\n const results = [];\n const doAndPushCombination = (subWord: string, chars, index: number) => {\n if (index === subWord.length) {\n results.push(chars.join(\"\"));\n } else {\n const ch = subWord.charAt(index);\n chars[index] = ch.toLowerCase();\n doAndPushCombination(subWord, chars, index + 1);\n chars[index] = ch.toUpperCase();\n doAndPushCombination(subWord, chars, index + 1);\n }\n };\n doAndPushCombination(word, [], 0);\n return results;\n }\n}","import { OCCURENCE, QUERY_OPTION } from \"../../common/index\";\n\n/**\n * For matching the different column value existance for where option\n * \n * @export\n * @class WhereChecker\n */\nexport class WhereChecker {\n where: object;\n status: boolean;\n checkFlag: boolean;\n\n constructor(where: object, checkFlag: boolean) {\n this.where = where;\n this.checkFlag = checkFlag;\n }\n\n check(rowValue) {\n this.status = true;\n if (this.checkFlag === true) {\n for (const columnName in this.where) {\n if (!this.status) {\n break;\n }\n const columnValue = this.where[columnName];\n if (typeof columnValue === 'object') {\n for (const key in columnValue) {\n if (!this.status) {\n break;\n }\n switch (key) {\n case QUERY_OPTION.In:\n this.checkIn(columnName, rowValue[columnName]); break;\n case QUERY_OPTION.Like:\n this.checkLike(columnName, rowValue[columnName]); break;\n case QUERY_OPTION.Regex:\n this.checkRegex(columnName, rowValue[columnName]); break;\n case QUERY_OPTION.Between:\n case QUERY_OPTION.GreaterThan:\n case QUERY_OPTION.LessThan:\n case QUERY_OPTION.GreaterThanEqualTo:\n case QUERY_OPTION.LessThanEqualTo:\n case QUERY_OPTION.NotEqualTo:\n this.checkComparisionOp(columnName, rowValue[columnName], key);\n break;\n }\n }\n }\n else {\n this.status = columnValue === rowValue[columnName];\n }\n }\n }\n return this.status;\n }\n\n private checkIn(column, value) {\n for (let i = 0, values = this.where[column][QUERY_OPTION.In], length = values.length; i < length; i++) {\n if (values[i] === value) {\n this.status = true;\n break;\n }\n else {\n this.status = false;\n }\n }\n }\n\n private checkLike(column, value) {\n const values = this.where[column][QUERY_OPTION.Like].split('%');\n let compSymbol: OCCURENCE,\n compValue,\n symbolIndex;\n if (values[1]) {\n compValue = values[1];\n compSymbol = values.length > 2 ? OCCURENCE.Any : OCCURENCE.Last;\n }\n else {\n compValue = values[0];\n compSymbol = OCCURENCE.First;\n }\n value = value.toLowerCase();\n\n switch (compSymbol) {\n case OCCURENCE.Any:\n symbolIndex = value.indexOf(compValue.toLowerCase());\n if (symbolIndex < 0) {\n this.status = false;\n } break;\n case OCCURENCE.First:\n symbolIndex = value.indexOf(compValue.toLowerCase());\n if (symbolIndex > 0 || symbolIndex < 0) {\n this.status = false;\n } break;\n default:\n symbolIndex = value.lastIndexOf(compValue.toLowerCase());\n if (symbolIndex < value.length - compValue.length) {\n this.status = false;\n }\n }\n }\n\n private checkRegex(column, value) {\n const expr = this.where[column][QUERY_OPTION.Regex];\n\n this.status = expr.test(value);\n }\n\n private checkComparisionOp(column, value, symbol) {\n const compareValue = this.where[column][symbol];\n switch (symbol) {\n // greater than\n case QUERY_OPTION.GreaterThan: if (value <= compareValue) {\n this.status = false;\n } break;\n // less than\n case QUERY_OPTION.LessThan: if (value >= compareValue) {\n this.status = false;\n } break;\n // less than equal\n case QUERY_OPTION.LessThanEqualTo: if (value > compareValue) {\n this.status = false;\n } break;\n // greather than equal\n case QUERY_OPTION.GreaterThanEqualTo: if (value < compareValue) {\n this.status = false;\n } break;\n // between\n case QUERY_OPTION.Between: if (value < compareValue.Low || value > compareValue.High) {\n this.status = false;\n } break;\n // Not equal to\n case QUERY_OPTION.NotEqualTo: if (value === compareValue) {\n this.status = false;\n } break;\n }\n }\n}","import { BaseHelper } from \"./base_helper\";\nimport { IError, ERROR_TYPE, OCCURENCE, DATA_TYPE, QUERY_OPTION } from \"../../common/index\";\nimport { WhereChecker } from \"./where_checker\";\nimport { LogHelper } from \"../log_helper\";\nimport { Column } from \"../model/index\";\nimport { getDataType, getObjectFirstKey } from \"../utils/index\";\n\nexport abstract class Base extends BaseHelper {\n error: IError;\n rowAffected = 0;\n onSuccess: (result?) => void;\n onError: (err: IError) => void;\n objectStore: IDBObjectStore;\n query;\n whereCheckerInstance: WhereChecker;\n tableName: string;\n isTransaction: boolean;\n\n skipRecord;\n limitRecord;\n\n protected onErrorOccured(e, customError = false) {\n if (customError) {\n e.logError();\n this.error = (e as LogHelper).get();\n }\n else {\n let error;\n if (e.name) {\n error = new LogHelper((e.name));\n error.message = e.message;\n }\n else {\n error = new LogHelper((e as any).target.error.name);\n error.message = (e as any).target.error.message;\n }\n if (process.env.NODE_ENV === 'dev') {\n error.logError();\n }\n this.error = error.get();\n }\n }\n\n protected onExceptionOccured(ex: DOMException) {\n console.error(ex);\n this.onError({\n message: ex.message,\n type: ERROR_TYPE.InvalidQuery\n });\n }\n\n protected getColumnInfo(columnName: string, tableName: string) {\n return this.getTable(tableName).columns.find(column => column.name === columnName);\n }\n\n private getRegexFromLikeExpression_(likeExpression: string) {\n const filterValues = likeExpression.split('%');\n let filterValue: string;\n let occurence: OCCURENCE;\n if (filterValues[1]) {\n filterValue = filterValues[1];\n occurence = filterValues.length > 2 ? OCCURENCE.Any : OCCURENCE.Last;\n }\n else {\n filterValue = filterValues[0];\n occurence = OCCURENCE.First;\n }\n switch (occurence) {\n case OCCURENCE.First:\n return new RegExp(`^${filterValue}`, 'i');\n case OCCURENCE.Last:\n return new RegExp(`${filterValue}$`, 'i');\n default:\n return new RegExp(`${filterValue}`, 'i');\n }\n }\n\n protected goToWhereLogic() {\n const columnName = getObjectFirstKey(this.query.where);\n if (this.query.ignoreCase === true) {\n this.query.where = this.makeQryInCaseSensitive(this.query.where);\n }\n if (this.objectStore.indexNames.contains(columnName)) {\n const value = this.query.where[columnName];\n if (typeof value === 'object') {\n const checkFlag = Boolean(\n Object.keys(value).length > 1 ||\n Object.keys(this.query.where).length > 1\n );\n this.whereCheckerInstance = new WhereChecker(this.query.where, checkFlag);\n const key = getObjectFirstKey(value);\n switch (key) {\n case QUERY_OPTION.Like: {\n const regexVal = this.getRegexFromLikeExpression_(value[QUERY_OPTION.Like]);\n (this as any).executeRegexLogic(columnName, regexVal);\n } break;\n case QUERY_OPTION.Regex:\n (this as any).executeRegexLogic(columnName, value[QUERY_OPTION.Regex]);\n break;\n case QUERY_OPTION.In:\n (this as any).executeInLogic(columnName, value[QUERY_OPTION.In]);\n break;\n case QUERY_OPTION.Between:\n case QUERY_OPTION.GreaterThan:\n case QUERY_OPTION.LessThan:\n case QUERY_OPTION.GreaterThanEqualTo:\n case QUERY_OPTION.LessThanEqualTo:\n (this as any).executeWhereLogic(columnName, value, key, \"next\");\n break;\n case QUERY_OPTION.Aggregate: break;\n default: (this as any).executeWhereLogic(columnName, value, null, \"next\");\n }\n }\n else {\n const checkFlag = Boolean(Object.keys(this.query.where).length > 1);\n this.whereCheckerInstance = new WhereChecker(this.query.where, checkFlag);\n (this as any).executeWhereLogic(columnName, value, null, \"next\");\n }\n }\n else {\n const column: Column = this.getColumnInfo(columnName, this.tableName);\n const error = column == null ?\n new LogHelper(ERROR_TYPE.ColumnNotExist, { column: columnName }) :\n new LogHelper(ERROR_TYPE.EnableSearchOff, { column: columnName });\n\n this.onErrorOccured(error, true);\n }\n }\n\n protected makeQryInCaseSensitive(qry) {\n let results = [];\n let columnValue,\n keyValue;\n for (const column in qry) {\n columnValue = qry[column];\n switch (getDataType(columnValue)) {\n case DATA_TYPE.String:\n results = results.concat(this.getAllCombinationOfWord(columnValue));\n qry[column] = {};\n qry[column][QUERY_OPTION.In] = results;\n break;\n case DATA_TYPE.Object:\n for (const key in columnValue) {\n keyValue = columnValue[key];\n const keyValueType = getDataType(keyValue);\n switch (keyValueType) {\n case DATA_TYPE.String:\n switch (key) {\n case QUERY_OPTION.Like:\n case QUERY_OPTION.Regex:\n break;\n default:\n results = results.concat(this.getAllCombinationOfWord(keyValue));\n }\n break;\n case DATA_TYPE.Array:\n switch (key) {\n case QUERY_OPTION.In:\n results = results.concat(this.getAllCombinationOfWord(keyValue, true));\n break;\n\n }\n }\n }\n qry[column][QUERY_OPTION.In] = results;\n break;\n }\n }\n return qry;\n }\n\n\n}","import { Base } from \"./base\";\nimport { IError } from \"../../common/index\";\nimport { Column } from \"../model/index\";\nimport { KeyStore } from \"../keystore/index\";\n\nexport class Clear extends Base {\n constructor(tableName: string, onSuccess: () => void, onError: (err: IError) => void) {\n super();\n this.query = tableName;\n this.onSuccess = onSuccess;\n this.onError = onError;\n }\n\n execute() {\n this.createTransaction([this.query], () => {\n if (this.error == null) {\n this.onSuccess();\n }\n else {\n this.onError(this.error);\n }\n });\n const clearRequest: IDBRequest = this.transaction.objectStore(this.query).clear();\n clearRequest.onsuccess = (e) => {\n const currentTable = this.getTable(this.query);\n currentTable.columns.forEach((column: Column) => {\n if (column.autoIncrement) {\n KeyStore.set(`JsStore_${this.activeDb.name}_${this.query}_${column.name}_Value`, 0);\n }\n });\n };\n\n clearRequest.onerror = this.onErrorOccured;\n }\n}","import { TableHelper, Column } from \"../model/index\";\nimport { IError, CONNECTION_STATUS } from \"../../common/index\";\nimport { KeyStore } from \"../keystore/index\";\nimport { BaseDb } from \"./base_db\";\nimport { promise } from \"../helpers/index\";\n\nexport class InitDb extends BaseDb {\n onSuccess: (isDbCreated: boolean) => void;\n\n constructor(onSuccess: (isDbCreated: boolean) => void, onError: (err: IError) => void) {\n super();\n this.onSuccess = onSuccess;\n this.onError = onError;\n }\n\n execute(tablesMetaData: TableHelper[]) {\n const listofTableCreated = [];\n const dbRequest = indexedDB.open(this.dbName, this.dbVersion);\n let isDbCreated = false;\n dbRequest.onerror = (event) => {\n if (this.onError != null) {\n this.onError((event as any).target.error);\n }\n };\n\n dbRequest.onsuccess = (event) => {\n this.dbStatus.conStatus = CONNECTION_STATUS.Connected;\n this.dbConnection = dbRequest.result;\n (this.dbConnection as any).onclose = this.onDbClose.bind(this);\n\n this.dbConnection.onversionchange = this.onDbVersionChange.bind(this);\n this.dbConnection.onerror = this.onDbConError.bind(this);\n\n if (isDbCreated) {\n // save in database list\n this.savedbNameIntoDbList_().then(() => {\n if (this.onSuccess != null) {\n this.onSuccess(isDbCreated);\n }\n });\n }\n else {\n this.setPrimaryKey_();\n this.onSuccess(isDbCreated);\n }\n };\n\n dbRequest.onupgradeneeded = (event) => {\n isDbCreated = true;\n const dbConnection = (event as any).target.result;\n const createObjectStore = (item: TableHelper, index) => {\n try {\n let store: IDBObjectStore;\n if (item.primaryKey.length > 0) {\n this.activeDb.tables[index].primaryKey = item.primaryKey;\n store = dbConnection.createObjectStore(item.name, {\n keyPath: item.primaryKey\n });\n }\n else {\n store = dbConnection.createObjectStore(item.name, {\n autoIncrement: true\n });\n }\n item.columns.forEach((column: Column) => {\n if (column.enableSearch === true) {\n const options = column.primaryKey ? { unique: true } : { unique: column.unique };\n options['multiEntry'] = column.multiEntry;\n const keyPath = column.keyPath == null ? column.name : column.keyPath;\n store.createIndex(column.name, keyPath, options);\n if (column.autoIncrement) {\n KeyStore.set(`JsStore_${this.dbName}_${item.name}_${column.name}_Value`, 0);\n }\n }\n });\n listofTableCreated.push(item.name);\n // setting the table version\n KeyStore.set(`JsStore_${this.dbName}_${item.name}_Version`, item.version);\n }\n catch (e) {\n console.error(e);\n }\n };\n tablesMetaData.forEach((item: TableHelper, index) => {\n if (item.requireDelete) {\n // Delete the old datastore. \n if (dbConnection.objectStoreNames.contains(item.name)) {\n dbConnection.deleteObjectStore(item.name);\n }\n createObjectStore(item, index);\n }\n else if (item.requireCreation) {\n createObjectStore(item, index);\n }\n });\n };\n }\n\n private savedbNameIntoDbList_() {\n return promise((res, rej) => {\n this.getDbList().then(dbList => {\n if (dbList.indexOf(this.dbName) < 0) {\n dbList.push(this.dbName);\n this.setDbList(dbList).then(res).catch(rej);\n }\n else {\n res();\n }\n }).catch(rej);\n });\n }\n\n private setPrimaryKey_() {\n this.activeDb.tables.forEach((table, index) => {\n table.columns.every(item => {\n this.activeDb.tables[index].primaryKey = item.primaryKey ? item.name : \"\";\n return !item.primaryKey;\n });\n });\n }\n}\n","import { Table } from \"./table\";\nimport { Column } from \"./column\";\nimport { KeyStore } from \"../keystore/index\";\nimport { IdbHelper } from \"../business/index\";\nimport { promise } from \"../helpers/index\";\n\nexport class TableHelper {\n name: string;\n columns: Column[] = [];\n\n // internal Members\n primaryKey: string;\n version: number;\n requireDelete = false;\n requireCreation = false;\n private callback_: (tableHelperObj: TableHelper) => void;\n\n constructor(table: Table) {\n this.name = table.name;\n this.version = table.version;\n this.columns = table.columns;\n this.setPrimaryKey_();\n }\n\n createMetaData(dbName: string): Promise {\n return promise((resolve) => {\n this.callback_ = resolve;\n this.setRequireDelete_(dbName);\n this.setDbVersion_(dbName);\n });\n }\n\n private setPrimaryKey_() {\n this.columns.every((item) => {\n this.primaryKey = item.primaryKey ? item.name : \"\";\n return !item.primaryKey;\n });\n }\n\n private setRequireDelete_(dbName: string) {\n KeyStore.get(`JsStore_${dbName}_${this.name}_Version`).then(tableVersion => {\n if (tableVersion == null) {\n this.requireCreation = true;\n }\n // mark only table which has version greater than store version\n else if (tableVersion < this.version) {\n this.requireDelete = true;\n }\n });\n }\n\n private setDbVersion_(dbName: string) {\n IdbHelper.activeDbVersion = IdbHelper.activeDbVersion > this.version ? IdbHelper.activeDbVersion : this.version;\n // setting db version\n KeyStore.set(`JsStore_${dbName}_Db_Version`, IdbHelper.activeDbVersion);\n // setting table version\n KeyStore.set(`JsStore_${dbName}_${this.name}_Version`, IdbHelper.activeDbVersion).then(() => {\n this.version = IdbHelper.activeDbVersion;\n this.callback_(this);\n });\n }\n}","import { DataBase } from \"./database\";\nimport { TableHelper } from \"./table_helper\";\nimport { Table } from \"./table\";\nimport { promiseAll } from \"../helpers/index\";\n\nexport class DbHelper {\n dbName: string;\n tables: Table[] = [];\n\n constructor(dataBase: DataBase) {\n this.dbName = dataBase.name;\n this.tables = dataBase.tables;\n }\n\n createMetaData() {\n return promiseAll(\n this.tables.map((table) => {\n return new TableHelper(table).createMetaData(this.dbName);\n })\n );\n }\n}","import { IColumnOption } from \"../../common/index\";\n\nexport class Column implements IColumnOption {\n name: string;\n autoIncrement: boolean;\n primaryKey: boolean;\n unique: boolean;\n notNull: boolean;\n dataType: string;\n default;\n multiEntry: boolean;\n enableSearch: boolean;\n keyPath: string[];\n\n constructor(key: Column) {\n this.name = key.name;\n this.autoIncrement = key.autoIncrement != null ? key.autoIncrement : false;\n this.primaryKey = key.primaryKey != null ? key.primaryKey : false;\n this.unique = key.unique != null ? key.unique : false;\n this.notNull = key.notNull != null ? key.notNull : false;\n this.dataType = key.dataType != null ? key.dataType : (key.autoIncrement ? 'number' : null);\n this.default = key.default;\n this.multiEntry = key.multiEntry == null ? false : key.multiEntry;\n this.enableSearch = key.enableSearch == null ? true : key.enableSearch;\n this.keyPath = key.keyPath;\n }\n\n}","import { Column } from \"./column\";\nimport { ITable } from \"../../common/index\";\n \nexport class Table {\n name: string;\n columns: Column[] = [];\n version: number;\n primaryKey: string;\n\n constructor(table: ITable) {\n this.name = table.name;\n this.version = table.version == null ? 1 : table.version;\n for (const columnName in table.columns) {\n const column = {\n name: columnName\n } as Column;\n\n for (const feature in table.columns[columnName]) {\n const value = table.columns[columnName][feature];\n switch (feature) {\n case 'primaryKey':\n case 'autoIncrement':\n case 'unique':\n case 'dataType':\n case 'enableSearch':\n case 'keyPath':\n case 'multiEntry':\n case 'default':\n case 'notNull':\n column[feature] = value; break;\n }\n }\n this.columns.push(new Column(column));\n }\n }\n}","\nimport { Table } from \"./table\";\nimport { IDataBase } from \"../../common/index\";\n \nexport class DataBase {\n name: string;\n tables: Table[] = [];\n\n constructor(dataBase: IDataBase) {\n this.name = dataBase.name;\n dataBase.tables.forEach((item) => {\n this.tables.push(new Table(item));\n });\n }\n}\n","import * as Select from '../select/index';\nimport { SelectQuery, IError } from '../../../common/index';\n\n\nexport class Union {\n execute(query: SelectQuery[], onSuccess: (results: object[]) => void, onError: (err: IError) => void) {\n let index = 0;\n const hashMap = {};\n const fetchData = () => {\n if (index < query.length) {\n new Select.Instance(query[index++], (selectResult) => {\n selectResult.forEach(val => {\n let columnValKey = \"\";\n for (const key in val) {\n columnValKey += val[key];\n }\n hashMap[columnValKey] = val;\n });\n fetchData();\n }, onError).execute();\n }\n else {\n const results = [];\n for (const key in hashMap) {\n results.push(hashMap[key]);\n }\n onSuccess(results);\n }\n };\n fetchData();\n }\n\n\n}","import { IdbHelper, DropDb, InitDb, Clear, QueryHelper } from \"./business/index\";\nimport * as Select from './business/select/index';\nimport * as Count from './business/count/index';\nimport * as Insert from './business/insert/index';\nimport * as Remove from './business/remove/index';\nimport * as Update from './business/update/index';\nimport * as Transaction from \"./business/transaction/index\";\nimport { LogHelper } from \"./log_helper\";\nimport {\n UpdateQuery, InsertQuery, RemoveQuery, SelectQuery, CountQuery, SetQuery,\n CONNECTION_STATUS, ERROR_TYPE, DATA_TYPE, API,\n WebWorkerResult, WebWorkerRequest, IDataBase, IError\n} from \"../common/index\";\nimport { Config } from \"./config\";\nimport { KeyStore } from \"./keystore/index\";\nimport { TableHelper, DbHelper, DataBase } from \"./model/index\";\nimport { promise } from \"./helpers/index\";\nimport { getDataType } from \"./utils/index\";\nimport { Union } from './business/union/index';\n\nexport class QueryExecutor {\n static isTransactionQuery = false;\n onQueryFinished: (result: any) => void;\n\n constructor(fn?: (result: any) => void) {\n this.onQueryFinished = fn;\n QueryHelper.autoIncrementValues = {};\n }\n\n checkConnectionAndExecuteLogic(request: WebWorkerRequest) {\n LogHelper.log('request executing:' + request.name);\n switch (request.name) {\n case API.InitDb:\n case API.IsDbExist:\n case API.GetDbVersion:\n case API.GetDbList:\n case API.GetDbSchema:\n case API.Get:\n case API.Set:\n case API.ChangeLogStatus:\n case API.Terminate:\n case API.OpenDb:\n case API.InitKeyStore:\n case API.CloseDb:\n const err = this.checkForIdbSupport_();\n if (err == null) {\n this.executeLogic_(request);\n }\n else {\n this.returnResult_({\n errorDetails: err,\n errorOccured: true\n } as WebWorkerResult);\n }\n break;\n default:\n switch (this.dbStatus_.conStatus) {\n case CONNECTION_STATUS.Connected: {\n this.executeLogic_(request);\n } break;\n case CONNECTION_STATUS.Closed: {\n if (this.isDbDeletedByBrowser_ === true) {\n this.initDb_(null, () => {\n this.isDbDeletedByBrowser_ = false;\n this.checkConnectionAndExecuteLogic(request);\n }, request.onError);\n }\n else {\n this.initDb_(this.activeDb_ as any, () => {\n this.checkConnectionAndExecuteLogic(request);\n }, request.onError);\n }\n } break;\n\n }\n }\n }\n\n private changeLogStatus_(status: boolean, onSuccess, onError) {\n Config.isLogEnabled = status;\n onSuccess();\n }\n\n private returnResult_(result) {\n if (Config.isRuningInWorker === true) {\n (self as any).postMessage(result);\n }\n else {\n this.onQueryFinished(result);\n }\n\n }\n\n private executeLogic_(request: WebWorkerRequest) {\n const onSuccess = (results?) => {\n this.returnResult_({\n returnedValue: results\n } as WebWorkerResult);\n };\n const onError = (err) => {\n this.returnResult_({\n errorDetails: err,\n errorOccured: true\n } as WebWorkerResult);\n };\n\n QueryExecutor.isTransactionQuery = request.name === API.Transaction;\n switch (request.name) {\n case API.InitDb:\n if (this.isDbDeletedByBrowser_ === true) {\n this.initDb_(null, () => {\n this.isDbDeletedByBrowser_ = false;\n onSuccess();\n }, onError);\n }\n else {\n this.initDb_(request.query as IDataBase, onSuccess, onError);\n }\n break;\n case API.OpenDb:\n this.openDb_(request.query, onSuccess, onError); break;\n case API.Select:\n new Select.Instance(request.query as SelectQuery, onSuccess, onError).execute();\n break;\n case API.Insert: new Insert.Instance(request.query as InsertQuery, onSuccess, onError).execute();\n break;\n case API.Update:\n new Update.Instance(request.query as UpdateQuery, onSuccess, onError).execute();\n break;\n case API.Remove:\n new Remove.Instance(request.query as RemoveQuery, onSuccess, onError).execute();\n break;\n case API.IsDbExist: this.isDbExist_(request.query, onSuccess, onError);\n break;\n case API.GetDbVersion:\n this.getDbVersion_(request.query as string).then(onSuccess).catch(onError);\n break;\n case API.GetDbList:\n this.getDbList_().then(onSuccess).catch(onError);\n break;\n case API.GetDbSchema:\n this.getDbSchema_(request.query as string).then(onSuccess).catch(onError);\n break;\n case API.Clear: new Clear(request.query as string, onSuccess, onError).execute();\n break;\n case API.DropDb: this.dropDb_(onSuccess, onError);\n break;\n case API.Count:\n new Count.Instance(request.query as CountQuery, onSuccess, onError).execute();\n break;\n case API.Get: this.get_(request.query as string).then(onSuccess).catch(onError);\n break;\n case API.Set: this.set_(request.query as SetQuery).then(onSuccess).catch(onError);\n break;\n case API.ChangeLogStatus:\n this.changeLogStatus_(request.query as boolean, onSuccess, onError);\n break;\n case API.Transaction: new Transaction.Instance(request.query, onSuccess, onError).execute();\n break;\n case API.CloseDb:\n case API.Terminate:\n this.terminate_(onSuccess, onError);\n break;\n case API.Union:\n new Union().execute(request.query, onSuccess, onError);\n break;\n case API.InitKeyStore:\n this.initKeyStore_(onSuccess);\n break;\n default:\n if (process.env.NODE_ENV === 'dev') {\n console.error('The Api:-' + request.name + ' does not support.');\n }\n }\n }\n\n private openDb_(dbName: string, onSuccess, onError) {\n if (this.activeDb_ != null && this.activeDb_.name === dbName) {\n this.processCreateDb(this.activeDb_).then(onSuccess).catch(onError);\n }\n else {\n this.getDbSchema_(dbName).then((db) => {\n if (db != null) {\n this.processCreateDb(db).then(onSuccess).catch(onError);\n }\n else {\n onError(new LogHelper(ERROR_TYPE.DbNotExist, { dbName: dbName }).get());\n }\n }).catch(onError);\n }\n }\n\n private initKeyStore_(onSuccess) {\n KeyStore.init().then(onSuccess()).catch(() => {\n IdbHelper.dbStatus = {\n conStatus: CONNECTION_STATUS.UnableToStart,\n lastError: ERROR_TYPE.IndexedDbNotSupported,\n };\n });\n }\n\n private getDbSchema_(dbName: string) {\n return IdbHelper.getDbSchema(dbName);\n }\n\n private terminate_(onSuccess: () => void, onError: (err: IError) => void) {\n KeyStore.close().then(() => {\n this.closeDb_();\n onSuccess();\n });\n }\n\n private get isDbDeletedByBrowser_() {\n return IdbHelper.isDbDeletedByBrowser;\n }\n\n private set isDbDeletedByBrowser_(value) {\n IdbHelper.isDbDeletedByBrowser = value;\n }\n\n private getDbList_() {\n return IdbHelper.getDbList();\n }\n\n private get activeDb_() {\n return IdbHelper.activeDb;\n }\n\n private set activeDb_(value) {\n IdbHelper.activeDb = value;\n }\n\n private closeDb_() {\n if (IdbHelper.dbStatus.conStatus === CONNECTION_STATUS.Connected) {\n IdbHelper.dbStatus.conStatus = CONNECTION_STATUS.ClosedByJsStore;\n IdbHelper.dbConnection.close();\n }\n }\n\n private dropDb_(onSuccess: () => void, onError: (err: IError) => void) {\n this.closeDb_();\n new DropDb(onSuccess, onError).deleteDb();\n }\n\n\n\n private processCreateDb(db: DataBase) {\n return promise((res, rej) => {\n // create meta data\n const dbHelper = new DbHelper(db);\n dbHelper.createMetaData().then((tablesMetaData: TableHelper[]) => {\n this.activeDb_ = db;\n const createDbInstance = new InitDb((isDbCreated) => {\n this.activeDb_ = db;\n // save dbSchema in keystore\n KeyStore.set(\"JsStore_\" + db.name + \"_Schema\", db);\n res(isDbCreated);\n }, rej);\n createDbInstance.execute(tablesMetaData);\n });\n });\n }\n\n private initDb_(\n dataBase: IDataBase, onSuccess: () => void, onError: (err: IError) => void\n ) {\n if (dataBase == null) {\n this.processCreateDb(this.activeDb_);\n }\n else {\n this.closeDb_();\n this.getDbVersion_(dataBase.name).then(version => {\n this.activeDbVersion_ = version ? version : 1;\n this.processCreateDb(new DataBase(dataBase)).then(onSuccess).catch(onError);\n }).catch(onError);\n }\n\n }\n\n private get activeDbVersion_() {\n return IdbHelper.activeDbVersion;\n }\n\n private set activeDbVersion_(value) {\n IdbHelper.activeDbVersion = value;\n }\n\n private getDbVersion_(dbName: string) {\n return IdbHelper.getDbVersion(dbName);\n }\n\n private get dbStatus_() {\n return IdbHelper.dbStatus;\n }\n\n private checkForIdbSupport_() {\n if (this.dbStatus_.conStatus === CONNECTION_STATUS.UnableToStart) {\n const error = {\n type: this.dbStatus_.lastError,\n } as IError;\n switch (error.type) {\n case ERROR_TYPE.IndexedDbNotSupported:\n error.message = \"Browser does not support IndexedDB\"; break;\n default:\n error.message = \"unknown error occured\";\n }\n return error;\n }\n }\n\n private isDbExist_(dbInfo, onSuccess: (isExist: boolean) => void, onError: (err: IError) => void) {\n if (getDataType(dbInfo) === DATA_TYPE.String) {\n this.getDbVersion_(dbInfo).then(function (dbVersion) {\n onSuccess(Boolean(dbVersion));\n });\n }\n else {\n this.getDbVersion_(dbInfo.dbName).then(function (dbVersion) {\n onSuccess(dbInfo.table.version <= dbVersion);\n });\n }\n }\n\n private get_(key: string) {\n return KeyStore.get(key);\n }\n\n private set_(query: SetQuery) {\n return KeyStore.set(query.key, query.value);\n }\n}","import { Base } from \"./base\";\n\nexport class WhereBase extends Base {\n protected results: any[] = [];\n\n protected onQueryFinished() {\n // virtual\n }\n}","export const promise = (callBack: (resolve, reject) => void) => {\n return new Promise(callBack);\n};","export const promiseAll = (promises: any) => {\n return Promise.all(promises);\n};","import { IdbHelper } from \"./idb_helper\";\nimport { CONNECTION_STATUS, ERROR_TYPE, IError } from \"../../common/index\";\nexport class BaseDb {\n\n onError: (err: IError) => void;\n protected get dbName() {\n return IdbHelper.activeDb.name;\n }\n\n protected get dbStatus() {\n return IdbHelper.dbStatus;\n }\n\n protected set dbStatus(value) {\n IdbHelper.dbStatus = value;\n }\n\n\n protected set dbConnection(value) {\n IdbHelper.dbConnection = value;\n }\n\n protected get dbConnection() {\n return IdbHelper.dbConnection;\n }\n\n protected updateDbStatus(status: CONNECTION_STATUS, err?: ERROR_TYPE) {\n IdbHelper.updateDbStatus(status, err);\n }\n\n protected onDbDroppedByBrowser(deleteMetaData?: boolean) {\n IdbHelper.callDbDroppedByBrowser(deleteMetaData);\n }\n\n protected get dbVersion() {\n return parseInt(IdbHelper.activeDbVersion as any);\n }\n\n protected get activeDb() {\n return IdbHelper.activeDb;\n }\n\n protected getDbList() {\n return IdbHelper.getDbList();\n }\n\n protected setDbList(value) {\n return IdbHelper.setDbList(value);\n }\n\n\n protected onDbClose(event) {\n this.onDbDroppedByBrowser();\n this.updateDbStatus(CONNECTION_STATUS.Closed, ERROR_TYPE.ConnectionClosed);\n }\n\n protected onDbVersionChange(e: IDBVersionChangeEvent) {\n if (e.newVersion === null) { // An attempt is made to delete the db\n (e.target as any).close(); // Manually close our connection to the db\n this.onDbDroppedByBrowser(true);\n this.updateDbStatus(CONNECTION_STATUS.Closed, ERROR_TYPE.ConnectionClosed);\n }\n }\n\n protected onDbConError(e) {\n IdbHelper.dbStatus.lastError = (\"Error occured in connection :\" + (e.target as any).result) as any;\n }\n}","import { IError, CONNECTION_STATUS, ERROR_TYPE } from \"../../common/index\";\nimport { KeyStore } from \"../keystore/index\";\nimport { Table, Column } from \"../model/index\";\nimport { LogHelper } from \"../log_helper\";\nimport { BaseDb } from \"./base_db\";\nimport { promise } from \"../helpers/index\";\n\nexport class DropDb extends BaseDb {\n private onSuccess_: () => void;\n private onError_: (err: IError) => void;\n\n constructor(onSuccess: () => void, onError: (err: IError) => void) {\n super();\n this.onSuccess_ = onSuccess;\n this.onError_ = onError;\n }\n\n deleteMetaData() {\n return promise((res, rej) => {\n KeyStore.remove(`JsStore_${this.dbName}_Db_Version`);\n this.activeDb.tables.forEach((table: Table) => {\n KeyStore.remove(`JsStore_${this.dbName}_${table.name}_Version`);\n table.columns.forEach((column: Column) => {\n if (column.autoIncrement) {\n KeyStore.remove(`JsStore_${this.dbName}_${table.name}_${column.name}_Value`);\n }\n });\n });\n // remove from database_list \n this.getDbList().then(dbList => {\n dbList.splice(dbList.indexOf(this.dbName), 1);\n this.setDbList(dbList).then(() => {\n // remove db schema from keystore\n KeyStore.remove(`JsStore_${this.dbName}_Schema`).\n then(res).catch(rej);\n });\n });\n });\n }\n\n deleteDb() {\n setTimeout(() => {\n const dropDbRequest = indexedDB.deleteDatabase(this.dbName);\n dropDbRequest.onblocked = () => {\n if (this.onError_ != null) {\n this.onError_(new LogHelper(ERROR_TYPE.DbBlocked).get());\n }\n };\n dropDbRequest.onerror = (e) => {\n if (this.onError_ != null) {\n this.onError_((event as any).target.error);\n }\n };\n dropDbRequest.onsuccess = () => {\n this.deleteMetaData().then(() => {\n this.onSuccess_();\n this.dbStatus.conStatus = CONNECTION_STATUS.Closed;\n }).catch(this.onError_);\n };\n }, 100);\n }\n}\n","import { QueryExecutor } from \"./query_executor\";\nimport { Config } from \"./config\";\nimport { IdbHelper } from \"./business/index\";\nimport { CONNECTION_STATUS, ERROR_TYPE } from \"../common/index\";\n\nexport const initialize = function () {\n if (typeof (self as any).alert === 'undefined' && typeof ServiceWorkerGlobalScope === 'undefined') {\n Config.isRuningInWorker = true;\n (self as any).onmessage = function (e) {\n new QueryExecutor().checkConnectionAndExecuteLogic(e.data);\n };\n }\n};\n\nconst onIdbNotSupproted = () => {\n IdbHelper.dbStatus = {\n conStatus: CONNECTION_STATUS.UnableToStart,\n lastError: ERROR_TYPE.IndexedDbNotSupported\n };\n};\n\nconst setCrossBrowserIndexedDb = () => {\n try {\n if (!indexedDB) {\n indexedDB = (self as any).mozIndexedDB ||\n (self as any).webkitIndexedDB || (self as any).msIndexedDB;\n }\n if (indexedDB) {\n IDBTransaction = IDBTransaction ||\n (self as any).webkitIDBTransaction || (self as any).msIDBTransaction;\n (self as any).IDBKeyRange = (self as any).IDBKeyRange ||\n (self as any).webkitIDBKeyRange || (self as any).msIDBKeyRange;\n }\n else {\n onIdbNotSupproted();\n }\n } catch (ex) {\n onIdbNotSupproted();\n }\n};\n\nsetCrossBrowserIndexedDb();\ninitialize();\n","export * from './query_executor';\nexport * from './start';\nexport * from './config';\nexport * from './keystore/instance';","import { Table } from \"../model/index\";\nimport { IdbHelper, QueryHelper } from \"../business/index\";\nimport { KeyStore } from \"../keystore/index\";\nimport { promiseAll, promise } from \"../helpers/index\";\nimport { QueryExecutor } from \"../query_executor\";\n\nexport const getAutoIncrementValues = (table: Table): Promise<{ [columnName: string]: number }> => {\n\n const autoIncColumns = table.columns.filter((col) => {\n return col.autoIncrement;\n });\n return promise((resolve, reject) => {\n promiseAll(autoIncColumns.map(column => {\n const autoIncrementKey = `JsStore_${IdbHelper.activeDb.name}_${table.name}_${column.name}_Value`;\n return KeyStore.get(autoIncrementKey);\n })).then(results => {\n const autoIncValues = {};\n for (let i = 0; i < autoIncColumns.length; i++) {\n autoIncValues[autoIncColumns[i].name] = results[i];\n }\n resolve(autoIncValues);\n }).catch(reject);\n });\n};\n\nexport const setAutoIncrementValue = (table: Table, autoIncrementValue: object) => {\n const keys = Object.keys(autoIncrementValue);\n return promiseAll(keys.map((columnName) => {\n const autoIncrementKey = `JsStore_${IdbHelper.activeDb.name}_${table.name}_${columnName}_Value`;\n const value = autoIncrementValue[columnName];\n if (QueryExecutor.isTransactionQuery === true) {\n QueryHelper.autoIncrementValues[table.name][columnName] = value;\n }\n return KeyStore.set(\n autoIncrementKey,\n value\n );\n }));\n};","import { Base } from \"../base\";\nimport { InsertQuery, IError, API } from \"../../../common/index\";\nimport { Table } from \"../../model/index\";\nimport { promiseAll, promise } from \"../../helpers/index\";\nimport { QueryHelper } from \"../query_helper\";\n\nexport class Instance extends Base {\n private valuesAffected_ = [];\n query: InsertQuery;\n table: Table;\n\n constructor(query: InsertQuery, onSuccess: (rowsInserted: number) => void, onError: (err: IError) => void) {\n super();\n this.onError = onError;\n this.query = query;\n this.onSuccess = onSuccess;\n this.tableName = this.query.into;\n }\n\n execute() {\n const queryHelper = new QueryHelper(API.Insert, this.query);\n queryHelper.checkAndModify().then(() => {\n this.query = queryHelper.query;\n this.insertData_(this.query.values);\n }).catch(this.onError);\n }\n\n private onTransactionCompleted_ = () => {\n if (this.error == null) {\n this.onSuccess(this.query.return === true ? this.valuesAffected_ : this.rowAffected);\n }\n else {\n this.onError(this.error);\n }\n }\n\n private onQueryFinished_() {\n if (this.isTransaction === true) {\n this.onTransactionCompleted_();\n }\n }\n\n private insertData_(values: any[]) {\n // let valueIndex = 0;\n\n let objectStore: IDBObjectStore;\n const processName = this.query.upsert === true ? \"put\" : \"add\";\n let onInsertData;\n if (this.query.return === true) {\n onInsertData = (value) => {\n this.valuesAffected_.push(value);\n };\n\n }\n else {\n onInsertData = (value) => {\n ++this.rowAffected;\n };\n }\n\n this.createTransaction([this.tableName], this.onTransactionCompleted_);\n objectStore = this.transaction.objectStore(this.tableName);\n promiseAll(\n values.map(function (value) {\n return promise(function (res, rej) {\n const addResult = objectStore[processName](value);\n addResult.onerror = rej;\n addResult.onsuccess = function () {\n onInsertData(value);\n res();\n };\n });\n })\n ).then(() => {\n this.onQueryFinished_();\n }).catch((err) => {\n this.transaction.abort();\n this.onErrorOccured(err);\n });\n }\n}","import { WhereBase } from \"../where_base\";\nimport { SelectQuery, SelectCase, QUERY_OPTION } from \"../../../common/index\";\n\n\nexport class BaseSelect extends WhereBase {\n sorted = false;\n isOr: boolean;\n isArrayQry: boolean;\n onWhereArrayQrySuccess: () => void;\n query: SelectQuery;\n orInfo: {\n results?: any[];\n orQuery: object\n };\n\n isSubQuery = false;\n\n isOrderWithLimit = false;\n isOrderWithSkip = false;\n\n protected pushResult(value) {\n for (const columnName in this.query.case) {\n value[columnName] = this.getThenValue(columnName, value, this.query.case);\n }\n this.results.push(value);\n }\n\n protected getThenValue(columnName: string, value, caseQuery: any) {\n const caseColumnQuery = caseQuery[columnName];\n const length = caseColumnQuery.length;\n const lastThen = caseColumnQuery[length - 1].then;\n const getLastThen = lastThen == null ? () => value[columnName] : () => lastThen;\n const checkCase = (cond: SelectCase) => {\n for (const queryOption in cond) {\n switch (queryOption) {\n case QUERY_OPTION.GreaterThan:\n if (value[columnName] > cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.Equal:\n if (value[columnName] === cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.LessThan:\n if (value[columnName] < cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.GreaterThanEqualTo:\n if (value[columnName] >= cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.LessThanEqualTo:\n if (value[columnName] <= cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.NotEqualTo:\n if (value[columnName] !== cond[queryOption]) {\n return true;\n }\n }\n return false;\n }\n };\n for (let i = 0; i < length; i++) {\n if (checkCase(caseColumnQuery[i]) === true) {\n return caseColumnQuery[i].then;\n }\n }\n return getLastThen();\n }\n\n protected checkCase(columnName: string, cond: SelectCase, value) {\n for (const queryOption in cond) {\n switch (queryOption) {\n case QUERY_OPTION.GreaterThan:\n if (value[columnName] > cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.Equal:\n if (value[columnName] === cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.LessThan:\n if (value[columnName] < cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.GreaterThanEqualTo:\n if (value[columnName] >= cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.LessThanEqualTo:\n if (value[columnName] <= cond[queryOption]) {\n return true;\n } break;\n case QUERY_OPTION.NotEqualTo:\n if (value[columnName] !== cond[queryOption]) {\n return true;\n }\n }\n }\n return false;\n }\n\n protected removeDuplicates() {\n let datas = this.results;\n // free results memory\n this.results = undefined;\n const key = this.getPrimaryKey(this.query.from);\n const lookupObject = {};\n for (const i in datas) {\n lookupObject[datas[i][key]] = datas[i];\n }\n // free datas memory\n datas = [];\n for (const i in lookupObject) {\n datas.push(lookupObject[i]);\n }\n this.results = datas;\n }\n}","import { BaseSelect } from \"./base_select\";\nimport { LogHelper } from \"../../log_helper\";\nimport { ERROR_TYPE } from \"../../../common/index\";\nlet cursorRequest: IDBRequest;\nexport class NotWhere extends BaseSelect {\n protected executeWhereUndefinedLogic() {\n if (this.query.order && this.query.order.by && this.query.order.idbSorting !== false) {\n if (this.objectStore.indexNames.contains(this.query.order.by)) {\n const orderType: IDBCursorDirection = this.query.order.type &&\n this.query.order.type.toLowerCase() === 'desc' ? 'prev' : 'next';\n this.sorted = true;\n cursorRequest = this.objectStore.index(this.query.order.by).\n openCursor(null, orderType);\n }\n else {\n const error = new LogHelper(ERROR_TYPE.ColumnNotExist, { column: this.query.order.by, isOrder: true });\n this.onErrorOccured(error, true);\n return;\n }\n }\n else {\n cursorRequest = this.objectStore.openCursor();\n }\n\n cursorRequest.onerror = this.onErrorOccured;\n\n if (this.isOrderWithLimit === false && this.isOrderWithSkip === false) {\n if (this.skipRecord && this.limitRecord) {\n this.executeSkipAndLimitForNoWhere_();\n }\n else if (this.skipRecord) {\n this.executeSkipForNoWhere_();\n }\n else if (this.limitRecord) {\n this.executeLimitForNotWhere_();\n }\n else {\n this.executeSimpleForNotWhere_();\n }\n }\n else {\n this.executeSimpleForNotWhere_();\n }\n }\n\n private executeSkipAndLimitForNoWhere_() {\n let recordSkipped = false,\n cursor: IDBCursorWithValue;\n cursorRequest.onsuccess = (e) => {\n cursor = (e as any).target.result;\n if (cursor) {\n if (recordSkipped && this.results.length !== this.limitRecord) {\n this.pushResult(cursor.value);\n cursor.continue();\n }\n else {\n recordSkipped = true;\n cursor.advance(this.skipRecord);\n }\n } else {\n this.onQueryFinished();\n }\n };\n }\n\n private executeSkipForNoWhere_() {\n let recordSkipped = false,\n cursor;\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (recordSkipped) {\n this.pushResult(cursor.value);\n cursor.continue();\n }\n else {\n recordSkipped = true;\n cursor.advance(this.skipRecord);\n }\n } else {\n this.onQueryFinished();\n }\n };\n }\n\n private executeSimpleForNotWhere_() {\n let cursor;\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n this.pushResult(cursor.value);\n (cursor as any).continue();\n }\n else {\n this.onQueryFinished();\n }\n };\n }\n\n private executeLimitForNotWhere_() {\n let cursor;\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor && this.results.length !== this.limitRecord) {\n this.pushResult(cursor.value);\n cursor.continue();\n } else {\n this.onQueryFinished();\n }\n };\n }\n}\n","import { NotWhere } from \"./not_where\";\nimport { promiseAll, promise } from \"../../helpers/index\";\n\nlet shouldAddValue: () => boolean;\nlet skipOrPush: (val) => void;\nlet skip;\nlet cursor: IDBCursorWithValue;\nexport class In extends NotWhere {\n protected executeInLogic(column, values) {\n skip = this.skipRecord;\n skipOrPush = (val) => {\n if (skip === 0) {\n this.pushResult(val);\n }\n else {\n --skip;\n }\n };\n shouldAddValue = () => {\n return this.whereCheckerInstance.check(cursor.value);\n };\n if (this.isOrderWithLimit === false && this.isOrderWithSkip === false) {\n if (this.skipRecord && this.limitRecord) {\n this.executeSkipAndLimitForIn_(column, values);\n }\n else if (this.skipRecord) {\n this.executeSkipForIn_(column, values);\n }\n else if (this.limitRecord) {\n this.executeLimitForIn_(column, values);\n }\n else {\n this.executeSimpleForIn_(column, values);\n }\n }\n else {\n this.executeSimpleForIn_(column, values);\n }\n }\n\n private executeSkipAndLimitForIn_(column, values) {\n let cursorRequest: IDBRequest;\n const columnStore = this.objectStore.index(column);\n\n const runInLogic: (val) => Promise = (value) => {\n return promise((res, rej) => {\n cursorRequest = columnStore.openCursor(this.getKeyRange(value));\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (this.results.length !== this.limitRecord && cursor) {\n if (shouldAddValue()) {\n skipOrPush(cursor.value);\n }\n cursor.continue();\n }\n else {\n res();\n }\n };\n cursorRequest.onerror = rej;\n });\n };\n\n promiseAll(\n values.map(function (val) {\n return runInLogic(val);\n })\n ).then(() => {\n this.onQueryFinished();\n }).catch(err => {\n this.onErrorOccured(err);\n });\n }\n\n private executeSkipForIn_(column, values) {\n\n let cursorRequest: IDBRequest;\n const columnStore = this.objectStore.index(column);\n const runInLogic: (val) => Promise = (value) => {\n return promise((res, rej) => {\n cursorRequest = columnStore.openCursor(this.getKeyRange(value));\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (shouldAddValue()) {\n skipOrPush((cursor.value));\n }\n cursor.continue();\n }\n else {\n res();\n }\n };\n cursorRequest.onerror = rej;\n });\n };\n\n promiseAll(\n values.map(function (val) {\n return runInLogic(val);\n })\n ).then(() => {\n this.onQueryFinished();\n }).catch(err => {\n this.onErrorOccured(err);\n });\n }\n\n private executeLimitForIn_(column, values) {\n let cursorRequest: IDBRequest;\n const columnStore = this.objectStore.index(column);\n const runInLogic = (value) => {\n return promise((res, rej) => {\n cursorRequest = columnStore.openCursor(this.getKeyRange(value));\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor && this.results.length !== this.limitRecord) {\n if (shouldAddValue()) {\n this.pushResult(cursor.value);\n }\n cursor.continue();\n }\n else {\n res();\n }\n };\n cursorRequest.onerror = rej;\n });\n };\n\n promiseAll(\n values.map(function (val) {\n return runInLogic(val);\n })\n ).then(() => {\n this.onQueryFinished();\n }).catch(err => {\n this.onErrorOccured(err);\n });\n }\n\n private executeSimpleForIn_(column, values) {\n let cursorRequest: IDBRequest;\n const columnStore = this.objectStore.index(column);\n const runInLogic = (value) => {\n return promise((res, rej) => {\n cursorRequest = columnStore.openCursor(this.getKeyRange(value));\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (shouldAddValue()) {\n this.pushResult(cursor.value);\n }\n cursor.continue();\n }\n else {\n res();\n }\n };\n cursorRequest.onerror = rej;\n });\n };\n\n promiseAll(\n values.map(function (val) {\n return runInLogic(val);\n })\n ).then(() => {\n this.onQueryFinished();\n }).catch(err => {\n this.onErrorOccured(err);\n });\n }\n}","import { In } from \"./in\";\n\nlet shouldAddValue: () => boolean;\nlet skipOrPush: (val) => void;\nlet skip;\nlet cursor: IDBCursorWithValue;\nlet cursorRequest: IDBRequest;\nexport class Regex extends In {\n protected executeRegexLogic(column, exp: RegExp) {\n\n skip = this.skipRecord;\n this.regexExpression = exp;\n skipOrPush = (val) => {\n if (skip === 0) {\n this.pushResult(val);\n }\n else {\n --skip;\n }\n };\n shouldAddValue = () => {\n return this.regexTest(cursor.key) &&\n this.whereCheckerInstance.check(cursor.value);\n };\n\n cursorRequest = this.objectStore.index(column).openCursor();\n cursorRequest.onerror = this.onErrorOccured;\n if (this.isOrderWithLimit === false && this.isOrderWithSkip === false) {\n if (this.skipRecord && this.limitRecord) {\n this.executeSkipAndLimitForRegex_();\n }\n else if (this.skipRecord) {\n this.executeSkipForRegex_();\n }\n else if (this.limitRecord) {\n this.executeLimitForRegex_();\n }\n else {\n this.executeSimpleForRegex_();\n }\n }\n else {\n this.executeSimpleForRegex_();\n }\n }\n\n private executeSkipAndLimitForRegex_() {\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (this.results.length !== this.limitRecord && cursor) {\n if (shouldAddValue()) {\n skipOrPush(cursor.value);\n }\n cursor.continue();\n } else {\n this.onQueryFinished();\n }\n };\n }\n\n private executeSkipForRegex_() {\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (shouldAddValue()) {\n skipOrPush((cursor.value));\n }\n cursor.continue();\n } else {\n this.onQueryFinished();\n }\n };\n }\n\n private executeLimitForRegex_() {\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (this.results.length !== this.limitRecord && cursor) {\n if (shouldAddValue()) {\n this.pushResult(cursor.value);\n }\n cursor.continue();\n } else {\n this.onQueryFinished();\n }\n };\n }\n\n private executeSimpleForRegex_() {\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (shouldAddValue()) {\n this.pushResult(cursor.value);\n }\n cursor.continue();\n } else {\n this.onQueryFinished();\n }\n };\n }\n}","import { Regex } from \"./regex\";\n\nlet shouldAddValue: () => boolean;\nlet cursor: IDBCursorWithValue;\nlet cursorRequest: IDBRequest;\nexport class Where extends Regex {\n\n protected executeWhereLogic(column, value, op, dir) {\n shouldAddValue = () => {\n return this.whereCheckerInstance.check(cursor.value);\n };\n value = op ? value[op] : value;\n cursorRequest = this.objectStore.index(column).openCursor(\n this.getKeyRange(value, op),\n dir\n );\n\n cursorRequest.onerror = this.onErrorOccured;\n\n if (this.isOrderWithLimit === false && this.isOrderWithSkip === false) {\n if (this.skipRecord && this.limitRecord) {\n this.executeSkipAndLimitForWhere_();\n }\n else if (this.skipRecord) {\n this.executeSkipForWhere_();\n }\n else if (this.limitRecord) {\n this.executeLimitForWhere_();\n }\n else {\n this.executeSimpleForWhere_();\n }\n }\n else {\n this.executeSimpleForWhere_();\n }\n\n }\n\n private executeSkipAndLimitForWhere_() {\n let recordSkipped = false;\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (recordSkipped && this.results.length !== this.limitRecord) {\n if (shouldAddValue()) {\n this.pushResult(cursor.value);\n }\n cursor.continue();\n }\n else {\n recordSkipped = true;\n cursor.advance(this.skipRecord);\n }\n }\n else {\n this.onQueryFinished();\n }\n };\n }\n\n private executeSkipForWhere_() {\n let recordSkipped = false;\n\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (recordSkipped) {\n if (shouldAddValue()) {\n this.pushResult(cursor.value);\n }\n cursor.continue();\n }\n else {\n recordSkipped = true;\n cursor.advance(this.skipRecord);\n }\n }\n else {\n this.onQueryFinished();\n }\n };\n }\n\n private executeLimitForWhere_() {\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor && this.results.length !== this.limitRecord) {\n if (shouldAddValue()) {\n this.pushResult(cursor.value);\n }\n cursor.continue();\n }\n else {\n this.onQueryFinished();\n }\n };\n\n }\n\n private executeSimpleForWhere_() {\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (shouldAddValue()) {\n this.pushResult(cursor.value);\n }\n cursor.continue();\n }\n else {\n this.onQueryFinished();\n }\n };\n }\n}","import { Where } from \"./where\";\nimport { DATA_TYPE, QUERY_OPTION } from \"../../../common/index\";\nimport { getDataType } from \"../../utils/index\";\n\nexport class GroupByHelper extends Where {\n protected processGroupBy() {\n const grpQry = this.query.groupBy as any;\n let datas = this.results;\n const lookUpObj = {};\n // free results memory\n this.results = this.query.groupBy = null;\n if (getDataType(grpQry) === DATA_TYPE.String) {\n for (const i in datas) {\n lookUpObj[datas[i][grpQry as string]] = datas[i];\n }\n }\n else {\n let objKey;\n for (const i in datas) {\n objKey = \"\";\n for (const column in grpQry) {\n objKey += datas[i][grpQry[column]];\n }\n lookUpObj[objKey] = datas[i];\n }\n }\n // free datas memory\n datas = [];\n for (const i in lookUpObj) {\n datas.push(lookUpObj[i]);\n }\n this.results = datas;\n }\n\n protected executeAggregateGroupBy() {\n const grpQry = this.query.groupBy as any;\n let datas = this.results;\n // free results memory\n this.results = undefined;\n const lookUpObj = {};\n // assign aggregate\n const aggregateQry = this.query.aggregate;\n\n let index;\n let objKey;\n let value;\n let columnToAggregate;\n const calculateAggregate = () => {\n const getCount = () => {\n value = lookUpObj[objKey];\n // get old value\n value = value ? value[\"count(\" + columnToAggregate + \")\"] : 0;\n // add with old value if data exist\n value += datas[index][columnToAggregate] ? 1 : 0;\n return value;\n };\n const getMax = () => {\n value = lookUpObj[objKey];\n // get old value\n value = value ? value[\"max(\" + columnToAggregate + \")\"] : 0;\n datas[index][columnToAggregate] = datas[index][columnToAggregate] ?\n datas[index][columnToAggregate] : 0;\n // compare between old value and new value\n return value > datas[index][columnToAggregate] ? value : datas[index][columnToAggregate];\n };\n const getMin = () => {\n value = lookUpObj[objKey];\n // get old value\n value = value ? value[\"min(\" + columnToAggregate + \")\"] : Infinity;\n datas[index][columnToAggregate] = datas[index][columnToAggregate] ?\n datas[index][columnToAggregate] : Infinity;\n // compare between old value and new value\n return value < datas[index][columnToAggregate] ? value : datas[index][columnToAggregate];\n };\n const getSum = () => {\n value = lookUpObj[objKey];\n // get old value\n value = value ? value[\"sum(\" + columnToAggregate + \")\"] : 0;\n // add with old value if data exist\n value += datas[index][columnToAggregate] ? datas[index][columnToAggregate] : 0;\n return value;\n };\n const getAvg = () => {\n value = lookUpObj[objKey];\n // get old sum value\n let sumOfColumn = value ? value[\"sum(\" + columnToAggregate + \")\"] : 0;\n // add with old value if data exist\n sumOfColumn += datas[index][columnToAggregate] ? datas[index][columnToAggregate] : 0;\n datas[index][\"sum(\" + columnToAggregate + \")\"] = sumOfColumn;\n // get old count value\n value = value ? value[\"count(\" + columnToAggregate + \")\"] : 0;\n // add with old value if data exist\n value += datas[index][columnToAggregate] ? 1 : 0;\n datas[index][\"count(\" + columnToAggregate + \")\"] = value;\n };\n for (const prop in aggregateQry) {\n const aggregateColumn = aggregateQry[prop];\n const aggregateValType = getDataType(aggregateColumn);\n let aggregateCalculator;\n switch (prop) {\n case QUERY_OPTION.Count:\n aggregateCalculator = getCount;\n break;\n case QUERY_OPTION.Max:\n aggregateCalculator = getMax;\n break;\n case QUERY_OPTION.Min:\n aggregateCalculator = getMin;\n break;\n case QUERY_OPTION.Sum:\n aggregateCalculator = getSum;\n break;\n case QUERY_OPTION.Avg:\n aggregateCalculator = getAvg;\n break;\n }\n switch (aggregateValType) {\n case DATA_TYPE.String:\n columnToAggregate = aggregateColumn;\n datas[index][`${prop}(${columnToAggregate})`] = aggregateCalculator();\n break;\n case DATA_TYPE.Array:\n for (const item in aggregateColumn) {\n columnToAggregate = aggregateColumn[item];\n datas[index][`${prop}(${columnToAggregate})`] = aggregateCalculator();\n }\n }\n }\n };\n\n if (getDataType(grpQry) === DATA_TYPE.String) {\n for (index in datas) {\n objKey = datas[index][grpQry];\n calculateAggregate();\n lookUpObj[objKey] = datas[index];\n }\n }\n else {\n for (index in datas) {\n objKey = \"\";\n for (const column in grpQry) {\n objKey += datas[index][grpQry[column]];\n }\n calculateAggregate();\n lookUpObj[objKey] = datas[index];\n }\n\n }\n // free datas memory\n datas = [];\n for (const i in lookUpObj) {\n datas.push(lookUpObj[i]);\n }\n // Checking for avg and if exist then fill the datas;\n if (aggregateQry.avg) {\n if (getDataType(aggregateQry.avg) === DATA_TYPE.String) {\n for (index in datas) {\n const sumForAvg = datas[index][\"sum(\" + aggregateQry.avg + \")\"],\n countForAvg = datas[index][\"count(\" + aggregateQry.avg + \")\"];\n datas[index][\"avg(\" + aggregateQry.avg + \")\"] = sumForAvg / countForAvg;\n if (aggregateQry.count !== aggregateQry.avg) {\n delete datas[index][\"count(\" + aggregateQry.avg + \")\"];\n }\n if (aggregateQry.sum !== aggregateQry.avg) {\n delete datas[index][\"sum(\" + aggregateQry.avg + \")\"];\n }\n }\n }\n else {\n const isCountTypeString = getDataType(aggregateQry.count) === DATA_TYPE.String;\n const isSumTypeString = getDataType(aggregateQry.sum) === DATA_TYPE.String;\n for (index in datas) {\n for (const column in aggregateQry.avg as any) {\n const avgColumn = aggregateQry.avg[column],\n sum = datas[index][\"sum(\" + avgColumn + \")\"],\n count = datas[index][\"count(\" + avgColumn + \")\"];\n datas[index][\"avg(\" + avgColumn + \")\"] = sum / count;\n\n if (isCountTypeString) {\n if (aggregateQry.count !== avgColumn) {\n delete datas[index][\"count(\" + avgColumn + \")\"];\n }\n else if (aggregateQry.count.indexOf(avgColumn) === -1) {\n delete datas[index][\"count(\" + avgColumn + \")\"];\n }\n }\n\n if (isSumTypeString) {\n if (aggregateQry.sum !== avgColumn) {\n delete datas[index][\"sum(\" + avgColumn + \")\"];\n }\n else if (aggregateQry.sum.indexOf(avgColumn) === -1) {\n delete datas[index][\"sum(\" + avgColumn + \")\"];\n }\n }\n }\n }\n }\n }\n this.results = datas;\n }\n}","export const removeSpace = (value: string) => {\n return value.replace(/\\s/g, '');\n};","import { GroupByHelper } from \"./group_by_helper\";\nimport { DATA_TYPE, ERROR_TYPE, QUERY_OPTION, OrderQuery } from \"../../../common/index\";\nimport { LogHelper } from \"../../log_helper\";\nimport { getDataType, removeSpace } from \"../../utils/index\";\nimport { Column } from \"../../model/index\";\n\nexport class Helper extends GroupByHelper {\n\n processGroupDistinctAggr() {\n if (this.query.distinct) {\n const groupBy = [];\n const result = this.results[0];\n for (const key in result) {\n groupBy.push(key);\n }\n const primaryKey = this.getPrimaryKey(this.query.from),\n index = groupBy.indexOf(primaryKey);\n groupBy.splice(index, 1);\n this.query.groupBy = groupBy.length > 0 ? groupBy : null;\n }\n if (this.query.groupBy) {\n if (this.query.aggregate) {\n this.executeAggregateGroupBy();\n }\n else {\n this.processGroupBy();\n }\n }\n else if (this.query.aggregate) {\n this.processAggregateQry();\n }\n }\n\n private getOrderColumnInfo_(orderColumn: string): Column {\n let column: Column;\n if (this.query.join == null) {\n column = this.getColumnInfo(orderColumn, this.query.from);\n }\n else {\n const splittedByDot = removeSpace(orderColumn).split(\".\");\n orderColumn = splittedByDot[1];\n column = this.getColumnInfo(orderColumn, splittedByDot[0]);\n }\n if (column == null) {\n this.onErrorOccured(new LogHelper(ERROR_TYPE.ColumnNotExist, { column: orderColumn, isOrder: true }), true);\n }\n return column;\n }\n\n private compareStringInDesc_(a: string, b: string) {\n return b.localeCompare(a);\n }\n\n private compareStringinAsc_(a: string, b: string) {\n return a.localeCompare(b);\n }\n\n private compareDefaultInDesc_(a: string, b: string) {\n return b.toString().localeCompare(a);\n }\n\n private compareDefaultinAsc_(a: string, b: string) {\n return a.toString().localeCompare(b);\n }\n\n private compareNumberInDesc_(a: number, b: number) {\n return b - a;\n }\n\n private compareNumberinAsc_(a: number, b: number) {\n return a - b;\n }\n\n private compareDateInDesc_(a: Date, b: Date) {\n return b.getTime() - a.getTime();\n }\n\n private compareDateInAsc_(a: Date, b: Date) {\n return a.getTime() - b.getTime();\n }\n\n private getValueComparer_(column: Column, order: OrderQuery): (a, b) => number {\n\n switch (column.dataType) {\n case DATA_TYPE.String:\n return order.type === 'asc' ? this.compareStringinAsc_ : this.compareStringInDesc_;\n case DATA_TYPE.Number:\n return order.type === 'asc' ? this.compareNumberinAsc_ : this.compareNumberInDesc_;\n case DATA_TYPE.DateTime:\n return order.type === 'asc' ? this.compareDateInAsc_ : this.compareDateInDesc_;\n default:\n return order.type === 'asc' ? this.compareDefaultinAsc_ : this.compareDefaultInDesc_;\n }\n\n }\n\n private orderBy_(order: OrderQuery) {\n order.type = this.getOrderType_(order.type);\n let orderColumn = order.by;\n const columnInfo = this.getOrderColumnInfo_(orderColumn);\n if (columnInfo != null) {\n const orderMethod = this.getValueComparer_(columnInfo, order);\n orderColumn = columnInfo.name;\n if (order.case == null || order.case[orderColumn] == null) {\n this.results.sort((a, b) => {\n return orderMethod(a[orderColumn], b[orderColumn]);\n });\n }\n else {\n this.results.sort((a, b) => {\n return orderMethod(\n this.getThenValue(orderColumn, a, order.case),\n this.getThenValue(orderColumn, b, order.case));\n });\n }\n }\n }\n\n private getOrderType_(type: string) {\n return type == null ? 'asc' : type.toLowerCase();\n }\n\n protected processOrderBy() {\n const order = this.query.order;\n if (order && this.results.length > 0 && !this.sorted) {\n const orderQueryType = getDataType(order);\n if (orderQueryType === DATA_TYPE.Object) {\n this.orderBy_(order);\n }\n else if (orderQueryType === DATA_TYPE.Array) {\n this.orderBy_(order[0]);\n for (let i = 1, length = (order as any).length; i < length; i++) {\n if (this.error == null) {\n const prevOrderQueryBy = order[i - 1].by;\n const currentOrderQuery: OrderQuery = order[i];\n let currentorderQueryBy = currentOrderQuery.by;\n const orderColumnDetail = this.getOrderColumnInfo_(currentorderQueryBy);\n if (orderColumnDetail != null) {\n currentorderQueryBy = orderColumnDetail.name;\n currentOrderQuery.type = this.getOrderType_(currentOrderQuery.type);\n const orderMethod = this.getValueComparer_(orderColumnDetail, currentOrderQuery);\n this.results.sort((a, b) => {\n if (a[prevOrderQueryBy] === b[prevOrderQueryBy]) {\n return orderMethod(a[currentorderQueryBy], b[currentorderQueryBy]);\n }\n return 0;\n });\n }\n }\n }\n }\n }\n }\n\n protected processAggregateQry() {\n const datas = this.results;\n const datasLength = datas.length;\n const results = {};\n let columnToAggregate;\n // free results memory\n this.results = undefined;\n const getCount = () => {\n let result = 0;\n for (const i in datas) {\n result += datas[i][columnToAggregate] ? 1 : 0;\n }\n return result;\n };\n const getMax = () => {\n let result = 0;\n for (const i in datas) {\n result = result > datas[i][columnToAggregate] ?\n result : datas[i][columnToAggregate];\n }\n return result;\n };\n const getMin = () => {\n let result = Infinity, value = Infinity;\n for (const i in datas) {\n value = datas[i][columnToAggregate] ?\n datas[i][columnToAggregate] : Infinity;\n result = result < value ? result : value;\n }\n return result;\n };\n const getSum = () => {\n let result = 0;\n for (const i in datas) {\n result += datas[i][columnToAggregate];\n }\n return result;\n };\n const getAvg = () => {\n let result = 0;\n for (const i in datas) {\n result += datas[i][columnToAggregate];\n }\n return result / datasLength;\n };\n for (const prop in this.query.aggregate) {\n const aggregateColumn = this.query.aggregate[prop];\n const aggregateValType = getDataType(aggregateColumn);\n let aggregateCalculator;\n switch (prop) {\n case 'count':\n aggregateCalculator = getCount; break;\n case 'max':\n aggregateCalculator = getMax; break;\n case 'min':\n aggregateCalculator = getMin; break;\n case 'sum':\n aggregateCalculator = getSum; break;\n case 'avg':\n aggregateCalculator = getAvg; break;\n }\n switch (aggregateValType) {\n case DATA_TYPE.String:\n columnToAggregate = aggregateColumn;\n results[`${prop}(${columnToAggregate})`] = aggregateCalculator();\n break;\n case DATA_TYPE.Array:\n for (const key in aggregateColumn) {\n columnToAggregate = aggregateColumn[key];\n results[`${prop}(${columnToAggregate})`] = aggregateCalculator();\n }\n }\n }\n\n // add results to the first index of result\n for (const prop in results) {\n datas[0][prop] = results[prop];\n }\n this.results = [datas[0]];\n }\n}","import * as Select from './instance';\nimport { QUERY_OPTION, DATA_TYPE, ERROR_TYPE, JoinQuery } from \"../../../common/index\";\nimport { Helper } from \"./orderby_helper\";\nimport { LogHelper } from \"../../log_helper\";\nimport { getDataType, removeSpace } from \"../../utils/index\";\n\nexport class Join extends Helper {\n\n private joinQueryStack_: JoinQuery[] = [];\n private currentQueryStackIndex_ = 0;\n tablesFetched = [];\n\n executeJoinQuery() {\n const query = this.query;\n if (getDataType(query.join) === DATA_TYPE.Object) {\n this.joinQueryStack_ = [query.join as JoinQuery];\n }\n else {\n this.joinQueryStack_ = query.join as JoinQuery[];\n }\n // get the data for first table\n const tableName = query.from;\n new Select.Instance({\n from: tableName,\n where: query.where,\n case: query.case\n }, results => {\n this.results = results.map((item) => {\n return {\n [this.currentQueryStackIndex_]: item\n }\n });\n this.tablesFetched.push(tableName);\n this.startExecutingJoinLogic_();\n }, this.onError).execute();\n }\n\n private onJoinQueryFinished_() {\n if (this.error == null) {\n if (this.results.length > 0) {\n\n if (this.query[QUERY_OPTION.Skip] && !this.query[QUERY_OPTION.Limit]) {\n this.results.splice(0, this.query[QUERY_OPTION.Skip]);\n }\n\n try {\n let results = [];\n const tables = Object.keys(this.results[0]);\n const tablesLength = tables.length;\n const mapWithAlias = (query: JoinQuery, value: object) => {\n if (query.as != null) {\n for (const key in query.as) {\n if (value[(query.as as any)[key]] === undefined) {\n value[(query.as as any)[key]] = value[key];\n delete value[key];\n }\n }\n }\n return value;\n };\n this.results.forEach((result) => {\n let data = result[\"0\"]; // first table data\n for (let i = 1; i < tablesLength; i++) {\n const query = this.joinQueryStack_[i - 1];\n data = { ...data, ...mapWithAlias(query, result[i]) };\n }\n results.push(data);\n });\n this.results = results;\n // free results memory\n results = null;\n if (process.env.NODE_ENV === 'dev') {\n try {\n this.processOrderBy();\n }\n catch (ex) {\n this.onError({\n message: ex.message,\n type: ERROR_TYPE.InvalidOrderQuery\n });\n return;\n }\n }\n else {\n this.processOrderBy();\n }\n\n if (process.env.NODE_ENV === 'dev') {\n try {\n this.processGroupDistinctAggr();\n }\n catch (ex) {\n this.onError({\n message: ex.message,\n type: ERROR_TYPE.InvalidGroupQuery\n });\n return;\n }\n }\n else {\n this.processGroupDistinctAggr();\n }\n }\n catch (ex) {\n this.onError({\n message: ex.message,\n type: ERROR_TYPE.InvalidJoinQuery\n });\n return;\n }\n\n if (this.query[QUERY_OPTION.Skip] && this.query[QUERY_OPTION.Limit]) {\n this.results.splice(0, this.query[QUERY_OPTION.Skip]);\n this.results = this.results.slice(0, this.query[QUERY_OPTION.Limit]);\n }\n else if (this.query[QUERY_OPTION.Limit]) {\n this.results = this.results.slice(0, this.query[QUERY_OPTION.Limit]);\n }\n }\n this.onSuccess(this.results);\n }\n else {\n this.onError(this.error);\n }\n }\n\n private startExecutingJoinLogic_() {\n const query = this.joinQueryStack_[this.currentQueryStackIndex_];\n if (query) {\n try {\n let jointblInfo = this.getJoinTableInfo_(query.on);\n // table 1 is fetched & table2 needs to be fetched for join\n if (query.with === jointblInfo.table1.table) {\n jointblInfo = {\n table1: jointblInfo.table2,\n table2: jointblInfo.table1\n };\n }\n\n if (process.env.NODE_ENV === 'dev') {\n this.checkJoinQuery_(jointblInfo, query);\n if (this.error != null) {\n this.onJoinQueryFinished_();\n return;\n }\n }\n\n new Select.Instance({\n from: query.with,\n where: query.where,\n case: query.case\n }, results => {\n this.jointables(query.type, jointblInfo, results);\n this.tablesFetched.push(jointblInfo.table2.table);\n ++this.currentQueryStackIndex_;\n this.startExecutingJoinLogic_();\n }, this.onError).execute();\n }\n catch (ex) {\n this.onExceptionOccured(ex);\n }\n }\n else {\n this.onJoinQueryFinished_();\n }\n }\n\n private jointables(joinType: string, jointblInfo: JoinTableInfo, secondtableData: any[]) {\n\n const results = [];\n const column1 = jointblInfo.table1.column;\n const column2 = jointblInfo.table2.column;\n const table1Index = this.tablesFetched.indexOf(jointblInfo.table1.table);\n const table2Index = this.currentQueryStackIndex_ + 1;\n const performInnerJoin = () => {\n let index = 0;\n this.results.forEach(valueFromFirstTable => {\n secondtableData.forEach((valueFromSecondTable) => {\n if (valueFromFirstTable[table1Index][column1] === valueFromSecondTable[column2]) {\n results[index] = { ...valueFromFirstTable };\n results[index++][table2Index] = valueFromSecondTable;\n }\n });\n });\n };\n const performleftJoin = () => {\n let index = 0;\n let valueMatchedFromSecondTable: any[];\n let callBack;\n const columnDefaultValue = {};\n this.getTable(jointblInfo.table2.table).columns.forEach(col => {\n columnDefaultValue[col.name] = null;\n });\n this.results.forEach((valueFromFirstTable) => {\n valueMatchedFromSecondTable = [];\n if (table2Index === 1) {\n callBack = function (valueFromSecondTable) {\n if (valueFromFirstTable[table1Index][column1] === valueFromSecondTable[column2]) {\n valueMatchedFromSecondTable.push(valueFromSecondTable);\n }\n };\n }\n else {\n callBack = function (valueFromSecondTable) {\n const value = valueFromFirstTable[table1Index];\n if (value != null && value[column1] === valueFromSecondTable[column2]) {\n valueMatchedFromSecondTable.push(valueFromSecondTable);\n }\n };\n }\n secondtableData.forEach(callBack);\n if (valueMatchedFromSecondTable.length === 0) {\n valueMatchedFromSecondTable = [columnDefaultValue];\n }\n valueMatchedFromSecondTable.forEach(function (value) {\n results[index] = { ...valueFromFirstTable };\n results[index++][table2Index] = value;\n });\n });\n };\n switch (joinType) {\n case \"left\":\n performleftJoin(); break;\n default:\n performInnerJoin();\n }\n this.results = results;\n }\n\n private getJoinTableInfo_(joinOn: string) {\n joinOn = removeSpace(joinOn);\n const splittedjoinOn = joinOn.split(\"=\");\n const splittedjoinOnbydotFirst = splittedjoinOn[0].split(\".\");\n const splittedjoinOnbydotSecond = splittedjoinOn[1].split(\".\");\n const info = {\n table1: {\n table: splittedjoinOnbydotFirst[0],\n column: splittedjoinOnbydotFirst[1]\n },\n table2: {\n table: splittedjoinOnbydotSecond[0],\n column: splittedjoinOnbydotSecond[1]\n }\n } as JoinTableInfo;\n return info;\n }\n\n private checkJoinQuery_(jointblInfo: JoinTableInfo, qry: JoinQuery) {\n const table1 = jointblInfo.table1;\n const table2 = jointblInfo.table2;\n const tableSchemaOf1stTable = this.getTable(table1.table);\n const tableSchemaOf2ndTable = this.getTable(table2.table);\n let err: LogHelper;\n\n // check on info & with info \n if (qry.with !== table2.table) {\n err = new LogHelper(ERROR_TYPE.InvalidJoinQuery,\n `on value should contains value of with`\n );\n }\n\n // check for column existance\n\n if (tableSchemaOf1stTable.columns.find(q => q.name === table1.column) == null) {\n err = new LogHelper(ERROR_TYPE.InvalidJoinQuery,\n `column ${table1.column} does not exist in table ${table1.table}`\n );\n }\n else if (tableSchemaOf2ndTable.columns.find(q => q.name === table2.column) == null) {\n err = new LogHelper(ERROR_TYPE.InvalidJoinQuery,\n `column ${table2.column} does not exist in table ${table2.table}`\n );\n }\n\n // check for column match in both table\n if (qry.as == null) {\n qry.as = {};\n }\n tableSchemaOf1stTable.columns.every(function (column) {\n const columnFound = tableSchemaOf2ndTable.columns.find(q => q.name === column.name && q.name !== table1.column);\n if (columnFound != null && qry.as[columnFound.name] == null) {\n err = new LogHelper(ERROR_TYPE.InvalidJoinQuery,\n `column ${column.name} exist in both table ${table1.table} & ${table2.table}`\n );\n return false;\n }\n return true;\n });\n if (err != null) {\n this.onErrorOccured(err, true);\n }\n }\n}\n\ntype JoinTableInfo = {\n table1: { table: string, column: string }\n table2: { table: string, column: string }\n};","import { SelectQuery, IError, IDB_MODE, QUERY_OPTION, API } from \"../../../common/index\";\nimport { Join } from \"./join\";\nimport { QueryHelper } from \"../query_helper\";\nimport { isArray, getObjectFirstKey } from \"../../utils/index\";\n\nexport class Instance extends Join {\n\n constructor(query: SelectQuery, onSuccess: (results: object[]) => void, onError: (err: IError) => void) {\n super();\n this.onError = onError;\n this.onSuccess = onSuccess;\n if (query.case == null) {\n query.case = {};\n }\n this.query = query;\n this.skipRecord = query.skip;\n this.limitRecord = query.limit;\n this.tableName = query.from;\n if (query.order) {\n if (isArray(query.order) || query.order.case != null) {\n this.query.order.idbSorting = false;\n }\n\n if (query.limit != null) {\n this.isOrderWithLimit = true;\n }\n if (query.skip != null) {\n this.isOrderWithSkip = true;\n }\n }\n\n }\n\n execute() {\n const queryHelper = new QueryHelper(API.Select, this.query);\n queryHelper.checkAndModify();\n if (queryHelper.error == null) {\n try {\n if (this.query.join == null) {\n if (this.query.where != null) {\n this.initTransaction_();\n if (isArray(this.query.where)) {\n this.processWhereArrayQry();\n }\n else {\n this.processWhere_();\n }\n }\n else {\n this.initTransaction_();\n this.executeWhereUndefinedLogic();\n }\n\n }\n else {\n this.executeJoinQuery();\n }\n }\n catch (ex) {\n this.onExceptionOccured(ex);\n }\n }\n else {\n this.onError(\n queryHelper.error\n );\n }\n }\n\n\n private processWhereArrayQry() {\n this.isArrayQry = true;\n const whereQuery = this.query.where,\n pKey = this.getPrimaryKey(this.query.from);\n let isFirstWhere = true, output = [], operation;\n\n const isItemExist = (keyValue) => {\n return output.findIndex(item => item[pKey] === keyValue) >= 0;\n };\n const onSuccess = () => {\n if (operation === QUERY_OPTION.And) {\n const doAnd = () => {\n let andResults = [];\n this.results.forEach((item) => {\n if (isItemExist(item[pKey])) {\n andResults.push(item);\n }\n });\n output = andResults;\n andResults = null;\n };\n if (output.length > 0) {\n doAnd();\n }\n else if (isFirstWhere === true) {\n output = this.results;\n }\n else {\n doAnd();\n }\n }\n else {\n if (output.length > 0) {\n this.results = [...output, ...this.results];\n this.removeDuplicates();\n output = this.results;\n }\n else {\n output = this.results;\n }\n }\n isFirstWhere = false;\n if (whereQuery.length > 0) {\n this.results = [];\n processFirstQry();\n }\n else {\n this.results = output;\n if (this.isSubQuery === true) {\n this.onTransactionCompleted_();\n }\n }\n\n };\n const processFirstQry = () => {\n this.query.where = whereQuery.shift();\n if (this.query.where[QUERY_OPTION.Or]) {\n if (Object.keys(this.query.where).length === 1) {\n operation = QUERY_OPTION.Or;\n this.query.where = this.query.where[QUERY_OPTION.Or];\n this.onWhereArrayQrySuccess = onSuccess;\n }\n else {\n operation = QUERY_OPTION.And;\n this.onWhereArrayQrySuccess = onSuccess;\n }\n }\n else {\n operation = QUERY_OPTION.And;\n this.onWhereArrayQrySuccess = onSuccess;\n }\n this.processWhere_();\n };\n processFirstQry();\n }\n\n protected onQueryFinished() {\n if (this.isOr === true) {\n this.orQuerySuccess_();\n }\n else if (this.isArrayQry === true) {\n this.onWhereArrayQrySuccess();\n }\n else if (this.isTransaction === true || this.isSubQuery === true) {\n this.onTransactionCompleted_();\n }\n }\n\n private initTransaction_() {\n this.createTransaction([this.tableName], this.onTransactionCompleted_, IDB_MODE.ReadOnly);\n this.objectStore = this.transaction.objectStore(this.tableName);\n }\n\n private processWhere_() {\n if (this.query.where.or) {\n this.processOrLogic_();\n }\n this.goToWhereLogic();\n }\n\n private onTransactionCompleted_ = () => {\n if (this.error == null) {\n this.processOrderBy();\n if (!this.error) {\n if (this.query.order && this.query.skip) {\n this.results.splice(0, this.query.skip);\n }\n if (this.isOrderWithLimit === true) {\n this.results = this.results.slice(0, this.query.limit);\n }\n this.processGroupDistinctAggr();\n this.onSuccess(this.results);\n }\n else {\n this.onError(this.error);\n }\n }\n else {\n this.onError(this.error);\n }\n }\n\n private orQueryFinish_() {\n this.isOr = false;\n this.results = this.orInfo.results;\n // free or info memory\n this.orInfo = undefined;\n this.removeDuplicates();\n this.onQueryFinished();\n }\n\n private orQuerySuccess_() {\n this.orInfo.results = [... this.orInfo.results, ...this.results];\n if (!this.query.limit || (this.query.limit > this.orInfo.results.length)) {\n this.results = [];\n const key = getObjectFirstKey(this.orInfo.orQuery);\n if (key != null) {\n const where = {};\n where[key] = this.orInfo.orQuery[key];\n delete this.orInfo.orQuery[key];\n this.query.where = where;\n this.goToWhereLogic();\n }\n else {\n this.orQueryFinish_();\n }\n }\n else {\n this.orQueryFinish_();\n }\n }\n\n private processOrLogic_() {\n this.isOr = true;\n this.orInfo = {\n orQuery: this.query.where.or,\n results: []\n };\n // free or memory\n delete this.query.where.or;\n }\n}","import { WhereBase } from \"../where_base\";\nimport { CountQuery } from \"../../../common/index\";\n\nexport class BaseCount extends WhereBase {\n resultCount = 0;\n query: CountQuery;\n\n protected onQueryFinished() {\n if (this.isTransaction === true) {\n this.onTransactionCompleted_();\n }\n }\n\n protected onTransactionCompleted_ = () => {\n if (this.error == null) {\n this.onSuccess(this.resultCount);\n }\n else {\n this.onError(this.error);\n }\n }\n}\n","import { BaseCount } from \"./base_count\";\n\nexport class NotWhere extends BaseCount {\n protected executeWhereUndefinedLogic() {\n let countRequest;\n if (this.objectStore.count) {\n countRequest = this.objectStore.count();\n countRequest.onsuccess = () => {\n this.resultCount = countRequest.result;\n this.onQueryFinished();\n };\n }\n else {\n let cursor;\n countRequest = this.objectStore.openCursor();\n countRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n ++this.resultCount;\n cursor.continue();\n }\n else {\n this.onQueryFinished();\n }\n };\n }\n countRequest.onerror = this.onErrorOccured.bind(this);\n }\n}\n","import { NotWhere } from \"./not_where\";\nimport { promiseAll, promise } from \"../../helpers/index\";\n\nexport class In extends NotWhere {\n protected executeInLogic(column, values) {\n let cursor: IDBCursorWithValue, cursorRequest;\n const columnStore = this.objectStore.index(column);\n let runInLogic: (val) => Promise = (value) => {\n return promise((res, rej) => {\n cursorRequest = columnStore.openCursor(this.getKeyRange(value));\n cursorRequest.onsuccess = (e) => {\n cursor = e.target.result;\n if (cursor) {\n if (this.whereCheckerInstance.check(cursor.value)) {\n ++this.resultCount;\n }\n cursor.continue();\n }\n else {\n res();\n }\n };\n cursorRequest.onerror = rej;\n });\n };\n\n if (this.objectStore.count) {\n runInLogic = (value) => {\n return promise((res, rej) => {\n cursorRequest = columnStore.count(this.getKeyRange(value));\n cursorRequest.onsuccess = (e) => {\n this.resultCount += e.target.result;\n res();\n };\n cursorRequest.onerror = rej;\n });\n };\n }\n\n promiseAll(\n values.map(function (val) {\n return runInLogic(val);\n })\n ).then(() => {\n this.onQueryFinished();\n }).catch(err => {\n this.onErrorOccured(err);\n });\n }\n}","import { In } from \"./in\";\nexport class Regex extends In {\n protected executeRegexLogic(column: string, exp: RegExp) {\n let cursor: IDBCursorWithValue;\n this.regexExpression = exp;\n const cursorRequest = this.objectStore.index(column).openCursor();\n\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (this.regexTest(cursor.key) &&\n this.whereCheckerInstance.check(cursor.value)) {\n ++this.resultCount;\n }\n cursor.continue();\n }\n else {\n this.onQueryFinished();\n }\n };\n\n cursorRequest.onerror = this.onErrorOccured.bind(this);\n\n }\n}","import { Regex } from \"./regex\";\n\nexport class Where extends Regex {\n protected executeWhereLogic(column, value, op) {\n value = op ? value[op] : value;\n let cursorRequest;\n let cursor: IDBCursorWithValue;\n let initCursorAndFilter;\n if (this.objectStore.count) {\n initCursorAndFilter = () => {\n cursorRequest = this.objectStore.index(column).count(this.getKeyRange(value, op));\n cursorRequest.onsuccess = () => {\n this.resultCount = cursorRequest.result;\n this.onQueryFinished();\n };\n };\n\n }\n else {\n initCursorAndFilter = () => {\n cursorRequest = this.objectStore.index(column).openCursor(this.getKeyRange(value, op));\n cursorRequest.onsuccess = (e) => {\n cursor = e.target.result;\n if (cursor) {\n if (this.whereCheckerInstance.check(cursor.value)) {\n ++this.resultCount;\n }\n cursor.continue();\n }\n else {\n this.onQueryFinished();\n }\n };\n };\n }\n initCursorAndFilter();\n\n cursorRequest.onerror = this.onErrorOccured.bind(this);\n }\n}","import { Where } from \"./where\";\nimport { IError, API, CountQuery, IDB_MODE } from \"../../../common/index\";\nimport * as Select from '../select/index';\nimport { QueryHelper } from \"../query_helper\";\nimport { isArray } from \"../../utils/index\";\n\nexport class Instance extends Where {\n\n constructor(query: CountQuery, onSuccess: (noOfRecord: number) => void, onError: (error: IError) => void) {\n super();\n this.onError = onError;\n this.onSuccess = onSuccess;\n this.query = query;\n }\n\n execute() {\n const queryHelper = new QueryHelper(API.Count, this.query);\n queryHelper.checkAndModify();\n if (queryHelper.error == null) {\n try {\n const getDataFromSelect = () => {\n const selectInstance = new Select.Instance(this.query as any,\n (results) => {\n this.resultCount = results.length;\n this.onTransactionCompleted_();\n }, this.onError);\n selectInstance.execute();\n };\n if (this.query.join == null) {\n if (this.query.where != null) {\n if (this.query.where.or || isArray(this.query.where)) {\n getDataFromSelect();\n }\n else {\n this.initTransaction_();\n this.goToWhereLogic();\n }\n }\n else {\n this.initTransaction_();\n this.executeWhereUndefinedLogic();\n }\n }\n else {\n getDataFromSelect();\n }\n }\n catch (ex) {\n this.onExceptionOccured(ex);\n }\n }\n else {\n this.onError(\n queryHelper.error\n );\n }\n }\n\n private initTransaction_() {\n this.createTransaction([this.query.from], this.onTransactionCompleted_, IDB_MODE.ReadOnly);\n this.objectStore = this.transaction.objectStore(this.query.from);\n }\n}","import { WhereBase } from \"../where_base\";\nimport { RemoveQuery } from \"../../../common/index\";\n\nexport class BaseRemove extends WhereBase {\n\n isOr: boolean;\n query: RemoveQuery;\n\n protected onQueryFinished() {\n // ff\n }\n}\n","import { BaseRemove } from \"./base_remove\";\n\nexport class NotWhere extends BaseRemove {\n protected executeWhereUndefinedLogic() {\n let cursor;\n const cursorRequest = this.objectStore.openCursor();\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n cursor.delete();\n ++this.rowAffected;\n (cursor as any).continue();\n }\n else {\n this.onQueryFinished();\n }\n };\n cursorRequest.onerror = this.onErrorOccured.bind(this);\n }\n}\n","import { NotWhere } from \"./not_where\";\nimport { promiseAll, promise } from \"../../helpers/index\";\n\nexport class In extends NotWhere {\n protected executeInLogic(column, values) {\n let cursor: IDBCursorWithValue, cursorRequest;\n const runInLogic: (val) => Promise = (value) => {\n return promise((res, rej) => {\n cursorRequest = this.objectStore.index(column).openCursor(this.getKeyRange(value));\n cursorRequest.onsuccess = (e) => {\n cursor = e.target.result;\n if (cursor) {\n if (this.whereCheckerInstance.check(cursor.value)) {\n cursor.delete();\n ++this.rowAffected;\n }\n cursor.continue();\n }\n else {\n res();\n }\n };\n cursorRequest.onerror = rej;\n });\n };\n\n promiseAll(\n values.map(function (val) {\n return runInLogic(val);\n })\n ).then(() => {\n this.onQueryFinished();\n }).catch(err => {\n this.onErrorOccured(err);\n });\n }\n}","import { In } from \"./in\";\n\nexport class Regex extends In {\n protected executeRegexLogic(column: string, exp: RegExp) {\n let cursor: IDBCursorWithValue;\n this.regexExpression = exp;\n const cursorRequest = this.objectStore.index(column).openCursor();\n\n cursorRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (this.regexTest(cursor.key) &&\n this.whereCheckerInstance.check(cursor.value)) {\n cursor.delete();\n ++this.rowAffected;\n }\n cursor.continue();\n }\n else {\n this.onQueryFinished();\n }\n };\n cursorRequest.onerror = this.onErrorOccured.bind(this);\n }\n}","import { Regex } from \"./regex\";\n\nexport class Where extends Regex {\n protected executeWhereLogic(column, value, op) {\n let cursor: IDBCursorWithValue,\n cursorRequest;\n value = op ? value[op] : value;\n cursorRequest = this.objectStore.index(column).openCursor(this.getKeyRange(value, op));\n\n cursorRequest.onsuccess = (e) => {\n cursor = e.target.result;\n if (cursor) {\n if (this.whereCheckerInstance.check(cursor.value)) {\n cursor.delete();\n ++this.rowAffected;\n }\n cursor.continue();\n }\n else {\n this.onQueryFinished();\n }\n };\n\n cursorRequest.onerror = this.onErrorOccured.bind(this);\n }\n}\n","import { Where } from \"./where\";\nimport { RemoveQuery, QUERY_OPTION, API, IError } from \"../../../common/index\";\nimport * as Select from '../select/index';\nimport { QueryHelper } from \"../index\";\nimport { getObjectFirstKey, isArray } from \"../../utils/index\";\n\nexport class Instance extends Where {\n\n\n constructor(\n query: RemoveQuery, onSuccess: (recordRemoved: number) => void,\n onError: (err: IError) => void\n ) {\n super();\n this.query = query;\n this.onSuccess = onSuccess;\n this.onError = onError;\n }\n\n execute() {\n const queryHelper = new QueryHelper(API.Remove, this.query);\n queryHelper.checkAndModify();\n if (queryHelper.error == null) {\n try {\n this.initTransaction_();\n if (this.query.where != null) {\n if (isArray(this.query.where)) {\n this.processWhereArrayQry();\n }\n else {\n this.processWhere_();\n }\n }\n else {\n this.executeWhereUndefinedLogic();\n }\n\n }\n catch (ex) {\n this.onExceptionOccured(ex);\n }\n }\n else {\n this.onError(\n queryHelper.error\n );\n }\n }\n\n private processWhereArrayQry() {\n const selectObject = new Select.Instance(this.query, (results) => {\n const keyList = [];\n const pkey = this.getPrimaryKey(this.query.from);\n results.forEach((item) => {\n keyList.push(item[pkey]);\n });\n results = null;\n const whereQry = { [pkey]: { [QUERY_OPTION.In]: keyList } };\n this.query.ignoreCase = null;\n this.query[QUERY_OPTION.Where] = whereQry;\n this.processWhere_();\n }, this.onError);\n selectObject.isSubQuery = true;\n selectObject.execute();\n }\n\n private processWhere_() {\n if (this.query.where.or) {\n this.processOrLogic();\n }\n this.goToWhereLogic();\n }\n\n private initTransaction_() {\n this.createTransaction([this.query.from], this.onTransactionCompleted_);\n this.objectStore = this.transaction.objectStore(this.query.from);\n }\n\n private onTransactionCompleted_ = () => {\n if (this.error == null) {\n this.onSuccess(this.rowAffected);\n }\n else {\n this.onError(this.error);\n }\n }\n\n protected onQueryFinished() {\n if (this.isOr === true) {\n this.orQuerySuccess_();\n }\n else if (this.isTransaction === true) {\n this.onTransactionCompleted_();\n }\n }\n\n private orQuerySuccess_() {\n const key = getObjectFirstKey((this as any)._orInfo.OrQuery);\n if (key != null) {\n const where = {};\n where[key] = (this as any)._orInfo.OrQuery[key];\n delete (this as any)._orInfo.OrQuery[key];\n this.query.where = where;\n this.goToWhereLogic();\n }\n else {\n this.isOr = true;\n }\n }\n\n private processOrLogic() {\n this.isOr = true;\n (this as any)._orInfo = {\n OrQuery: this.query.where.or\n };\n\n // free or memory\n delete this.query.where.or;\n }\n}","import { Base } from \"../base\";\nimport { getDataType } from \"../../utils/index\";\nimport { DATA_TYPE, UpdateQuery } from \"../../../common/index\";\n\nexport const updateValue = (suppliedValue, storedValue) => {\n for (const key in suppliedValue) {\n if (getDataType(suppliedValue[key]) !== DATA_TYPE.Object) {\n storedValue[key] = suppliedValue[key];\n }\n else {\n for (const op in suppliedValue[key]) {\n switch (op as any) {\n case '+': storedValue[key] += suppliedValue[key][op]; break;\n case '-': storedValue[key] -= suppliedValue[key][op]; break;\n case '*': storedValue[key] *= suppliedValue[key][op]; break;\n case '/': storedValue[key] /= suppliedValue[key][op]; break;\n default: storedValue[key] = suppliedValue[key];\n }\n break;\n }\n }\n }\n return storedValue;\n};\n\nexport class BaseUpdate extends Base {\n query: UpdateQuery;\n protected initTransaction() {\n this.createTransaction([this.query.in], this.onTransactionCompleted_);\n this.objectStore = this.transaction.objectStore(this.query.in);\n }\n\n protected onQueryFinished() {\n if (this.isTransaction === true) {\n this.onTransactionCompleted_();\n }\n }\n\n private onTransactionCompleted_ = () => {\n if (this.error) {\n this.onError(this.error);\n }\n else {\n this.onSuccess(this.rowAffected);\n }\n }\n}\n","import { BaseUpdate, updateValue } from \"./base_update\";\n\nexport class NotWhere extends BaseUpdate {\n\n protected executeWhereUndefinedLogic() {\n let cursor: IDBCursorWithValue;\n const cursorRequest: IDBRequest = this.objectStore.openCursor();\n cursorRequest.onsuccess = (e) => {\n cursor = (e as any).target.result;\n if (cursor) {\n try {\n const cursorUpdateRequest = cursor.update(updateValue(this.query.set, cursor.value));\n cursorUpdateRequest.onsuccess = () => {\n ++this.rowAffected;\n cursor.continue();\n };\n cursorUpdateRequest.onerror = this.onErrorOccured.bind(this);\n } catch (err) {\n this.onErrorOccured(err);\n this.transaction.abort();\n }\n }\n else {\n this.onQueryFinished();\n }\n\n };\n cursorRequest.onerror = this.onErrorOccured.bind(this);\n }\n}\n","import { NotWhere } from \"./not_where\";\nimport { updateValue } from \"./base_update\";\nimport { promiseAll, promise } from \"../../helpers/index\";\n\nexport class In extends NotWhere {\n private executeInLogic(column, values: any[]) {\n let cursor: IDBCursorWithValue;\n const columnStore = this.objectStore.index(column);\n let cursorRequest;\n const runInLogic: (val) => Promise = (value) => {\n return promise((res, rej) => {\n cursorRequest = columnStore.openCursor(this.getKeyRange(value));\n cursorRequest.onsuccess = (e) => {\n cursor = e.target.result;\n if (cursor) {\n if (this.whereCheckerInstance.check(cursor.value)) {\n cursor.update(updateValue(this.query.set, cursor.value));\n ++this.rowAffected;\n }\n cursor.continue();\n }\n else {\n res();\n }\n };\n cursorRequest.onerror = rej;\n });\n };\n\n promiseAll(\n values.map(function (val) {\n return runInLogic(val);\n })\n ).then(() => {\n this.onQueryFinished();\n }).catch(err => {\n this.onErrorOccured(err);\n });\n }\n}","import { In } from \"./in\";\nimport { updateValue } from \"./base_update\";\n\nexport class Regex extends In {\n protected executeRegexLogic(column: string, exp: RegExp) {\n let cursor: IDBCursorWithValue;\n this.regexExpression = exp;\n const cursorOpenRequest = this.objectStore.index(column).openCursor();\n cursorOpenRequest.onsuccess = (e: any) => {\n cursor = e.target.result;\n if (cursor) {\n if (this.regexTest(cursor.key) &&\n this.whereCheckerInstance.check(cursor.value)) {\n try {\n const cursorUpdateRequest = cursor.update(updateValue(this.query.set, cursor.value));\n cursorUpdateRequest.onsuccess = () => {\n ++this.rowAffected;\n cursor.continue();\n };\n cursorUpdateRequest.onerror = this.onErrorOccured.bind(this);\n } catch (err) {\n this.transaction.abort();\n this.onErrorOccured(err);\n }\n }\n else {\n cursor.continue();\n }\n\n }\n else {\n this.onQueryFinished();\n }\n };\n cursorOpenRequest.onerror = this.onErrorOccured.bind(this);\n }\n}\n","import { updateValue } from \"./base_update\";\nimport { Regex } from \"./regex\";\n\nexport class Where extends Regex {\n protected executeWhereLogic(column, value, op) {\n let cursor: IDBCursorWithValue,\n cursorRequest;\n value = op ? value[op] : value;\n cursorRequest = this.objectStore.index(column).openCursor(this.getKeyRange(value, op));\n\n cursorRequest.onsuccess = (e) => {\n cursor = e.target.result;\n if (cursor) {\n if (this.whereCheckerInstance.check(cursor.value)) {\n try {\n const cursorUpdateRequest = cursor.update(updateValue(this.query.set, cursor.value));\n cursorUpdateRequest.onsuccess = () => {\n ++this.rowAffected;\n cursor.continue();\n };\n cursorUpdateRequest.onerror = this.onErrorOccured.bind(this);\n } catch (err) {\n this.transaction.abort();\n this.onErrorOccured(err);\n }\n }\n else {\n cursor.continue();\n }\n }\n else {\n this.onQueryFinished();\n }\n };\n cursorRequest.onerror = this.onErrorOccured.bind(this);\n\n }\n}","import { Where } from \"./where\";\nimport * as Select from \"../select/index\";\nimport { QueryHelper } from \"../query_helper\";\nimport { isArray } from \"../../utils/index\";\nimport { UpdateQuery, IError, API, SelectQuery, QUERY_OPTION } from \"../../../common/index\";\n\nexport class Instance extends Where {\n\n constructor(query: UpdateQuery, onSuccess: (rowsUpdated: number) => void, onError: (err: IError) => void) {\n super();\n this.onSuccess = onSuccess;\n this.onError = onError;\n this.query = query;\n this.tableName = this.query.in;\n }\n\n execute() {\n const queryHelper = new QueryHelper(API.Update, this.query);\n queryHelper.checkAndModify();\n if (queryHelper.error == null) {\n try {\n this.initTransaction();\n if (this.query.where != null) {\n if (this.query.where.or || isArray(this.query.where)) {\n this.executeComplexLogic_();\n }\n else {\n this.goToWhereLogic();\n }\n }\n else {\n this.executeWhereUndefinedLogic();\n }\n }\n catch (ex) {\n this.onExceptionOccured(ex);\n }\n }\n else {\n this.onError(\n queryHelper.error\n );\n }\n }\n\n private executeComplexLogic_() {\n const selectObject = new Select.Instance({\n from: this.query.in,\n where: this.query.where,\n ignoreCase: this.query.ignoreCase\n } as SelectQuery, (results: any[]) => {\n const key = this.getPrimaryKey(this.query.in);\n const inQuery = [];\n results.forEach((value) => {\n inQuery.push(value[key]);\n });\n results = null;\n const whereQry = { [key]: { [QUERY_OPTION.In]: inQuery } };\n this.query.ignoreCase = null;\n this.query[QUERY_OPTION.Where] = whereQry;\n this.initTransaction();\n this.goToWhereLogic();\n }, this.onError);\n selectObject.isSubQuery = true;\n selectObject.execute();\n }\n}\n","import { DATA_TYPE } from \"../../common/index\";\n\nexport const getDataType = (value) => {\n if (value == null) {\n return DATA_TYPE.Null;\n }\n const type = typeof value;\n switch (type) {\n case 'object':\n if (Array.isArray(value)) {\n return DATA_TYPE.Array;\n }\n else if (value.getDate && value.getTime) {\n return DATA_TYPE.DateTime;\n }\n default:\n return type;\n }\n}","export const isArray = (value) => {\n return Array.isArray(value);\n};","export const getObjectFirstKey = (value) => {\n for (const key in value) {\n return key;\n }\n return null;\n};","import {\n TranscationQuery, WebWorkerRequest, SelectQuery, RemoveQuery,\n CountQuery, UpdateQuery, InsertQuery, ERROR_TYPE, API, IError\n} from \"../../../common/index\";\nimport { Base } from \"../base\";\nimport * as Select from '../select/index';\nimport * as Count from '../count/index';\nimport * as Insert from '../insert/index';\nimport * as Remove from '../remove/index';\nimport * as Update from '../update/index';\nimport { QueryHelper } from \"../query_helper\";\nimport { LogHelper } from \"../../log_helper\";\nimport { promise, promiseAll, getAutoIncrementValues } from \"../../helpers/index\";\nimport { Config } from \"../../config\";\n\nexport class Instance extends Base {\n query: TranscationQuery;\n results;\n requestQueue: WebWorkerRequest[] = [];\n isQueryExecuting = false;\n\n isTxStarted_ = false;\n\n constructor(qry: TranscationQuery, onSuccess: (results: any) => void, onError: (err: IError) => void) {\n super();\n this.query = qry;\n this.onError = onError;\n this.onSuccess = onSuccess;\n this.results = {};\n }\n\n execute() {\n const notExistingTable = this.getNotExistingTable_(this.query.tables);\n if (notExistingTable != null) {\n this.onError(new LogHelper(ERROR_TYPE.TableNotExist, { tableName: notExistingTable }).get());\n return;\n }\n promiseAll(this.query.tables.map(table => {\n return getAutoIncrementValues(this.getTable(table));\n })).then(results => {\n results.forEach((result: any, index) => {\n QueryHelper.autoIncrementValues[this.query.tables[index]] = result;\n });\n this.startExecution_();\n }).catch(this.onError);\n }\n\n private startExecution_() {\n const select = (qry: SelectQuery) => {\n return this.pushRequest_({\n name: API.Select,\n query: qry\n } as WebWorkerRequest);\n };\n const insert = (qry: InsertQuery) => {\n return this.pushRequest_({\n name: API.Insert,\n query: qry\n } as WebWorkerRequest);\n };\n const update = (qry: UpdateQuery) => {\n return this.pushRequest_({\n name: API.Update,\n query: qry\n } as WebWorkerRequest);\n };\n const remove = (qry: RemoveQuery) => {\n return this.pushRequest_({\n name: API.Remove,\n query: qry\n } as WebWorkerRequest);\n };\n const count = (qry: CountQuery) => {\n return this.pushRequest_({\n name: API.Count,\n query: qry\n } as WebWorkerRequest);\n };\n const setResult = (key: string, value) => {\n this.results[key] = value;\n };\n const getResult = (key: string) => {\n return this.results[key];\n };\n const abort = (msg: string) => {\n this.abortTransaction_(msg);\n };\n\n const start = () => {\n this.checkQueries_(this.requestQueue).then((results) => {\n this.startTransaction_();\n }).catch((err) => {\n this.onError(err);\n });\n };\n let txLogic = null;\n if (Config.isRuningInWorker === true) {\n eval(\"txLogic =\" + this.query.logic);\n\n }\n else {\n txLogic = this.query.logic;\n }\n txLogic.call(\n this,\n {\n data: this.query.data,\n insert, select, update, remove,\n count, setResult, getResult, abort, start\n }\n );\n\n if (process.env.NODE_ENV === 'dev') {\n console.log(`transaction query started`);\n }\n }\n\n private startTransaction_() {\n try {\n this.isTxStarted_ = true;\n this.initTransaction_(this.query.tables);\n this.processExecutionOfQry_();\n }\n catch (ex) {\n this.onExceptionOccured(ex);\n }\n }\n\n private initTransaction_(tableNames: string[]) {\n this.createTransaction(tableNames, this.onTransactionCompleted_.bind(this));\n }\n\n private onTransactionCompleted_() {\n if (process.env.NODE_ENV === 'dev') {\n console.log(`transaction finished`);\n }\n this.onSuccess(this.results);\n }\n\n private onRequestFinished_(result) {\n const finisehdRequest = this.requestQueue.shift();\n if (process.env.NODE_ENV === 'dev') {\n console.log(`finished request : ${finisehdRequest.name} `);\n }\n if (finisehdRequest) {\n if (this.error) {\n this.abortTransaction_(\"automatic abort of transaction due to error occured\");\n if (process.env.NODE_ENV === 'dev') {\n console.log(`transaction aborted due to error occured`);\n }\n this.onErrorOccured(this.error);\n }\n else {\n this.isQueryExecuting = false;\n if (finisehdRequest.onSuccess) {\n finisehdRequest.onSuccess(result);\n }\n this.processExecutionOfQry_();\n }\n }\n }\n\n private abortTransaction_(msg: string) {\n if (this.transaction != null) {\n this.transaction.abort();\n if (process.env.NODE_ENV === 'dev') {\n console.log(`transaction aborted. Msg : ${msg}`);\n }\n }\n }\n\n private executeRequest_(request: WebWorkerRequest) {\n this.isQueryExecuting = true;\n let requestObj;\n if (process.env.NODE_ENV === 'dev') {\n console.log(`executing request : ${request.name} `);\n }\n switch (request.name) {\n case API.Select:\n requestObj = new Select.Instance(\n request.query, this.onRequestFinished_.bind(this), this.onError.bind(this)\n );\n break;\n case API.Insert:\n requestObj = new Insert.Instance(\n request.query, this.onRequestFinished_.bind(this), this.onError.bind(this)\n );\n break;\n case API.Update:\n requestObj = new Update.Instance(\n request.query, this.onRequestFinished_.bind(this), this.onError.bind(this)\n );\n break;\n case API.Remove:\n requestObj = new Remove.Instance(\n request.query, this.onRequestFinished_.bind(this), this.onError.bind(this)\n );\n break;\n case API.Count:\n requestObj = new Count.Instance(\n request.query, this.onRequestFinished_.bind(this), this.onError.bind(this)\n );\n break;\n }\n requestObj.isTransaction = true;\n requestObj.execute();\n }\n\n private pushRequest_(request: WebWorkerRequest) {\n const push = () => {\n this.requestQueue.push(request);\n };\n const promiseObj = promise((resolve, reject) => {\n request.onSuccess = (result) => {\n resolve(result);\n };\n request.onError = (error) => {\n this.error = error;\n reject(error);\n };\n });\n if (this.isTxStarted_ === true) {\n this.checkQueries_([request]).then(() => {\n push();\n this.processExecutionOfQry_();\n }).catch(err => {\n this.error = err;\n this.abortTransaction_(JSON.stringify(err));\n });\n }\n else {\n push();\n }\n if (process.env.NODE_ENV === 'dev') {\n console.log(`request pushed : ${request.name} with query value - ${JSON.stringify(request.query)}`);\n }\n return promiseObj;\n }\n\n private processExecutionOfQry_() {\n if (this.requestQueue.length > 0 && this.isQueryExecuting === false) {\n this.executeRequest_(this.requestQueue[0]);\n }\n }\n\n private checkQueries_(requestQueue: WebWorkerRequest[]) {\n return promiseAll(requestQueue.map(request => {\n const tableName = request.query.into || request.query.in;\n return new QueryHelper(request.name, request.query).checkAndModify();\n }));\n }\n\n private getNotExistingTable_(tables: string[]) {\n let invalidTable: string = null;\n tables.every(table => {\n if (this.isTableExist(table) === false) {\n invalidTable = table;\n return false;\n }\n return true;\n });\n return invalidTable;\n }\n}"],"sourceRoot":""}