{"version":3,"sources":["webpack:///./src/components/video-launcher/Test.vue","webpack:///./node_modules/highcharts/highcharts.js","webpack:///./node_modules/highcharts-vue/dist/highcharts-vue.min.js","webpack:///./node_modules/@opentok/client/dist/js/opentok.js","webpack:///./node_modules/opentok-network-test-js/dist/NetworkTest/index.js","webpack:///./node_modules/vue-adblock-detector/dist/bundle.umd.js","webpack:///src/components/video-launcher/Test.vue","webpack:///src/components/utils/RatingCustom.vue","webpack:///./src/components/video-launcher/Test.vue?e1a4","webpack:///./src/components/video-launcher/Test.vue?9e48","webpack:///./node_modules/clientjs/dist/client.min.js","webpack:///./src/components/utils/RatingCustom.vue","webpack:///./src/components/utils/RatingCustom.vue?88be","webpack:///./src/components/utils/RatingCustom.vue?40dc","webpack:///./src/components/utils/RatingCustom.vue?d530","webpack:///./src/components/video-launcher/Test.vue?44c1"],"names":[],"mappings":"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BAAiB,iCAAiC,iBAAiB,YAAY,UAAU,sBAAsB,mBAAmB,iDAAiD,iBAAiB,cAAc,4BAA4B,YAAY,qBAAqB,2DAA2D,QAAQ,E;;;;;;;ACAxvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,IAAyD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gCAAgC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,kBAAkB;AAClF;AACA,yDAAyD,cAAc;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iCAAiC;AAClF,wHAAwH,mBAAmB,EAAE;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,qBAAqB;;AAEtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gFAAgF;;AAEhF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,mBAAmB,6CAA6C;AAChE;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,SAAS;AACnB;AACA,WAAW;AACX;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,YAAY,SAAS;AACrB,aAAa;AACb;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;AAID;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,UAAU,GAAG,mBAAmB;AACnE,8CAA8C;;AAE9C;AACA,KAAK;AACL;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,8DAA8D,6CAA6C,sBAAsB,mBAAmB;AACpJ;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,SAAS,GAAG,YAAY;AAC7C,CAAC;AACD,oGAAoG;;AAEpG;;AAEA;AACA;AACA;;AAEA,qBAAqB,GAAG,OAAO,GAAG;AAClC;AACA;AACA,GAAG;AACH;AACA;;AAEA,yBAAyB,GAAG,OAAO,GAAG;AACtC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA,wBAAwB,GAAG,OAAO,GAAG;AACrC;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,GAAG,OAAO,GAAG;AACtC;AACA,KAAK,yBAAyB,GAAG,OAAO,GAAG;AAC3C;AACA;AACA,KAAK,yBAAyB,GAAG,OAAO,GAAG;AAC3C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;;AAGH,gEAAgE;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,eAAe;AAC9E;;AAEA;AACA,GAAG;AACH,CAAC;AACD;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,eAAe,UAAU;AACzB,GAAG;AACH;AACA,eAAe,UAAU;AACzB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,SAAS;AACxB;AACA,eAAe,OAAO;AACtB;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,OAAO;AACP;AACA,wBAAwB,eAAe;AACvC;AACA,SAAS;AACT;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,eAAe,OAAO;AACtB;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,sCAAsC;AACtC;AACA,eAAe,OAAO;AACtB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA,8FAA8F,aAAa;AAC3G;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,SAAS;AACxB;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,SAAS;AACxB;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,6DAA6D,KAAK,uBAAuB,mBAAmB;AAC5G;;AAEA;AACA,iEAAiE,WAAW;AAC5E,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA,OAAO,YAAY;AACnB;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS,GAAG,SAAS;AAC5C,2BAA2B;AAC3B;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4BAA4B;AAC5B,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,cAAc;AAC5B,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,0CAA0C,MAAM,IAAI,UAAU,SAAS,aAAa;;AAEpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,GAAG;AACH,oEAAoE,eAAe,GAAG;AACtF;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,EAAE;AACR;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA,gBAAgB,OAAO;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,gDAAgD;AAChD;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA,MAAM,0BAA0B;AAChC;AACA;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,wBAAwB;AACxB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,cAAc,yDAAyD,IAAI,UAAU;AACrF;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA,qCAAqC,cAAc;AACnD;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,yBAAyB;AACzB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA,gBAAgB,OAAO;AACvB,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,sCAAsC,KAAK;AAC3C;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sEAAsE;AACtE;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,qIAAqI;AACrI;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD,mDAAmD;AACnD;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0DAA0D;AAC1D;AACA;AACA;AACA,KAAK;AACL,4DAA4D;AAC5D;AACA;AACA;AACA,KAAK,OAAO;AACZ;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA,SAAS;AACT;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA;;;AAGA;AACA;;AAEA,iCAAiC;AACjC;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA,sDAAsD,MAAM;AAC5D,mDAAmD,QAAQ;AAC3D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO,WAAW;AAC7B,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA,QAAQ,yBAAyB;AACjC;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA,4CAA4C;;AAE5C,iCAAiC,2CAA2C;;;AAG5E,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;;;AAGA,iCAAiC,8DAA8D,yBAAyB,+OAA+O;AACvW;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI,EAAE;AACrB;AACA,gBAAgB,sBAAsB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;AACnC;;AAEA;AACA,mCAAmC;AACnC;;AAEA;AACA;AACA,4BAA4B,eAAe,WAAW,UAAU;AAChE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,gDAAgD;AAChD;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB,6CAA6C;AAClE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,wCAAwC,kEAAkE,IAAI,8DAA8D;AAC5K;AACA,KAAK;AACL;AACA;AACA,0CAA0C,YAAY,UAAU,aAAa;AAC7E;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qBAAqB;AAChC,aAAa,OAAO;AACpB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,UAAU;AACV;AACA;AACA,4BAA4B;AAC5B,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD;AACtD;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA,sCAAsC,UAAU;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA,2BAA2B,UAAU,EAAE;;AAEvC;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH,EAAE;;;AAGF;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,UAAU;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA,yCAAyC,UAAU,uDAAuD;;AAE1G;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF;AACA,kCAAkC;;AAElC;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA,4CAA4C,aAAa;AACzD,IAAI;;;AAGJ,iDAAiD;;AAEjD,0CAA0C;;AAE1C;AACA,4DAA4D;;AAE5D;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,mBAAmB;AAC/D,EAAE;AACF;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA,sBAAsB,qBAAqB;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH,sBAAsB,qBAAqB;AAC3C;AACA;;AAEA,iBAAiB,0BAA0B;AAC3C,sDAAsD,iBAAiB;AACvE;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA,mBAAmB,0BAA0B;AAC7C,mCAAmC,iBAAiB,oCAAoC,iBAAiB,uCAAuC,iBAAiB;AACjK;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG,EAAE;;AAEL,sCAAsC,UAAU;AAChD;AACA;;AAEA;AACA,mBAAmB,UAAU,KAAK,SAAS;AAC3C;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;AAGA;AACA;AACA;AACA,8CAA8C,UAAU;AACxD;AACA;AACA;AACA;;AAEA,8BAA8B,qBAAqB;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL,4CAA4C,KAAK;;AAEjD;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAiE,UAAU;;AAE3E;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA;AACA,GAAG;AACH,cAAc;AACd,GAAG;;;AAGH,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAiE,UAAU;;AAE3E;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sCAAsC;;AAEtC;AACA;AACA,OAAO;AACP,kBAAkB;AAClB;;AAEA;;AAEA;AACA,sCAAsC;;AAEtC;AACA;AACA,OAAO;AACP,kBAAkB;AAClB;;AAEA;;AAEA;AACA,sCAAsC,KAAK;AAC3C,GAAG;;;AAGH,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD,cAAc;AAChE;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAiE,UAAU;;AAE3E;AACA;AACA;AACA;;AAEA;AACA,YAAY,qBAAqB,aAAa,EAAE;;AAEhD,yBAAyB;AACzB;AACA;AACA;;AAEA,uCAAuC;;AAEvC,oCAAoC;;AAEpC;AACA,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF;;AAEA;AACA,+BAA+B;;AAE/B;AACA,wEAAwE,KAAK;AAC7E;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,gEAAgE;;AAEhE,uEAAuE,cAAc;AACrF;;AAEA;AACA;;AAEA;AACA,wDAAwD;;AAExD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8CAA8C;;AAE9C;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;AACA;;AAEA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,cAAc;AACzD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,sBAAsB;;AAEtB;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA,KAAK;;;AAGL;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA,KAAK;;;AAGL;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,+FAA+F;;AAE/F;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;;AAErB,aAAa,qBAAqB;AAClC;;AAEA;AACA;AACA;AACA;;AAEA,oCAAoC,oBAAoB;;AAExD;AACA,eAAe,qBAAqB;AACpC,0CAA0C,aAAa,GAAG,WAAW;AACrE;AACA;;AAEA,aAAa,qBAAqB;AAClC,8BAA8B,aAAa,8BAA8B,aAAa,QAAQ,gBAAgB;AAC9G;;AAEA;AACA,eAAe,qBAAqB;AACpC,gCAAgC,WAAW,8BAA8B,WAAW,QAAQ,gBAAgB;AAC5G;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD,MAAM;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,gDAAgD,UAAU,gBAAgB,MAAM;AAChF;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA,mCAAmC,+CAA+C;;;AAGlF,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA,MAAM,+CAA+C;AACrD,MAAM,gDAAgD;AACtD,MAAM;AACN;AACA;AACA,8BAA8B,mBAAmB,EAAE;AACnD;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,4FAA4F,aAAa;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,kGAAkG,eAAe;AACjH;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA,gGAAgG,eAAe;AAC/G;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA,8CAA8C;AAC9C;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;AAGtC,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;;AAEA;AACA,yBAAyB;AACzB;;;AAGA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,YAAY,WAAW;AACvB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D,GAAG;;AAEH;AACA,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,8HAA8H;AAC9H;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA,wCAAwC,kBAAkB,EAAE;;AAE5D,mCAAmC,uCAAuC;;;AAG1E,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,uEAAuE;;;AAGvE,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA,gCAAgC;;AAEhC,4BAA4B;;AAE5B;AACA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA,KAAK;AACL,kCAAkC;;AAElC;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wDAAwD,uBAAuB;;AAE/E;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iEAAiE,IAAI;AACrE;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,OAAO;;AAE7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;;AAGA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA,iDAAiD,QAAQ,IAAI,OAAO;AACpE;AACA,OAAO;AACP,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA,2DAA2D,YAAY;AACvE;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,6FAA6F;AAC7F;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,0CAA0C,cAAc,IAAI,aAAa;AACzE;AACA,WAAW;AACX,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,eAAe;AACf;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,gDAAgD,KAAK,QAAQ,oBAAoB;AACjF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gEAAgE,6BAA6B,IAAI,eAAe;AAChH,aAAa;AACb;;AAEA;;AAEA;AACA,kFAAkF,KAAK,QAAQ,oBAAoB,IAAI,wBAAwB;AAC/I;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe,oCAAoC;AACnD;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,eAAe,mCAAmC;AAClD;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,wEAAwE,EAAE,MAAM,aAAa,+BAA+B;AAChK;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,gBAAgB;AAC9B,cAAc,oBAAoB;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,WAAW,wCAAwC;AACnD;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,iCAAiC;AAC5C,YAAY;AACZ;;;AAGA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS,uBAAuB;AAC7C;;AAEA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8DAA8D,uBAAuB;AACrF;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAS,KAAK,oBAAoB,EAAE,wBAAwB;AACtG,2CAA2C,eAAe,EAAE,mBAAmB,EAAE,uBAAuB;AACxG,YAAY,UAAU,GAAG,WAAW;AACpC;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA,eAAe,SAAS,GAAG,SAAS,GAAG,SAAS;AAChD,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,YAAY;AACZ;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,OAAO,aAAa;;;AAGpB;AACA,KAAK,YAAY;AACjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yDAAyD,KAAK;AAC9D;;AAEA,0BAA0B;AAC1B;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;;AAEA,sCAAsC;;;AAGtC;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE;;;AAGjE;;AAEA,qDAAqD,UAAU;AAC/D;AACA,OAAO;AACP;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,yCAAyC;AACzC;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA,YAAY,SAAS,GAAG,SAAS;AACjC;AACA;AACA;AACA,YAAY,SAAS,GAAG,SAAS;AACjC;AACA;AACA;AACA,UAAU,QAAQ,iBAAiB,GAAG,iBAAiB;AACvD;AACA;AACA;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,8BAA8B;AAC9B;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC,oBAAoB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,oDAAoD;AACpD,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6CAA6C;;AAE7C;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sDAAsD,IAAI,MAAM,UAAU,WAAW,QAAQ;AAC7F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB;AACxB;AACA,wBAAwB;AACxB,mBAAmB,oBAAoB;AACvC;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA,wBAAwB;;AAExB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;AACpB;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA,6BAA6B;;AAE7B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,qBAAqB,sCAAsC;AAC3D,OAAO;AACP,qBAAqB,yCAAyC;AAC9D;;AAEA,2BAA2B,QAAQ;AACnC,KAAK;AACL;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA,yFAAyF,GAAG;AAC5F;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,CAAC;;AAED;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA,8CAA8C,MAAM,cAAc,uBAAuB,IAAI,sBAAsB,IAAI,eAAe;AACtI;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA,kBAAkB,YAAY,GAAG,YAAY;AAC7C;AACA,sCAAsC,OAAO,KAAK,YAAY,GAAG,YAAY;AAC7E;AACA,mBAAmB,UAAU,IAAI,gBAAgB,KAAK,IAAI;AAC1D;;AAEA;AACA,qBAAqB,UAAU;AAC/B,GAAG;AACH,qBAAqB,UAAU,kBAAkB,sBAAsB;AACvE;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA,4DAA4D;AAC5D;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;AACA,iCAAiC,SAAS;AAC1C;AACA;;AAEA;AACA,iCAAiC,aAAa,0BAA0B,SAAS;AACjF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,8FAA8F,aAAa;AAC3G;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,aAAa,OAAO,sBAAsB,kCAAkC,mBAAmB,WAAW,OAAO;AACxI;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,kEAAkE;;;AAGlE;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,iCAAiC;AAC5C;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB;;;AAGA;AACA,eAAe,uBAAuB;;AAEtC,eAAe,YAAY;AAC3B;AACA,eAAe,YAAY;AAC3B;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C,QAAQ;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA,iDAAiD;;AAEjD,kDAAkD;;AAElD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,qDAAqD,QAAQ;;AAE7D,2DAA2D;;;AAG3D;AACA,sDAAsD;AACtD;;;AAGA;AACA;AACA;AACA,WAAW;;;AAGX;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0CAA0C,SAAS,EAAE,4CAA4C,QAAQ,cAAc;AACvH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qEAAqE,SAAS;AAC9E;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,mFAAmF;;AAEnF;;AAEA;;AAEA,+DAA+D;;;AAG/D;AACA;AACA;AACA,SAAS;AACT,oCAAoC,EAAE;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA2C,sCAAsC,GAAG,uCAAuC;;AAE3H;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,eAAe,MAAM;AACrB,eAAe,QAAQ;AACvB,eAAe,OAAO;AACtB;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qEAAqE,IAAI;AACzE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,CAAC;AACD,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA,yBAAyB,IAAI;AAC7B,GAAG;AACH;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,yBAAyB;AACzB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qCAAqC;AACrC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,OAAO,aAAa,aAAa;AACjD;AACA,gBAAgB,QAAQ,cAAc,cAAc;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA,iBAAiB,OAAO;AACxB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB;;AAEA;AACA;AACA,eAAe,wBAAwB;AACvC,iBAAiB,mBAAmB;AACpC;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA,eAAe,gBAAgB;;;AAG/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,kCAAkC;AAClC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C,WAAW,IAAI,cAAc;AAC3E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qEAAqE,cAAc;AACnF;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,yDAAyD,cAAc;AACvE;AACA,wCAAwC,cAAc;AACtD;AACA,wCAAwC;AACxC;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,MAAM;AACN;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,OAAO,cAAc;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC,mBAAmB;AACxD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;;AAEA,wEAAwE,cAAc;AACtF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA,OAAO;AACP,KAAK,IAAI;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uFAAuF;AACvF,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,wDAAwD,UAAU;AAClE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0MAA0M;;AAE1M;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2CAA2C,kBAAkB,kBAAkB,GAAG,mBAAmB;AACrG,8BAA8B;;AAE9B,0CAA0C;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0DAA0D,YAAY;AACtE,wCAAwC;AACxC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;;;AAGN;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+EAA+E;AAC/E;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP;;;AAGA;AACA,0BAA0B;;AAE1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,0DAA0D,YAAY;AACtE;AACA;AACA;AACA,OAAO,EAAE;;AAET;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA,gEAAgE,OAAO;AACvE;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB;AACjB;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,8FAA8F,eAAe;AAC7G;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oEAAoE;AACpE;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT;AACA,OAAO;AACP;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4DAA4D;AAC5D;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,qDAAqD;AACrD;;AAEA;AACA,mEAAmE;AACnE;AACA;AACA;;AAEA,4EAA4E;AAC5E;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb,iEAAiE,WAAW;AAC5E;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,wEAAwE,IAAI;AAC5E;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA,2BAA2B;;AAE3B;AACA;AACA;;AAEA,0DAA0D;;AAE1D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yEAAyE,iBAAiB,4CAA4C,iBAAiB;;AAEvJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA,4CAA4C;AAC5C;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;;;AAGf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uDAAuD;AACvD;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,8EAA8E;AAC9E;;AAEA,kCAAkC,aAAa,GAAG,OAAO,GAAG,eAAe;AAC3E,6DAA6D,KAAK,QAAQ,iBAAiB,OAAO,iBAAiB;AACnH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,uDAAuD;AACvD;;AAEA;AACA,SAAS;AACT;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,kCAAkC,QAAQ,IAAI,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK,GAAG;;;AAGR;AACA;;AAEA;AACA,oCAAoC;;AAEpC;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,mHAAmH;;AAEnH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA,yDAAyD;AACzD,qDAAqD;AACrD;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,OAAO;AACrD;;AAEA,+EAA+E,kBAAkB;AACjG,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;AACA,WAAW;AACX;;;AAGA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA,aAAa;AACb;;AAEA;AACA,sGAAsG;AACtG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb,WAAW;AACX,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,0CAA0C,KAAK,yCAAyC,WAAW,iDAAiD,gBAAgB;AACpK;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,uCAAuC;AACvC;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6DAA6D,OAAO;AACpE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,OAAO;AACP;AACA;AACA,wCAAwC,KAAK,iCAAiC,UAAU,sCAAsC,qCAAqC;AACnK;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mFAAmF,cAAc;AACjG;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;;AAEP;AACA,+EAA+E;AAC/E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,SAAS;AACT,4IAA4I,cAAc;;AAE1J;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,+DAA+D;AAC/D;AACA;AACA,+DAA+D;AAC/D;AACA;AACA,uDAAuD;AACvD;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,+DAA+D;AAC/D;AACA;AACA,+DAA+D;AAC/D;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;;;AAGA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK,EAAE;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD,6BAA6B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA,QAAQ,0BAA0B;AAClC;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA,0CAA0C;AAC1C;AACA,cAAc,QAAQ;AACtB;AACA;AACA,IAAI,cAAc;AAClB,IAAI,iCAAiC;AACrC;AACA,cAAc,QAAQ;AACtB;AACA;AACA,IAAI,cAAc;AAClB,IAAI,iCAAiC;AACrC;AACA,cAAc,OAAO;AACrB;AACA;AACA,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB;AACA,kBAAkB;AAClB;AACA;AACA;AACA,QAAQ,cAAc;AACtB,SAAS,iCAAiC;AAC1C;AACA,cAAc,OAAO,oCAAoC;AACzD;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,4EAA4E,cAAc;AAC1F,+DAA+D,iCAAiC;AAChG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;;AAEA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;;;AAGA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,+CAA+C,IAAI,qBAAqB,MAAM;AAC9E;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA,sBAAsB;AACtB;;AAEA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA,kBAAkB;AAClB;;AAEA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA,GAAG;AACH;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,GAAG;AACH,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA,IAAI;AACJ,2DAA2D;AAC3D;;AAEA;AACA,0DAA0D;;AAE1D;AACA;AACA,0DAA0D;;AAE1D;AACA,EAAE;AACF;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,WAAW;;AAEX,mCAAmC,uDAAuD;;;AAG1F,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,4BAA4B,EAAE;;AAE9B;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA,iCAAiC;AACjC,YAAY;AACZ,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY;AACnB;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,2BAA2B;AAC3B,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,MAAM;AACjB;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAK;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,2CAA2C,KAAK;AAChD,0CAA0C,KAAK;AAC/C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,QAAQ;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA,4DAA4D,YAAY,uDAAuD,MAAM,GAAG;AACxI;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK,cAAc;AACnB;AACA;;AAEA;AACA;;AAEA,CAAC,EAAE;;AAEH;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,gBAAgB;AACvC,0BAA0B,gBAAgB;AAC1C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,KAAK,GAAG,KAAK;AAC9B;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,wBAAwB,GAAG,8BAA8B;AACjF,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK,uBAAuB;AAC5B,6CAA6C;AAC7C;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C;;AAE1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG;AACH,EAAE;;;AAGF;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B,gBAAgB;AAC3C,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL,IAAI;AACJ;;;AAGA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4BAA4B,GAAG;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,GAAG;AAC3B;AACA;;AAEA;AACA;;AAEA,iCAAiC;;;AAGjC,2BAA2B,oBAAoB;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,IAAI;AACJ;AACA;;;AAGA;AACA;AACA;AACA,0BAA0B,+BAA+B;AACzD,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA,uCAAuC,IAAI;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAK,qDAAqD,WAAW;AAC7F;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,KAAK,kBAAkB,WAAW;AAC5D,SAAS;AACT,0BAA0B,KAAK,qDAAqD,WAAW;AAC/F;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,qBAAqB;;AAErB,uGAAuG;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;;AAEA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B,cAAc;AACzC;;AAEA;AACA,2BAA2B,gBAAgB;;AAE3C;AACA,6BAA6B,kBAAkB;AAC/C;AACA;;AAEA,aAAa,eAAe,UAAU,QAAQ,EAAE,aAAa,EAAE,gBAAgB;AAC/E;;AAEA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH,EAAE;;;AAGF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB,0BAA0B;AAC1B;AACA;AACA;AACA,yDAAyD;AACzD,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,iDAAiD;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;;;AAGA;AACA;AACA;;AAEA,qCAAqC;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,oBAAoB;AAC7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,aAAa;AAC1B;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,WAAW,IAAI;AACf,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qBAAqB;AAChC,aAAa,OAAO;AACpB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM,qCAAqC;AAC3C,MAAM,qCAAqC;AAC3C,MAAM;AACN;AACA;AACA,mCAAmC,2BAA2B,EAAE;AAChE;AACA;AACA;AACA,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA,6DAA6D;;;AAG7D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;;AAGF;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,uEAAuE,aAAa;AACpF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C;;AAE5C;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD;;AAEzD,qBAAqB,IAAI;AACzB,KAAK;AACL;AACA,2DAA2D;;AAE3D,sRAAsR;;AAEtR;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC,uBAAuB;;;AAGxB,4BAA4B;;AAE5B;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD,YAAY;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb,mDAAmD,WAAW;AAC9D,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kEAAkE;;AAElE;AACA;AACA,OAAO;;;AAGP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,8BAA8B;;;AAG9B;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,uBAAuB;AACzE,GAAG;AACH;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B;AACA,eAAe,SAAS;AACxB;;;AAGA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,8BAA8B;AAC9B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA,uCAAuC;AACvC;AACA;;;AAGA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;;AAEA;AACA,GAAG;;AAEH,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,kBAAkB;AACnD;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,iDAAiD,EAAE;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,OAAO;;AAEpB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mDAAmD,SAAS;AAC5D;AACA;AACA;;AAEA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,4DAA4D;;;AAG5D,+BAA+B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mDAAmD,qBAAqB,cAAc,QAAQ;AAC9F;;AAEA,0GAA0G,qBAAqB;AAC/H;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI,SAAS;AACxB;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,aAAa,SAAS;;;AAGtB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB;;AAEA;AACA,eAAe,2BAA2B;;AAE1C,eAAe,iBAAiB;AAChC;AACA;;AAEA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,GAAG;AAC/D;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2EAA2E,aAAa;AACxF;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4EAA4E,eAAe;AAC3F;AACA;;AAEA,uDAAuD;AACvD;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA,mDAAmD;AACnD;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,yDAAyD;AACzD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wFAAwF;AACxF,wFAAwF;AACxF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA,yFAAyF;AACzF;;AAEA;;AAEA;AACA,8EAA8E,eAAe;AAC7F;AACA;;AAEA;AACA,OAAO;;AAEP;AACA,8EAA8E,eAAe;AAC7F;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gEAAgE,sCAAsC;AACtG;;AAEA;AACA,gEAAgE,sCAAsC;AACtG;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,OAAO,cAAc;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C;AAC7C,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C;;AAE/C,gHAAgH;AAChH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2KAA2K;AAC3K,2KAA2K;AAC3K;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC,wDAAwD;;AAExD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,8EAA8E,8CAA8C;;AAE5H;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kFAAkF;AAClF;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,eAAe;;AAEf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,sDAAsD;AACtE,gBAAgB,WAAW;AAC3B,gBAAgB,QAAQ;AACxB,gBAAgB,YAAY;AAC5B,gBAAgB,uBAAuB;AACvC,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,OAAO;AACvB,gBAAgB,uBAAuB;AACvC,gBAAgB,uBAAuB;AACvC,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8BAA8B;AAC3C;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,qCAAqC;;;AAGrC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;;;AAGP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,uCAAuC;;AAEvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;;AAEnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6BAA6B;AACtC;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mGAAmG;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc;AACpB;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAuB;;AAEtC;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA,MAAM;AACN;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,wDAAwD,WAAW,2BAA2B,KAAK;AACnG;AACA;AACA;AACA,SAAS;AACT;;AAEA,KAAK;AACL;AACA,wFAAwF;AACxF;;AAEA;AACA;;AAEA;AACA,4CAA4C;AAC5C,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD,OAAO;;AAEP;AACA,gDAAgD;AAChD,OAAO;;AAEP;AACA,0CAA0C;AAC1C;AACA,mDAAmD;AACnD;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,oFAAoF;AACpF;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA,2DAA2D,YAAY;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;;AAEP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,+DAA+D,YAAY;AAC3E;AACA;;AAEA;;AAEA;AACA;AACA,4HAA4H,YAAY;AACxI,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,+DAA+D,OAAO;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD;;;AAGhD;;AAEA;;AAEA,8EAA8E;;;AAG9E;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA,eAAe;;;AAGf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2EAA2E;;AAE3E;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;;AAEA;AACA;AACA;;AAEA,iEAAiE,MAAM;AACvE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2EAA2E;;AAE3E;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;;;AAGA,gFAAgF;;;AAGhF;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;;AAEX;AACA;AACA;;AAEA,SAAS,QAAQ;;AAEjB;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,OAAO;;;AAGP;AACA;AACA,OAAO;;;AAGP;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO,EAAE;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mDAAmD;AACnD;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,KAAK,gBAAgB,iBAAiB;AAC5G;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA,mCAAmC,QAAQ,IAAI,SAAS;AACxD;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,iEAAiE;AACjE;AACA,+DAA+D;AAC/D;AACA,mEAAmE;AACnE;AACA,uDAAuD;AACvD;AACA,iEAAiE;AACjE;AACA,+DAA+D;AAC/D;AACA,mEAAmE;AACnE;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA,eAAe;AACf;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;;;AAGA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,EAAE;;AAE5C;AACA,kGAAkG;;AAElG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,yCAAyC,EAAE;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,yDAAyD,wBAAwB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0EAA0E;;AAE1E;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,mBAAmB;AACnB,iBAAiB;AACjB,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;;;AAGA;AACA,uDAAuD,IAAI;AAC3D;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,yFAAyF,WAAW;AACpG,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;;AAEA;AACA;AACA,2CAA2C;;;AAG3C;AACA,iDAAiD;;AAEjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,WAAW;;AAE5D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD,6BAA6B;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA,mCAAmC;;;AAGnC;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA,2BAA2B;;;AAG3B;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,qBAAqB;AACrB;AACA,gCAAgC;AAChC;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,mBAAmB;AAChC;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,iBAAiB,mCAAmC;AACpD,iBAAiB,mCAAmC;AACpD,iBAAiB,mCAAmC;AACpD,iBAAiB,mCAAmC;AACpD,iBAAiB;AACjB;AACA,GAAG;;AAEH;AACA;AACA,wCAAwC,uBAAuB,yBAAyB;AACxF;AACA;AACA,wCAAwC,6BAA6B,eAAe;AACpF;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,yBAAyB,aAAa;AACtC;AACA,yBAAyB,WAAW;AACpC,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe,yBAAyB;AACxC;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC,4BAA4B,+CAA+C;AAC3E;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;;AAGA,OAAO;AACP;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,6BAA6B;;AAE7B;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,qCAAqC,qBAAqB,kBAAkB;AAC5E,qCAAqC,sBAAsB,eAAe,EAAE;AAC5E,qCAAqC,sBAAsB,cAAc,GAAG;AAC5E,qCAAqC,2BAA2B,YAAY;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,sCAAsC;AACtC;AACA,UAAU,UAAU;AACpB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,8CAA8C,iEAAiE;AAC/G,8CAA8C,iEAAiE;AAC/G,8CAA8C,iEAAiE;AAC/G,8CAA8C,iEAAiE;AAC/G,8CAA8C,iEAAiE;AAC/G,8CAA8C,iEAAiE;AAC/G,8CAA8C,iEAAiE;AAC/G,8CAA8C,iEAAiE;AAC/G,8CAA8C,iEAAiE;AAC/G;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,CAAC;;AAED,OAAO;AACP;AACA;;AAEA;;;AAGA,6DAA6D;;;AAG7D;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA,uEAAuE,aAAa;AACpF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,0GAA0G,eAAe;AACzH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,uCAAuC;AACvC;AACA;AACA,wCAAwC;AACxC;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;;;AAGA;AACA,sCAAsC,cAAc,IAAI;AACxD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,oDAAoD;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qEAAqE;AACrE;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,gBAAgB;;;AAG7B;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,aAAa,2BAA2B;;;AAGxC;AACA,aAAa,oBAAoB;;AAEjC;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa,iBAAiB,mBAAmB;AACjE;AACA;AACA;AACA,gBAAgB,WAAW,iBAAiB,iBAAiB;AAC7D;AACA;AACA,8DAA8D,iBAAiB;AAC/E,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA,eAAe;AACf;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB,8BAA8B,IAAI,cAAc;;AAExE;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,QAAQ;;;AAGR;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;;AAEA,wCAAwC;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,MAAM;AACN;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;;AAEA,8FAA8F;;AAE9F;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,KAAK;AAC3C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA,yFAAyF;;AAEzF;AACA;AACA;AACA,SAAS,QAAQ;;AAEjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;;AAET,6CAA6C,KAAK;;;AAGlD,yCAAyC,KAAK;;;AAG9C,0CAA0C;;;AAG1C;;AAEA;AACA;AACA;AACA,OAAO;AACP,MAAM;;;AAGN;;AAEA;AACA,uBAAuB,WAAW,IAAI,cAAc;;AAEpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA,sFAAsF;AACtF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mFAAmF;AACnF,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gFAAgF;AAChF;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,0BAA0B;AAC1B;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,yEAAyE,aAAa;AACtF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA,OAAO;;;AAGP;;AAEA;AACA,4EAA4E,YAAY;;AAExF;AACA,OAAO;;;AAGP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C;;AAE3C;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kFAAkF,eAAe;AACjG;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA,mCAAmC;;AAEnC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA,qDAAqD,cAAc,EAAE,kBAAkB,WAAW,QAAQ;AAC1G;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,6BAA6B,MAAM,kBAAkB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF;AACtF;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,yBAAyB;AACzB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kCAAkC;AAClC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,4CAA4C,iBAAiB,YAAY,eAAe;AACxF,WAAW;AACX,4CAA4C,iBAAiB,iCAAiC,4BAA4B;AAC1H;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA,4CAA4C,YAAY;;AAExD;;AAEA;AACA,OAAO;AACP,8EAA8E,eAAe;AAC7F;AACA;;AAEA;AACA,OAAO,iCAAiC;;;AAGxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,wBAAwB;AACxB,2BAA2B;AAC3B;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,cAAc;AACd,cAAc;AACd;AACA,cAAc,mCAAmC,mBAAmB;AACpE;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,yBAAyB;AACzB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA,wDAAwD;AACxD;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA,+CAA+C;AAC/C;AACA;AACA,gDAAgD;AAChD;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA,uCAAuC,wBAAwB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA,8DAA8D;AAC9D;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,yBAAyB;AACzB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,OAAO,oBAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,2DAA2D,cAAc;;AAEzE;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA,gBAAgB,MAAM,cAAc,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP,MAAM;;;AAGN;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;;AAEX;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,OAAO;AACP;AACA,6BAA6B,KAAK;AAClC;AACA;AACA,4BAA4B;AAC5B;;AAEA,+CAA+C,uBAAuB,KAAK;;AAE3E;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,kDAAkD;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA,qCAAqC;AACrC;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,kGAAkG,eAAe;AACjH;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,sBAAsB;AAC3F,cAAc,kBAAkB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,oGAAoG,eAAe;AACnH;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA,cAAc,SAAS;AACvB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA,uDAAuD;AACvD;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,gEAAgE;AAChE;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA,qDAAqD;AACrD;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAsD,kBAAkB;AACxE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kBAAkB;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,oCAAoC;AACpC;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,oCAAoC;AACpC;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,aAAa;AACtF;AACA;;AAEA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,kBAAkB;;AAErC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,kBAAkB;AACzC;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,oBAAoB,OAAO;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,kBAAkB;AACzC;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,cAAc,aAAa;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,cAAc,aAAa;AAC/E;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU;AACpD;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,UAAU,SAAS;AACvE;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,UAAU,SAAS;AACvE;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,UAAU,SAAS;AACvE;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,UAAU,SAAS,WAAW,UAAU;AAC5F;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,UAAU,SAAS,cAAc,aAAa;AAClG;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,UAAU,SAAS,cAAc,aAAa;AAClG;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,UAAU,SAAS,cAAc,aAAa;AAClG;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,UAAU,SAAS,cAAc,aAAa,WAAW,UAAU;AACvH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,EAAE,sCAAsC,UAAU,OAAO,UAAU,OAAO;AAC9H;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,OAAO,WAAW,UAAU,EAAE,sBAAsB,SAAS,OAAO;AAC5F;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,6EAA6E,uBAAuB;AACpG;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8EAA8E,uBAAuB;AACrG;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wCAAwC,cAAc;AACtD,sCAAsC,cAAc;AACpD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB,iFAAiF,EAAE,6BAA6B;AACvI;AACA;;AAEA;AACA,GAAG,EAAE;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,8DAA8D,SAAS,gCAAgC;;AAEvG;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,8DAA8D,SAAS,gCAAgC;;AAEvG;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,mHAAmH;;AAEnH;AACA;;AAEA;AACA,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B,OAAO;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+HAA+H;;AAE/H;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,8HAA8H;;AAE9H;AACA,KAAK;;;AAGL;AACA,sIAAsI;;AAEtI;AACA,KAAK;AACL;;;AAGA;AACA,GAAG,EAAE;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,uDAAuD,YAAY;AACnE;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,gEAAgE,UAAU,iCAAiC;;AAE3G;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iFAAiF,eAAe,qBAAqB,SAAS,oBAAoB,OAAO;AACzJ;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,mHAAmH,SAAS,oBAAoB,OAAO;AACvJ;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,CAAC;AACD,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,8CAA8C;;AAE9C,cAAc;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,CAAC;;AAED;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED,0CAA0C;;AAE1C;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC,EAAE;;;AAGH;;AAEA;;AAEA;AACA;AACA;AACA;AACA,CAAC,EAAE;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,IAAI;AAC/B;AACA;AACA,gDAAgD,IAAI,uCAAuC,IAAI;AAC/F,GAAG;AACH,CAAC;AACD,2BAA2B;;AAE3B;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oCAAoC,IAAI;;AAExC;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC,EAAE;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,SAAS;AACnB;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,UAAU,SAAS;AACnB;AACA,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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CA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA,iCAAiC;;AAEjC,OAAO;AACP;AACA;;AAEA,iCAAiC;;AAEjC,OAAO;AACP;AACA;;AAEA,iCAAiC;;AAEjC,OAAO;AACP;AACA;;AAEA,iCAAiC;;AAEjC,OAAO;AACP;AACA;;AAEA,qCAAqC;;AAErC,OAAO;AACP;AACA;;AAEA,qCAAqC;;AAErC,OAAO;AACP;AACA;;AAEA,qCAAqC;;AAErC,OAAO;AACP;AACA;;AAEA,iCAAiC;;AAEjC,OAAO;AACP;AACA;;AAEA,iCAAiC;;AAEjC,OAAO;AACP;AACA;;AAEA,qCAAqC;;AAErC,OAAO;AACP;AACA;;AAEA,qCAAqC;;AAErC,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,WAAW,EAAE;AACrD,wCAAwC,WAAW,EAAE;;AAErD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sCAAsC;AACtC,GAAG;AACH;AACA,8DAA8D;AAC9D;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO,WAAW;AAC7B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO,WAAW;AAC7B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,eAAe,SAAS;AACxB,8BAA8B;AAC9B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,eAAe,kCAAkC;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,aAAa,aAAa;AAC5D,EAAE;AACF;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,2DAA2D,8BAA8B;AACzF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF,CAAC;AACD;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,QAAQ;AACR,cAAc,aAAa,GAAG,eAAe;AAC7C;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA,oCAAoC,wDAAwD;;;AAG5F,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;AACD;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,MAAM,gBAAgB;AACtB,YAAY,cAAc;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,aAAa,EAAE;AACpC;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,CAAC;;;AAGD,OAAO;AACP;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,sBAAsB,EAAE;AACtD,CAAC;;AAED;AACA;AACA;AACA,0BAA0B,gEAAgE,EAAE;AAC5F,yBAAyB,6BAA6B,EAAE;AACxD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C,oCAAoC,EAAE;AAChF;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,EAAE;AACF;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,EAAE;AACF,OAAO,sBAAsB;AAC7B,kBAAkB,aAAa;AAC/B;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA,mCAAmC,iCAAiC;;;AAGpE,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,EAAE;AACF;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,CAAC;AACD;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA,CAAC;;;AAGD,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,aAAa;AAC1B;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA,yBAAyB;AACzB,KAAK;AACL;AACA,CAAC;;AAED;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C;AAC1C,SAAS;;AAET;AACA,4DAA4D,wBAAwB;AACpF;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,kCAAkC;AAClC,+BAA+B,aAAa,EAAE;AAC9C;AACA;AACA,KAAK;AACL;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,eAAe;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA,sBAAsB,yCAAyC;AAC/D,mBAAmB,yCAAyC;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA,sBAAsB,mBAAmB;AACzC,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,aAAa;AAC1B,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,aAAa;AAC7B,oBAAoB,aAAa;AACjC,kBAAkB,aAAa;AAC/B,sBAAsB,aAAa;AACnC,kBAAkB,aAAa;AAC/B,sBAAsB,aAAa;AACnC,iBAAiB,aAAa;AAC9B,oBAAoB,aAAa;AACjC,eAAe,aAAa;AAC5B,mBAAmB,aAAa;AAChC,cAAc,aAAa;AAC3B,mBAAmB,aAAa;AAChC,cAAc,aAAa;AAC3B,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,8CAA8C;AACpD,MAAM;AACN;AACA;AACA;AACA,+BAA+B,mCAAmC;AAClE,WAAW,8CAA8C;AACzD;AACA;AACA;AACA,WAAW,4BAA4B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,qBAAqB;AAChC,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA,IAAI;AACJ,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA,8CAA8C,kCAAkC;AAChF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,MAAM;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,MAAM;AAClB,YAAY,SAAS;AACrB;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,KAAK;AACL,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mCAAmC;AAClE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,WAAW;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB;;AAExB,yCAAyC,qBAAqB;;AAE9D;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;;AAEtD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0BAA0B,iBAAiB;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc,iBAAiB;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF,CAAC;;AAED,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC;AACnC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,OAAO;AACxB;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,2BAA2B,cAAc;AACzC,gCAAgC,UAAU,OAAO,WAAW;AAC5D,KAAK;AACL;AACA,IAAI;AACJ;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,gBAAgB,oBAAoB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,qBAAqB;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,mDAAmD,GAAG,OAAO,GAAG;;AAEhE;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,gBAAgB;AAC1B;AACA;;AAEA;AACA;;AAEA,sBAAsB,kBAAkB;;AAExC,QAAQ,gBAAgB;AACxB;AACA,wCAAwC,cAAc;AACtD,KAAK;AACL,sBAAsB,cAAc;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,gBAAgB;AAC1B;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH,uBAAuB,kBAAkB;;AAEzC,UAAU,gBAAgB;AAC1B,iCAAiC,cAAc;AAC/C,uBAAuB,cAAc;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,gBAAgB;AAC1B;AACA;;AAEA;AACA;;AAEA,sBAAsB,kBAAkB;;AAExC,QAAQ,gBAAgB;AACxB,sCAAsC,cAAc;AACpD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,+BAA+B;AAC/B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;;AAGJ;AACA;AACA,IAAI;;;AAGJ;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,uEAAuE,aAAa;AACpF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ,sBAAsB;AAC3C;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,YAAY;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,gDAAgD;AAChD;AACA;AACA,yDAAyD,oBAAoB;AAC7E,yDAAyD;AACzD;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,sCAAsC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gCAAgC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa;AACtB;;AAEA;AACA;AACA;AACA,SAAS,aAAa;AACtB;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,mBAAmB,8BAA8B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gCAAgC;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,uBAAuB,4BAA4B;AACnD;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,yBAAyB,4BAA4B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,aAAa,yCAAyC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,mCAAmC;AACnC;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA,iBAAiB;AACjB,eAAe;AACf;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,8BAA8B;AAC9B,oCAAoC,EAAE;AACtC,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAgE;AAC7E,aAAa;AACb;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4BAA4B,KAAK,iCAAiC,MAAM,qBAAqB,cAAc;AAC3G;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,gCAAgC,sBAAsB;;AAEtD;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,yBAAyB,UAAU;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB,sBAAsB;AAC/C;AACA;;AAEA;AACA,gCAAgC,UAAU;AAC1C;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC,UAAU;AACjD;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC,2EAA2E,4BAA4B;AACvG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG,2CAA2C;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uFAAuF,cAAc;AACrG;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,SAAS;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,KAAK;;AAEjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kCAAkC;AAC7D,2BAA2B,mDAAmD;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,EAAE;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC,iCAAiC,qBAAqB;AACtD,iCAAiC,wBAAwB,EAAE,sBAAsB;AACjF,gCAAgC,wBAAwB,EAAE,sBAAsB;AAChF,CAAC;;AAED;AACA;AACA;AACA,GAAG;AACH,mEAAmE,kBAAkB,KAAK,WAAW;AACrG,wDAAwD,sBAAsB;AAC9E;AACA,oCAAoC;AACpC;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,KAAK;AAC/E,wCAAwC,MAAM;AAC9C;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,oCAAoC;AACpC;AACA;AACA,mCAAmC;AACnC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,YAAY,OAAO;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mCAAmC;AACzC,MAAM;AACN;AACA;AACA;AACA,kBAAkB,oCAAoC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA,MAAM,mBAAmB;AACzB,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA,iEAAiE;AACjE;AACA;AACA,4HAA4H;AAC5H,2BAA2B,SAAS,SAAS;AAC7C;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA,IAAI;;;AAGJ;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;;AAGJ;AACA,+BAA+B,eAAe;AAC9C;AACA;;AAEA;AACA,+DAA+D,IAAI,KAAK,SAAS;AACjF;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,0CAA0C;AAC1C;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA,0MAA0M,opBAAopB,+wBAA+wB,qjBAAqjB;;AAElqE,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,oCAAoC;AACpC;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2EAA2E;AAC3E;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC;;AAEpC;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+CAA+C;AAChF;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qEAAqE,KAAK,gBAAgB,GAAG;AAC7F;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8DAA8D,WAAW;AACzE;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,wCAAwC;AACxC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,MAAM;AACnB;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK,aAAa;;AAElB;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;;AAGJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;;;AAGJ;AACA;AACA,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;;AAGA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD;;AAErD;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,WAAW,OAAO;AAClB,WAAW,0BAA0B;AACrC;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA,6DAA6D,QAAQ,mEAAmE,wHAAwH,gBAAgB,WAAW,qBAAqB,4BAA4B,cAAc,SAAS,8BAA8B,GAAG,EAAE,8JAA8J,EAAE,2BAA2B,yBAAyB;;AAE1lB,iDAAiD,gBAAgB,gEAAgE,wDAAwD,6DAA6D,sDAAsD,kHAAkH;;AAE9Z,sCAAsC,uDAAuD,uCAAuC,SAAS,uBAAuB,aAAa;;AAEjL;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,+OAA+O;AAC/O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gFAAgF,MAAM;;AAEtF;AACA;AACA;AACA,YAAY,GAAG,GAAG,KAAK;AACvB,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,+BAA+B,iCAAiC;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA,+BAA+B,UAAU,0BAA0B,UAAU;AAC7E,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;;AAEpE;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,KAAK;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;;AAEA,yEAAyE,6BAA6B;AACtG;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC,eAAe;AACtD,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO,YAAY;AAC9B,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA,qCAAqC;AACrC;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA,2DAA2D,2BAA2B;AACtF,wDAAwD,0BAA0B;;AAElF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,aAAa,gBAAgB;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,KAAK;AACL;AACA,GAAG,IAAI;;;AAGP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAwD,uBAAuB,wBAAwB,gBAAgB;AACvH,KAAK;AACL,mEAAmE,gBAAgB;AACnF;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK,GAAG;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;AACL,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA,2BAA2B;;AAE3B;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sCAAsC;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,mCAAmC;AACnC;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,IAAI;AAC7B,GAAG;;AAEH;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;;AAEvE;AACA;AACA;;AAEA,gEAAgE;AAChE;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,sBAAsB,UAAU;AAChC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL,sBAAsB,UAAU;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,aAAa;AAC9F;AACA;;AAEA;AACA;;AAEA;AACA,oFAAoF,eAAe;AACnG;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA6B,UAAU;;AAEvC;AACA,8BAA8B,UAAU;AACxC;AACA;;AAEA;AACA,8BAA8B,UAAU;AACxC;AACA,aAAa;;;AAGb;AACA;;AAEA;AACA;AACA,6BAA6B,UAAU;;AAEvC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC,UAAU;;AAEjD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;;AAEf;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA,oBAAoB,UAAU;AAC9B;AACA,GAAG;;;AAGH;AACA,oBAAoB,UAAU,6FAA6F,SAAS,OAAO,WAAW;AACtJ;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA,sBAAsB,UAAU,kCAAkC,MAAM;AACxE;;AAEA;AACA;AACA,sBAAsB,UAAU,kCAAkC,MAAM;AACxE;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,IAAI;AAC7B;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,IAAI;AACnE;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA,8BAA8B,OAAO,GAAG,IAAI,IAAI,KAAK;AACrD;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,KAAK;;AAEL;AACA,wBAAwB;;AAExB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,iBAAiB,+BAA+B;AAChD,iBAAiB;AACjB;AACA;AACA,mCAAmC,cAAc,EAAE;AACnD,UAAU,2BAA2B;AACrC;AACA;AACA;AACA,UAAU,2BAA2B;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,kDAAkD;AAC7D;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,yBAAyB;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,kDAAkD;AAC7D;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA,GAAG,aAAa;;;AAGhB;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;;AAEA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA,CAAC;;AAED,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB,SAAS;AAC1B;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,0CAA0C;;;AAG1C;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,WAAW,OAAO;AAClB;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,0CAA0C;;;AAG1C;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,WAAW,OAAO;AAClB;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA,aAAa,YAAY;AACzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC,OAAO;AAChD;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,0BAA0B;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,OAAO;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,cAAc,2BAA2B,EAAE,YAAY;AACvD;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uGAAuG,SAAS,IAAI,YAAY;AAChI;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,mIAAmI;AACnI;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,8CAA8C;AAC9C;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB,YAAY,OAAO;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA,yCAAyC,EAAE;;AAE3C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,EAAE;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,uEAAuE,aAAa;AACpF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA,0GAA0G;;;AAG1G;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,4JAA4J,cAAc,4HAA4H,cAAc;AACpT;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA,iFAAiF;;AAEjF;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA,iBAAiB,4BAA4B;AAC7C,iBAAiB,6BAA6B;AAC9C,iBAAiB;AACjB;AACA;AACA,iCAAiC,mBAAmB,EAAE;AACtD;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK,aAAa;;;AAGlB;AACA;AACA,KAAK,aAAa;;;AAGlB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yEAAyE,IAAI;AAC7E;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,mEAAmE;AACnE;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,uDAAuD;;;AAGvD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,yEAAyE,aAAa;AACtF;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ,WAAW,WAAW;AACxE;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;;AAEA,mDAAmD,aAAa,MAAM,mBAAmB;;AAEzF;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,mCAAmC,cAAc,IAAI,QAAQ;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,yEAAyE;AACzE;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,OAAO;AACP;;AAEA;AACA,mGAAmG;AACnG;;AAEA;AACA,gHAAgH;AAChH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;;AAEA;AACA,qGAAqG;AACrG;;AAEA;AACA,gHAAgH;AAChH;;AAEA;AACA,kIAAkI;AAClI;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,KAAK;AACZ;;AAEA;AACA,8FAA8F;AAC9F;;AAEA;AACA;AACA;AACA;AACA;AACA,2EAA2E,6BAA6B;AACxG;;AAEA;AACA;AACA;AACA;AACA;AACA,2EAA2E,6BAA6B;AACxG;;AAEA;AACA,yEAAyE;;AAEzE;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+CAA+C;AAC/C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,2HAA2H,UAAU;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,UAAU,iBAAiB,YAAY;AACjE;AACA;AACA,KAAK;AACL;AACA,gCAAgC,UAAU,iBAAiB,YAAY,oBAAoB,cAAc;AACzG;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,UAAU,iBAAiB,YAAY;AACvE;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;;AAEP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mHAAmH,aAAa;AAChI;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA,+HAA+H,gBAAgB,qFAAqF,qBAAqB;AACzP;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA,iEAAiE,gBAAgB;;AAEjF,sCAAsC;AACtC;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,SAAS;;;AAGT;;AAEA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA,SAAS;;;AAGT,sCAAsC;AACtC;;AAEA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;;;AAGA;AACA;AACA,SAAS;;AAET;AACA,OAAO;;AAEP;AACA;AACA;AACA,SAAS;;;AAGT,gGAAgG,qBAAqB,KAAK;AAC1H;;;AAGA;AACA,OAAO;;AAEP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA,2BAA2B;;;AAG3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB,WAAW;;AAEX,eAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA,KAAK;;;AAGL,WAAW;;AAEX;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;;AAE5B;AACA,sDAAsD;;AAEtD,cAAc;;AAEd;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA,qBAAqB;;AAErB;AACA,yCAAyC;;AAEzC,eAAe,oBAAoB;AACnC;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;;AAEA,2CAA2C;;AAE3C,eAAe,sBAAsB;AACrC;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA,KAAK;;;AAGL,eAAe,qBAAqB;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,mEAAmE;AACnE;;AAEA;AACA,qEAAqE;AACrE;;AAEA;AACA,4EAA4E;AAC5E;;AAEA;AACA,2EAA2E;AAC3E,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,0DAA0D;AAC1D;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA,qGAAqG,oBAAoB,EAAE;AAC3H,qGAAqG,oBAAoB,EAAE;;;AAG3H;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,YAAY,gBAAgB;AAC5B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,gBAAgB;AAC3B,YAAY,OAAO;AACnB;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,6BAA6B;AACxC;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,0BAA0B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,yBAAyB;AACvC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA,sBAAsB,QAAQ;AAC9B;AACA,sBAAsB,SAAS;AAC/B;AACA,sBAAsB,QAAQ;AAC9B;AACA,sBAAsB,QAAQ;AAC9B;;AAEA,2CAA2C,eAAe;AAC1D,wCAAwC,mBAAmB;AAC3D,4CAA4C,uBAAuB;AACnE;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B,aAAa,QAAQ;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA,uCAAuC,mBAAmB;AAC1D;AACA;AACA;;AAEA;;AAEA;;AAEA,eAAe,0BAA0B;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gBAAgB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,gBAAgB;AACxE;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA,sBAAsB,SAAS;AAC/B;AACA,uBAAuB,gBAAgB;AACvC,mBAAmB;;AAEnB,2CAA2C,eAAe;AAC1D;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,cAAc,WAAW;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,0BAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gBAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAgB;AAChB,YAAY,gBAAgB;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;;AAExB;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,0BAA0B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,yBAAyB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;AAKA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gDAAgD;;AAEhD;;AAEA;AACA;AACA;;AAEA;;AAEA,wCAAwC,iBAAiB;AACzD;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA,4BAA4B,sBAAsB,GAAG,sBAAsB;AAC3E,KAAK;AACL;AACA;AACA,GAAG;AACH,0BAA0B,sBAAsB,GAAG,sBAAsB;AACzE,GAAG;AACH;AACA;;AAEA,yBAAyB,iBAAiB,GAAG,eAAe;AAC5D;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;;AAEA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,uDAAuD;AACvD;AACA;AACA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA,yBAAyB;;AAEzB;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,wEAAwE,QAAQ;AAChF;AACA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA,aAAa,OAAO;AACpB,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,aAAa;AACb;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC,eAAe,qBAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,UAAU;AAC9F,sCAAsC;AACtC;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,0EAA0E,0BAA0B,EAAE,4BAA4B,sBAAsB,OAAO;AAC/J;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6DAA6D,MAAM;AACnE;;AAEA,oHAAoH,qBAAqB;AACzI;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,iBAAiB;AAC7B;;AAEA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,iBAAiB;AAC7B;;AAEA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,OAAO;AACnB;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA,2DAA2D;;AAE3D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,mCAAmC;AACnC,8CAA8C;AAC9C;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AA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OApCA;AAyCA;AACA,wBADA;AAEA,0BAFA;AAGA,4BAHA;AAIA,gCAJA;AAKA,cALA;AAMA,qBANA;AAOA,mBAPA;AAQA,0BARA;AASA,qBATA;AAUA,oBAVA;AAWA,uBAXA;AAYA,uBAZA;AAaA,4BAbA;AAcA,uCAdA;AAeA,4BAfA;AAgBA,uCAhBA;AAiBA,yBAjBA;AAkBA,cAlBA;AAmBA;AAnBA,OAzCA;AA8DA;AA9DA;AAgEA,GAxFA;AAyFA,SAzFA,qBAyFA;AAAA;;AACA;AACA;AACA;AACA,KAHA,MAGA;AACA;AACA,MAAM,gFAAkB,GAAxB;AACA;AACA;AACA;AACA;AACA,OALA;AAMA;AACA,GAtGA;;AAuGA;AACA;AAAA;;AACA;AACA;AACA;AACA,mCADA;AAEA,yCAFA;AAGA;AAHA;AAKA,oBACA,gBADA,GAEA,IAFA,CAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAbA,MAaA;AACA;AACA;AACA;AACA;AACA;AACA,OAtBA,EAuBA,KAvBA,CAuBA;AACA;AACA;AACA;AACA;AACA,OA5BA;AA6BA,KAtCA;AAuCA;AAAA;;AACA;AACA,mCADA;AAEA,yCAFA;AAGA;AAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAXA,EAYA,IAZA,CAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CADA,CACA;AACA,SAFA,MAEA;AACA,wCACA,kCADA;AAEA,yCACA,mCADA;AAEA;AACA;AACA;AACA;AACA;AACA,YACA,kCACA,8BAFA,EAGA;AACA;AACA,SALA,MAKA;AACA;AACA;AACA;AACA;AACA,OAnDA,EAoDA,KApDA,CAoDA;AACA;AACA;AACA;AACA;AACA,OAzDA;AA0DA,KAzGA;AA0GA;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA,OAFA,MAEA;AACA;AACA,OAFA,MAEA;AACA;AACA,OAFA,MAEA;AACA;AACA;AACA,KAtHA;AAuHA;AACA;AACA;AACA,KA1HA;AA2HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KApIA;AAqIA;AACA;AACA;AACA;AACA;AACA,KA1IA;AA2IA;AACA;AACA;AACA;AACA;AACA;AACA,OAFA;AAGA;AACA,KAnJA;AAoJA;AACA;AACA,KAtJA;AAuJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAzKA;AA0KA;AACA;AACA;AACA;AACA,OAFA,MAEA;AACA;AACA,kBACA,GADA,mDACA,eADA,EAEA,IAFA;AAAA,yLAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAFA;;AAAA;AAAA;AAAA;AAAA,aAeA,KAfA,CAeA;AACA;AACA;AACA,SAlBA;AAmBA;AACA,KApMA;AAqMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OARA,CAQA;AACA;AACA;AACA;AACA;AACA;AACA,KApNA;AAqNA;AACA;AACA,KAvNA;AAwNA;AACA;AACA;AACA,KA3NA;AA4NA;AACA;AACA;AACA,KA/NA;AAgOA;AACA;AACA;AACA;AACA,KApOA;AAqOA;AACA;AACA;AACA;AACA;AACA,+BACA,0BACA,4BADA,IAEA,yBAHA;AAIA;AACA,mEACA,gBADA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAXA;AAYA,KAlQA;AAmQA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAFA,EAEA,GAFA;AAGA,KA5QA;AA6QA;AACA;AACA;AACA,8BACA,KADA,CACA,sBADA,EAEA,IAFA,CAEA;AACA,8CACA,sBADA,GAEA,sBAFA;AAGA,gCACA,KADA,CACA,kBADA,EAEA,IAFA,CAEA;AACA,gDACA,sBADA,GAEA,sBAFA;AAGA;AACA,WAPA;AAQA,SAdA,EAeA,KAfA,CAeA;AACA;AACA,SAjBA;AAkBA,OAnBA,CAmBA;AACA;AACA;AACA,KArSA;AAsSA;AACA;AACA;AACA,+BACA,YADA,CACA,4BADA,EAEA,IAFA,CAEA;AACA;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA;AACA;AACA;AACA,WAFA,MAEA;AACA;AACA;AACA;AACA,SApBA,EAqBA,KArBA,CAqBA;AACA;AACA;AACA;AACA,SAzBA;AA0BA,OA3BA,CA2BA;AACA;AACA;AACA,KAtUA;AAuUA,iBAvUA,yBAuUA,UAvUA,EAuUA,QAvUA,EAuUA,SAvUA,EAuUA;AACA;AACA;AACA;AA1UA;AAvGA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxXA;;AAEA;AACA,sBADA;AAEA;AACA,uEADA;AAEA,yFAFA;AAGA,iFAHA;AAIA;AAJA,GAFA;AAQA;AACA,iBADA;AAEA;AAFA;AARA,G;;;;;;;AC3BA;;AAEA;AACA,cAAc,mBAAO,CAAC,IAAgb;AACtc,4CAA4C,QAAS;AACrD;AACA;AACA,aAAa,mBAAO,CAAC,CAAgE,gCAAgC;AACrH;AACA,GAAG,KAAU;AACb;AACA;AACA,mEAAmE,oBAAoB,+DAA+D,mFAAmF,gDAAgD,oEAAoE,uBAAuB;AACpX,4EAA4E,oBAAoB,+DAA+D,mFAAmF,gDAAgD,oEAAoE,uBAAuB;AAC7X;AACA;AACA,IAAI;AACJ;AACA;AACA,gCAAgC,UAAU,EAAE;AAC5C,C;;;;;;;ACpBA,2BAA2B,mBAAO,CAAC,CAAkD;AACrF;;;AAGA;AACA,cAAc,QAAS,yBAAyB,eAAe,sBAAsB,oBAAoB,2BAA2B,oDAAoD,iCAAiC,2BAA2B,yCAAyC,oCAAoC,4BAA4B,YAAY,8DAA8D,kEAAkE,0DAA0D,kDAAkD,iFAAiF,mDAAmD,mCAAmC,2BAA2B,YAAY,qBAAqB,qCAAqC,+BAA+B,6BAA6B,YAAY,0BAA0B,8BAA8B,8BAA8B,8BAA8B,8BAA8B,8BAA8B,8BAA8B,8BAA8B,8BAA8B,8BAA8B,8BAA8B,uCAAuC,wCAAwC,uCAAuC,uCAAuC,uCAAuC,uCAAuC,uCAAuC,sCAAsC,sCAAsC,0CAA0C,yCAAyC,yCAAyC,yCAAyC,yCAAyC,qCAAqC,uCAAuC,sCAAsC,QAAQ,+CAA+C,mDAAmD,kDAAkD,kDAAkD,kDAAkD,+CAA+C,+CAA+C,8CAA8C,8CAA8C,qDAAqD,oDAAoD,mDAAmD,iDAAiD,mDAAmD,GAAG,mBAAmB,+CAA+C,mDAAmD,kDAAkD,kDAAkD,kDAAkD,+CAA+C,+CAA+C,8CAA8C,8CAA8C,qDAAqD,oDAAoD,mDAAmD,iDAAiD,mDAAmD,wBAAwB,kBAAkB,gBAAgB,WAAW,YAAY,gBAAgB,mBAAmB,UAAU,0CAA0C,yCAAyC,eAAe,yBAAyB,sBAAsB,qBAAqB,iBAAiB,8BAA8B,0BAA0B,eAAe,mBAAmB,gBAAgB,wBAAwB,iBAAiB,qBAAqB,mBAAmB,yBAAyB,oBAAoB,qBAAqB,iBAAiB,yBAAyB,0CAA0C,sDAAsD,YAAY,wBAAwB,YAAY,yBAAyB,wCAAwC,kBAAkB,yBAAyB,eAAe,2BAA2B,sBAAsB,gCAAgC,gBAAgB,YAAY,2BAA2B,8BAA8B,iBAAiB,oBAAoB,wCAAwC,gBAAgB,mBAAmB,uBAAuB,wCAAwC,kBAAkB,wBAAwB,UAAU,4CAA4C,0CAA0C,iBAAiB,yBAAyB,wCAAwC,kBAAkB,0BAA0B,wCAAwC,eAAe,kBAAkB,wBAAwB,UAAU,4CAA4C,+CAA+C,iBAAiB,mBAAmB,4CAA4C,qCAAqC,iBAAiB,8BAA8B,2CAA2C,6BAA6B,iBAAiB,4CAA4C,iCAAiC,4CAA4C,sBAAsB,sBAAsB,eAAe,wCAAwC,gBAAgB,+CAA+C,yCAAyC,4BAA4B,yCAAyC,kBAAkB,sBAAsB,eAAe,oBAAoB,mBAAmB,gCAAgC,0BAA0B,2BAA2B,wCAAwC,kBAAkB,yCAAyC,kBAAkB,0BAA0B,iBAAiB,0CAA0C,0BAA0B,eAAe,0CAA0C,gDAAgD,0CAA0C,yBAAyB,oBAAoB,YAAY,kBAAkB,+BAA+B,0CAA0C,oBAAoB,oBAAoB,UAAU,iBAAiB,qBAAqB,wBAAwB,2BAA2B,iBAAiB,UAAU,4CAA4C,4CAA4C,iBAAiB,6BAA6B,YAAY,gCAAgC,0BAA0B,8BAA8B,YAAY,gCAAgC,0BAA0B,+BAA+B,qCAAqC,+BAA+B,gCAAgC,sCAAsC,gCAAgC,oFAAoF,iCAAiC,2BAA2B,8UAA8U,cAAc,sBAAsB,+BAA+B,mCAAmC,sBAAsB,+BAA+B,mCAAmC,sBAAsB,+BAA+B,mCAAmC,sBAAsB,+BAA+B,mCAAmC,sBAAsB,+BAA+B,mCAAmC,sBAAsB,+BAA+B,mCAAmC,sBAAsB,+BAA+B,mCAAmC,sBAAsB,+BAA+B,mCAAmC,sBAAsB,+BAA+B,mCAAmC,sBAAsB,+BAA+B,mCAAmC,mBAAmB,kBAAkB,iBAAiB,sBAAsB,iBAAiB,4CAA4C,gJAAgJ,YAAY,oBAAoB,mBAAmB,2CAA2C,iBAAiB,yDAAyD,gBAAgB,mBAAmB,6BAA6B,UAAU,iBAAiB,yDAAyD,0CAA0C,mCAAmC,YAAY,gCAAgC,sBAAsB,mBAAmB,kBAAkB,iBAAiB,gCAAgC,aAAa,mBAAmB,uHAAuH,wCAAwC,6CAA6C,kDAAkD,4CAA4C,8CAA8C,sCAAsC,gCAAgC,oDAAoD,kBAAkB,qCAAqC,+BAA+B,2CAA2C,sBAAsB,4CAA4C,iDAAiD,kBAAkB,qCAAqC,+BAA+B,8CAA8C,sBAAsB,4CAA4C,oDAAoD,kBAAkB,qCAAqC,+BAA+B,qDAAqD,aAAa,iBAAiB,+CAA+C,sBAAsB,4CAA4C,qDAAqD,kBAAkB,qCAAqC,+BAA+B,sDAAsD,aAAa,iBAAiB,kDAAkD,iBAAiB,+CAA+C,iBAAiB,0CAA0C,gEAAgE,0DAA0D,qDAAqD,0CAA0C,6DAA6D,uDAAuD,qDAAqD,eAAe,uDAAuD,YAAY,mEAAmE,kBAAkB,iBAAiB,yEAAyE,oBAAoB,8CAA8C,UAAU,mBAAmB,gDAAgD,UAAU,mBAAmB,4BAA4B,6CAA6C,2BAA2B,UAAU,mBAAmB,0DAA0D,uBAAuB,yBAAyB,UAAU,iBAAiB,+BAA+B,wCAAwC,iBAAiB,gBAAgB,eAAe,iBAAiB,qCAAqC,2CAA2C,mCAAmC,mDAAmD,qDAAqD,8BAA8B,sBAAsB,+BAA+B,gCAAgC,2CAA2C,iBAAiB,kCAAkC,0CAA0C,4EAA4E,gCAAgC,+BAA+B,UAAU,iBAAiB,mCAAmC,eAAe,mBAAmB,uCAAuC,iBAAiB,mCAAmC,wCAAwC,kBAAkB,sBAAsB,kBAAkB,oDAAoD,YAAY,kBAAkB,WAAW,iCAAiC,2BAA2B,6BAA6B,oBAAoB,UAAU,gBAAgB,wDAAwD,kDAAkD,4BAA4B,iBAAiB,kBAAkB,UAAU,yCAAyC,yCAAyC,oBAAoB,wBAAwB,UAAU,0CAA0C,mBAAmB,8BAA8B,kBAAkB,0BAA0B,0CAA0C,6BAA6B,mBAAmB,8CAA8C,mBAAmB,gDAAgD,6CAA6C,sDAAsD,0CAA0C,mBAAmB,4CAA4C,yCAAyC,iBAAiB,+CAA+C,aAAa,iBAAiB,iDAAiD,0CAA0C,wBAAwB,8CAA8C,iBAAiB,6CAA6C,kDAAkD,0CAA0C,mBAAmB,oEAAoE,gDAAgD,wCAAwC,iBAAiB,4CAA4C,kBAAkB,0CAA0C,oDAAoD,8CAA8C,kDAAkD,eAAe,4CAA4C,gDAAgD,4CAA4C,qCAAqC,iBAAiB,oCAAoC,0CAA0C,kBAAkB,mBAAmB,gCAAgC,0CAA0C,YAAY,+BAA+B,0CAA0C,uCAAuC,mBAAmB,+BAA+B,0CAA0C,8CAA8C,iDAAiD,mBAAmB,gDAAgD,oBAAoB,oDAAoD,iBAAiB,oDAAoD,iBAAiB,4CAA4C,qDAAqD,yCAAyC,gBAAgB,cAAc,oDAAoD,iBAAiB,8BAA8B,wCAAwC,0CAA0C,iBAAiB,+BAA+B,wCAAwC,0CAA0C,mBAAmB,8BAA8B,0CAA0C,+BAA+B,YAAY,mBAAmB,8BAA8B,6BAA6B,0CAA0C,mBAAmB,qBAAqB,uCAAuC,0CAA0C,eAAe,iBAAiB,8BAA8B,wBAAwB,0BAA0B,wCAAwC,kBAAkB,2BAA2B,4BAA4B,oBAAoB,wCAAwC,4CAA4C,gCAAgC,0CAA0C,6BAA6B,iBAAiB,0CAA0C,4CAA4C,kCAAkC,wCAAwC,mBAAmB,mCAAmC,0CAA0C,wDAAwD,iBAAiB,+BAA+B,YAAY,+BAA+B,0CAA0C,+BAA+B,YAAY,+BAA+B,wCAAwC,kBAAkB,0BAA0B,iBAAiB,4CAA4C,kCAAkC,kBAAkB,SAAS,UAAU,WAAW,UAAU,kBAAkB,YAAY,mCAAmC,wCAAwC,kBAAkB,oDAAoD,eAAe,mDAAmD,2CAA2C,mBAAmB,sDAAsD,0CAA0C,8DAA8D,sCAAsC,0CAA0C,yEAAyE,sCAAsC,0CAA0C,4DAA4D,iBAAiB,0CAA0C,kDAAkD,mBAAmB,mEAAmE,0CAA0C,wCAAwC,8BAA8B,wBAAwB,yEAAyE,2CAA2C,4CAA4C,kDAAkD,yCAAyC,gBAAgB,mBAAmB,2CAA2C,sEAAsE,8DAA8D,0CAA0C,uBAAuB,iDAAiD,8CAA8C,sCAAsC,mBAAmB,+CAA+C,YAAY,+CAA+C,iBAAiB,6BAA6B,gBAAgB,iBAAiB,oBAAoB,+CAA+C,wCAAwC,4CAA4C,qDAAqD,0CAA0C,yEAAyE,mBAAmB,mCAAmC,0CAA0C,iBAAiB,YAAY,wBAAwB,iBAAiB,+BAA+B,0CAA0C,yBAAyB,yCAAyC,uBAAuB,mBAAmB,4BAA4B,wCAAwC,YAAY,uBAAuB,kCAAkC,wCAAwC,4CAA4C,4BAA4B,0CAA0C,mBAAmB,mBAAmB,YAAY,8CAA8C,kBAAkB,cAAc,wCAAwC,kCAAkC,wBAAwB,gBAAgB,kBAAkB,yCAAyC,eAAe,gBAAgB,qBAAqB,cAAc,iDAAiD,2CAA2C,8BAA8B,+CAA+C,iCAAiC,UAAU,eAAe,iBAAiB,oCAAoC,0CAA0C,8BAA8B,iBAAiB,8GAA8G,eAAe,2CAA2C,iBAAiB,4BAA4B,2BAA2B,iBAAiB,gBAAgB,0CAA0C,2BAA2B,iBAAiB,2CAA2C,mBAAmB,4BAA4B,iBAAiB,iCAAiC,iBAAiB,4CAA4C,sCAAsC,iBAAiB,4CAA4C,mCAAmC,iBAAiB,2CAA2C,yCAAyC,oBAAoB,oCAAoC,wCAAwC,kBAAkB,gCAAgC,eAAe,6BAA6B,eAAe,aAAa,cAAc,YAAY,gBAAgB,UAAU,SAAS,cAAc,oBAAoB,kCAAkC,kBAAkB,8BAA8B,kBAAkB,UAAU,WAAW,gBAAgB,mBAAmB,8BAA8B,gBAAgB,eAAe,6BAA6B,oBAAoB,kHAAkH,kBAAkB,qBAAqB,4DAA4D,eAAe,yEAAyE,iBAAiB,oCAAoC,YAAY,yCAAyC,mBAAmB,8CAA8C,mBAAmB,cAAc,qBAAqB,gBAAgB,gBAAgB,mBAAmB,QAAQ,qBAAqB,KAAK,qBAAqB,YAAY,KAAK,qBAAqB,gBAAgB,IAAI,gBAAgB,wCAAwC,gCAAgC,0BAA0B,6BAA6B,YAAY,QAAQ,eAAe,sBAAsB,6BAA6B,iBAAiB,mBAAmB,uBAAuB,qBAAqB,gBAAgB,mBAAmB,cAAc,uBAAuB,uBAAuB,QAAQ,aAAa,aAAa,YAAY,aAAa,gBAAgB,gBAAgB,gBAAgB,gBAAgB,8BAA8B,kBAAkB,8BAA8B,cAAc,+BAA+B,cAAc,aAAa,qBAAqB,6BAA6B,aAAa,yBAAyB,yBAAyB,aAAa,iBAAiB,eAAe,cAAc,cAAc,YAAY,iBAAiB,QAAQ,YAAY,gBAAgB,YAAY,mBAAmB,iBAAiB,iBAAiB,oBAAoB,qBAAqB,oCAAoC,uCAAuC,OAAO,iBAAiB,oBAAoB,UAAU,yBAAyB,WAAW,WAAW,gCAAgC,iBAAiB,wCAAwC,aAAa,oBAAoB,+CAA+C,GAAG,uCAAuC,oBAAoB,8CAA8C,GAAG;;AAEllxB;;;;;;;;ACPA,aAAa,qBAAqB,wDAAwD,eAAe,aAAa,aAAa,8BAA8B,eAAe,2BAA2B,SAAS,2BAA2B,0OAA0O;AACzd,6DAA6D,iCAAiC,iBAAiB,mBAAmB,wBAAwB,gCAAgC,yBAAyB,YAAY,kCAAkC,0BAA0B,uBAAuB,sBAAsB,8BAA8B,yBAAyB,mCAAmC,uBAAuB,iBAAiB,iCAAiC,qBAAqB,qCAAqC;AACriB,qBAAqB,sCAAsC,qBAAqB,qCAAqC,2BAA2B,6CAA6C,oBAAoB,oCAAoC,sBAAsB,qBAAqB,6BAA6B,wBAAwB,kBAAkB,iBAAiB,yBAAyB,oBAAoB,sBAAsB,iCAAiC,kBAAkB,6BAA6B;AAC3gB,mBAAmB,+BAA+B,qBAAqB,gCAAgC,sBAAsB,iCAAiC,sBAAsB,sBAAsB,0BAA0B,qBAAqB,4BAA4B,uBAAuB,mBAAmB,0BAA0B,qBAAqB,2CAA2C;AACzZ;AACA,IAAI,0BAA0B,2HAA2H,4BAA4B,oCAAoC,0BAA0B,uCAAuC,4BAA4B,qCAAqC,+BAA+B,uCAAuC,wBAAwB,6CAA6C,qBAAqB;AAC3f,MAAM,mBAAmB,iCAAiC,mBAAmB,iCAAiC,2BAA2B,uOAAuO,0BAA0B,yBAAyB,iCAAiC,sCAAsC,mCAAmC;AAC7gB,uBAAuB,0BAA0B,yBAAyB,0BAA0B,yBAAyB,uBAAuB,iBAAiB,2BAA2B,mGAAmG,SAAS,mBAAmB,+BAA+B,2BAA2B,uCAAuC,oBAAoB,kDAAkD,4BAA4B;AAClgB,uIAAuI,0BAA0B,sDAAsD,kCAAkC,oFAAoF,wBAAwB,wCAAwC,yBAAyB,iBAAiB,6BAA6B;AACpd,mFAAmF,SAAS,oBAAoB,mBAAmB,qBAAqB,oCAAoC,mBAAmB,aAAa,eAAe,UAAU,QAAQ,QAAQ,YAAY,WAAW,UAAU,KAAK,mBAAmB,mBAAmB,aAAa,YAAY,SAAS,UAAU,YAAY,UAAU,MAAM,OAAO,UAAU,WAAW,QAAQ,qBAAqB,UAAU,kBAAkB,YAAY,SAAS,cAAc,aAAa,cAAc,QAAQ,eAAe,aAAa,QAAQ,QAAQ,UAAU,OAAO,QAAQ,eAAe,YAAY,WAAW,cAAc,SAAS,WAAW,yBAAyB,OAAO,WAAW,UAAU,mBAAmB,eAAe,gBAAgB,kBAAkB,gBAAgB,YAAY,SAAS,SAAS,MAAM,qBAAqB,UAAU,YAAY,UAAU,MAAM,SAAS,OAAO,aAAa,cAAc,kBAAkB,YAAY,SAAS,UAAU,SAAS,MAAM,WAAW,sBAAsB,uBAAuB,WAAW,iBAAiB,SAAS,QAAQ,QAAQ,KAAK,MAAM,gBAAgB,MAAM,SAAS,QAAQ,QAAQ,WAAW,iBAAiB,WAAW,MAAM,KAAK,mBAAmB,iBAAiB,OAAO,eAAe,QAAQ,aAAa,WAAW,SAAS,MAAM,QAAQ,QAAQ,SAAS,QAAQ,aAAa,OAAO,mBAAmB,OAAO,MAAM,WAAW,WAAW,QAAQ,eAAe,KAAK,cAAc,eAAe,WAAW,oBAAoB,UAAU,UAAU,WAAW,WAAW,wBAAwB,aAAa,QAAQ,QAAQ,cAAc,OAAO,QAAQ,0BAA0B,UAAU,OAAO,MAAM,mBAAmB,mBAAmB,sBAAsB,kBAAkB,qBAAqB,iBAAiB,iBAAiB,gBAAgB,mBAAmB,QAAQ,aAAa,cAAc,mBAAmB,aAAa,OAAO,gBAAgB,UAAU,QAAQ,SAAS,eAAe,cAAc,MAAM,SAAS,cAAc,iBAAiB,kBAAkB,QAAQ,SAAS,qBAAqB,SAAS,aAAa,uBAAuB,yBAAyB,eAAe,2BAA2B,0BAA0B,2BAA2B,4BAA4B,0BAA0B,yBAAyB,0BAA0B,2BAA2B,iBAAiB,gBAAgB,iBAAiB,kBAAkB,MAAM,QAAQ,SAAS,IAAI,eAAe,SAAS,eAAe,YAAY,aAAa,eAAe,kBAAkB,gBAAgB,SAAS,cAAc,gBAAgB,OAAO,OAAO,OAAO,YAAY,wBAAwB,kBAAkB,SAAS,QAAQ,OAAO,OAAO,uBAAuB,mBAAmB,oBAAoB,sBAAsB,oBAAoB,gBAAgB,SAAS,mBAAmB,aAAa,MAAM,+BAA+B,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAK,QAAQ,OAAO,gBAAgB,OAAO,SAAS,WAAW,mBAAmB;AAC5iG,SAAS,WAAW,2DAA2D,SAAS,2BAA2B,IAAI,uBAAuB,SAAS,UAAU,6BAA6B,IAAI,yBAAyB,SAAS,UAAU,qBAAqB,+BAA+B,wBAAwB,4DAA4D,wBAAwB,0BAA0B,8BAA8B,gCAAgC,qBAAqB;AAC3f,iCAAiC,IAAI,4CAA4C,SAAS,UAAU,2BAA2B,yCAAyC,IAAI,qBAAqB,SAAS,SAAS,qBAAqB,sBAAsB,4BAA4B,mBAAmB,wBAAwB,mBAAmB,6CAA6C,qCAAqC,6CAA6C,uBAAuB;AAC9e,gEAAgE,aAAa,UAAU,0BAA0B,cAAc,+CAA+C,cAAc,4DAA4D,8CAA8C,uCAAuC,qCAAqC;AAClX,sGAAsG,IAAI,gHAAgH,SAAS,oCAAoC,OAAO,kPAAkP;AAChgB,uHAAuH,SAAS,gEAAgE,gBAAgB,0BAA0B;AAC1O,gdAAgd,sBAAsB,WAAW;AACjf,MAAM,SAAS,0BAA0B,2DAA2D,SAAS,0KAA0K,SAAS,+BAA+B,kCAAkC,sCAAsC,gCAAgC;AACva,2BAA2B,qBAAqB,KAAK,kBAAkB,6BAA6B,KAAK,2BAA2B,2DAA2D,4BAA4B,eAAe,2BAA2B,8CAA8C,wCAAwC,KAAK,SAAS,gCAAgC,6GAA6G;AACtf,6BAA6B,0DAA0D,SAAS,mLAAmL,SAAS,oBAAoB,mCAAmC;AACnV,wCAAwC,KAAK,qCAAqC,wEAAwE,oKAAoK,SAAS,2BAA2B,mCAAmC,kEAAkE;AACvc,iRAAiR,8BAA8B,2BAA2B,oCAAoC,gBAAgB,MAAM,GAAG,kBAAkB,uBAAuB,IAAI,iBAAiB,KAAK,QAAQ,KAAK;AACvd,qBAAqB,KAAK,gBAAgB,6BAA6B,sDAAsD,4CAA4C,wDAAwD,wBAAwB,wCAAwC,0BAA0B,gFAAgF,YAAY,wBAAwB,WAAW,qDAAqD;AAC/e,4FAA4F,iBAAiB,QAAQ,WAAW,yDAAyD,6FAA6F,SAAS,iCAAiC,mCAAmC,qCAAqC,SAAS;AACjZ,kCAAkC,SAAS,uCAAuC,YAAY,6BAA6B,KAAK,qEAAqE,oBAAoB,6EAA6E,uCAAuC,kCAAkC,kCAAkC;AACjZ,WAAW,+CAA+C,0BAA0B,0BAA0B,sPAAsP,qGAAqG;AACzc,wOAAwO,4CAA4C,2CAA2C,sFAAsF,sCAAsC,aAAa,0DAA0D;AAClgB,yCAAyC,2CAA2C,kFAAkF,WAAW,IAAI,oCAAoC,4BAA4B,WAAW,OAAO,OAAO,4BAA4B,WAAW,MAAM,sCAAsC,aAAa,0DAA0D,oBAAoB,oBAAoB,SAAS,8BAA8B;AACvf,iBAAiB,uBAAuB,gCAAgC,0EAA0E,iCAAiC,2EAA2E,8BAA8B,mBAAmB,wEAAwE,mCAAmC,6EAA6E,4BAA4B;AACngB,EAAE,sBAAsB,gEAAgE,oCAAoC,UAAU,SAAS,wBAAwB,kBAAkB,8DAA8D,sBAAsB,eAAe,WAAW,oEAAoE,SAAS,2CAA2C,iCAAiC;AAChc,YAAY,QAAQ,KAAK,YAAY,WAAW,qDAAqD,8BAA8B,MAAM,QAAQ,IAAI,KAAK,sBAAsB,mBAAmB,SAAS,QAAQ,IAAI,2BAA2B,+BAA+B,SAAS,uBAAuB,2BAA2B,wCAAwC,4DAA4D;AACjb;AACA,qIAAqI,mFAAmF,wBAAwB,8BAA8B,qCAAqC,+IAA+I,IAAI,kCAAkC,SAAS,UAAU;AAC3f,uBAAuB,oCAAoC,wCAAwC,qCAAqC,iBAAiB,mCAAmC,SAAS,gCAAgC,8HAA8H,YAAY,6BAA6B,KAAK,8BAA8B;AAC/a,kDAAkD,SAAS,mCAAmC,0DAA0D,+CAA+C,2BAA2B,4FAA4F,4CAA4C,iIAAiI;AAC3e,SAAS,sBAAsB,oKAAoK,SAAS,qBAAqB,sBAAsB,0NAA0N,SAAS;AAC1d,GAAG,0CAA0C,WAAW,sBAAsB,QAAQ,WAAW,sBAAsB,sBAAsB,wFAAwF,yBAAyB,sBAAsB,cAAc,iBAAiB,eAAe,qBAAqB,uIAAuI;AAC9d,sIAAsI,2BAA2B,wBAAwB,6MAA6M,oBAAoB,8BAA8B;AACxb,kEAAkE,0BAA0B,SAAS,8BAA8B,YAAY,6BAA6B,sLAAsL,cAAc,6BAA6B;AAC7Y,0CAA0C,mBAAmB,mBAAmB,OAAO,eAAe,yBAAyB,UAAU,eAAe,2BAA2B,UAAU,eAAe,qBAAqB,UAAU,yCAAyC,SAAS,GAAG,wBAAwB,qHAAqH,wBAAwB,4BAA4B,QAAQ,KAAK,GAAG,kHAAkH,wBAAwB,WAAW,YAAY,8BAA8B,iBAAiB,sDAAsD,iBAAiB,OAAO,WAAW,gCAAgC,cAAc,aAAa,aAAa,IAAI,QAAQ,IAAI,wXAAwX,IAAI,UAAU;AACxvC,YAAY,qCAAqC,oLAAoL,YAAY,UAAU,oEAAoE,UAAU,oEAAoE,sBAAsB,yBAAyB,aAAa,OAAO,IAAI,6EAA6E,4BAA4B,SAAS,OAAO,KAAK,uBAAuB,IAAI,YAAY,cAAc,oBAAoB,cAAc,0EAA0E,+EAA+E,0DAA0D,qCAAqC;AACj6B,SAAS,oBAAoB,IAAI,KAAK,gBAAgB,aAAa,oEAAoE,uDAAuD,uBAAuB,MAAM,QAAQ,YAAY,sCAAsC,gCAAgC,+FAA+F,cAAc,IAAI,gCAAgC,OAAO,iBAAiB,OAAO,IAAI,IAAI;AAC7e,aAAa,eAAe,mBAAmB,IAAI,KAAK,mCAAmC,iBAAiB,cAAc,WAAW,yEAAyE,KAAK,2BAA2B,qCAAqC,uCAAuC,gEAAgE,2DAA2D,YAAY,kDAAkD;AACnf,EAAE,gHAAgH,WAAW,kBAAkB,+CAA+C,4FAA4F,cAAc,WAAW,uHAAuH,SAAS,aAAa;AAChc,oBAAoB,KAAK,UAAU,GAAG,iBAAiB,WAAW,MAAM,+CAA+C,yBAAyB,4FAA4F,gGAAgG,2DAA2D,iCAAiC;AACxa,yBAAyB,kEAAkE,kKAAkK,4EAA4E,IAAI,UAAU,cAAc,iCAAiC,6BAA6B,+BAA+B,kCAAkC;AACpe,YAAY,4EAA4E,IAAI,uCAAuC,cAAc,6BAA6B,uCAAuC,uFAAuF,IAAI,kGAAkG,SAAS,kBAAkB,aAAa,2BAA2B;AACrd,sBAAsB,WAAW,uLAAuL,KAAK,yFAAyF,+FAA+F,iBAAiB,UAAU,KAAK,4BAA4B;AACjd,0JAA0J,gLAAgL,+BAA+B,IAAI,SAAS,cAAc,WAAW,yEAAyE,oBAAoB;AAC5e,MAAM,oDAAoD,6BAA6B,qCAAqC,iCAAiC,cAAc,WAAW,IAAI,sBAAsB,UAAU,SAAS,kBAAkB,mBAAmB,oBAAoB,cAAc,WAAW,eAAe,uBAAuB,0BAA0B,0BAA0B,kFAAkF,oBAAoB;AACrf,QAAQ,wCAAwC,uaAAua,MAAM,MAAM,gBAAgB,MAAM;AACzf,qBAAqB,0DAA0D,cAAc,wBAAwB,2EAA2E,uDAAuD,UAAU,yDAAyD;AAC1T,yJAAyJ;AACzJ,yIAAyI,gDAAgD,yDAAyD,gIAAgI,UAAU,OAAO,iCAAiC,GAAG,YAAY;AACnb,wOAAwO,qFAAqF,qBAAqB,OAAO,IAAI,mCAAmC,SAAS,+BAA+B,OAAO,KAAK,qBAAqB;AACzc,gCAAgC,UAAU,IAAI,YAAY,sDAAsD,uBAAuB,IAAI,yCAAyC,WAAW,QAAQ,IAAI,YAAY,yBAAyB,OAAO,yCAAyC,eAAe,EAAE,IAAI,OAAO,iCAAiC,eAAe,SAAS,OAAO,eAAe,mBAAmB,eAAe,cAAc,QAAQ,WAAW,gBAAgB,EAAE,2BAA2B,oBAAoB;AAC/gB,uCAAuC,OAAO,iBAAiB,6DAA6D,MAAM,MAAM,SAAS,mDAAmD,SAAS,UAAU,WAAW,KAAK,mDAAmD,6HAA6H,yDAAyD,KAAK,WAAW,SAAS,WAAW,OAAO;AAC3f,IAAI,QAAQ,WAAW,kCAAkC,KAAK,uCAAuC,OAAO,6CAA6C,mDAAmD,wBAAwB,sCAAsC,sBAAsB,uBAAuB,WAAW,6BAA6B,iBAAiB,iEAAiE,yCAAyC,MAAM;AAChe,uBAAuB,2BAA2B,WAAW,4FAA4F,SAAS,mCAAmC,MAAM,6BAA6B,mGAAmG,QAAQ,GAAG,eAAe,OAAO,qBAAqB,2GAA2G,SAAS,mBAAmB,2EAA2E,sBAAsB,uBAAuB,mBAAmB,6CAA6C,cAAc,sCAAsC,eAAe,EAAE,oBAAoB,uCAAuC;AACh0B,8CAA8C,UAAU,eAAe,wCAAwC,WAAW,yTAAyT,KAAK,SAAS,iBAAiB;AACld,0BAA0B,cAAc,KAAK,sCAAsC,wCAAwC,SAAS,IAAI,uKAAuK,IAAI;AACnT;AACA,+HAA+H,EAAE;AACjI,2JAA2J,6TAA6T;AACxd,kEAAkE;AAClE,qLAAqL,6CAA6C,wDAAwD,wDAAwD,MAAM,iEAAiE,4DAA4D;AACrd,oBAAoB,8BAA8B,gDAAgD,yEAAyE,QAAQ,sJAAsJ,IAAI;AAC7U,+LAA+L,yBAAyB,gEAAgE,yEAAyE;AACjW,qFAAqF,4FAA4F,KAAK,+OAA+O,EAAE;AACva,wGAAwG,4LAA4L,0BAA0B,cAAc,wBAAwB,iHAAiH;AACrd,wDAAwD,iJAAiJ,uBAAuB,yEAAyE,EAAE,iLAAiL,IAAI;AAChe,iFAAiF,IAAI,2GAA2G,EAAE,yQAAyQ;AAC3c,WAAW,mQAAmQ,GAAG,GAAG,KAAK,EAAE,uEAAuE,GAAG,GAAG,eAAe,IAAI;AAC3X,MAAM,0JAA0J,YAAY,0HAA0H;AACtS,yEAAyE,qBAAqB;AAC9F,sBAAsB,4MAA4M,6LAA6L,aAAa,qDAAqD;AACje,8CAA8C,iCAAiC,wJAAwJ;AACvO,uFAAuF,IAAI,+FAA+F;AAC1L,4CAA4C,iBAAiB,uDAAuD,8FAA8F,2BAA2B,8BAA8B,2BAA2B,UAAU,uBAAuB,4BAA4B,0BAA0B,+BAA+B,0BAA0B,+BAA+B,sBAAsB;AAC3e,OAAO,0BAA0B,OAAO,8HAA8H,sBAAsB,UAAU,uBAAuB,IAAI,aAAa,cAAc,aAAa,mBAAmB,WAAW,6CAA6C,OAAO,6BAA6B,UAAU;AAClY,qBAAqB,UAAU,+BAA+B,MAAM,+BAA+B,KAA4B,uJAAuJ,SAAS,eAAe,wBAAwB,2BAA2B,YAAY,mBAAmB,oBAAoB,kBAAkB,qBAAqB,WAAW,gBAAgB,8BAA8B;AACpf;;;;;;;;;AChFA;AAAA;AAAA;AAAA;AACA;AACA;AACA,EAAE,mBAAO,CAAC,IAA2T;AACrU;AACA,yBAAyB,mBAAO,CAAC,CAA4D;AAC7F;AACmH;AACa;AAChI;AACuX;AACvX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,wIAAc;AAChB,EAAE,6SAAgB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,KAAU,GAAG;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAEc,0EAAiB;;;;;;;;AC7ChC;;AAEA;AACA,cAAc,mBAAO,CAAC,IAAiX;AACvY,4CAA4C,QAAS;AACrD;AACA;AACA,aAAa,mBAAO,CAAC,CAAgE,gCAAgC;AACrH;AACA,GAAG,KAAU;AACb;AACA;AACA,mEAAmE,oBAAoB,+DAA+D,mFAAmF,gDAAgD,oBAAoB;AAC7S,4EAA4E,oBAAoB,+DAA+D,mFAAmF,gDAAgD,oBAAoB;AACtT;AACA;AACA,IAAI;AACJ;AACA;AACA,gCAAgC,UAAU,EAAE;AAC5C,C;;;;;;;ACpBA,2BAA2B,mBAAO,CAAC,CAAkD;AACrF;;;AAGA;AACA,cAAc,QAAS,wBAAwB,sBAAsB,GAAG;;AAExE;;;;;;;;;ACPA;AACA;AACA;AACA;AACA,oBAAoB,6BAA6B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACF,kEAAS;AACxB,IAAI,KAAU;AACd;AACA;AACA;AACA;AACA,C;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,SAAS,qBAAqB,EAAE;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,uCAAuC,gBAAgB,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sCAAsC;AAC7D;AACA,iCAAiC,eAAe,yBAAyB,EAAE;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iCAAiC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,iCAAiC;AACjC,2BAA2B;AAC3B;AACA;AACA,sCAAsC;AACtC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,iCAAiC;AACjC,2BAA2B;AAC3B;AACA;AACA,sCAAsC;AACtC,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS,eAAe,EAAE;AACtD;AACA,2BAA2B,eAAe,wBAAwB,EAAE;AACpE;AACA;AACA;AACA;AACA,oCAAoC;AACpC,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAyC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAyC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wCAAwC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sCAAsC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,+BAA+B;AAC/B,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe,wBAAwB,EAAE;AAC5D;AACA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,oCAAoC,gCAAgC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,yCAAyC,kCAAkC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,+BAA+B;AAC/B;AACA;AACA;AACA,mCAAmC,SAAS,gBAAgB,EAAE;AAC9D;AACA;AACA;AACA,uCAAuC,SAAS,YAAY,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,SAAS,YAAY,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA,2CAA2C,iCAAiC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,6CAA6C;AAC7C,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,6CAA6C;AAC7C,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,6CAA6C;AAC7C,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,6CAA6C;AAC7C,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gCAAgC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gCAAgC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,SAAS,oBAAoB,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,uCAAuC;AACvC;AACA;AACA;AACA;AACA,0DAA0D;AAC1D,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS,sBAAsB,EAAE;AACpE;AACA;AACA;AACA,uCAAuC,SAAS,oBAAoB,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,uCAAuC;AACvC;AACA;AACA;AACA;AACA,0DAA0D;AAC1D,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA,2CAA2C,iCAAiC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,yCAAyC;AACzC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gCAAgC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6BAA6B;AAC5D;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,uCAAuC;AACvC;AACA;AACA;AACA,kDAAkD;AAClD,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,uCAAuC;AACvC;AACA;AACA;AACA,kDAAkD;AAClD,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6BAA6B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6BAA6B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA,2CAA2C,iCAAiC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,6CAA6C;AAC7C,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,6CAA6C;AAC7C,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,6CAA6C;AAC7C,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACF,kEAAS;AACxB,IAAI,KAAU;AACd;AACA;AACA;AACA;AACA,C","file":"static-appopensalud/js/24.a3a9f92b969af2e06210.js","sourcesContent":["var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?{\\\"sourceMap\\\":false}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2fb23e8f\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"data\\\":\\\"@import \\\\\\\"static-appopensalud/css/scss/shared.scss\\\\\\\";\\\",\\\"sourceMap\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Test.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Test.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Test.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2fb23e8f\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Test.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/video-launcher/Test.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-2fb23e8f\", Component.options)\n } else {\n hotAPI.reload(\"data-v-2fb23e8f\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/video-launcher/Test.vue\n// module id = 1286\n// module chunks = 24","/*\n Highcharts JS v11.0.1 (2023-05-08)\n\n (c) 2009-2021 Torstein Honsi\n\n License: www.highcharts.com/license\n*/\n'use strict';(function(S,M){\"object\"===typeof module&&module.exports?(M[\"default\"]=M,module.exports=S.document?M(S):M):\"function\"===typeof define&&define.amd?define(\"highcharts/highcharts\",function(){return M(S)}):(S.Highcharts&&S.Highcharts.error(16,!0),S.Highcharts=M(S))})(\"undefined\"!==typeof window?window:this,function(S){function M(a,y,G,L){a.hasOwnProperty(y)||(a[y]=L.apply(null,G),\"function\"===typeof CustomEvent&&S.dispatchEvent(new CustomEvent(\"HighchartsModuleLoaded\",{detail:{path:y,module:a[y]}})))}\nvar a={};M(a,\"Core/Globals.js\",[],function(){var a;(function(a){a.SVG_NS=\"http://www.w3.org/2000/svg\";a.product=\"Highcharts\";a.version=\"11.0.1\";a.win=\"undefined\"!==typeof S?S:{};a.doc=a.win.document;a.svg=a.doc&&a.doc.createElementNS&&!!a.doc.createElementNS(a.SVG_NS,\"svg\").createSVGRect;a.userAgent=a.win.navigator&&a.win.navigator.userAgent||\"\";a.isChrome=-1!==a.userAgent.indexOf(\"Chrome\");a.isFirefox=-1!==a.userAgent.indexOf(\"Firefox\");a.isMS=/(edge|msie|trident)/i.test(a.userAgent)&&!a.win.opera;\na.isSafari=!a.isChrome&&-1!==a.userAgent.indexOf(\"Safari\");a.isTouchDevice=/(Mobile|Android|Windows Phone)/.test(a.userAgent);a.isWebKit=-1!==a.userAgent.indexOf(\"AppleWebKit\");a.deg2rad=2*Math.PI/360;a.hasBidiBug=a.isFirefox&&4>parseInt(a.userAgent.split(\"Firefox/\")[1],10);a.hasTouch=!!a.win.TouchEvent;a.marginNames=[\"plotTop\",\"marginRight\",\"marginBottom\",\"plotLeft\"];a.noop=function(){};a.supportsPassiveEvents=function(){let x=!1;if(!a.isMS){const y=Object.defineProperty({},\"passive\",{get:function(){x=\n!0}});a.win.addEventListener&&a.win.removeEventListener&&(a.win.addEventListener(\"testPassive\",a.noop,y),a.win.removeEventListener(\"testPassive\",a.noop,y))}return x}();a.charts=[];a.dateFormats={};a.seriesTypes={};a.symbolSizes={};a.chartCount=0})(a||(a={}));\"\";return a});M(a,\"Core/Utilities.js\",[a[\"Core/Globals.js\"]],function(a){function x(d,k,b,f){const E=k?\"Highcharts error\":\"Highcharts warning\";32===d&&(d=`${E}: Deprecated member`);const m=v(d);let g=m?`${E} #${d}: www.highcharts.com/errors/${d}/`:\nd.toString();if(\"undefined\"!==typeof f){let d=\"\";m&&(g+=\"?\");J(f,function(k,b){d+=`\\n - ${b}: ${k}`;m&&(g+=encodeURI(b)+\"=\"+encodeURI(k))});g+=d}e(a,\"displayError\",{chart:b,code:d,message:g,params:f},function(){if(k)throw Error(g);p.console&&-1===x.messages.indexOf(g)&&console.warn(g)});x.messages.push(g)}function G(d,k){const b={};J(d,function(f,E){if(C(d[E],!0)&&!d.nodeType&&k[E])f=G(d[E],k[E]),Object.keys(f).length&&(b[E]=f);else if(C(d[E])||d[E]!==k[E]||E in d&&!(E in k))b[E]=d[E]});return b}\nfunction L(d,k){return parseInt(d,k||10)}function A(d){return\"string\"===typeof d}function D(d){d=Object.prototype.toString.call(d);return\"[object Array]\"===d||\"[object Array Iterator]\"===d}function C(d,k){return!!d&&\"object\"===typeof d&&(!k||!D(d))}function z(d){return C(d)&&\"number\"===typeof d.nodeType}function t(d){const k=d&&d.constructor;return!(!C(d,!0)||z(d)||!k||!k.name||\"Object\"===k.name)}function v(d){return\"number\"===typeof d&&!isNaN(d)&&Infinity>d&&-Infinity h&&(k=h))),f.displayBtn=\"undefined\"!==typeof d||\"undefined\"!==typeof k,f.setExtremes(d,k,!1,void 0,{trigger:\"zoom\"});b.zoomed=!0});return b.zoomed}setAxisSize(){const b=this.chart;var d=this.options;const f=d.offsets||[0,0,0,0],a=this.horiz,e=this.width=Math.round(O(k(d.width,b.plotWidth-f[3]+f[1]),b.plotWidth)),c=this.height=Math.round(O(k(d.height,b.plotHeight-f[0]+f[2]),b.plotHeight)),\np=this.top=Math.round(O(k(d.top,b.plotTop+f[0]),b.plotHeight,b.plotTop));d=this.left=Math.round(O(k(d.left,b.plotLeft+f[3]),b.plotWidth,b.plotLeft));this.bottom=b.chartHeight-c-p;this.right=b.chartWidth-e-d;this.len=Math.max(a?e:c,0);this.pos=a?d:p}getExtremes(){const b=this.logarithmic;return{min:b?q(b.lin2log(this.min)):this.min,max:b?q(b.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}}getThreshold(b){var d=this.logarithmic;const f=\nd?d.lin2log(this.min):this.min;d=d?d.lin2log(this.max):this.max;null===b||-Infinity===b?b=f:Infinity===b?b=d:f>b?b=f:dd?b.align=\"right\":195 {b=O(d,b);a=O(d,a);return ab?1:0}).forEach(function(b,a){b.x=\na},this);a.linkedSeries&&a.linkedSeries.forEach(function(a){const d=a.options,f=d.data;d.dataSorting&&d.dataSorting.enabled||!f||(f.forEach(function(d,e){f[e]=c(a,d);b[e]&&(f[e].x=b[e].x,f[e].index=e)}),a.setData(f,!1))});return b}getProcessedData(a){var d=this.xAxis,c=this.options,f=c.cropThreshold;const e=a||this.getExtremesFromAll||c.getExtremesFromAll,g=this.isCartesian;a=d&&d.val2lin;c=!(!d||!d.logarithmic);let k=0,m;let h,p,l=this.xData,n=this.yData,q=this.requireSorting;var r=!1;const u=l.length;\nd&&(r=d.getExtremes(),h=r.min,p=r.max,r=!(!d.categories||d.names.length));if(g&&this.sorted&&!e&&(!f||u>f||this.forceCrop))if(l[u-1] \n * The following code adds an event handler for one event:\n * If you pass in multiple event names and a handler method, the handler is\n * registered for each of those events: You can also pass in a third \n * The method also supports an alternate syntax, in which the first parameter is an object\n * that is a hash map of event names and handler functions and the second parameter (optional)\n * is the context for this in each handler:\n * \n * If you do not add a handler for an event, the event is ignored locally.\n * If you pass in one event name and a handler method, the handler is removed for that\n * event: If you pass in multiple event names and a handler method, the handler is removed for\n * those events: If you pass in an event name (or names) and no handler method, all handlers are\n * removed for those events: If you pass in no arguments, all event handlers are removed for all events\n * dispatched by the object: \n * The method also supports an alternate syntax, in which the first parameter is an object that\n * is a hash map of event names and handler functions and the second parameter (optional) is\n * the context for this in each handler:\n * \n * The following code adds a one-time event handler for one event:\n * If you pass in multiple event names and a handler method, the handler is registered\n * for each of those events: You can also pass in a third \n * The method also supports an alternate syntax, in which the first parameter is an object that\n * is a hash map of event names and handler functions and the second parameter (optional) is the\n * context for this in each handler:\n * \n * This method registers a method as an event listener for a specific event.\n * \n *\n * \n * If a handler is not registered for an event, the event is ignored locally. If the\n * event listener function does not exist, the event is ignored locally.\n * \n * Throws an exception if the \n * Removes an event listener for a specific event.\n * \n *\n * \n * Throws an exception if the \n * The Error class also defines the Error thrown when the promise returned by one of\n * the following methods is rejected:\n *\n * \n * The \n * Deprecation notice:\n * \n * The Errors when calling Errors when calling Errors when calling Errors when calling Errors when calling Errors when calling Errors when calling Errors when calling Errors when calling Errors when calling General errors that can occur when calling any method: \n * Use the Note that for all errors, this string starts with \n * The Errors that can occur when calling Errors that can occur when calling Errors that can occur when calling the Errors that can occur when calling Errors that can occur when calling Errors that can occur when calling Errors that can occur when calling Errors that can occur when calling Errors that can occur when calling Errors that can occur when calling Errors that can occur when calling Errors that can occur when calling Errors that can occur when calling Errors that can occur when the Promise returned by the Errors that can occur when the Promise returned by the\n * For example, the Stream object dispatches a To see whether an event has a default behavior, check the Call the The following events have default behaviors: Note that you set up a callback for the Check the \n * The Session object dispatches a \n * While you are connected to the session, the Session object dispatches a\n * The following code keeps a running total of the number of connections to a session\n * by monitoring the This example assumes that there is an input text field in the HTML DOM\n * with the 4*r.month||e.getTimezoneOffset(w)!==e.getTimezoneOffset(l));w=p.getTime();for(p=1;w
',pointFormat:'\\u25cf {series.name}: {point.y}
',backgroundColor:\"#ffffff\",borderWidth:void 0,shadow:!0,stickOnContact:!1,style:{color:\"#333333\",cursor:\"default\",fontSize:\"0.8em\"},useHTML:!1},credits:{enabled:!0,href:\"https://www.highcharts.com?credits\",position:{align:\"right\",\nx:-10,verticalAlign:\"bottom\",y:-5},style:{cursor:\"pointer\",color:\"#999999\",fontSize:\"0.6em\"},text:\"Highcharts.com\"}};v.chart.styledMode=!1;\"\";const c=new A(v.time);a={defaultOptions:v,defaultTime:c,getOptions:function(){return v},setOptions:function(n){t(!0,v,n);if(n.time||n.global)G.time?G.time.update(t(v.global,v.time,n.global,n.time)):G.time=c;return v}};\"\";return a});M(a,\"Core/Animation/Fx.js\",[a[\"Core/Color/Color.js\"],a[\"Core/Globals.js\"],a[\"Core/Utilities.js\"]],function(a,y,G){const {parse:x}=\na,{win:A}=y,{isNumber:D,objectEach:C}=G;class z{constructor(a,v,c){this.pos=NaN;this.options=v;this.elem=a;this.prop=c}dSetter(){var a=this.paths;const v=a&&a[0];a=a&&a[1];const c=this.now||0;let n=[];if(1!==c&&v&&a)if(v.length===a.length&&1>c)for(let r=0;ra.visible);l.forEach(function(a,u){let b=0,f,d;if(w[a]&&!w[a].isNull)r.push(w[a]),[-1,1].forEach(function(b){const k=1===b?\"rightNull\":\"leftNull\",h=g[l[u+b]];let p=0;if(h){let b=m;for(;0<=b&&b
',\npointFormat:\"x: {point.x}
y: {point.y}
\"}}});M(a,\"Series/Scatter/ScatterSeries.js\",[a[\"Series/Scatter/ScatterSeriesDefaults.js\"],a[\"Core/Series/SeriesRegistry.js\"],a[\"Core/Utilities.js\"]],function(a,y,G){const {column:x,line:A}=y.seriesTypes,{addEvent:D,extend:C,merge:z}=G;class t extends A{constructor(){super(...arguments);this.points=this.options=this.data=void 0}applyJitter(){const a=this,c=this.options.jitter,n=this.points.length;c&&this.points.forEach(function(r,l){[\"x\",\n\"y\"].forEach(function(h,q){let g=\"plot\"+h.toUpperCase(),w,v;if(c[h]&&!r.isNull){var t=a[h+\"Axis\"];v=c[h]*t.transA;t&&!t.isLog&&(w=Math.max(0,r[g]-v),t=Math.min(t.len,r[g]+v),q=1E4*Math.sin(l+q*n),q-=Math.floor(q),r[g]=w+(t-w)*q,\"x\"===h&&(r.clientX=r.plotX))}})})}drawGraph(){this.options.lineWidth?super.drawGraph():this.graph&&(this.graph=this.graph.destroy())}}t.defaultOptions=z(A.defaultOptions,a);C(t.prototype,{drawTracker:x.prototype.drawTracker,sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:[\"group\",\n\"markerGroup\",\"dataLabelsGroup\"],takeOrdinalPosition:!1});D(t,\"afterTranslate\",function(){this.applyJitter()});y.registerSeriesType(\"scatter\",t);return t});M(a,\"Series/CenteredUtilities.js\",[a[\"Core/Globals.js\"],a[\"Core/Series/Series.js\"],a[\"Core/Utilities.js\"]],function(a,y,G){const {deg2rad:x}=a,{fireEvent:A,isNumber:D,pick:C,relativeLength:z}=G;var t;(function(a){a.getCenter=function(){var a=this.options,n=this.chart;const r=2*(a.slicedOffset||0),l=n.plotWidth-2*r,h=n.plotHeight-2*r;var q=a.center;\nconst g=Math.min(l,h),w=a.thickness;var t=a.size;let v=a.innerSize||0;\"string\"===typeof t&&(t=parseFloat(t));\"string\"===typeof v&&(v=parseFloat(v));a=[C(q[0],\"50%\"),C(q[1],\"50%\"),C(t&&0>t?void 0:a.size,\"100%\"),C(v&&0>v?void 0:a.innerSize||0,\"0%\")];!n.angular||this instanceof y||(a[3]=0);for(q=0;4>q;++q)t=a[q],n=2>q||2===q&&/%$/.test(t),a[q]=z(t,[l,h,g,a[2]][q])+(n?r:0);a[3]>a[2]&&(a[3]=a[2]);D(w)&&2*wa&&360>n-a?n:a+360;return{start:x*(a+-90),end:x*(n+-90)}}})(t||(t={}));\"\";return t});M(a,\"Series/Pie/PiePoint.js\",[a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/Series/Point.js\"],a[\"Core/Utilities.js\"]],function(a,y,G){const {setAnimation:x}=a,{addEvent:A,defined:D,extend:C,isNumber:z,pick:t,relativeLength:v}=G;class c extends y{constructor(){super(...arguments);this.series=this.options=this.labelDistance=void 0}getConnectorPath(){const a=this.labelPosition,\nc=this.series.options.dataLabels,l=this.connectorShapes;let h=c.connectorShape;l[h]&&(h=l[h]);return h.call(this,{x:a.computed.x,y:a.computed.y,alignment:a.alignment},a.connectorPosition,c)}getTranslate(){return this.sliced?this.slicedTranslation:{translateX:0,translateY:0}}haloPath(a){const c=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(c.x,c.y,c.r+a,c.r+a,{innerR:c.r-1,start:c.start,end:c.end,borderRadius:c.borderRadius})}init(){super.init.apply(this,\narguments);this.name=t(this.name,\"Slice\");const a=a=>{this.slice(\"select\"===a.type)};A(this,\"select\",a);A(this,\"unselect\",a);return this}isValid(){return z(this.y)&&0<=this.y}setVisible(a,c){const l=this.series,h=l.chart,n=l.options.ignoreHiddenPoint;c=t(c,n);a!==this.visible&&(this.visible=this.options.visible=a=\"undefined\"===typeof a?!this.visible:a,l.options.data[l.data.indexOf(this)]=this.options,[\"graphic\",\"dataLabel\",\"connector\"].forEach(c=>{if(this[c])this[c][a?\"show\":\"hide\"](a)}),this.legendItem&&\nh.legend.colorizeItem(this,a),a||\"hover\"!==this.state||this.setState(\"\"),n&&(l.isDirty=!0),c&&h.redraw())}slice(a,c,l){const h=this.series;x(l,h.chart);t(c,!0);this.sliced=this.options.sliced=D(a)?a:!this.sliced;h.options.data[h.data.indexOf(this)]=this.options;this.graphic&&this.graphic.animate(this.getTranslate())}}C(c.prototype,{connectorShapes:{fixedOffset:function(a,c,l){const h=c.breakAt;c=c.touchingSliceAt;return[[\"M\",a.x,a.y],l.softConnector?[\"C\",a.x+(\"left\"===a.alignment?-5:5),a.y,2*h.x-\nc.x,2*h.y-c.y,h.x,h.y]:[\"L\",h.x,h.y],[\"L\",c.x,c.y]]},straight:function(a,c){c=c.touchingSliceAt;return[[\"M\",a.x,a.y],[\"L\",c.x,c.y]]},crookedLine:function(a,c,l){const {breakAt:h,touchingSliceAt:n}=c;({series:c}=this);const [g,r,t]=c.center,x=t/2,e=c.chart.plotWidth,m=c.chart.plotLeft;c=\"left\"===a.alignment;const {x:u,y:p}=a;l.crookDistance?(a=v(l.crookDistance,1),a=c?g+x+(e+m-g-x)*(1-a):m+(g-x)*a):a=g+(r-p)*Math.tan((this.angle||0)-Math.PI/2);l=[[\"M\",u,p]];(c?a<=u&&a>=h.x:a>=u&&a<=h.x)&&l.push([\"L\",\na,p]);l.push([\"L\",h.x,h.y],[\"L\",n.x,n.y]);return l}}});return c});M(a,\"Series/Pie/PieSeriesDefaults.js\",[],function(){\"\";return{borderRadius:3,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{allowOverlap:!0,connectorPadding:5,connectorShape:\"crookedLine\",crookDistance:void 0,distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},softConnector:!0,x:0},fillColor:void 0,ignoreHiddenPoint:!0,inactiveOtherPoints:!0,legendType:\"point\",marker:null,size:null,showInLegend:!1,\nslicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:\"#ffffff\",borderWidth:1,lineWidth:void 0,states:{hover:{brightness:.1}}}});M(a,\"Series/Pie/PieSeries.js\",[a[\"Series/CenteredUtilities.js\"],a[\"Series/Column/ColumnSeries.js\"],a[\"Core/Globals.js\"],a[\"Series/Pie/PiePoint.js\"],a[\"Series/Pie/PieSeriesDefaults.js\"],a[\"Core/Series/Series.js\"],a[\"Core/Series/SeriesRegistry.js\"],a[\"Core/Renderer/SVG/Symbols.js\"],a[\"Core/Utilities.js\"]],function(a,y,G,L,A,D,C,z,t){const {getStartAndEndRadians:v}=\na;({noop:G}=G);const {clamp:c,extend:n,fireEvent:r,merge:l,pick:h,relativeLength:q}=t;class g extends D{constructor(){super(...arguments);this.points=this.options=this.maxLabelDistance=this.data=this.center=void 0}animate(a){const c=this,g=c.points,e=c.startAngleRad;a||g.forEach(function(a){const g=a.graphic,m=a.shapeArgs;g&&m&&(g.attr({r:h(a.startR,c.center&&c.center[3]/2),start:e,end:e}),g.animate({r:m.r,start:m.start,end:m.end},c.options.animation))})}drawEmpty(){const a=this.startAngleRad,c=this.endAngleRad,\ng=this.options;let e,m;0===this.total&&this.center?(e=this.center[0],m=this.center[1],this.graph||(this.graph=this.chart.renderer.arc(e,m,this.center[1]/2,0,a,c).addClass(\"highcharts-empty-series\").add(this.group)),this.graph.attr({d:z.arc(e,m,this.center[2]/2,0,{start:a,end:c,innerR:this.center[3]/2})}),this.chart.styledMode||this.graph.attr({\"stroke-width\":g.borderWidth,fill:g.fillColor||\"none\",stroke:g.color||\"#cccccc\"})):this.graph&&(this.graph=this.graph.destroy())}drawPoints(){const a=this.chart.renderer;\nthis.points.forEach(function(c){c.graphic&&c.hasNewShapeType()&&(c.graphic=c.graphic.destroy());c.graphic||(c.graphic=a[c.shapeType](c.shapeArgs).add(c.series.group),c.delayedRendering=!0)})}generatePoints(){super.generatePoints();this.updateTotals()}getX(a,g,h){const e=this.center,m=this.radii?this.radii[h.index]||0:e[2]/2;a=Math.asin(c((a-e[1])/(m+h.labelDistance),-1,1));return e[0]+(g?-1:1)*Math.cos(a)*(m+h.labelDistance)+(0on
, once
, and off
\n * methods of objects that can dispatch events.\n *\n * @class EventDispatcher\n */\n\n\nmodule.exports = function eventing(self) {\n const ee = new Events();\n ee.on('newListener', eventName => {\n ee.emit(`${eventName}:added`);\n });\n ee.on('removeListener', eventName => {\n ee.emit(`${eventName}:removed`);\n });\n const eventingMixin = {\n /**\n * Adds an event handler function for one or more events.\n *\n * \n * obj.on(\"eventName\", function (event) {\n * // This is the event handler.\n * });\n *
\n *\n * \n * obj.on(\"eventName1 eventName2\",\n * function (event) {\n * // This is the event handler.\n * });\n *
\n *\n * context
parameter (which is optional) to\n * define the value of this
in the handler method:obj.on(\"eventName\",\n * function (event) {\n * // This is the event handler.\n * },\n * obj);\n *
\n *\n * \n * obj.on(\n * {\n * eventName1: function (event) {\n * // This is the handler for eventName1.\n * },\n * eventName2: function (event) {\n * // This is the handler for eventName2.\n * }\n * },\n * obj);\n *
\n *\n * this
in the event\n * handler function.\n *\n * @returns {EventDispatcher} The EventDispatcher object.\n *\n * @memberOf EventDispatcher\n * @method #on\n * @see off()\n * @see once()\n * @see Events\n */\n on(eventNames, handlerOrContext, context) {\n if (typeof eventNames === 'string' && handlerOrContext) {\n eventNames.split(' ').forEach(eventName => {\n ee.on(eventName, weakMemoizeBind(handlerOrContext, context));\n });\n } else {\n Object.keys(eventNames).forEach(eventName => {\n ee.on(eventName, weakMemoizeBind(eventNames[eventName], handlerOrContext));\n });\n }\n\n return this;\n },\n\n /**\n * Removes an event handler or handlers.\n *\n * obj.off(\"eventName\", eventHandler);
\n *\n * obj.off(\"eventName1 eventName2\", eventHandler);
\n *\n * obj.off(\"event1Name event2Name\");
\n *\n * obj.off();
\n *\n * \n * obj.off(\n * {\n * eventName1: event1Handler,\n * eventName2: event2Handler\n * });\n *
\n *\n * @param {String} type (Optional) The string identifying the type of event. You can\n * use a space to specify multiple events, as in \"accessAllowed accessDenied\n * accessDialogClosed\". If you pass in no type
value (or other arguments),\n * all event handlers are removed for the object.\n * @param {Function} handler (Optional) The event handler function to remove. The handler\n * must be the same function object as was passed into on()
. Be careful with\n * helpers like bind()
that return a new function when called. If you pass in\n * no handler
, all event handlers are removed for the specified event\n * type
.\n * @param {Object} context (Optional) If you specify a context
, the event handler\n * is removed for all specified events and handlers that use the specified context. (The\n * context must match the context passed into on()
.)\n *\n * @returns {Object} The object that dispatched the event.\n *\n * @memberOf EventDispatcher\n * @method #off\n * @see on()\n * @see once()\n * @see Events\n */\n off(eventNames, handlerOrContext, context) {\n if (typeof eventNames === 'string') {\n this.off(eventNames.split(' '), handlerOrContext, context);\n } else if (Array.isArray(eventNames)) {\n eventNames.forEach(eventName => {\n if (handlerOrContext && isFunction(handlerOrContext)) {\n ee.removeListener(eventName, weakMemoizeBind(handlerOrContext, context));\n } else {\n ee.removeAllListeners(eventName);\n }\n });\n } else if (!eventNames) {\n ee.removeAllListeners();\n } else {\n Object.keys(eventNames).forEach(eventName => {\n // @todo was {foo: undefined} expected to remove all foo events?\n ee.removeListener(eventName, weakMemoizeBind(eventNames[eventName], handlerOrContext));\n });\n }\n\n return this;\n },\n\n /**\n * Adds an event handler function for one or more events. Once the handler is called,\n * the specified handler method is removed as a handler for this event. (When you use\n * the on()
method to add an event handler, the handler is not\n * removed when it is called.) The once()
method is the equivilent of\n * calling the on()
\n * method and calling off()
the first time the handler is invoked.\n *\n * \n * obj.once(\"eventName\", function (event) {\n * // This is the event handler.\n * });\n *
\n *\n * obj.once(\"eventName1 eventName2\"\n * function (event) {\n * // This is the event handler.\n * });\n *
\n *\n * context
parameter (which is optional) to define\n * the value of\n * this
in the handler method:obj.once(\"eventName\",\n * function (event) {\n * // This is the event handler.\n * },\n * obj);\n *
\n *\n * \n * obj.once(\n * {\n * eventName1: function (event) {\n * // This is the event handler for eventName1.\n * },\n * eventName2: function (event) {\n * // This is the event handler for eventName1.\n * }\n * },\n * obj);\n *
\n *\n * @param {String} type The string identifying the type of event. You can specify multiple\n * event names in this string, separating them with a space. The event handler will process\n * the first occurence of the events. After the first event, the handler is removed (for\n * all specified events).\n * @param {Function} handler The handler function to process the event. This function takes\n * the event object as a parameter.\n * @param {Object} context (Optional) Defines the value of this
in the event\n * handler function.\n *\n * @returns {Object} The object that dispatched the event.\n *\n * @memberOf EventDispatcher\n * @method #once\n * @see on()\n * @see off()\n * @see Events\n */\n once(eventNames, handlerOrContext, context) {\n if (typeof eventNames === 'string' && handlerOrContext) {\n eventNames.split(' ').forEach(eventName => {\n ee.once(eventName, weakMemoizeBind(handlerOrContext, context));\n });\n } else {\n Object.keys(eventNames).forEach(eventName => {\n ee.once(eventName, weakMemoizeBind(eventNames[eventName], handlerOrContext));\n });\n }\n\n return this;\n },\n\n /**\n * Execute any listeners bound to the +event+ Event.\n *\n * Each handler will be executed.\n *\n * @param [Event] event An Event object.\n * @return this\n */\n dispatchEvent(event) {\n if (!event.type) {\n throw new Error('dispatchEvent: Event has no type');\n }\n\n if (!event.target) {\n event.target = this; // eslint-disable-line no-param-reassign\n }\n\n this.trigger(event.type, event);\n return this;\n },\n\n /**\n * Execute each handler for the event called +name+.\n *\n * Each handler will be executed, and any exceptions that they throw will\n * be caught and logged\n *\n * @example\n * foo.on('bar', function(name, message) {\n * alert(\"Hello \" + name + \": \" + message);\n * });\n *\n * foo.trigger('OpenTok', 'asdf'); // -> Hello OpenTok: asdf\n *\n * @param {String} eventName The name of this event.\n * @param {Array} arguments The arguments handlers will be called with\n *\n * @return this\n */\n trigger(eventName) {\n try {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n ee.emit(eventName, ...args);\n } catch (e) {\n logging.error('An error occurred in an event handler', e);\n }\n\n return this;\n },\n\n // Alias of trigger for easier node compatibility\n emit() {\n return self.trigger(...arguments);\n },\n\n /**\n * @deprecated use on() or once() instead.\n * listener
name is invalid.\n * this
in the event\n * handler function.\n *\n * @memberOf EventDispatcher\n * @method #addEventListener\n * @see on()\n * @see once()\n * @see Events\n */\n addEventListener(eventName, handler, context) {\n logging.warn('The addEventListener() method is deprecated. Use on() or once() instead.');\n return self.on(eventName, handler, context);\n },\n\n /**\n * @deprecated use off() instead.\n * listener
name is invalid.\n * context
, the event\n * handler is removed for all specified events and event listeners that use the specified\n context. (The context must match the context passed into\n * addEventListener()
.)\n *\n * @memberOf EventDispatcher\n * @method #removeEventListener\n * @see off()\n * @see Events\n */\n // See 'off' for usage.\n // @depreciated will become a private helper function in the future.\n removeEventListener(eventName, handler, context) {\n logging.warn('The removeEventListener() method is deprecated. Use off() instead.');\n return self.off(eventName, handler, context);\n },\n\n listenerCount(eventName) {\n return ee.listenerCount(eventName);\n }\n\n };\n return assign(self, eventingMixin);\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(83),\n copyObject = __webpack_require__(39),\n createAssigner = __webpack_require__(191),\n isArrayLike = __webpack_require__(24),\n isPrototype = __webpack_require__(68),\n keys = __webpack_require__(30);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n JS_EXCEPTION: 2000,\n AUTHENTICATION_ERROR: 1004,\n INVALID_SESSION_ID: 1005,\n CONNECT_FAILED: 1006,\n CONNECT_REJECTED: 1007,\n CONNECTION_TIMEOUT: 1008,\n NOT_CONNECTED: 1010,\n INVALID_PARAMETER: 1011,\n P2P_CONNECTION_FAILED: 1013,\n API_RESPONSE_FAILURE: 1014,\n PEER_CONNECTION_NOT_CONNECTED: 1015,\n TERMS_OF_SERVICE_FAILURE: 1026,\n CONNECTION_LIMIT_EXCEEDED: 1027,\n UNABLE_TO_PUBLISH: 1500,\n UNABLE_TO_SUBSCRIBE: 1501,\n UNSUPPORTED_VIDEO_CODEC: 1502,\n UNABLE_TO_FORCE_DISCONNECT: 1520,\n UNABLE_TO_FORCE_UNPUBLISH: 1530,\n UNABLE_TO_FORCE_MUTE: 1540,\n PUBLISHER_ICE_WORKFLOW_FAILED: 1553,\n SUBSCRIBER_ICE_WORKFLOW_FAILED: 1554,\n STREAM_LIMIT_EXCEEDED: 1605,\n UNEXPECTED_SERVER_RESPONSE: 2001,\n REPORT_ISSUE_ERROR: 2011,\n SET_PROXY_URL_TIMING_ERROR: 2021,\n PROXY_URL_ALREADY_SET_ERROR: 2022,\n GET_RTC_STATS_REPORT_NOT_SUPPORTED: 2031,\n ANVIL_BADLY_FORMED_RESPONSE: 3001,\n ANVIL_INVALID_HTTP_STATUS: 3002,\n ANVIL_XDOMAIN_OR_PARSING_ERROR: 3003,\n ANVIL_UNKNOWN_HTTP_ERROR: 3004,\n ANVIL_UNEXPECTED_ERROR_CODE: 3005,\n ANVIL_EMPTY_RESPONSE_BODY: 3006,\n ANVIL_CONNECT_FAILED: 3007,\n UNABLE_TO_ACCESS_MEDIA_ENGINE: 5001\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, global-require */\nmodule.exports = function otErrorFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const Errors = deps.Errors || __webpack_require__(4);\n\n const OTErrorClass = deps.OTErrorClass || __webpack_require__(21);\n\n const names = Object.keys(Errors).map(shortName => Errors[shortName]);\n return function otError(name, plainError, code) {\n if (names.indexOf(name) === -1) {\n return new Error(`Attempt to use invalid error name (${name}). Original message: ${plainError.message}`);\n }\n\n if (!(plainError instanceof Error || /^\\[object .*Error\\]$/.test(Object.prototype.toString.call(plainError)))) {\n return new Error(`Did not pass Error as second argument: ${plainError}`);\n } // OTErrorClass is the deprecated OT.Error class from the docs.\n\n\n const error = new OTErrorClass(undefined, plainError.message);\n error.name = name;\n\n if (!plainError.stack) {\n try {\n throw plainError;\n } catch (e) {// IE populates the error's .stack when it is thrown, nothing to do here\n }\n }\n\n error.stack = plainError.stack;\n\n if (code) {\n error.code = code;\n }\n\n return error;\n };\n};\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(601);\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(Promise) {function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(173);\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(29),\n isObject = __webpack_require__(9);\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar bind = __webpack_require__(207);\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar v1 = __webpack_require__(525);\nvar v4 = __webpack_require__(526);\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// TODO: Eliminate the need for this module, which is globally tracking these objects.\nconst Collection = __webpack_require__(248);\n\nconst sessionObjects = {\n // Publishers are id'd by their guid\n publishers: new Collection('guid'),\n // Subscribers are id'd by their widgetId\n subscribers: new Collection('widgetId'),\n sessions: new Collection()\n};\nmodule.exports = sessionObjects;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle, no-param-reassign */\nconst logging = __webpack_require__(1)('GlobalExceptionHandler');\n\nconst eventing = __webpack_require__(6);\n\nconst eventNames = __webpack_require__(26);\n\nconst errorCodeToErrorTitleMap = __webpack_require__(537);\n\nconst Events = __webpack_require__(22)();\n/**\n * The Error class is used to define the error object passed into completion handlers.\n * Each of the following methods, which execute asynchronously, includes a\n * completionHandler
parameter:\n *\n * \n *
\n *\n * \n *
\n *\n * completionHandler
parameter is a function that is called when the call to\n * the asynchronous method succeeds or fails. If the asynchronous call fails, the completion\n * handler function is passed an error object (defined by the Error class). The code
\n * and message
properties of the error object provide details about the error.\n *\n * OT.Error
will not be defined in an upcoming version of OpenTok. When this happens,\n * errors emitted by the SDK will simply be instances of standard Error
objects.\n * If your code currently checks if (error instanceof OT.Error)
please replace it\n * if (/^OT_/.test(error.name))
. (The name
property for all OpenTok\n * errors with begins with 'OT_'
.) Note however that this code is for the\n * purposes of smoothly upgrading, and it may be more appropriate for your code to simply compare\n * against the specific error you want to handle, such as\n * if (error.name === 'OT_USER_MEDIA_ACCESS_DENIED')
.\n *\n * @property {Number} code Deprecated — the error code. Use the name
property,\n * not the code
property, to identify the error programatically.\n *\n * code
property of the Error object can be set to one of the values\n * listed below. This property can also be set to other values, and you may want to report\n * this value when discussing an issue with TokBox support.\n * Session.connect()
:\n *
\n *\n * \n * \n * \n * code
Description \n * \n * \n * 1004 \n * Authentication error. Check the error message for details. This error can result if you\n * pass in an expired token when trying to connect to a session. It can also occur if you pass\n * in an invalid token or API key. Make sure that you are generating the token using the\n * current version of one of the\n * OpenTok server SDKs. \n * \n * \n * 1005 \n * Invalid Session ID. Make sure you generate the session ID using the current version of\n * one of the OpenTok server\n * SDKs. \n * \n * \n * 1006 \n * Connect Failed. Unable to connect to the session. You may want to have the client check\n * the network connection. \n * \n * \n * 1026 \n * Terms of service violation: export compliance. See the\n * Terms of Service. \n * \n * \n * 1027 \n * Connection limit exceeded. The client tried to connect to a session that has exceeded\n * limit for simultaneous connections. \n * \n * \n * 2001 \n * Connect Failed. Unexpected response from the OpenTok server. Try connecting again\n * later. \n * Session.forceDisconnect()
:\n *
\n *\n * \n * \n * \n * \n * code
\n * Description \n * \n * \n * 1010 \n * The client is not connected to the OpenTok session. Check that client connects\n * successfully and has not disconnected before calling forceDisconnect(). \n * \n * \n * 1520 \n * Unable to force disconnect. The client's token does not have the role set to moderator.\n * Once the client has connected to the session, the \n * capabilities
property of\n * the Session object lists the client's capabilities.Session.forceUnpublish()
:\n *
\n *\n * \n * \n * \n * code
Description \n * \n * \n * 1010 \n * The client is not connected to the OpenTok session. Check that client connects\n * successfully and has not disconnected before calling forceUnpublish(). \n * \n * \n * 1530 \n * Unable to force unpublish. The client's token does not have the role set to moderator.\n * Once the client has connected to the session, the \n * capabilities
property of\n * the Session object lists the client's capabilities.\n * \n * 1535 \n * Force Unpublish on an invalid stream. Make sure that the stream has not left the\n * session before you call the \n * forceUnpublish()
method.Session.publish()
:\n *
\n *\n * \n * \n * \n * code
Description \n * \n * \n * 1010 \n * The client is not connected to the OpenTok session. Check that the client connects\n * successfully before trying to publish. And check that the client has not disconnected\n * before trying to publish. \n * \n * \n * 1500 \n * Unable to Publish. This can be caused by the following:\n *\n * \n * \n *
\n * capabilities
\n * property of the Session object lists the client's capabilities.\n * \n * 1553 \n * WebRTC ICE workflow error. This is an error that occurs when trying to establish\n * communication between clients in the session. Try publishing again or reconnecting to\n * the session. \n * \n * \n * 1601 \n * Internal error -- WebRTC publisher error. Try republishing or reconnecting to the\n * session. \n * \n * \n * 2001 \n * Publish Failed. Unexpected response from the OpenTok server. Try publishing again\n * later. \n * Session.signal()
:\n *
\n *\n * \n * \n * \n * code
Description \n * \n * \n * 400 \n * One of the signal properties — data, type, or to —\n * is invalid. Or the data cannot be parsed as JSON. \n * \n * \n * 404 The to connection does not exist. \n * \n * \n * 413 The type string exceeds the maximum length (128 bytes),\n * or the data string exceeds the maximum size (8 kB). \n * \n * \n * 500 \n * The client is not connected to the OpenTok session. Check that the client connects\n * successfully before trying to signal. And check that the client has not disconnected before\n * trying to signal. \n * \n * \n * 2001 \n * Signal Failed. Unexpected response from the OpenTok server. Try sending the signal again\n * later. \n * Session.subscribe()
:\n *
\n *\n * \n * \n * \n * \n * code
\n * Description \n * \n * \n * 1013 \n * WebRTC PeerConnection error. Try resubscribing to the stream or\n * reconnecting to the session. \n * \n * \n * 1554 \n * WebRTC ICE workflow error. This is an error that occurs when trying to establish\n * communication between clients in the session. Try resubscribing to the stream or\n * reconnecting to the session. \n * \n * \n * 1600 \n * Internal error -- WebRTC subscriber error. Try resubscribing to the stream or\n * reconnecting to the session. \n * \n * \n * 1605 \n * Stream limit exceeded. The client tried to subscribe to a stream in a session\n * that has exceeded the limit for simultaneous streams. \n * \n * \n * 2001 \n * Subscribe Failed. Unexpected response from the OpenTok server. Try subscribing again\n * later. \n * OT.initPublisher()
:\n *
\n *\n * \n * \n * \n * code
Description \n * \n * \n * 1004 \n * Authentication error. Check the error message for details. This error can result if you\n * pass in an expired token when trying to connect to a session. It can also occur if you\n * pass in an invalid token or API key. Make sure that you are generating the token using\n * the current version of one of the\n * OpenTok server SDKs. \n * \n * \n * 1550 \n * Screen sharing is not supported (and you set the \n * videoSource
property\n * of the options
parameter of OT.initPublisher()
to\n * \"application\"
, \"screen\"
, or \"window\"
).\n * Before calling OT.initPublisher()
, you can call\n * OT.checkScreenSharingCapability()\n * to check if screen sharing is supported.\n * \n * 1551 \n * A screen-sharing extension needs to be registered but it is not. This error can occur\n * when you set the \n * videoSource
property of the options
parameter\n * of OT.initPublisher()
to \"application\"
, \"screen\"
,\n * or \"window\"
. Before calling OT.initPublisher()
, you can call\n * OT.checkScreenSharingCapability()\n * to check if screen sharing requires an extension to be registered.\n * \n * 1552 \n * A screen-sharing extension is required, but it is not installed. This error can occur\n * when you set the \n * videoSource
property of the options
parameter\n * of OT.initPublisher()
to \"screen\"
. Before calling\n * OT.initPublisher()
, you can call\n * OT.checkScreenSharingCapability()\n * to check if screen sharing requires an extension to be installed.OT.reportIssue()
:\n *
\n *\n * \n * \n * \n * code
Description \n * \n * \n * 2011 \n * Error calling OT.reportIssue(). Check the client's network connection. \n * OT.setProxyUrl()
:\n *
\n *\n * \n * \n * \n * code
Description \n * \n * \n * \n * 2021\n * \n * \n * Attempt to set the proxy URL after initiating a Session or Publisher object.\n * \n * \n * \n * \n * 2022\n * \n * \n * Attempt to set the proxy URL after it has already been set (by a previous\n * call to \n * OT.setProxyUrl()
).\n * Publisher.setVideoSource()
:\n *
\n *\n * \n * \n * \n * code
Description \n * \n * \n * \n * 1040\n * \n * \n * Trying to change the video source for a publisher does not use a camera input.\n * \n * \n * \n * \n * 1041\n * \n * \n * The \n * videoSourceId
parameter is not a string\n * or the device ID for a valid video input device.\n * \n *
\n *\n * @property {String} message The message string provides details about the error.\n *\n * \n * \n * \n * code
Description \n * \n * \n * 1011 \n * Invalid Parameter. Check that you have passed valid parameter values into the method\n * call. \n * \n * \n * 2000 \n * Internal Error. Try reconnecting to the OpenTok session and trying the action again. \n * name
property (not the message
property) to identify the error\n * programatically.\n *\n * @property {String} name A string identifying the error. Use this property (not the\n * code
property) to identify the error.\n *\n * 'OT_'
.\n *\n * name
property of the Error object can be set to one of the values\n * listed below. For unexpected errors, this property can be undefined or set to other\n * values. You may want to report this value when discussing an issue with TokBox support.\n * OT.initPublisher()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_HARDWARE_UNAVAILABLE'
The hardware to fulfill the user media request appears to exist but could not be acquired.\n * It might be in use by another application. \n * \n * \n * \n * 'OT_INVALID_PARAMETER'
One or more parameters was not valid or not provided. \n * \n * \n * \n * 'OT_MEDIA_ERR_ABORTED'
The fetching of the stream for the video element has been aborted. \n * \n * \n * \n * 'OT_MEDIA_ERR_DECODE'
A decoding error occurred while trying to play the stream in the video element. \n * \n * \n * \n * 'OT_MEDIA_ERR_NETWORK'
A network error caused the stream to stop being fetched. \n * \n * \n * \n * 'OT_MEDIA_ERR_SRC_NOT_SUPPORTED'
The stream has been detected to be not suitable for playback. \n * \n * \n * \n * 'OT_NOT_SUPPORTED'
Something in the user media request is not supported. \n * \n * \n * \n * 'OT_NO_DEVICES_FOUND'
No devices were found to provide the media stream. \n * \n * \n * \n * 'OT_NO_VALID_CONSTRAINTS'
Video and audio were both disabled. You need to enable at least one. \n * \n * \n * \n * 'OT_SCREEN_SHARING_NOT_SUPPORTED'
Screen sharing is not supported in the browser. \n * \n * \n * \n * 'OT_SCREEN_SHARING_EXTENSION_NOT_REGISTERED'
Screen-sharing support in this browser requires an extension, but one has not been\n * registered. \n * \n * \n * \n * 'OT_SCREEN_SHARING_EXTENSION_NOT_INSTALLED'
Screen-sharing support in this browser requires an extension, but the extension is not\n * installed. \n * OT.reportIssue()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_REPORT_ISSUE_FAILED'
Error calling OT.reportIssue(). Check the client\\'s network connection. \n * OT.setProxyUrl()
method:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * \n * 'SET_PROXY_URL_TIMING_ERROR'
\n * \n * Attempt to set the proxy URL after initiating a Session or Publisher object.\n * \n * \n * \n * \n * \n * 'PROXY_URL_ALREADY_SET_ERROR'
\n * \n * Attempt to set the proxy URL after it has already been set (by a previous\n * call to \n * OT.setProxyUrl()
).\n * Publisher.setVideoSource()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_INVALID_VIDEO_SOURCE'
The \n * videoSourceId
parameter is not a string\n * or the device ID for a valid video input device.\n * \n * \n * 'OT_SET_VIDEO_SOURCE_FAILURE'
Trying to change the video source for a publisher does not use\n * a camera input. \n * Session.connect()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_AUTHENTICATION_ERROR'
The API key does not match the token or session. \n * \n * \n * \n * 'OT_BADLY_FORMED_RESPONSE'
The JSON response from the OpenTok server was badly formed. \n * \n * \n * \n * 'OT_CONNECT_FAILED'
Failed to connect to session. \n * \n * \n * \n * 'OT_CONNECTION_LIMIT_EXCEEDED'
The client tried to connect to a session that has exceeded the limit for\n * simultaneous connections. \n * \n * \n * \n * 'OT_EMPTY_RESPONSE_BODY'
Received an unexpected empty response from the OpenTok server. \n * \n * \n * \n * 'OT_INVALID_SESSION_ID'
The session ID was invalid. \n * \n * \n * \n * 'OT_INVALID_PARAMETER'
One or more parameters was not valid or not provided. \n * \n * \n * \n * 'OT_NOT_CONNECTED'
Couldn't perform action because you are not connected to the network. \n * \n * \n * \n * 'OT_TERMS_OF_SERVICE_FAILURE'
Couldn't connect due to a terms of service violation. \n * \n * \n * \n * 'OT_INVALID_HTTP_STATUS'
Received an unexpected HTTP status. \n * \n * \n * \n * 'OT_XDOMAIN_OR_PARSING_ERROR'
There was a cross domain error or the server responded with invalid JSON. \n * Session.forceDisconnect()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_INVALID_PARAMETER'
One or more parameters was not valid or not provided. \n * \n * \n * \n * 'OT_NOT_CONNECTED'
Couldn't perform action because you are not connected to the network. \n * \n * \n * \n * 'OT_PERMISSION_DENIED'
This token does not allow this action. The role must be at least moderator. \n * Session.forceMuteAll()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_INVALID_PARAMETER'
One or more parameters was not valid or not provided. \n * \n * \n * \n * 'OT_NOT_CONNECTED'
Couldn't perform action because you are not connected to the network. \n * \n * \n * \n * 'OT_PERMISSION_DENIED'
This token does not allow this action. The role must be at least moderator. \n * \n * \n * \n * 'OT_UNEXPECTED_SERVER_RESPONSE'
An internal server error.\n * Session.forceMuteStream()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_INVALID_PARAMETER'
One or more parameters was not valid or not provided. \n * \n * \n * \n * 'OT_NOT_CONNECTED'
Couldn't perform action because you are not connected to the network. \n * \n * \n * \n * 'OT_NOT_FOUND'
The stream ID wasn't found in this session. \n * \n * \n * \n * 'OT_PERMISSION_DENIED'
The token does not allow this action. The role must be at least moderator. \n * \n * \n * \n * 'OT_UNEXPECTED_SERVER_RESPONSE'
An internal server error.\n * Session.forceUnpublish()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_INVALID_PARAMETER'
One or more parameters was not valid or not provided. \n * \n * \n * \n * 'OT_NOT_CONNECTED'
Couldn't perform action because you are not connected to the network. \n * \n * \n * \n * 'OT_PERMISSION_DENIED'
This token does not allow this action. The role must be at least moderator. \n * Session.publish()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_CHROME_MICROPHONE_ACQUISITION_ERROR'
Chrome fails to get access to the microphone, due to a Chrome error. To work\n * around this issue, the end-user must restart Chrome and reload your site. This is a\n * known issue\n * to be fixed in Chrome. \n * \n * \n * \n * 'OT_CONSTRAINTS_NOT_SATISFIED'
The constraints for getting user media could not be satisfied. \n * \n * \n * \n * 'OT_CREATE_PEER_CONNECTION_FAILED'
Failed to create a connection between this client and the subscriber or the\n * OpenTok Media Router. \n * \n * \n * \n * 'OT_HARDWARE_UNAVAILABLE'
The hardware to fulfill the user media request appears to exist but could not be acquired.\n * It might be in use by another application. \n * \n * \n * \n * 'OT_ICE_WORKFLOW_FAILED'
Something went wrong while establishing WebRTC connectivity. \n * \n * \n * \n * 'OT_INVALID_PARAMETER'
One or more parameters was not valid or not provided. \n * \n * \n * \n * 'OT_MEDIA_ERR_ABORTED'
The fetching of the stream for the video element has been aborted. \n * \n * \n * \n * 'OT_MEDIA_ERR_DECODE'
A decoding error occurred while trying to play the stream in the video element. \n * \n * \n * \n * 'OT_MEDIA_ERR_NETWORK'
A network error caused the stream to stop being fetched. \n * \n * \n * \n * 'OT_MEDIA_ERR_SRC_NOT_SUPPORTED'
The stream has been detected to be not suitable for playback. \n * \n * \n * \n * 'OT_NO_DEVICES_FOUND'
No devices were found to provide the media stream. \n * \n * \n * \n * 'OT_NO_VALID_CONSTRAINTS'
Video and audio were both disabled. You need to enable at least one. \n * \n * \n * \n * 'OT_NOT_CONNECTED'
Couldn't perform action because you are not connected to the network. \n * \n * \n * \n * 'OT_NOT_SUPPORTED'
Something in the user media request is not supported. \n * \n * \n * \n * 'OT_PERMISSION_DENIED'
This token does not allow publishing. The role must be at least publisher to enable\n * this funcitonality. \n * \n * \n * \n * 'OT_SCREEN_SHARING_NOT_SUPPORTED'
Screen sharing is not supported in the browser. \n * \n * \n * \n * 'OT_SCREEN_SHARING_EXTENSION_NOT_REGISTERED'
Screen-sharing support in this browser requires an extension, but one has not been\n * registered. \n * \n * \n * \n * 'OT_SCREEN_SHARING_EXTENSION_NOT_INSTALLED'
Screen-sharing support in this browser requires an extension, but the extension is not\n * installed. \n * \n * \n * \n * 'OT_SET_REMOTE_DESCRIPTION_FAILED'
The WebRTC connection failed during setDescription. \n * \n * \n * \n * 'OT_STREAM_CREATE_FAILED'
Failed to create the stream in the server model. \n * \n * \n * \n * 'OT_TIMEOUT'
Could not publish in a reasonable amount of time. \n * \n * \n * \n * 'OT_USER_MEDIA_ACCESS_DENIED'
The end-user denied permission to access hardware devices, or the end-user\n * denied access to the screen (for a screen-sharing stream). \n * \n * \n * \n * 'OT_UNEXPECTED_SERVER_RESPONSE'
This indicates an unexpected error from the OpenTok server. \n * Session.signal()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_INVALID_PARAMETER'
One or more parameters was not valid or not provided. \n * \n * \n * \n * 'OT_NOT_CONNECTED'
Couldn't perform action because you are not connected to the network. \n * \n * \n * \n * 'OT_NOT_FOUND'
A resource was not found. \n * \n * \n * \n * 'OT_RATE_LIMIT_EXCEEDED'
The signal could not be sent due to the rate limit. \n * Session.subscribe()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_CREATE_PEER_CONNECTION_FAILED'
Failed to create a connection between this client and the stream's publisher or the\n * OpenTok Media Router. \n * \n * \n * \n * 'OT_DISCONNECTED'
Action failed because the client is not connected to the session. \n * \n * \n * \n * 'OT_INVALID_PARAMETER'
One or more parameters was not valid or not provided. \n * \n * \n * \n * 'OT_ICE_WORKFLOW_FAILED'
Something went wrong while establishing WebRTC connectivity. \n * \n * \n * \n * 'OT_MEDIA_ERR_ABORTED'
The fetching of the stream for the video element has been aborted. \n * \n * \n * \n * 'OT_MEDIA_ERR_DECODE'
A decoding error occurred while trying to play the stream in the video element. \n * \n * \n * \n * 'OT_MEDIA_ERR_NETWORK'
A network error caused the stream to stop being fetched. \n * \n * \n * \n * 'OT_MEDIA_ERR_SRC_NOT_SUPPORTED'
The stream has been detected to be not suitable for playback. \n * \n * \n * \n * 'OT_NOT_CONNECTED'
Couldn't perform action because you are not connected to the network. \n * \n * \n * \n * 'OT_SET_REMOTE_DESCRIPTION_FAILED'
The WebRTC connection failed during setDescription. \n * \n * \n * \n * 'OT_STREAM_DESTROYED'
The stream was destroyed before it could be subscribed to. \n * \n * \n * \n * 'OT_STREAM_LIMIT_EXCEEDED'
The client tried to subscribe to a stream in a session that has exceeded the limit\n * for simultaneous streams. \n * \n * \n * \n * 'OT_STREAM_NOT_FOUND'
Couldn't subscribe to the stream because it was not found. \n * Subscriber.getStats()
:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_NOT_CONNECTED'
Couldn't perform action because you are not connected to the network. \n * OT.unblockAudio()
\n * method is rejected:\n *
\n *\n * \n * \n * \n * name
Description \n * \n * \n * \n * 'OT_MEDIA_ERR_ABORTED'
The fetching of an audio stream has been aborted. \n * \n * \n * \n * 'OT_MEDIA_ERR_NETWORK'
A network error caused a stream to stop being fetched. \n * \n * \n * \n * 'OT_MEDIA_ERR_DECODE'
A decoding error occurred while trying to play a stream. \n * \n * \n * \n * 'OT_MEDIA_ERR_SRC_NOT_SUPPORTED'
A stream has been detected to be not suitable for playback. \n * Publisher.getRtcStatsReport()
or\n * Subscriber.getRtcStatsReport()
method is rejected:\n *
\n *\n * @class Error\n * @augments Event\n */\n\n\nconst OTErrorClass = function OTErrorClass(code, message) {\n Error.call(this);\n this.code = code;\n this.message = message;\n};\n\nOTErrorClass.prototype = Object.create(Error.prototype);\nOTErrorClass.prototype.constructor = OTErrorClass;\nmodule.exports = OTErrorClass;\neventing(OTErrorClass);\n/**\n * Get the title of an error by error code\n *\n * @property {Number|String} code The error code to lookup\n * @return {String} The title of the message with that code\n *\n * @example\n *\n * OTError.getTitleByCode(1006) === 'Connect Failed'\n */\n\nOTErrorClass.getTitleByCode = function (code) {\n return errorCodeToErrorTitleMap[+code];\n}; // @todo redo this when we have time to tidy up\n//\n// @example\n//\n// OTError.handleJsException(\"Descriptive error message\", 2000, {\n// session: session,\n// target: stream|publisher|subscriber|session|etc\n// });\n//\n\n\nOTErrorClass.handleJsException = (_ref) => {\n let error = _ref.error,\n errorMsg = _ref.errorMsg,\n code = _ref.code,\n target = _ref.target,\n analytics = _ref.analytics;\n\n if (!target) {\n throw new Error('handleJsException requires target');\n }\n\n const getCode = () => code !== undefined ? code : error && error.code;\n\n const getMessage = () => errorMsg !== undefined ? errorMsg : error && error.message;\n\n const title = OTErrorClass.getTitleByCode(getCode());\n logging.error(`OT.exception :: title: ${title} (${getCode()}) msg: ${getMessage()}`);\n\n try {\n const options = {\n partnerId: target.session ? target.session.apiKey : target.apiKey,\n sessionId: target.session ? target.session.sessionId : target.sessionId\n };\n analytics.logError(getCode(), 'tb.exception', title, {\n details: getMessage()\n }, options);\n const event = new Events.ExceptionEvent(eventNames.EXCEPTION, getMessage(), title, getCode(), target, target, error);\n\n if (error) {\n event.stack = error.stack;\n } else {\n // Augment the event object with a stacktrace for error reporting purposes\n try {\n throw new Error();\n } catch (caughtError) {\n event.stack = caughtError.stack;\n }\n }\n\n OTErrorClass.dispatchEvent(event);\n } catch (err) {\n logging.error(`OT.exception :: Failed to dispatch exception - ${err.toString()}`); // Don't throw an error because this is asynchronous\n // don't do an exceptionHandler because that would be recursive\n }\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(45));\n\nvar _inheritsLoose2 = _interopRequireDefault(__webpack_require__(59));\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, global-require, max-len */\nconst Event = __webpack_require__(126);\n\nconst eventNames = __webpack_require__(26);\n\nmodule.exports = function EventsFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const logging = deps.logging || __webpack_require__(1)('Events');\n\n const Events = {};\n /**\n * The Event object defines the basic OpenTok event object that is passed to\n * event listeners. Other OpenTok event classes implement the properties and methods of\n * the Event object.\n * \n * \n * name
Description \n * \n * \n * \n * 'OT_PEER_CONNECTION_NOT_CONNECTED'
\n * The \n * PeerConnection for the Publisher or Subscriber is not connected.\n * \n * \n * \n * \n * 'OT_GET_RTC_STATS_REPORT_NOT_SUPPORTED'
\n * The browser does not support this method (for example, in Chrome version 57 and lower, which\n * does not support the \n * RTCPeerConnection.getStats() standard).\n * \n * streamPropertyChanged
event when\n * the stream's properties are updated. You add a callback for an event using the\n * on()
method of the Stream object:\n * stream.on(\"streamPropertyChanged\", function (event) {\n * alert(\"Properties changed for stream \" + event.target.streamId);\n * });
\n *\n * @class Event\n * @property {Boolean} cancelable Whether the event has a default behavior that is cancelable\n * (true
) or not (false
). You can cancel the default behavior by\n * calling the preventDefault()
method of the Event object in the callback\n * function. (See preventDefault().)\n *\n * @property {Object} target The object that dispatched the event.\n *\n * @property {String} type The type of event.\n */\n\n /**\n * Prevents the default behavior associated with the event from taking place.\n *\n * cancelable
property\n * of the event object. preventDefault()
method in the callback function for the event.\n *\n *
\n *\n * @method #preventDefault\n * @memberof Event\n */\n\n /**\n * Whether the default event behavior has been prevented via a call to\n * sessionDisconnect
See\n * \n * SessionDisconnectEvent.preventDefault().streamDestroyed
See \n * StreamEvent.preventDefault().accessDialogOpened
See the\n * accessDialogOpened event.accessDenied
See the \n * accessDenied event.preventDefault()
(true
) or not (false
).\n * See preventDefault().\n * @method #isDefaultPrevented\n * @return {Boolean}\n * @memberof Event\n */\n\n /**\n * The {@link OT} class dispatches exception
events when the OpenTok API encounters\n * an exception (error). The ExceptionEvent object defines the properties of the event\n * object that is dispatched.\n *\n * exception
event by calling the\n * OT.on()
method.\n *
\n *\n * \n * \n *\n * \n * code\n *\n * \n * \n * title\n * \n * \n * \n *\n * \n * 1004\n *\n * \n * \n * Authentication error\n * \n * \n * \n * \n * 1005\n *\n * \n * \n * Invalid Session ID\n * \n * \n * \n * \n * 1006\n *\n * \n * \n * Connect Failed\n * \n * \n * \n * \n * 1007\n *\n * \n * \n * Connect Rejected\n * \n * \n * \n * \n * 1008\n *\n * \n * \n * Connect Time-out\n * \n * \n * \n * \n * 1009\n *\n * \n * \n * Security Error\n * \n * \n * \n * \n * 1010\n *\n * \n * \n * Not Connected\n * \n * \n * \n * \n * 1011\n *\n * \n * \n * Invalid Parameter\n * \n * \n * \n * \n * 1013\n * \n * \n * Connection Failed\n * \n * \n * \n * \n * 1014\n * \n * \n * API Response Failure\n * \n * \n * \n * \n * 1026\n * \n * \n * Terms of Service Violation: Export Compliance\n * \n * \n * \n *\n * \n * 1500\n * \n * \n * Unable to Publish\n * \n * \n * \n *\n * \n * 1520\n * \n * \n * Unable to Force Disconnect\n * \n * \n * \n * \n * 1530\n * \n * \n * Unable to Force Unpublish\n * \n * \n * \n *\n * \n * 1535\n * \n * \n * Force Unpublish on Invalid Stream\n * \n * \n * \n *\n * \n * 2000\n *\n * \n * \n * Internal Error\n * \n * \n * \n *\n *\n * \n * 2010\n *\n * \n * \n * Report Issue Failure\n * \n * message
property for more details about the error.exception
event, this will be an object other than the OT object\n * (such as a Session object or a Publisher object).\n *\n * @property {String} title The error title.\n * @augments Event\n */\n\n Events.ExceptionEvent = function ExceptionEvent(type, message, title, code, component, target, error) {\n return new Event(type, false, {\n error,\n message,\n title,\n code,\n component,\n target\n });\n };\n\n Events.IssueReportedEvent = function IssueReportedEvent(type, issueId) {\n return new Event(type, false, {\n issueId\n });\n }; // Triggered when the JS dynamic config and the DOM have loaded.\n\n\n Events.EnvLoadedEvent = function EnvLoadedEvent(type) {\n return new Event(type, false);\n };\n /**\n * Defines connectionCreated
and connectionDestroyed
events dispatched\n * by the {@link Session} object.\n * connectionCreated
event when a client (including\n * your own) connects to a Session. It also dispatches a connectionCreated
event for\n * every client in the session when you first connect. (when your local client connects, the\n * Session object also dispatches a sessionConnected
event, defined by the\n * {@link SessionConnectEvent} class.)\n * connectionDestroyed
event when another client disconnects from the Session.\n * (When you disconnect, the Session object also dispatches a sessionDisconnected
\n * event, defined by the {@link SessionDisconnectEvent} class.)\n *\n * Example
\n *\n * connections
property of the sessionConnect
,\n * connectionCreated
and connectionDestroyed
events:var apiKey = \"\"; // Replace with your API key. See https://tokbox.com/account\n * var sessionID = \"\"; // Replace with your own session ID.\n * // See https://tokbox.com/developer/guides/create-session/.\n * var token = \"\"; // Replace with a generated token that has been assigned the moderator role.\n * // See https://tokbox.com/developer/guides/create-token/.\n * var connectionCount = 0;\n *\n * var session = OT.initSession(apiKey, sessionID);\n * session.on(\"connectionCreated\", function(event) {\n * connectionCount++;\n * displayConnectionCount();\n * });\n * session.on(\"connectionDestroyed\", function(event) {\n * connectionCount--;\n * displayConnectionCount();\n * });\n * session.connect(token);\n *\n * function displayConnectionCount() {\n * document.getElementById(\"connectionCountField\").value = connectionCount.toString();\n * }
\n *\n * id
set to \"connectionCountField\"
:<input type=\"text\" id=\"connectionCountField\" value=\"0\"></input>
\n *\n *\n * @property {Connection} connection A Connection object for the connection that was\n * created or deleted.\n *\n * @property {Array} connections Deprecated. Use the connection
property. A\n * connectionCreated
or connectionDestroyed
event is dispatched\n * for each connection created and destroyed in the session.\n *\n * @property {String} reason For a connectionDestroyed
event,\n * a description of why the connection ended. This property can have the following values:\n *
\"clientDisconnected\"
A client disconnected from the session by calling\n * the disconnect()
method of the Session object or by closing the browser.\n * (See Session.disconnect().)\"forceDisconnected\"
A moderator has disconnected the publisher\n * from the session, by calling the forceDisconnect()
method of the Session\n * object. (See Session.forceDisconnect().)\"networkDisconnected\"
The network connection terminated abruptly\n * (for example, the client lost their internet connection).Depending on the context, this description may allow the developer to refine\n * the course of action they take in response to an event.
\n *\n *For a connectionCreated
event, this string is undefined.
The following code connects to a session and sets up an event listener for when\n * a stream published by another client is created:
\n *\n *\n * session.on(\"streamCreated\", function(event) {\n * subscriber = session.subscribe(event.stream, targetElement);\n * }).connect(token);\n *\n *\n *
The following code connects to a session and sets up an event listener for when\n * other clients' streams end:
\n *\n *\n * session.on(\"streamDestroyed\", function(event) {\n * console.log(\"Stream \" + event.stream.name + \" ended. \" + event.reason);\n * }).connect(token);\n *\n *\n *
The following code publishes a stream and adds an event listener for when the streaming\n * starts
\n *\n *\n * var publisher = session.publish(targetElement)\n * .on(\"streamCreated\", function(event) {\n * console.log(\"Publisher started streaming.\");\n * });\n *\n *\n *
The following code publishes a stream, and leaves the Publisher in the HTML DOM\n * when the streaming stops:
\n *\n *\n * var publisher = session.publish(targetElement)\n * .on(\"streamDestroyed\", function(event) {\n * event.preventDefault();\n * console.log(\"Publisher stopped streaming.\");\n * });\n *\n *\n * @class StreamEvent\n *\n * @property {Boolean} cancelable Whether the event has a default behavior that is cancelable\n * (
true
) or not (false
). You can cancel the default behavior by\n * calling the preventDefault()
method of the StreamEvent object in the event\n * listener function. The streamDestroyed
event is cancelable.\n * (See preventDefault().)\n *\n * @property {String} reason For a streamDestroyed
event,\n * a description of why the session disconnected. This property can have one of the following\n * values:\n * \n * \"clientDisconnected\"
A client disconnected from the session by calling\n * the disconnect()
method of the Session object or by closing the browser.\n * (See Session.disconnect().)\"forceDisconnected\"
A moderator has disconnected the publisher of the\n * stream from the session, by calling the forceDisconnect()
method of the Session\n * object. (See Session.forceDisconnect().)\"forceUnpublished\"
A moderator has forced the publisher of the stream\n * to stop publishing the stream, by calling the forceUnpublish()
method of the\n * Session object.\n * (See Session.forceUnpublish().)\"mediaStopped\"
The user publishing the stream has stopped sharing\n * media. For example, the user closed the window that is a source for a screen-sharing\n * stream. Or the user disconnected a microphone that was the audio source for an audio-only\n * stream. Or the video and audio sources are MediaStreamTrack elements and the sources of\n * the media are stopped or destroyed.\"networkDisconnected\"
The network connection terminated abruptly (for\n * example, the client lost their internet connection).Depending on the context, this description may allow the developer to refine\n * the course of action they take in response to an event.
\n *\n *For a streamCreated
event, this string is undefined.
streamCreated
event) or deleted (in the case of a\n * streamDestroyed
event).\n *\n * @property {Array} streams Deprecated. Use the stream
property. A\n * streamCreated
or streamDestroyed
event is dispatched for\n * each stream added or destroyed.\n *\n * @augments Event\n */\n\n\n let streamEventPluralDeprecationWarningShown = false;\n\n Events.StreamEvent = /*#__PURE__*/function (_Event2) {\n (0, _inheritsLoose2.default)(StreamEvent, _Event2);\n\n function StreamEvent(type, stream, reason, cancelable) {\n return _Event2.call(this, type, cancelable, {\n stream,\n reason\n }) || this;\n }\n\n (0, _createClass2.default)(StreamEvent, [{\n key: \"streams\",\n get: function get() {\n if (!streamEventPluralDeprecationWarningShown) {\n logging.warn('OT.StreamEvent streams property is deprecated, use stream instead.');\n streamEventPluralDeprecationWarningShown = true;\n }\n\n return [this.stream];\n }\n }]);\n return StreamEvent;\n }(Event);\n /**\n * Prevents the default behavior associated with the event from taking place.\n *\n * For the streamDestroyed
event dispatched by the Session object,\n * the default behavior is that all Subscriber objects that are subscribed to the stream are\n * unsubscribed and removed from the HTML DOM. Each Subscriber object dispatches a\n * destroyed
event when the element is removed from the HTML DOM. If you call the\n * preventDefault()
method in the event listener for the streamDestroyed
\n * event, the default behavior is prevented and you can clean up Subscriber objects using your\n * own code. See\n * Session.getSubscribersForStream().
\n * For the streamDestroyed
event dispatched by a Publisher object, the default\n * behavior is that the Publisher object is removed from the HTML DOM. The Publisher object\n * dispatches a destroyed
event when the element is removed from the HTML DOM.\n * If you call the preventDefault()
method in the event listener for the\n * streamDestroyed
event, the default behavior is prevented, and you can\n * retain the Publisher for reuse or clean it up using your own code.\n *
To see whether an event has a default behavior, check the cancelable
property of\n * the event object.
\n * Call the preventDefault()
method in the event listener function for the event.\n *
connect()
method of the Session object.\n * \n * In version 2.2, the completionHandler of the Session.connect()
method\n * indicates success or failure in connecting to the session.\n *\n * @class SessionConnectEvent\n * @property {Array} connections Deprecated in version 2.2 (and set to an empty array). In\n * version 2.2, listen for the connectionCreated
event dispatched by the Session\n * object. In version 2.2, the Session object dispatches a connectionCreated
event\n * for each connection (including your own). This includes connections present when you first\n * connect to the session.\n *\n * @property {Array} streams Deprecated in version 2.2 (and set to an empty array). In version\n * 2.2, listen for the streamCreated
event dispatched by the Session object. In\n * version 2.2, the Session object dispatches a streamCreated
event for each stream\n * other than those published by your client. This includes streams\n * present when you first connect to the session.\n *\n * @see Session.connect()
disconnect()
method of the session object.\n *\n * \n * The following code initializes a session and sets up an event listener for when a session is\n * disconnected.\n *
\n *var apiKey = \"\"; // Replace with your API key. See https://tokbox.com/account\n * var sessionID = \"\"; // Replace with your own session ID.\n * // See https://tokbox.com/developer/guides/create-session/\n * var token = \"\"; // Replace with a generated token that has been assigned the moderator role.\n * // See https://tokbox.com/developer/guides/create-token/\n *\n * var session = OT.initSession(apiKey, sessionID);\n * session.on(\"sessionDisconnected\", function(event) {\n * alert(\"The session disconnected. \" + event.reason);\n * });\n * session.connect(token);\n *\n *\n * @property {String} reason A description of why the session disconnected.\n * This property can have the following values:\n * \n *
\"clientDisconnected\"
— A client disconnected from the\n * session by calling the disconnect()
method of the Session\n * object or by closing the browser. ( See Session.disconnect().)\n * \"forceDisconnected\"
— A moderator has disconnected you from\n * the session by calling the forceDisconnect()
method of the\n * Session object. (See Session.forceDisconnect().)\n * \"networkDisconnected\"
— The network connection terminated\n * abruptly (for example, the client lost its internet connection).\n * \n * Prior to dispatching a\n * sessionDisconnected
event for this reason, the Session object dispatches a\n * reconnecting
event, and the client attempts to reconnect to the OpenTok session.\n * If the reconnection fails, the Session object dispatches a sessionDisconnected
\n * event with the reason
property set to \"networkDisconnected\"
.\n *
\n * For the sessionDisconnectEvent
, the default behavior is that all\n * Subscriber objects are unsubscribed and removed from the HTML DOM. Each\n * Subscriber object dispatches a destroyed
event when the element\n * is removed from the HTML DOM. If you call the preventDefault()
\n * method in the event listener for the sessionDisconnect
event,\n * the default behavior is prevented, and you can, optionally, clean up\n * Subscriber objects using your own code).\n *
\n * To see whether an event has a default behavior, check the\n * cancelable
property of the event object.\n *
\n * Call the preventDefault()
method in the event listener function\n * for the event.\n *
streamPropertyChanged
event in the\n * following circumstances:\n *\n * publishAudio()
or\n * publishVideo()
methods of the Publish object. Note that a\n * subscriber's video can be disabled or enabled for reasons other than the\n * publisher disabling or enabling it. A Subscriber object dispatches\n * videoDisabled
and videoEnabled
events in all\n * conditions that cause the subscriber's stream to be disabled or enabled.\n * videoDimensions
property of the Stream object has\n * changed (see Stream.videoDimensions).\n * videoType
property of the Stream object has changed.\n * This can happen in a stream published by a mobile device. (See\n * Stream.videoType.)\n * \"hasAudio\"
, \"hasVideo\"
, or \"videoDimensions\"
.\n * @property {Object} newValue The new value of the property (after the change).\n * @property {Object} oldValue The old value of the property (before the change).\n * @property {Stream} stream The Stream object for which a property has changed.\n *\n * @see Publisher.publishAudio()\n * @see Publisher.publishVideo()\n * @see Stream.videoDimensions\n * @augments Event\n */\n\n\n Events.StreamPropertyChangedEvent = function StreamPropertyChangedEvent(type, stream, changedProperty, oldValue, newValue) {\n return new Event(type, false, {\n stream,\n changedProperty,\n oldValue,\n newValue\n });\n };\n /**\n * Dispatched when the video dimensions of the video change for a screen-sharing\n * video stream (when the user resizes the window being captured).\n *\n * @class VideoDimensionsChangedEvent\n * @property {Object} newValue The new video dimensions (after the change). This object has two\n * properties: height
(the height, in pixels) and width
(the width,\n * in pixels).\n * @property {Object} oldValue The old video dimensions (before the change). This object has two\n * properties: height
(the old height, in pixels) and width
(the old\n * width, in pixels).\n *\n * @see Publisher videoDimensionsChanged\n * event\n * @see Subscriber videoDimensionsChanged\n * event\n * @augments Event\n */\n\n\n Events.VideoDimensionsChangedEvent = function VideoDimensionsChangedEvent(target, oldValue, newValue) {\n return new Event('videoDimensionsChanged', false, {\n target,\n oldValue,\n newValue\n });\n };\n /**\n * Defines event objects for the archiveStarted
and archiveStopped
\n * events. The Session object dispatches these events when an archive recording of the session\n * starts and stops.\n *\n * @property {String} id The archive ID.\n * @property {String} name The name of the archive. You can assign an archive a name when you\n * create it, using the OpenTok REST API or one\n * of the OpenTok server SDKs.\n *\n * @class ArchiveEvent\n * @augments Event\n */\n\n\n Events.ArchiveEvent = function ArchiveEvent(type, archive) {\n return new Event(type, false, {\n id: archive.id,\n name: archive.name,\n status: archive.status,\n archive\n });\n };\n\n Events.ArchiveUpdatedEvent = function ArchiveUpdatedEvent(stream, key, oldValue, newValue) {\n return new Event('updated', false, {\n target: stream,\n changedProperty: key,\n oldValue,\n newValue\n });\n };\n /**\n * The Session object dispatches a signal event when the client receives a signal from the\n * session.\n *\n * @class SignalEvent\n * @property {String} type The type assigned to the signal (if there is one). Use the type to\n * filter signals received (by adding an event handler for signal:type1 or signal:type2, etc.)\n * @property {String} data The data string sent with the signal (if there is one).\n * @property {Connection} from The Connection corresponding to the client that sent the\n * signal.\n *\n * @see Session.signal()\n * @see Session events (signal and signal:type)\n * @augments Event\n */\n\n\n Events.SignalEvent = function SignalEvent(type, data, from) {\n return new Event(type ? `signal:${type}` : eventNames.SIGNAL, false, {\n data,\n from\n });\n };\n\n Events.StreamUpdatedEvent = function StreamUpdatedEvent(stream, key, oldValue, newValue) {\n return new Event('updated', false, {\n target: stream,\n changedProperty: key,\n oldValue,\n newValue\n });\n };\n\n Events.DestroyedEvent = function DestroyedEvent(type, target, reason) {\n return new Event(type, false, {\n target,\n reason\n });\n };\n\n Events.ConnectionStateChangedEvent = function ConnectionStateChangedEvent(type, target) {\n return new Event(type, false, {\n target\n });\n };\n /**\n * Defines the event object for the videoDisabled
and videoEnabled
\n * events dispatched by the Subscriber.\n *\n * @class VideoEnabledChangedEvent\n *\n * @property {Boolean} cancelable Whether the event has a default behavior that is cancelable\n * (true
) or not (false
). You can cancel the default behavior by\n * calling the preventDefault()
method of the event object in the callback\n * function. (See preventDefault().)\n *\n * @property {String} reason The reason the video was disabled or enabled. This can be set to one\n * of the following values:\n *\n * \"publishVideo\"
— The publisher started or stopped publishing video,\n * by calling publishVideo(true)
or publishVideo(false)
.\"quality\"
— The OpenTok Media Router starts or stops sending video\n * to the subscriber based on stream quality changes. This feature of the OpenTok Media\n * Router has a subscriber drop the video stream when connectivity degrades. (The subscriber\n * continues to receive the audio stream, if there is one.)\n * \n * If connectivity improves to support video again, the Subscriber object dispatches\n * a videoEnabled
event, and the Subscriber resumes receiving video.\n *
\n * By default, the Subscriber displays a video disabled indicator when a\n * videoDisabled
event with this reason is dispatched and removes the indicator\n * when the videoEnabled
event with this reason is dispatched. You can control\n * the display of this icon by calling the setStyle()
method of the Subscriber,\n * setting the videoDisabledDisplayMode
property(or you can set the style when\n * calling the Session.subscribe()
method, setting the style
property\n * of the properties
parameter).\n *
\n * This feature is only available in sessions that use the OpenTok Media Router (sessions with\n * the media mode\n * set to routed), not in sessions with the media mode set to relayed.\n *
\"subscribeToVideo\"
— The subscriber started or stopped subscribing to\n * video, by calling subscribeToVideo(true)
or\n * subscribeToVideo(false)
.\"codecNotSupported\"
— The subscriber stopped subscribing to video due\n * to an incompatible codec.\"codecChanged\"
— The subscriber video was enabled after a codec change\n * from an incompatible codec.\"videoDisabled\"
or\n * \"videoEnabled\"
.\n *\n * @see Subscriber videoDisabled event\n * @see Subscriber videoEnabled event\n * @augments Event\n */\n\n\n Events.VideoEnabledChangedEvent = function VideoEnabledChangedEvent(type, properties) {\n return new Event(type, false, {\n reason: properties.reason\n });\n };\n\n Events.VideoDisableWarningEvent = function VideoDisableWarningEvent(type\n /* , properties */\n ) {\n return new Event(type, false);\n };\n /**\n * Dispatched periodically by a Subscriber or Publisher object to indicate the audio\n * level. This event is dispatched up to 60 times per second, depending on the browser.\n *\n * @property {Number} audioLevel The audio level, from 0 to 1.0. Adjust this value logarithmically\n * for use in adjusting a user interface element, such as a volume meter. Use a moving average\n * to smooth the data.\n *\n * @class AudioLevelUpdatedEvent\n * @augments Event\n */\n\n\n Events.AudioLevelUpdatedEvent = function AudioLevelUpdatedEvent(audioLevel) {\n return new Event(eventNames.AUDIO_LEVEL_UPDATED, false, {\n audioLevel\n });\n };\n /**\n * Dispatched by a Publisher when the user has stopped sharing one or all media types\n * (video, audio, or screen).\n *\n * @property {MediaStreamTrack} track The media track that has ended. This property is undefined\n * if all media tracks have stopped. Check the kind
property of this object to\n * see if the track is an audio track or a video track.\n *\n * @class MediaStoppedEvent\n * @augments Event\n * @see https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack\n */\n\n\n Events.MediaStoppedEvent = function MediaStoppedEvent(target, track) {\n return new Event(eventNames.MEDIA_STOPPED, true, {\n target,\n track\n });\n };\n /**\n * Dispatched by a Session when a moderator performs a mute all and by a Publisher when its\n * audio is muted.\n *\n * @property {Object} muteForcedInfo The object that contains the processed mute options.\n *\n * @class MuteForcedEvent\n * @augments Event\n */\n\n\n Events.MuteForcedEvent = function MuteForcedEvent(muteForcedInfo) {\n return new Event(eventNames.MUTE_FORCED, false, muteForcedInfo);\n };\n /**\n * Dispatched by a Subscriber or Publisher object to indicate the video
element\n * (or object
element in Internet Explorer) was created. Add a listener for this event\n * when you set the insertDefaultUI
option to false
in the call to the\n * OT.initPublisher() method or the\n * Session.subscribe() method. The element
\n * property of the event object is a reference to the Publisher's video
element\n * (or the object
element in Internet Explorer). Add it to the HTML DOM to display the\n * video. (When you set the insertDefaultUI
option to false
, the\n * video
element is not inserted into the DOM automatically.)\n * \n * Add a listener for this event only if you have set the \n * You must call this method before calling any other OpenTok methods.\n * This ensures that the proxy server is used for OpenTok traffic. Otherwise,\n * the call fails, and the \n * This is available as an add-on feature. For more information, see the\n * IP proxy developer\n * guide.\n *\n * @method OT.setProxyUrl\n * @memberof OT\n */\n\nmodule.exports = {\n errorMessages,\n setProxyUrl: url => {\n // This is necessary to break a circular dependancy, but seems hacky and should be cleaned up\n const AnalyticsHelper = __webpack_require__(27);\n\n const apiKey = __webpack_require__(72);\n\n const analytics = new AnalyticsHelper();\n const hasSessionInitalized = sessionObjects.sessions.length() > 0;\n const hasPublisherInitalized = sessionObjects.publishers.length() > 0;\n let sessionId;\n\n if (hasSessionInitalized) {\n const connectedSession = sessionObjects.sessions.find(session => session.currentState === 'connected');\n sessionId = connectedSession ? connectedSession.sessionId : sessionObjects.sessions.find().sessionId;\n } else {\n sessionId = '';\n }\n\n const target = {\n sessionId,\n apiKey: apiKey.value\n };\n\n if (hasPublisherInitalized || hasSessionInitalized) {\n const error = otError()(Errors.SET_PROXY_URL_TIMING_ERROR, new Error(errorMessages.SET_PROXY_URL_TIMING_ERROR), ExceptionCodes.SET_PROXY_URL_TIMING_ERROR);\n OTErrorClass.handleJsException({\n error,\n target,\n analytics\n });\n } else if (proxyUrl) {\n const error = otError()(Errors.PROXY_URL_ALREADY_SET_ERROR, new Error(errorMessages.PROXY_URL_ALREADY_SET_ERROR), ExceptionCodes.PROXY_URL_ALREADY_SET_ERROR);\n OTErrorClass.handleJsException({\n error,\n target,\n analytics\n });\n } else {\n // eslint-disable-next-line no-param-reassign\n proxyUrl = url;\n }\n },\n getProxyUrl: () => proxyUrl,\n // this method should only be exposed to tests\n clearProxyUrl: () => {\n proxyUrl = null;\n }\n};\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseRest = __webpack_require__(87),\n eq = __webpack_require__(51),\n isIterateeCall = __webpack_require__(122),\n keysIn = __webpack_require__(52);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(45));\n\n/* eslint-disable no-underscore-dangle */\nconst _get = __webpack_require__(56);\n\nconst cloneDeep = __webpack_require__(55);\n/**\n * Provides an interface around the raw session info from Anvil\n *\n * @class SessionInfo\n * @param {Object} rawSessionInfo The raw session info from Anvil\n *\n */\n\n\nlet SessionInfo = /*#__PURE__*/function () {\n function SessionInfo(rawSessionInfo) {\n if (rawSessionInfo === void 0) {\n rawSessionInfo = {};\n }\n\n Object.defineProperty(this, '_rawSessionInfo', {\n value: cloneDeep(rawSessionInfo)\n });\n }\n /**\n * @type {String}\n * @readonly\n */\n\n\n (0, _createClass2.default)(SessionInfo, [{\n key: \"sessionId\",\n get: function get() {\n return this._rawSessionInfo.session_id;\n }\n /**\n * @type {String}\n * @readonly\n */\n\n }, {\n key: \"partnerId\",\n get: function get() {\n return this._rawSessionInfo.partner_id;\n }\n /**\n * @type {String}\n * @readonly\n */\n\n }, {\n key: \"messagingServer\",\n get: function get() {\n return this._rawSessionInfo.messaging_server_url;\n }\n /**\n * @type {String}\n * @readonly\n */\n\n }, {\n key: \"mediaServerName\",\n get: function get() {\n return this._rawSessionInfo.media_server_hostname;\n }\n /**\n * @type {String}\n * @readonly\n */\n\n }, {\n key: \"messagingURL\",\n get: function get() {\n return this._rawSessionInfo.messaging_url;\n }\n /**\n * @type {String}\n * @readonly\n */\n\n }, {\n key: \"symphonyAddress\",\n get: function get() {\n return this._rawSessionInfo.symphony_address;\n }\n /**\n * @type {Array}\n * @readonly\n */\n\n }, {\n key: \"iceServers\",\n get: function get() {\n return this._rawSessionInfo.ice_servers;\n }\n /**\n * Simulcast is tri-state:\n * * true - simulcast is on for this session\n * * false - simulcast is off for this session\n * * undefined - the developer can choose\n * @type {Boolean|Undefined}\n * @readonly\n */\n\n }, {\n key: \"simulcast\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.simulcast');\n }\n /**\n * @type {Boolean}\n * @readonly\n */\n\n }, {\n key: \"reconnection\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.reconnection', false);\n }\n /**\n * @type {Boolean}\n * @readonly\n */\n\n }, {\n key: \"renegotiation\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.renegotiation', false);\n }\n /**\n * @type {Boolean}\n * @readonly\n */\n\n }, {\n key: \"p2pEnabled\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.p2p.preference.value') === 'enabled';\n }\n /**\n * @type {Boolean}\n * @readonly\n */\n\n }, {\n key: \"hybridSession\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.hybridSession', false);\n }\n /**\n * @type {Boolean}\n * @readonly\n */\n\n }, {\n key: \"isAdaptiveEnabled\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.p2p.preference.value') === 'adaptive';\n }\n /**\n * If this contains a valid codec, it will be prioritized\n *\n * @type {String}\n * @readonly\n */\n\n }, {\n key: \"priorityVideoCodec\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.priorityVideoCodec', '');\n }\n /**\n * Is true if H264 codec is enabled\n *\n * @type {Boolean}\n * @readonly\n */\n\n }, {\n key: \"h264\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.h264', true);\n }\n /**\n * Is true if VP8 codec is enabled\n *\n * @type {Boolean}\n * @readonly\n */\n\n }, {\n key: \"vp8\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.vp8', true);\n }\n /**\n * Is true if VP9 codec is enabled\n *\n * @type {Boolean}\n * @readonly\n */\n\n }, {\n key: \"vp9\",\n get: function get() {\n return _get(this._rawSessionInfo, 'properties.vp9', true);\n }\n /**\n * clientCandidates can be \"relay\". Other values are unknown.\n *\n * @type {String|Undefined}\n * @readonly\n */\n\n }, {\n key: \"clientCandidates\",\n get: function get() {\n const rawValue = _get(this._rawSessionInfo, 'properties.clientCandidates');\n\n return rawValue === 'relayed' ? 'relay' : rawValue;\n }\n }]);\n return SessionInfo;\n}();\n\nmodule.exports = SessionInfo;\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst extendES5Native = __webpack_require__(546);\n\nconst webrtcAdapter = __webpack_require__(547);\n\nconst logging = __webpack_require__(1)('createWindowMock');\n\nconst env = __webpack_require__(2);\n\nconst windowKeys = [{\n key: 'location',\n type: 'object'\n}, {\n key: 'setTimeout',\n type: 'function'\n}, {\n key: 'requestAnimationFrame',\n type: 'function'\n}, {\n key: 'URL',\n type: 'function'\n}, {\n key: 'MediaStream',\n type: 'class'\n}, {\n key: 'webkitMediaStream',\n type: 'class'\n}, {\n key: 'RTCIceCandidate',\n type: 'class'\n}, {\n key: 'mozRTCIceCandidate',\n type: 'class'\n}, {\n key: 'RTCSessionDescription',\n type: 'class'\n}, {\n key: 'mozRTCSessionDescription',\n type: 'class'\n}, {\n key: 'RTCIceGatherer',\n type: 'class'\n}, {\n key: 'RTCIceTransport',\n type: 'class'\n}, {\n key: 'RTCDtlsTransport',\n type: 'class'\n}, {\n key: 'RTCSctpTransport',\n type: 'class'\n}, {\n key: 'RTCRtpReceiver',\n type: 'class'\n}, {\n key: 'HTMLMediaElement',\n type: 'class'\n}, {\n key: 'RTCPeerConnection',\n type: 'class'\n}, {\n key: 'webkitRTCPeerConnection',\n type: 'class'\n}, {\n key: 'mozRTCPeerConnection',\n type: 'class'\n}, {\n key: 'MediaStreamTrack',\n type: 'class'\n}, {\n key: 'RTCRtpSender',\n type: 'class'\n}, {\n key: 'RTCTrackEvent',\n type: 'class'\n}, {\n key: 'RTCTransceiver',\n type: 'class'\n}, {\n key: 'RTCDtmfSender',\n type: 'class'\n}, {\n key: 'RTCDTMFSender',\n type: 'class'\n}, {\n key: 'MediaStreamTrackEvent',\n type: 'class'\n}];\nconst navigatorKeys = [{\n key: 'userAgent',\n type: 'string'\n}, {\n key: 'getUserMedia',\n type: 'function'\n}, {\n key: 'getDisplayMedia',\n type: 'function'\n}, {\n key: 'webkitGetUserMedia',\n type: 'function'\n}, {\n key: 'mozGetUserMedia',\n type: 'function'\n}];\nconst mediaDevicesKeys = [{\n key: 'getUserMedia',\n type: 'function'\n}, {\n key: 'getDisplayMedia',\n type: 'function'\n}, {\n key: 'enumerateDevices',\n type: 'function'\n}, {\n key: 'getSupportedConstraints',\n type: 'function'\n}, {\n key: 'addEventListener',\n type: 'function'\n}, {\n key: 'removeEventListener',\n type: 'function'\n}];\n\nconst bindWithStaticProperties = (context, func) => {\n if (typeof func !== 'function') {\n logging.warn('Non-function passed into bindWithStaticProperties()');\n return func;\n }\n\n const bound = func.bind(context);\n Object.keys(func).forEach(key => {\n bound[key] = func[key];\n });\n return bound;\n};\n\nconst extendParentClass = ParentClass => {\n try {\n // The below __proto__ hack is so we can extend RTCPeerConnection in Firefox and Safari\n // See: https://bugs.webkit.org/show_bug.cgi?id=172867#c6\n // eslint-disable-next-line no-eval\n const ChildClass = eval(`\n \"use strict\"; // Chrome<49 requires strict mode\n\n const getOwnProperties = (target) => {\n const properties = {};\n Object.getOwnPropertyNames(target).forEach((key) => {\n properties[key] = Object.getOwnPropertyDescriptor(target, key);\n });\n return properties;\n };\n\n class ChildClass extends ParentClass {\n constructor(...args) {\n super(...args);\n try {\n this.__proto__ = ChildClass.prototype;\n } catch (e) {}\n }\n };\n\n Object.defineProperties(ChildClass.prototype, getOwnProperties(ParentClass.prototype));\n Object.keys(ParentClass)\n .forEach((staticKey) => {\n ChildClass[staticKey] = ParentClass[staticKey];\n });\n\n ChildClass; // Ensure the final statement is returned in FF\n `);\n\n if (ChildClass && ChildClass.prototype instanceof ParentClass) {\n return ChildClass;\n }\n } catch (e) {// Failed to use ES6 class or eval under CSP\n }\n\n return null;\n};\n\nconst canUseES6Class = window => {\n const RTCPeerConnection = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;\n const PC = extendParentClass(RTCPeerConnection);\n\n if (PC) {\n try {\n PC.prototype.foo = 'bar';\n const instance = new PC({\n iceServers: []\n });\n const result = instance.foo === 'bar';\n\n try {\n instance.close();\n } catch (e) {} // eslint-disable-line no-empty\n\n\n return result;\n } catch (e) {// Failed to instantiate the subclass\n }\n }\n\n return false;\n};\n\nconst extendClass = (ParentClass, label, canUseClass) => {\n if (typeof ParentClass !== 'function') {\n logging.warn('Non-function passed into extendClass()');\n return ParentClass;\n }\n\n let result = canUseClass && extendParentClass(ParentClass);\n\n if (!result) {\n result = extendES5Native(ParentClass);\n }\n\n return result;\n};\n\nconst getCopyProperties = canUseClass => (target, source, keys) => {\n keys.forEach((_ref) => {\n let key = _ref.key,\n type = _ref.type;\n let value = source[key];\n\n if (value !== undefined) {\n switch (type) {\n case 'function':\n value = bindWithStaticProperties(source, value);\n break;\n\n case 'class':\n value = extendClass(value, key, canUseClass);\n break;\n\n case 'string':\n case 'object':\n break;\n\n default:\n throw new Error(`Invalid type of window key: ${type}`);\n }\n\n target[key] = value; // eslint-disable-line no-param-reassign\n }\n });\n};\n\nconst cloneWindow = window => {\n const windowMock = {};\n const copyProperties = getCopyProperties(canUseES6Class(window));\n copyProperties(windowMock, window, windowKeys);\n\n if (window.navigator !== undefined) {\n windowMock.navigator = {};\n copyProperties(windowMock.navigator, window.navigator, navigatorKeys);\n\n if (window.navigator.mediaDevices !== undefined) {\n windowMock.navigator.mediaDevices = {};\n copyProperties(windowMock.navigator.mediaDevices, window.navigator.mediaDevices, mediaDevicesKeys);\n }\n }\n\n return windowMock;\n};\n\nmodule.exports = function createWindowMock(window) {\n // We avoid shimming twice because adapter is not idempotent.\n // Unfortunately checking for window.adapter can be used to detect\n // adapter.js but not adapter_no_global.js, there is no reliable\n // way of detecting it.\n if (window.adapter !== undefined || env.isLegacyEdge) {\n return window;\n }\n\n const windowMock = cloneWindow(window);\n webrtcAdapter({\n window: windowMock\n });\n return windowMock;\n};\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n * Transforms a raw audio level to produce a \"smoother\" animation when using displaying the\n * audio level. This transformer is state-full because it needs to keep the previous average\n * value of the signal for filtering.\n *\n * It applies a low pass filter to get rid of level jumps and apply a log scale.\n *\n * @constructor\n */\nmodule.exports = function AudioLevelTransformer() {\n let averageAudioLevel = null;\n /*\n *\n * @param {number} audioLevel a level in the [0,1] range\n * @returns {number} a level in the [0,1] range transformed\n */\n\n this.transform = audioLevel => {\n if (averageAudioLevel === null || audioLevel >= averageAudioLevel) {\n averageAudioLevel = audioLevel;\n } else {\n // a simple low pass filter with a smoothing of 70\n averageAudioLevel = audioLevel * 0.3 + averageAudioLevel * 0.7;\n } // 1.5 scaling to map -30-0 dBm range to [0,1]\n\n\n const logScaled = Math.log(averageAudioLevel) / Math.LN10 / 1.5 + 1;\n return Math.min(Math.max(logScaled, 0), 1);\n };\n};\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* eslint-disable no-underscore-dangle */\nconst eventing = __webpack_require__(6);\n\nconst values = obj => Object.keys(obj).map(key => obj[key]);\n\nconst assign = __webpack_require__(7); // Manages N Chrome elements\n\n\nmodule.exports = function Chrome(properties) {\n const _widgets = {}; // Private helper function\n\n const _set = (name, widget) => {\n assign(widget, {\n parent: this\n });\n widget.appendTo(properties.parent);\n _widgets[name] = widget;\n this[name] = widget;\n };\n\n if (!properties.parent) {\n // @todo raise an exception\n return;\n }\n\n eventing(this);\n\n this.destroy = () => {\n this.off();\n this.hideWhileLoading();\n values(_widgets).forEach(widget => widget.destroy());\n };\n\n this.showAfterLoading = () => {\n values(_widgets).forEach(widget => widget.showAfterLoading());\n };\n\n this.hideWhileLoading = () => {\n values(_widgets).forEach(widget => widget.hideWhileLoading());\n }; // Adds the widget to the chrome and to the DOM. Also creates a accessor\n // property for it on the chrome.\n //\n // @example\n // chrome.set('foo', new FooWidget());\n // chrome.foo.setDisplayMode('on');\n //\n // @example\n // chrome.set({\n // foo: new FooWidget(),\n // bar: new BarWidget()\n // });\n // chrome.foo.setDisplayMode('on');\n //\n\n\n this.set = (widgetName, widget) => {\n if (typeof widgetName === 'string' && widget) {\n _set(widgetName, widget);\n } else {\n Object.keys(widgetName).forEach(name => {\n _set(name, widgetName[name]);\n });\n }\n\n return this;\n };\n};\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(18));\n\nvar _temp;\n\n/* eslint-disable no-underscore-dangle */\n\n/*\n * An You can either pass one parameter or two parameters to this method. If you pass one parameter, For example, the following code passes one parameter to the method: If you pass two parameters, You can set the initial settings when you call the The OT object dispatches an insertDefaultUI
option to\n * false
. If you have not set insertDefaultUI
option\n * to false
, do not move the video
element (or the object
\n * element containing the video in Internet Explorer) in the HTML DOM. Doing so causes the\n * Publisher or Subscriber object to be destroyed.\n *\n * @property {Number} element A reference to the Publisher or Subscriber's video
\n * element (or in Internet Explorer the object
element containing the video).\n * Add it to the HTML DOM to display the video.\n *\n * @class VideoElementCreatedEvent\n * @augments Event\n */\n\n\n Events.VideoElementCreatedEvent = function VideoElementCreatedEvent(element) {\n return new Event(eventNames.VIDEO_ELEMENT_CREATED, false, {\n element\n });\n };\n\n return Events;\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(12));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(13));\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable global-require */\nmodule.exports = function (deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const getNativeEnumerateDevices = deps.getNativeEnumerateDevices || __webpack_require__(286)();\n\n const getNativeMediaDevices = deps.getNativeMediaDevices || __webpack_require__(625)();\n\n const _ref = deps.currentAudioOutputDevice || __webpack_require__(105),\n getCurrentAudioOutputDeviceId = _ref.getCurrentAudioOutputDeviceId;\n\n const env = deps.env || __webpack_require__(2);\n\n const windowMock = deps.global || (typeof window !== undefined ? window : global);\n const deviceHelpers = {}; // /\n // Device Helpers\n //\n // Support functions to enumerating and querying device info\n //\n\n const deviceKindsMap = {\n audio: 'audioInput',\n video: 'videoInput',\n audioinput: 'audioInput',\n videoinput: 'videoInput',\n audiooutput: 'audioOutput',\n audioInput: 'audioInput',\n videoInput: 'videoInput',\n audioOutput: 'audioOutput'\n };\n\n const enumerateDevices = () => {\n // Our mocking currently requires that this be re-evaluated each time.\n const fn = getNativeEnumerateDevices();\n return fn();\n };\n\n deviceHelpers.getNativeMediaDevices = () => getNativeMediaDevices(); // Indicates whether this browser supports the enumerateDevices (getSources) API.\n //\n\n\n deviceHelpers.hasEnumerateDevicesCapability = () => typeof getNativeEnumerateDevices() === 'function';\n\n deviceHelpers.hasDeviceChangeCapability = () => {\n const mediaDevices = getNativeMediaDevices();\n return !!(mediaDevices && 'ondevicechange' in mediaDevices);\n };\n\n deviceHelpers.hasSetSinkIdCapability = () => 'setSinkId' in (windowMock == null ? void 0 : windowMock.HTMLMediaElement.prototype);\n\n deviceHelpers.hasAudioOutputApiSupport = () => deviceHelpers.hasSetSinkIdCapability() && deviceHelpers.hasDeviceChangeCapability(); // OPENTOK-40733, see https://bugs.webkit.org/show_bug.cgi?id=209739#c2\n // multiple calls to enumerateDevices fail to return video devices\n // note that this causes any devices without a camera (mac minis) to make a video gum call\n // we believe this is worth it to prevent safari video breaking\n\n\n deviceHelpers.hasEnumerateDevicesBug = () => env.isSafari && env.version === 13.1;\n\n deviceHelpers.getMediaDevices = () => {\n if (!deviceHelpers.hasEnumerateDevicesCapability()) {\n return Promise.reject(new Error('This browser does not support enumerateDevices APIs'));\n }\n\n return enumerateDevices().then(devices => // Normalise the device kinds\n devices.map(device => ({\n deviceId: device.deviceId || device.id,\n label: device.label,\n kind: deviceKindsMap[device.kind]\n })));\n };\n\n deviceHelpers.getInputMediaDevices = () => deviceHelpers.getMediaDevices().then(devices => devices.filter(device => /^(audio|video)Input$/.test(device.kind)));\n\n deviceHelpers.getAudioOutputMediaDevices = () => deviceHelpers.getMediaDevices().then(devices => devices.filter(device => device.kind === 'audioOutput').map((_ref2) => {\n let deviceId = _ref2.deviceId,\n label = _ref2.label;\n return {\n deviceId,\n label\n };\n }));\n\n deviceHelpers.shouldAskForDevices = () => {\n if (!deviceHelpers.hasEnumerateDevicesCapability()) {\n // Assume video and audio exists if enumerateDevices is not available\n return Promise.resolve({\n video: true,\n audio: true\n });\n }\n\n return deviceHelpers.getInputMediaDevices().then(devices => {\n if (devices.length === 0) {\n // If no devices reported, might as well try anyway, maybe it was just an issue with\n // device enumeration.\n return {\n video: true,\n audio: true\n };\n }\n\n const audioDevices = devices.filter(device => device.kind === 'audioInput');\n const videoDevices = devices.filter(device => device.kind === 'videoInput');\n\n if (deviceHelpers.hasEnumerateDevicesBug() && videoDevices.length === 0) {\n return {\n audio: true,\n video: true\n };\n }\n\n return {\n video: videoDevices.length > 0,\n audio: audioDevices.length > 0,\n videoDevices,\n audioDevices\n };\n }).catch(() => ( // There was an error. It may be temporally. Just assume\n // all devices exist for now.\n {\n video: true,\n audio: true\n }));\n };\n\n deviceHelpers.getDefaultAudioOutputDeviceId = devices => {\n if (!Array.isArray(devices) || devices.length === 0) {\n return '';\n }\n\n const _ref3 = devices.find(device => device.deviceId === 'default') || devices[0],\n deviceId = _ref3.deviceId;\n\n return deviceId;\n };\n\n deviceHelpers.hasDevice = (devicesList, deviceId) => {\n let devices = devicesList;\n\n if (!Array.isArray(devices)) {\n devices = [];\n }\n\n return devices.some(device => device.deviceId === deviceId);\n };\n\n deviceHelpers.getActiveAudioOutputDevice = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var devices, currentDevice, defaultDeviceId;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return deviceHelpers.getAudioOutputMediaDevices();\n\n case 3:\n devices = _context.sent;\n _context.next = 9;\n break;\n\n case 6:\n _context.prev = 6;\n _context.t0 = _context[\"catch\"](0);\n throw _context.t0;\n\n case 9:\n if (!(devices.length === 0)) {\n _context.next = 11;\n break;\n }\n\n return _context.abrupt(\"return\", {\n deviceId: null,\n label: null\n });\n\n case 11:\n // Let's find the current output device object in the list.\n currentDevice = devices.find(device => device.deviceId === getCurrentAudioOutputDeviceId());\n\n if (!currentDevice) {\n // The current audio output device is not in the list, let's return the default device instead\n defaultDeviceId = deviceHelpers.getDefaultAudioOutputDeviceId(devices);\n currentDevice = devices.find(device => device.deviceId === defaultDeviceId);\n }\n\n return _context.abrupt(\"return\", currentDevice);\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 6]]);\n }));\n return deviceHelpers;\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(15),\n isLength = __webpack_require__(112);\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nfunction _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// Event names lookup\nmodule.exports = {\n // Activity Status for cams/mics\n ACTIVE: 'active',\n INACTIVE: 'inactive',\n UNKNOWN: 'unknown',\n // Archive types\n PER_SESSION: 'perSession',\n PER_STREAM: 'perStream',\n // Events\n EXCEPTION: 'exception',\n ISSUE_REPORTED: 'issueReported',\n // Session Events\n SESSION_CONNECTED: 'sessionConnected',\n SESSION_RECONNECTING: 'sessionReconnecting',\n SESSION_RECONNECTED: 'sessionReconnected',\n SESSION_DISCONNECTED: 'sessionDisconnected',\n STREAM_CREATED: 'streamCreated',\n STREAM_DESTROYED: 'streamDestroyed',\n CONNECTION_CREATED: 'connectionCreated',\n CONNECTION_DESTROYED: 'connectionDestroyed',\n SIGNAL: 'signal',\n STREAM_PROPERTY_CHANGED: 'streamPropertyChanged',\n MICROPHONE_LEVEL_CHANGED: 'microphoneLevelChanged',\n // Publisher Events\n RESIZE: 'resize',\n SETTINGS_BUTTON_CLICK: 'settingsButtonClick',\n DEVICE_INACTIVE: 'deviceInactive',\n INVALID_DEVICE_NAME: 'invalidDeviceName',\n ACCESS_ALLOWED: 'accessAllowed',\n ACCESS_DENIED: 'accessDenied',\n ACCESS_DIALOG_OPENED: 'accessDialogOpened',\n ACCESS_DIALOG_CLOSED: 'accessDialogClosed',\n ECHO_CANCELLATION_MODE_CHANGED: 'echoCancellationModeChanged',\n MEDIA_STOPPED: 'mediaStopped',\n PUBLISHER_DESTROYED: 'destroyed',\n MUTE_FORCED: 'muteForced',\n // Subscriber Events\n SUBSCRIBER_DESTROYED: 'destroyed',\n SUBSCRIBER_CONNECTED: 'connected',\n SUBSCRIBER_DISCONNECTED: 'disconnected',\n // DeviceManager Events\n DEVICES_DETECTED: 'devicesDetected',\n // DevicePanel Events\n DEVICES_SELECTED: 'devicesSelected',\n CLOSE_BUTTON_CLICK: 'closeButtonClick',\n MICLEVEL: 'microphoneActivityLevel',\n MICGAINCHANGED: 'microphoneGainChanged',\n // Environment Loader\n ENV_LOADED: 'envLoaded',\n ENV_UNLOADED: 'envUnloaded',\n // Audio activity Events\n AUDIO_LEVEL_UPDATED: 'audioLevelUpdated',\n VIDEO_ELEMENT_CREATED: 'videoElementCreated'\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(25));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(45));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(18));\n\n/* eslint-disable no-underscore-dangle */\nconst guidStorage = __webpack_require__(240);\n\nconst Analytics = __webpack_require__(243);\n\nconst SessionInfo = __webpack_require__(141);\n\nconst StaticConfig = __webpack_require__(44)();\n\nconst eventing = __webpack_require__(6);\n\nconst sanitizeQosData = __webpack_require__(540);\n\nconst LOG_VERSION = '2';\n\nlet AnalyticsHelper = /*#__PURE__*/function () {\n function AnalyticsHelper(_temp) {\n let _ref = _temp === void 0 ? {} : _temp,\n _ref$staticConfig = _ref.staticConfig,\n staticConfig = _ref$staticConfig === void 0 ? StaticConfig.onlyLocal() : _ref$staticConfig,\n _ref$sessionInfo = _ref.sessionInfo,\n sessionInfo = _ref$sessionInfo === void 0 ? new SessionInfo() : _ref$sessionInfo,\n ajax = _ref.ajax,\n queue = _ref.queue;\n\n (0, _defineProperty2.default)(this, \"getTurnServerName\", iceServers => {\n let turnNoTLSServerName;\n let turnTLSServerName; // In case we don't find the server name we will be returning nothing\n // which will be ignored and relay server will not be present in the logs\n\n if (!iceServers || typeof iceServers !== 'object') return turnNoTLSServerName;\n const servers = Array.isArray(iceServers) ? iceServers : [iceServers];\n servers.forEach(server => {\n const urls = server.urls || server.url;\n const arrUrl = Array.isArray(urls) ? urls : [urls];\n arrUrl.forEach(url => {\n // Index where server name value starts\n const prefixIndex = url.indexOf(':') + 1; // Index of the port number\n\n const suffixIndex = url.lastIndexOf(':'); // We assume that TLS turn, i.e. turns, is the one which contains\n // the domain name.\n\n if (url.includes('turns')) {\n turnTLSServerName = url.substring(prefixIndex, suffixIndex);\n } else {\n turnNoTLSServerName = url.substring(prefixIndex, suffixIndex);\n }\n });\n });\n return turnTLSServerName || turnNoTLSServerName;\n });\n this.ajax = ajax;\n this.queue = queue;\n this.sessionInfo = sessionInfo;\n this.staticConfig = staticConfig;\n }\n\n var _proto = AnalyticsHelper.prototype;\n\n _proto._getCommon = function _getCommon() {\n return {\n clientVersion: this.staticConfig.clientVersion,\n buildHash: this.staticConfig.buildHash,\n source: (typeof window !== undefined ? window : global).location && (typeof window !== undefined ? window : global).location.href,\n logVersion: LOG_VERSION,\n apiServer: this.staticConfig.apiUrl,\n clientSystemTime: new Date().getTime(),\n sessionId: this.sessionInfo.sessionId,\n mediaServerName: this.sessionInfo.mediaServerName,\n relayServer: this.getTurnServerName(this.sessionInfo.iceServers),\n p2p: this.sessionInfo.p2pEnabled,\n messagingServer: this.sessionInfo.messagingServer,\n messagingUrl: this.sessionInfo.messagingURL,\n version: this.staticConfig.version,\n partnerId: this.sessionInfo.partnerId\n };\n };\n\n _proto.logError = function logError(code, type, message, details, options) {\n if (options === void 0) {\n options = {};\n }\n\n guidStorage.get((error, guid) => {\n if (error) {\n // @todo\n return;\n }\n\n const args = [code, type, message, details, (0, _extends2.default)({\n guid\n }, this.combineWithCommon(options))];\n AnalyticsHelper.emit('logError', ...args);\n\n this._analytics.logError(...args);\n });\n };\n\n _proto.combineWithCommon = function combineWithCommon(options) {\n return (0, _extends2.default)({}, this._getCommon(), options);\n };\n\n _proto.logEvent = function logEvent(options, throttle, completionHandler) {\n if (options === void 0) {\n options = {};\n }\n\n guidStorage.get((error, guid) => {\n if (error) {\n // @todo\n return;\n }\n\n const logData = (0, _extends2.default)({\n guid\n }, this.combineWithCommon(options));\n AnalyticsHelper.emit('logEvent', logData);\n\n this._analytics.logEvent(logData, false, throttle, completionHandler);\n });\n };\n\n _proto.logQOS = function logQOS(options) {\n if (options === void 0) {\n options = {};\n }\n\n guidStorage.get((error, guid) => {\n if (error) {\n // @todo\n return;\n }\n\n const qosData = (0, _extends2.default)({\n guid,\n duration: 0\n }, this.combineWithCommon(options));\n sanitizeQosData(qosData);\n AnalyticsHelper.emit('logQOS', qosData);\n\n this._analytics.logQOS(qosData);\n });\n };\n\n (0, _createClass2.default)(AnalyticsHelper, [{\n key: \"staticConfig\",\n get: function get() {\n return this._staticConfig;\n },\n set: function set(staticConfig) {\n this._staticConfig = staticConfig;\n this._analytics = new Analytics({\n loggingUrl: this.staticConfig.loggingUrl,\n ajax: this.ajax,\n queue: this.queue\n });\n }\n }]);\n return AnalyticsHelper;\n}();\n\neventing(AnalyticsHelper);\nmodule.exports = AnalyticsHelper;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\n * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.\n *\n * Use of this source code is governed by a BSD-style license\n * that can be found in the LICENSE file in the root of the source\n * tree.\n */\n /* eslint-env node */\n\n\nvar logDisabled_ = true;\nvar deprecationWarnings_ = true;\n\n/**\n * Extract browser version out of the provided user agent string.\n *\n * @param {!string} uastring userAgent string.\n * @param {!string} expr Regular expression used as match criteria.\n * @param {!number} pos position in the version string to be returned.\n * @return {!number} browser version.\n */\nfunction extractVersion(uastring, expr, pos) {\n var match = uastring.match(expr);\n return match && match.length >= pos && parseInt(match[pos], 10);\n}\n\n// Wraps the peerconnection event eventNameToWrap in a function\n// which returns the modified event object (or false to prevent\n// the event).\nfunction wrapPeerConnectionEvent(window, eventNameToWrap, wrapper) {\n if (!window.RTCPeerConnection) {\n return;\n }\n var proto = window.RTCPeerConnection.prototype;\n var nativeAddEventListener = proto.addEventListener;\n proto.addEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap) {\n return nativeAddEventListener.apply(this, arguments);\n }\n var wrappedCallback = function(e) {\n var modifiedEvent = wrapper(e);\n if (modifiedEvent) {\n cb(modifiedEvent);\n }\n };\n this._eventMap = this._eventMap || {};\n this._eventMap[cb] = wrappedCallback;\n return nativeAddEventListener.apply(this, [nativeEventName,\n wrappedCallback]);\n };\n\n var nativeRemoveEventListener = proto.removeEventListener;\n proto.removeEventListener = function(nativeEventName, cb) {\n if (nativeEventName !== eventNameToWrap || !this._eventMap\n || !this._eventMap[cb]) {\n return nativeRemoveEventListener.apply(this, arguments);\n }\n var unwrappedCb = this._eventMap[cb];\n delete this._eventMap[cb];\n return nativeRemoveEventListener.apply(this, [nativeEventName,\n unwrappedCb]);\n };\n\n Object.defineProperty(proto, 'on' + eventNameToWrap, {\n get: function() {\n return this['_on' + eventNameToWrap];\n },\n set: function(cb) {\n if (this['_on' + eventNameToWrap]) {\n this.removeEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap]);\n delete this['_on' + eventNameToWrap];\n }\n if (cb) {\n this.addEventListener(eventNameToWrap,\n this['_on' + eventNameToWrap] = cb);\n }\n },\n enumerable: true,\n configurable: true\n });\n}\n\n// Utility methods.\nmodule.exports = {\n extractVersion: extractVersion,\n wrapPeerConnectionEvent: wrapPeerConnectionEvent,\n disableLog: function(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n logDisabled_ = bool;\n return (bool) ? 'adapter.js logging disabled' :\n 'adapter.js logging enabled';\n },\n\n /**\n * Disable or enable deprecation warnings\n * @param {!boolean} bool set to true to disable warnings.\n */\n disableWarnings: function(bool) {\n if (typeof bool !== 'boolean') {\n return new Error('Argument type: ' + typeof bool +\n '. Please use a boolean.');\n }\n deprecationWarnings_ = !bool;\n return 'adapter.js deprecation warnings ' + (bool ? 'disabled' : 'enabled');\n },\n\n log: function() {\n if (typeof window === 'object') {\n if (logDisabled_) {\n return;\n }\n if (typeof console !== 'undefined' && typeof console.log === 'function') {\n console.log.apply(console, arguments);\n }\n }\n },\n\n /**\n * Shows a deprecation warning suggesting the modern and spec-compatible API.\n */\n deprecated: function(oldMethod, newMethod) {\n if (!deprecationWarnings_) {\n return;\n }\n console.warn(oldMethod + ' is deprecated, please use ' + newMethod +\n ' instead.');\n },\n\n /**\n * Browser detector.\n *\n * @return {object} result containing browser and version\n * properties.\n */\n detectBrowser: function(window) {\n var navigator = window && window.navigator;\n\n // Returned result object.\n var result = {};\n result.browser = null;\n result.version = null;\n\n // Fail early if it's not a browser\n if (typeof window === 'undefined' || !window.navigator) {\n result.browser = 'Not a browser.';\n return result;\n }\n\n if (navigator.mozGetUserMedia) { // Firefox.\n result.browser = 'firefox';\n result.version = extractVersion(navigator.userAgent,\n /Firefox\\/(\\d+)\\./, 1);\n } else if (navigator.webkitGetUserMedia) {\n // Chrome, Chromium, Webview, Opera.\n // Version matches Chrome/WebRTC version.\n result.browser = 'chrome';\n result.version = extractVersion(navigator.userAgent,\n /Chrom(e|ium)\\/(\\d+)\\./, 2);\n } else if (navigator.mediaDevices &&\n navigator.userAgent.match(/Edge\\/(\\d+).(\\d+)$/)) { // Edge.\n result.browser = 'edge';\n result.version = extractVersion(navigator.userAgent,\n /Edge\\/(\\d+).(\\d+)$/, 2);\n } else if (window.RTCPeerConnection &&\n navigator.userAgent.match(/AppleWebKit\\/(\\d+)\\./)) { // Safari.\n result.browser = 'safari';\n result.version = extractVersion(navigator.userAgent,\n /AppleWebKit\\/(\\d+)\\./, 1);\n } else { // Default fallthrough: not supported.\n result.browser = 'Not a supported browser.';\n return result;\n }\n\n return result;\n }\n};\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(38),\n getRawTag = __webpack_require__(352),\n objectToString = __webpack_require__(353);\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeKeys = __webpack_require__(177),\n baseKeys = __webpack_require__(114),\n isArrayLike = __webpack_require__(24);\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isValue = __webpack_require__(42);\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isValue = __webpack_require__(54)\n , isPlainFunction = __webpack_require__(198)\n , assign = __webpack_require__(125)\n , normalizeOpts = __webpack_require__(199)\n , contains = __webpack_require__(200);\n\nvar d = (module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif (arguments.length < 2 || typeof dscr !== \"string\") {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t\tw = contains.call(dscr, \"w\");\n\t} else {\n\t\tc = w = true;\n\t\te = false;\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n});\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== \"string\") {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (!isValue(get)) {\n\t\tget = undefined;\n\t} else if (!isPlainFunction(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (!isValue(set)) {\n\t\tset = undefined;\n\t} else if (!isPlainFunction(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t} else {\n\t\tc = true;\n\t\te = false;\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseMatches = __webpack_require__(496),\n baseMatchesProperty = __webpack_require__(502),\n identity = __webpack_require__(88),\n isArray = __webpack_require__(10),\n property = __webpack_require__(507);\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle, no-param-reassign */\nconst OTHelpers = __webpack_require__(5); // A mixin to encapsulate the basic widget behaviour. This needs a better name,\n// it's not actually a widget. It's actually \"Behaviour that can be applied to\n// an object to make it support the basic Chrome widget workflow\"...but that would\n// probably been too long a name.\n\n\nmodule.exports = function Widget(widget, options) {\n let _mode;\n\n const _options = options || {}; //\n // @param [String] mode\n // 'on', 'off', or 'auto'\n //\n\n\n widget.setDisplayMode = function (mode) {\n const newMode = mode || 'auto';\n\n if (_mode === newMode) {\n return;\n }\n\n OTHelpers.removeClass(this.domElement, `OT_mode-${_mode}`);\n OTHelpers.addClass(this.domElement, `OT_mode-${newMode}`);\n _mode = newMode;\n };\n\n widget.getDisplayMode = function () {\n return _mode;\n };\n\n widget.showAfterLoading = function () {\n OTHelpers.removeClass(this.domElement, 'OT_hide-forced');\n };\n\n widget.hideWhileLoading = function () {\n OTHelpers.addClass(this.domElement, 'OT_hide-forced');\n };\n\n widget.destroy = function () {\n if (_options.onDestroy) {\n _options.onDestroy(this.domElement);\n }\n\n if (this.domElement) {\n OTHelpers.removeElement(this.domElement);\n }\n\n return widget;\n };\n\n widget.appendTo = function (parent) {\n // create the element under parent\n this.domElement = OTHelpers.createElement(_options.nodeName || 'div', _options.htmlAttributes, _options.htmlContent);\n\n if (_options.onCreate) {\n _options.onCreate(this.domElement);\n }\n\n widget.setDisplayMode(_options.mode);\n\n if (_options.mode === 'auto') {\n // if the mode is auto we hold the \"on mode\" for 2 seconds\n // this will let the proper widgets nicely fade away and help discoverability\n OTHelpers.addClass(widget.domElement, 'OT_mode-on-hold');\n setTimeout(() => {\n OTHelpers.removeClass(widget.domElement, 'OT_mode-on-hold');\n }, 2000);\n } // add the widget to the parent\n\n\n parent.appendChild(this.domElement);\n return widget;\n };\n};\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseClone = __webpack_require__(77);\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsNative = __webpack_require__(351),\n getValue = __webpack_require__(356);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(14);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assignValue = __webpack_require__(83),\n baseAssignValue = __webpack_require__(63);\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DataView = __webpack_require__(380),\n Map = __webpack_require__(109),\n Promise = __webpack_require__(381),\n Set = __webpack_require__(185),\n WeakMap = __webpack_require__(186),\n baseGetTag = __webpack_require__(29),\n toSource = __webpack_require__(174);\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _undefined = __webpack_require__(399)(); // Support ES3 engines\n\nmodule.exports = function (val) { return val !== _undefined && val !== null; };\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(413)()\n\t? __webpack_require__(91).Symbol\n\t: __webpack_require__(416);\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(25));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(45));\n\n/* global __PROPERTIES__ */\nconst defaultAxios = __webpack_require__(206);\n\nconst cloneDeep = __webpack_require__(55);\n\nconst pick = __webpack_require__(470);\n\nconst mapKeys = __webpack_require__(517);\n\nconst logging = __webpack_require__(1)('StaticConfig');\n\nconst _require = __webpack_require__(138),\n prependProxyToUrlIfNeeded = _require.prependProxyToUrlIfNeeded;\n/**\n * @typedef {Object} builtInConfig properties that are baked in and are injected through webpack\n * @property {String} version Build version (comes from package.json)\n * @property {String} buildHash Commit hash this build was built from\n * @property {Object} minimumVersion\n * @property {String} minimumVersion.firefox Minimum version of Firefox needed to support OpenTok\n * @property {String} minimumVersion.chrome Minimum version of Chrome needed to support OpenTok\n * @property {Boolean} debug If true sets logging level to DEBUG else sets it to WARN\n * @property {String} websiteURL Used to construct urls to the TokBox website\n * @property {String} loggingURL Where to send analytical events\n * @property {String} apiURL The API to talk to (Anvil)\n*/\n\n/** @type builtInConfig */\n\n\nconst builtInConfig = cloneDeep({\"version\":\"v2.22.1\",\"buildHash\":\"aec2e16be\",\"minimumVersion\":{\"firefox\":52,\"chrome\":49},\"debug\":\"false\",\"websiteURL\":\"http://www.tokbox.com\",\"configURL\":\"https://config.opentok.com\",\"ipWhitelistConfigURL\":\"\",\"cdnURL\":\"https://static.opentok.com\",\"loggingURL\":\"https://hlg.tokbox.com/prod\",\"apiURL\":\"https://anvil.opentok.com\"});\nconst whitelistAllowedRuntimeProperties = pick(['apiURL', 'assetURL', 'cdnURL', 'sessionInfoOverrides', 'loggingURL']);\nconst liveConfigMap = {\n apiUrl: 'apiURL',\n loggingUrl: 'loggingURL'\n};\nconst normalizeLiveConfig = mapKeys(key => liveConfigMap[key]);\n\nfunction staticConfigFactory(_temp) {\n let _ref = _temp === void 0 ? {} : _temp,\n _ref$axios = _ref.axios,\n axios = _ref$axios === void 0 ? defaultAxios : _ref$axios;\n\n /**\n * @class StaticConfig\n */\n let StaticConfig = /*#__PURE__*/function () {\n StaticConfig.onlyLocal = function onlyLocal() {\n const runtimeProperties = cloneDeep((typeof window !== undefined ? window : global).OTProperties);\n return new StaticConfig((0, _extends2.default)({}, builtInConfig, whitelistAllowedRuntimeProperties(runtimeProperties)));\n }\n /**\n * Construct a StaticConfig instance with baked in, runtime, and live configuration\n *\n * @static\n * @param {any} { sessionId, token, useIpWhitelistConfigUrl }\n * @memberof StaticConfig\n * @return {Promiseglobal.setTimeout
.\n *\n * @param {function()} callback\n * @param {number} frequency how many times per second we want to execute the callback\n * @param {number} maxIterations the maximum amount of iterations for this runner\n * @constructor\n */\nfunction IntervalRunner(callback, desiredFrequency, maxIterations) {\n if (maxIterations === void 0) {\n maxIterations = Infinity;\n }\n\n let timeoutId = null;\n let running = false;\n let iteration = 1;\n const timeBetween = 1000 / desiredFrequency;\n\n const loop = () => {\n if (!running || iteration > maxIterations) {\n return;\n }\n\n iteration += 1;\n callback();\n timeoutId = setTimeout(loop, timeBetween);\n };\n\n this.start = () => {\n if (running) {\n return;\n }\n\n running = true;\n setTimeout(loop, timeBetween);\n };\n\n this.stop = () => {\n (typeof window !== undefined ? window : global).clearTimeout(timeoutId);\n running = false;\n };\n}\n\nmodule.exports = IntervalRunner;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst pick = __webpack_require__(47);\n\nconst mapValues = __webpack_require__(640);\n\nconst isObject = __webpack_require__(9);\n\nconst calculateFrameRate = __webpack_require__(157);\n\nconst frameRateTrackers = {};\n\nfunction getFrameRate(stat) {\n return Number(stat.framerateMean || stat.googFrameRateSent || stat.googFrameRateReceived || stat.googFrameRateInput || stat.googFrameRateOutput || 0);\n}\n\nfunction getFrames(stat) {\n return Number(stat.framesEncoded || stat.framesDecoded);\n}\n\nfunction calcFrameRate(stat, startTime) {\n if (getFrameRate(stat)) {\n return getFrameRate(stat);\n }\n\n if (!getFrames(stat)) {\n return undefined;\n }\n\n let frameRate = 0;\n const prevStatFrames = frameRateTrackers[stat.id] ? frameRateTrackers[stat.id].frames : 0;\n const prevTimestamp = frameRateTrackers[stat.id] ? frameRateTrackers[stat.id].timestamp : startTime;\n frameRate = calculateFrameRate({\n currentStatFrames: getFrames(stat),\n currentTimestamp: stat.timestamp,\n prevStatFrames,\n prevTimestamp\n });\n frameRateTrackers[stat.id] = {\n frames: getFrames(stat),\n timestamp: stat.timestamp\n };\n return frameRate;\n}\n\nfunction getLinkedTrack(stat, allStats) {\n if (!allStats) {\n return {};\n }\n\n const linkedTrack = allStats.filter(x => x.id === stat.mediaTrackId);\n return linkedTrack.length ? linkedTrack[0] : {};\n}\n\nfunction totalPacketsLostReducer(totalPacketsLost, stat) {\n if ('packetsLost' in stat) {\n return totalPacketsLost + stat.packetsLost;\n }\n\n return totalPacketsLost;\n}\n\nconst getStatsHelpers = {\n isVideoStat(stat, allStats) {\n const linkedTrack = getLinkedTrack(stat, allStats); // When kind is 'video', we need to check the type since there are other\n // stats with kind 'video' without the information we need.\n\n const isVideoKind = stat.kind === 'video' && ['outbound-rtp', 'inbound-rtp'].includes(stat.type);\n return isVideoKind || stat.mediaType === 'video' || 'googFrameWidthReceived' in stat || // Old Chrome\n 'googFrameWidthInput' in stat || // Old Chrome\n stat.type === 'inbound-rtp' && stat.id.indexOf('Video') !== -1 || // Safari\n stat.type === 'inboundrtp' && linkedTrack.frameWidth !== 0; // Edge\n },\n\n isAudioStat(stat, allStats) {\n const linkedTrack = getLinkedTrack(stat, allStats); // When kind is 'audio', we need to check the type since there are other\n // stats with kind 'audio' without the information we need.\n\n const isAudioKind = stat.kind === 'audio' && ['outbound-rtp', 'inbound-rtp'].includes(stat.type);\n return isAudioKind || stat.mediaType === 'audio' || 'audioInputLevel' in stat || // Old Chrome\n 'audioOutputLevel' in stat || // Old Chrome\n stat.type === 'inbound-rtp' && stat.id.indexOf('Audio') !== -1 || // Safari\n stat.type === 'inboundrtp' && linkedTrack.frameWidth === 0; // Edge;\n },\n\n isInboundStat(stat) {\n return 'bytesReceived' in stat || 'packetsReceived' in stat;\n },\n\n isOutboundStat(stat) {\n return 'bytesSent' in stat || 'packetsSent' in stat;\n },\n\n isVideoTrackStat(stat) {\n return stat.type === 'track' && (stat.frameHeight > 0 || stat.frameWidth > 0 || stat.framesCorrupted > 0 || stat.framesDecoded > 0 || stat.framesPerSecond > 0 || stat.framesSent > 0 || stat.framesReceived > 0);\n },\n\n isVideoRemoteInboundRtpStat(stat) {\n return stat.type === 'remote-inbound-rtp' && stat.kind === 'video';\n },\n\n isAudioRemoteInboundRtpStat(stat) {\n return stat.type === 'remote-inbound-rtp' && stat.kind === 'audio';\n },\n\n isVideoInboundRtpStat(stat) {\n return stat.type === 'inbound-rtp' && stat.kind === 'video';\n },\n\n parseStatCategory(stat) {\n const statCategory = {\n packetsLost: 0,\n packetsReceived: 0,\n bytesReceived: 0 // frameRate is only set for video stat\n\n };\n\n if ('packetsReceived' in stat) {\n statCategory.packetsReceived = parseInt(stat.packetsReceived, 10);\n }\n\n if ('packetsLost' in stat) {\n statCategory.packetsLost = parseInt(stat.packetsLost, 10);\n }\n\n if ('bytesReceived' in stat) {\n statCategory.bytesReceived = parseInt(stat.bytesReceived, 10);\n }\n\n if (this.isVideoStat(stat)) {\n if ('framerateMean' in stat) {\n statCategory.frameRate = Number(stat.framerateMean);\n } else if ('googFrameRateOutput' in stat) {\n statCategory.frameRate = Number(stat.googFrameRateOutput);\n } else if ('googFrameRateInput' in stat) {\n statCategory.frameRate = Number(stat.googFrameRateInput);\n }\n }\n\n return statCategory;\n },\n\n getVideoPacketsLost(stats) {\n return stats.filter(stat => this.isVideoRemoteInboundRtpStat(stat, stats)).reduce(totalPacketsLostReducer, 0);\n },\n\n getAudioPacketsLost(stats) {\n return stats.filter(stat => this.isAudioRemoteInboundRtpStat(stat, stats)).reduce(totalPacketsLostReducer, 0);\n },\n\n normalizeTimestamp(timestamp, now) {\n if (now === void 0) {\n now = Date.now();\n }\n\n if (isObject(timestamp) && 'getTime' in timestamp) {\n // Chrome as of 39 delivers a \"kind of Date\" object for timestamps\n // we duck check it and get the timestamp\n return timestamp.getTime();\n }\n\n if (Math.abs(timestamp / (1000 * now) - 1) < 0.05) {\n // If the timestamp is within 5% of 1000x now, we assume its unit is microseconds and\n // divide by 1000 to correct for this.\n return timestamp / 1000;\n }\n\n return timestamp;\n },\n\n normalizeStats(stats, inbound, startTime) {\n if (inbound === void 0) {\n inbound = true;\n }\n\n const videos = stats.filter(stat => getStatsHelpers.isVideoStat(stat, stats)).filter(stat => getStatsHelpers.isInboundStat(stat) === inbound);\n const audio = stats.filter(stat => this.isAudioStat(stat, stats)).filter(stat => this.isInboundStat(stat) === inbound)[0]; // There may be more than one video stream (e.g., when simulcast is enabled)\n // We just need to grab one of them for its id and timestamp\n\n const video = videos[0];\n\n if (!audio && !video) {\n throw new Error('could not find stats for either audio or video');\n }\n\n const timestamp = getStatsHelpers.normalizeTimestamp(video ? video.timestamp : audio.timestamp);\n const otStats = {\n timestamp\n };\n\n if (video && !inbound && video.packetsLost === undefined) {\n video.packetsLost = this.getVideoPacketsLost(stats);\n }\n\n if (audio && !inbound && audio.packetsLost === undefined) {\n audio.packetsLost = this.getAudioPacketsLost(stats);\n }\n\n const outboundStatNames = ['packetsSent', 'packetsLost', 'bytesSent'];\n\n const getOutboundStats = stat => pick(stat, outboundStatNames);\n\n const getInboundStats = stat => pick(stat, ['packetsReceived', 'packetsLost', 'bytesReceived']);\n\n const getCommonStats = inbound ? getInboundStats : getOutboundStats;\n\n const accumulateVideoStats = videoArray => {\n // We want to accumulate all these stats, if they exist.\n const frameStats = ['framerateMean', 'googFrameRateSent', 'googFrameRateReceived', 'googFrameRateInput', 'googFrameRateOutput', 'framesEncoded', 'framesDecoded'];\n const outboundStatNamesWithFrames = outboundStatNames.concat(frameStats);\n const accumulatedVideo = {\n timestamp,\n id: video.id\n };\n outboundStatNamesWithFrames.forEach(statName => {\n accumulatedVideo[statName] = videoArray.map(x => Number(x[statName] || 0)).reduce((accumulator, stat) => accumulator + stat, 0);\n });\n return accumulatedVideo;\n };\n\n if (videos && videos.length > 0) {\n const accumulatedVideo = accumulateVideoStats(videos);\n otStats.video = Object.assign({\n frameRate: calcFrameRate(accumulatedVideo, startTime)\n }, mapValues(getCommonStats(accumulatedVideo), Number));\n }\n\n if (audio) {\n otStats.audio = mapValues(getCommonStats(audio), Number);\n }\n\n return otStats;\n }\n\n};\nmodule.exports = getStatsHelpers;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.codes = exports.messages = void 0;\n// https://tools.ietf.org/html/rfc6455#section-7.4.1\n// https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Close_codes\nconst messages = {\n 1001: 'The endpoint is going away, either because of a server failure or because the browser ' + 'is navigating away from the page that opened the connection.',\n 1002: 'The endpoint is terminating the connection due to a protocol error. ' + '(CLOSE_PROTOCOL_ERROR)',\n 1003: 'The connection is being terminated because the endpoint has indicated ' + 'that reconnections are not available. (CLOSE_UNSUPPORTED)',\n 1005: 'Indicates that no status code was provided even though one was expected. ' + '(CLOSE_NO_STATUS)',\n 1006: 'Used to indicate that a connection was closed abnormally (that is, with no ' + 'close frame being sent) when a status code is expected. (CLOSE_ABNORMAL)',\n 1007: 'Indicates that an endpoint is terminating the connection because it has received ' + 'data within a message that was not consistent with the type of the message (e.g., ' + 'non-UTF-8 [RFC3629] data within a text message)',\n 1008: 'Indicates that an endpoint is terminating the connection because it has received a ' + 'message that violates its policy. This is a generic status code that can be returned ' + 'when there is no other more suitable status code (e.g., 1003 or 1009) or if there is a ' + 'need to hide specific details about the policy',\n 1009: 'Indicates that an endpoint is terminating the connection because it has received a ' + 'message that is too big for it to process (CLOSE_TOO_LARGE)',\n 1011: 'Indicates that a server is terminating the connection because it encountered an ' + 'unexpected condition that prevented it from fulfilling the request',\n // ... codes in the 4000-4999 range are available for use by applications.\n 4001: 'Connectivity loss was detected as it was too long since the socket received the ' + 'last PONG message',\n 4010: 'Timed out while waiting for the Rumor socket to connect.',\n 4020: 'Error code unavailable.',\n 4030: 'Exception was thrown during Rumor connection, possibly because of a blocked port.'\n};\nexports.messages = messages;\nconst codes = {\n CLOSE_NORMAL: 1000,\n CLOSE_GOING_AWAY: 1001,\n CLOSE_PROTOCOL_ERROR: 1002,\n CLOSE_UNSUPPORTED: 1003,\n CLOSE_NO_STATUS: 1005,\n CLOSE_ABNORMAL: 1006,\n CLOSE_INCONSISTENT_DATA: 1007,\n CLOSE_POLICY_VIOLATION: 1008,\n CLOSE_TOO_LARGE: 1009,\n CLOSE_UNEXPECTED_CONDITION: 1011,\n CLOSE_CONNECTIVITY_LOSS: 4001,\n CLOSE_TIMEOUT: 4010,\n CLOSE_FALLBACK_CODE: 4020,\n CLOSE_CONNECT_EXCEPTION: 4030,\n ALREADY_CONNECTED_CONNECTING: null\n};\nexports.codes = codes;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Stack = __webpack_require__(78),\n arrayEach = __webpack_require__(111),\n assignValue = __webpack_require__(83),\n baseAssign = __webpack_require__(176),\n baseAssignIn = __webpack_require__(374),\n cloneBuffer = __webpack_require__(179),\n copyArray = __webpack_require__(53),\n copySymbols = __webpack_require__(377),\n copySymbolsIn = __webpack_require__(379),\n getAllKeys = __webpack_require__(182),\n getAllKeysIn = __webpack_require__(184),\n getTag = __webpack_require__(40),\n initCloneArray = __webpack_require__(382),\n initCloneByTag = __webpack_require__(383),\n initCloneObject = __webpack_require__(189),\n isArray = __webpack_require__(10),\n isBuffer = __webpack_require__(65),\n isMap = __webpack_require__(387),\n isObject = __webpack_require__(9),\n isSet = __webpack_require__(389),\n keys = __webpack_require__(30),\n keysIn = __webpack_require__(52);\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ListCache = __webpack_require__(79),\n stackClear = __webpack_require__(346),\n stackDelete = __webpack_require__(347),\n stackGet = __webpack_require__(348),\n stackHas = __webpack_require__(349),\n stackSet = __webpack_require__(350);\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar listCacheClear = __webpack_require__(341),\n listCacheDelete = __webpack_require__(342),\n listCacheGet = __webpack_require__(343),\n listCacheHas = __webpack_require__(344),\n listCacheSet = __webpack_require__(345);\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar eq = __webpack_require__(51);\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(37);\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isKeyable = __webpack_require__(365);\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(63),\n eq = __webpack_require__(51);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsTypedArray = __webpack_require__(372),\n baseUnary = __webpack_require__(67),\n nodeUtil = __webpack_require__(113);\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(9);\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar identity = __webpack_require__(88),\n overRest = __webpack_require__(192),\n setToString = __webpack_require__(121);\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar objToString = Object.prototype.toString\n , id = objToString.call((function () { return arguments; })());\n\nmodule.exports = function (value) { return objToString.call(value) === id; };\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar objToString = Object.prototype.toString, id = objToString.call(\"\");\n\nmodule.exports = function (value) {\n\treturn (\n\t\ttypeof value === \"string\" ||\n\t\t(value &&\n\t\t\ttypeof value === \"object\" &&\n\t\t\t(value instanceof String || objToString.call(value) === id)) ||\n\t\tfalse\n\t);\n};\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(414)() ? globalThis : __webpack_require__(415);\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MapCache = __webpack_require__(110),\n setCacheAdd = __webpack_require__(447),\n setCacheHas = __webpack_require__(448);\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIndexOf = __webpack_require__(449);\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseCreate = __webpack_require__(86),\n isObject = __webpack_require__(9);\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toFinite = __webpack_require__(489);\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar castPath = __webpack_require__(57),\n toKey = __webpack_require__(46);\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFor = __webpack_require__(238),\n keys = __webpack_require__(30);\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.adaptIceServers = function adaptIceServers(iceServers) {\n return iceServers.map(iceServer => ({\n url: iceServer.url,\n // deprecated\n urls: iceServer.urls || [iceServer.url],\n username: iceServer.username,\n credential: iceServer.credential\n }));\n};\n\nexports.parseIceServers = function parseIceServers(message) {\n let iceServers;\n\n try {\n iceServers = JSON.parse(message.data).content.iceServers;\n } catch (e) {\n return [];\n }\n\n return exports.adaptIceServers(iceServers);\n};\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable one-var, no-underscore-dangle, no-use-before-define, no-param-reassign */\n\n/* eslint-disable max-len, no-var, vars-on-top, global-require */\nconst promiseTimeout = __webpack_require__(153);\n\nconst now = __webpack_require__(48);\n\nconst assign = __webpack_require__(7);\n\nconst cloneDeep = __webpack_require__(55);\n\nconst intersection = __webpack_require__(127);\n\nconst merge = __webpack_require__(147);\n\nconst omit = __webpack_require__(271);\n\nconst uuid = __webpack_require__(19);\n\nconst eventing = __webpack_require__(6);\n\nconst OTHelpersError = __webpack_require__(250);\n\nconst createCleanupJobs = __webpack_require__(154);\n\nconst SDPHelpers = __webpack_require__(50);\n\nconst shouldUsePlanBSDP = __webpack_require__(73);\n\nmodule.exports = function PeerConnectionFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const hasValidPeerConnection = deps.hasValidPeerConnection || __webpack_require__(600);\n\n const applySdpTransform = deps.applySdpTransform || __webpack_require__(155);\n\n const createPeerConnection = deps.createPeerConnection || __webpack_require__(603);\n\n const env = deps.env || __webpack_require__(2);\n\n const sdpTransformDefaults = deps.sdpTransformDefaults || __webpack_require__(605);\n\n const getStatsAdapter = deps.getStatsAdapter || __webpack_require__(274);\n\n const getRtcStatsReportAdapter = deps.getRtcStatsReportAdapter || __webpack_require__(277);\n\n const getSynchronizationSources = deps.getSynchronizationSources || __webpack_require__(609);\n\n const IceCandidateProcessor = deps.IceCandidateProcessor || __webpack_require__(610);\n\n const createLog = deps.logging || __webpack_require__(1);\n\n const offerProcessor = deps.offerProcessor || __webpack_require__(612);\n\n const PeerConnectionChannels = deps.PeerConnectionChannels || __webpack_require__(614);\n\n const subscribeProcessor = deps.subscribeProcessor || __webpack_require__(616);\n\n const _ref = deps.changeMediaDirection || __webpack_require__(617),\n changeMediaDirectionToInactive = _ref.changeMediaDirectionToInactive,\n changeMediaDirectionToRecvOnly = _ref.changeMediaDirectionToRecvOnly;\n\n const Qos = deps.Qos || __webpack_require__(278).default;\n\n const windowMock = deps.global || (typeof window !== undefined ? window : global);\n\n const debounce = deps.debounce || __webpack_require__(621);\n\n const needsToSwapH264Profiles = deps.needsToSwapH264Profiles || __webpack_require__(623).once;\n\n const futureIsPeerConnectionValid = () => hasValidPeerConnection(windowMock.RTCPeerConnection);\n\n const NativeRTCIceCandidate = deps.NativeRTCIceCandidate || windowMock.RTCIceCandidate;\n const NativeRTCSessionDescription = deps.NativeRTCSessionDescription || windowMock.RTCSessionDescription;\n\n const Errors = deps.Errors || __webpack_require__(4);\n\n const OTErrorClass = deps.OTErrorClass || __webpack_require__(21);\n\n const ExceptionCodes = deps.ExceptionCodes || __webpack_require__(8); // Unified-plan does not transition to failed. Plan-b used to transition after 10 secs (empirically measured)\n\n\n const DISCONNECT_TO_FAILED_TIMEOUT = 10000; // Helper function to forward Ice Candidates via +sendMessage+\n\n const iceCandidateForwarder = (_ref2) => {\n let sendMessage = _ref2.sendMessage,\n logging = _ref2.logging;\n const sdpMids = {};\n return event => {\n if (event.candidate) {\n // It would be better to read the mids from the SDP\n sdpMids[event.candidate.sdpMid] = event.candidate.sdpMLineIndex;\n sendMessage('candidate', {\n candidate: event.candidate.candidate,\n sdpMid: event.candidate.sdpMid || '',\n sdpMLineIndex: event.candidate.sdpMLineIndex || 0\n });\n } else {\n logging.debug('IceCandidateForwarder: No more ICE candidates.');\n }\n };\n };\n\n const noop = () => {};\n /*\n * Negotiates a WebRTC PeerConnection.\n *\n * Responsible for:\n * * offer-answer exchange\n * * iceCandidates\n * * notification of remote streams being added/removed\n *\n */\n\n\n return function PeerConnection(options) {\n if (options === void 0) {\n options = {};\n }\n\n let hasRelayCandidates = false;\n const _options = options,\n _options$iceConfig = _options.iceConfig,\n iceConfig = _options$iceConfig === void 0 ? {\n servers: []\n } : _options$iceConfig,\n isPublisher = _options.isPublisher,\n _options$logAnalytics = _options.logAnalyticsEvent,\n logAnalyticsEvent = _options$logAnalytics === void 0 ? noop : _options$logAnalytics,\n offerOverrides = _options.offerOverrides,\n answerOverrides = _options.answerOverrides,\n sdpTransformOptions = _options.sdpTransformOptions,\n originalSendMessage = _options.sendMessage,\n p2p = _options.p2p,\n codecFlags = _options.codecFlags,\n sourceStreamId = _options.sourceStreamId;\n let offerAnswerPending = false; // Whether we have an offer out and are waiting for an answer\n\n let regenerateOffer = false;\n let processingOffer = false; // Whether we are currently processing an offer\n\n let pendingOfferMessage; // An offer we received that is pending waiting on a previous offer\n\n const replaceBaselineProfile = needsToSwapH264Profiles();\n let offerMessagesReceived = 0; // number of offer or generateoffer messages received\n\n let renegotiationInProgress = false;\n const cleanupJobs = createCleanupJobs();\n\n function sendMessage(type, payload) {\n if (!hasRelayCandidates) {\n const shouldCheckForRelayCandidates = ['candidate', 'offer', 'answer', 'pranswer'].indexOf(type) > -1;\n\n if (shouldCheckForRelayCandidates) {\n const message = type === 'candidate' ? payload.candidate : payload.sdp;\n hasRelayCandidates = message.indexOf('typ relay') !== -1;\n }\n }\n\n originalSendMessage(type, payload);\n }\n\n const startConnectingTime = now();\n logAnalyticsEvent('createPeerConnection', 'Attempt');\n const api = {};\n api.id = uuid();\n const logging = createLog(`PeerConnection:${api.id}`);\n logging.debug('construct', {\n id: api.id,\n options\n });\n const sdpTransforms = merge({}, sdpTransformDefaults, sdpTransformOptions);\n\n const shouldFilterCandidate = candidate => iceConfig.transportPolicy === 'relay' && candidate != null && candidate.candidate.indexOf('typ relay') === -1;\n\n const config = omit(options, ['isPublisher', 'logAnalyticsEvent', 'offerOverrides', 'answerOverrides', 'sendMessage', 'sdpTransformOptions']);\n\n let _peerConnection, _channels, _offer, _answer, _transitionToFailedTimeOut;\n\n let _peerConnectionCompletionHandlers = [];\n\n const _simulcastEnabled = (() => {\n let value = config.overrideSimulcastEnabled || false;\n return {\n get() {\n return value;\n },\n\n set(newValueParam) {\n const newValue = Boolean(newValueParam) && config.capableSimulcastStreams > 1;\n\n if (newValue !== value && config.overrideSimulcastEnabled === undefined) {\n value = newValue;\n api.generateOffer();\n }\n }\n\n };\n })();\n\n const _iceRestartNeeded = (() => {\n let value = false;\n return {\n get() {\n return value;\n },\n\n set(newValueParam) {\n const newValue = Boolean(newValueParam);\n\n if (newValue !== value) {\n value = newValue;\n\n if (value && !api.iceConnectionStateIsConnected()) {\n api.generateOffer();\n } else {\n logging.debug('iceRestart is going to wait until we disconnect and then restart ice');\n }\n }\n }\n\n };\n })(); // OPENTOK-27106: This _readyToSendOffer mechanism is a workaround for a P2P IE->FF issue where\n // ice candidates sometimes take an excessive amount of time (~10 seconds) to be generated by the\n // IE plugin. FF will time out if there is a delay like this between receiving the offer and\n // receiving ice candidates, so the workaround holds back sending the offer until an ice candidate\n // appears.\n\n\n const _readyToSendOffer = {\n clean() {\n delete this.promise;\n delete this.resolve;\n delete this.reject;\n }\n\n };\n _readyToSendOffer.promise = new Promise((resolve, reject) => {\n _readyToSendOffer.resolve = resolve;\n _readyToSendOffer.reject = reject;\n });\n\n let _iceProcessor = new IceCandidateProcessor();\n\n let _state = 'new';\n Object.defineProperty(api, 'signalingState', {\n get() {\n return _peerConnection.signalingState;\n },\n\n set(val) {\n // obviously they should not be doing this, but we'll mimic what the browser does.\n _peerConnection.signalingState = val;\n return val;\n }\n\n });\n eventing(api);\n api.once('iceConnected', () => {\n const proxyInfo = '';\n const payload = {\n pcc: parseInt(now() - startConnectingTime, 10),\n hasRelayCandidates,\n proxyInfo\n };\n if (_peerConnection && _peerConnection.proxyInfo) payload.proxyInfo = _peerConnection.proxyInfo;\n logAnalyticsEvent('createPeerConnection', 'Success', payload);\n });\n\n _readyToSendOffer.resolve(); // Create and initialise the PeerConnection object. This deals with\n // any differences between the various browser implementations and\n // our own OTPlugin version.\n //\n // +completion+ is the function is call once we've either successfully\n // created the PeerConnection or on failure.\n //\n\n\n const internalCreatePeerConnection = completion => {\n logging.debug('internalCreatePeerConnection: called');\n\n if (_peerConnection) {\n logging.debug('internalCreatePeerConnection: resolving synchronously');\n completion.call(null, null, _peerConnection);\n return;\n }\n\n _peerConnectionCompletionHandlers.push(completion);\n\n if (_peerConnectionCompletionHandlers.length > 1) {\n // The PeerConnection is already being setup, just wait for\n // it to be ready.\n return;\n }\n\n const pcConstraints = {\n optional: [// This should be unnecessary, but the plugin has issues if we remove it. This needs\n // to be investigated.\n // @todo now plugin is gone, can we remove it?\n {\n DtlsSrtpKeyAgreement: true\n }]\n };\n logging.debug(`Creating peer connection config \"${JSON.stringify(config)}\".`);\n\n if (iceConfig.servers.length === 0) {\n // This should never happen unless something is misconfigured\n logging.error('No ice servers present');\n logAnalyticsEvent('Error', 'noIceServers');\n }\n\n if (iceConfig.transportPolicy === 'relay') {\n const isTurnUrl = url => url && url.indexOf('turn') === 0;\n\n iceConfig.servers = iceConfig.servers.map(providedServer => {\n const server = cloneDeep(providedServer);\n\n if (!Array.isArray(server.urls)) {\n server.urls = [server.urls];\n }\n\n server.urls = server.urls.filter(isTurnUrl);\n return server.urls.length === 0 ? undefined : server;\n }).filter(server => server !== undefined);\n }\n\n config.iceTransportPolicy = iceConfig.transportPolicy;\n config.iceServers = iceConfig.servers;\n futureIsPeerConnectionValid().then(isValid => {\n if (!isValid) {\n logging.error('createPeerConnection: Invalid RTCPeerConnection object');\n throw new Error('Failed to create valid RTCPeerConnection object');\n }\n\n return createPeerConnection({\n window: windowMock,\n config,\n constraints: pcConstraints\n });\n }).then(pc => attachEventsToPeerConnection(null, pc), err => attachEventsToPeerConnection(err));\n }; // An auxiliary function to internalCreatePeerConnection. This binds the various event\n // callbacks once the peer connection is created.\n //\n // +err+ will be non-null if an err occured while creating the PeerConnection\n // +pc+ will be the PeerConnection object itself.\n //\n // @todo if anything called in attachEventsToPeerConnection throws it will be\n // silent\n\n\n const attachEventsToPeerConnection = (err, pc) => {\n if (err) {\n triggerError({\n reason: `Failed to create PeerConnection, exception: ${err}`,\n prefix: 'NewPeerConnection'\n });\n _peerConnectionCompletionHandlers = [];\n return;\n }\n\n logging.debug('OT attachEventsToPeerConnection');\n _peerConnection = pc;\n\n if (_iceProcessor) {\n _iceProcessor.setPeerConnection(pc);\n }\n\n _channels = new PeerConnectionChannels(_peerConnection);\n\n if (config.channels) {\n _channels.addMany(config.channels);\n }\n\n const forwarder = iceCandidateForwarder({\n sendMessage,\n logging\n });\n\n const onIceCandidate = event => {\n _readyToSendOffer.resolve();\n\n if (shouldFilterCandidate(event.candidate)) {\n logging.debug('Ignore candidate', event.candidate.candidate);\n return;\n }\n\n forwarder(event);\n };\n\n let _previousIceState = _peerConnection.iceConnectionState;\n\n const onIceConnectionStateChanged = event => {\n if (_peerConnection) {\n logging.debug('iceconnectionstatechange', _peerConnection.iceConnectionState);\n\n if (_peerConnection.iceConnectionState === 'connected') {\n // Now that the iceConnectionState is connected, let's make sure the transitionToFailedTimeOut\n // is cleared ASAP to avoid triggering an iceConnectionStateChange event to failed.\n if (_previousIceState === 'disconnected') {\n api.clearFailedTimeout();\n }\n\n api.emit('iceConnected');\n\n _iceRestartNeeded.set(false);\n } else if (_peerConnection.iceConnectionState === 'completed' && env.isLegacyEdge) {\n // Start collecting stats later in Edge because it fails if you call it sooner\n // This can probably be fixed better in Adapter.js\n setTimeout(() => qos.startCollecting(_peerConnection), 1000);\n }\n } else {\n logging.debug('iceconnectionstatechange on peerConnection that no longer exists', api);\n }\n\n const newIceState = event.target.iceConnectionState;\n api.trigger('iceConnectionStateChange', newIceState);\n logAnalyticsEvent('attachEventsToPeerConnection', 'iceconnectionstatechange', newIceState);\n\n if (newIceState === 'disconnected') {\n if (_iceRestartNeeded.get()) {\n logging.debug('Restarting ice!');\n api.generateOffer();\n } else if (!shouldUsePlanBSDP()) {\n // We only transition to failed in unified-plan\n // Plan-b will transition natively\n _transitionToFailedTimeOut = setTimeout(() => {\n const iceState = 'failed';\n logAnalyticsEvent('attachEventsToPeerConnection', 'iceconnectionstatechange', iceState);\n _previousIceState = iceState;\n api.trigger('iceConnectionStateChange', iceState);\n }, DISCONNECT_TO_FAILED_TIMEOUT);\n }\n }\n\n if (_previousIceState !== 'disconnected' && newIceState === 'failed') {\n // the sequence disconnected => failure would indicate an abrupt disconnection (e.g. remote\n // peer closed the browser) or a network problem. We don't want to log that has a connection\n // establishment failure. This behavior is seen only in Chrome 47+\n triggerError({\n reason: 'The stream was unable to connect due to a network error.' + ' Make sure your connection isn\\'t blocked by a firewall.',\n prefix: 'ICEWorkflow'\n });\n }\n\n _previousIceState = newIceState;\n };\n\n const onNegotiationNeeded = () => {\n logAnalyticsEvent('peerConnection:negotiationNeeded', 'Event');\n\n if (isPublisher) {\n api.generateOffer();\n }\n }; // Work around the fact that the safari adapter shim only\n // fires 'addstream' event if onaddstream has been set\n // https://github.com/opentok/webrtc-js/pull/2266#issuecomment-305647862\n\n\n _peerConnection.onaddstream = noop;\n\n _peerConnection.addEventListener('icecandidate', onIceCandidate);\n\n _peerConnection.addEventListener('addstream', onRemoteStreamAdded);\n\n _peerConnection.addEventListener('removestream', onRemoteStreamRemoved);\n\n _peerConnection.addEventListener('signalingstatechange', routeStateChanged);\n\n _peerConnection.addEventListener('negotiationneeded', onNegotiationNeeded);\n\n _peerConnection.addEventListener('iceconnectionstatechange', onIceConnectionStateChanged);\n\n cleanupJobs.add(() => {\n if (!_peerConnection) {\n return;\n }\n\n _peerConnection.onaddstream = null;\n\n _peerConnection.removeEventListener('icecandidate', onIceCandidate);\n\n _peerConnection.removeEventListener('addstream', onRemoteStreamAdded);\n\n _peerConnection.removeEventListener('removestream', onRemoteStreamRemoved);\n\n _peerConnection.removeEventListener('signalingstatechange', routeStateChanged);\n\n _peerConnection.removeEventListener('negotiationneeded', onNegotiationNeeded);\n\n _peerConnection.removeEventListener('iceconnectionstatechange', onIceConnectionStateChanged);\n });\n triggerPeerConnectionCompletion(null);\n };\n\n const triggerPeerConnectionCompletion = () => {\n while (_peerConnectionCompletionHandlers.length) {\n _peerConnectionCompletionHandlers.shift().call(null);\n }\n }; // Clean up the Peer Connection and trigger the close event.\n // This function can be called safely multiple times, it will\n // only trigger the close event once (per PeerConnection object)\n\n\n const tearDownPeerConnection = () => {\n // Our connection is dead, stop processing ICE candidates\n if (_iceProcessor) {\n _iceProcessor.destroy();\n\n _iceProcessor = null;\n }\n\n _peerConnectionCompletionHandlers = [];\n qos.stopCollecting();\n cleanupJobs.releaseAll();\n\n _readyToSendOffer.clean();\n\n if (_peerConnection !== null) {\n if (_peerConnection.destroy) {\n // OTPlugin defines a destroy method on PCs. This allows\n // the plugin to release any resources that it's holding.\n _peerConnection.destroy();\n }\n\n _peerConnection = null;\n api.trigger('close');\n }\n\n api.off();\n };\n\n const routeStateChanged = event => {\n const newState = event.target.signalingState;\n api.emit('signalingStateChange', newState);\n\n if (newState === 'stable') {\n api.emit('signalingStateStable');\n }\n\n if (newState && newState !== _state) {\n _state = newState;\n logging.debug(`stateChange: ${_state}`);\n\n switch (_state) {\n case 'closed':\n tearDownPeerConnection();\n break;\n\n default:\n }\n }\n };\n\n const qosCallback = parsedStats => {\n parsedStats.dataChannels = _channels.sampleQos();\n api.trigger('qos', {\n parsedStats,\n simulcastEnabled: _simulcastEnabled.get()\n });\n };\n\n const getRemoteStreams = () => {\n let streams;\n\n if (_peerConnection.getRemoteStreams) {\n streams = _peerConnection.getRemoteStreams();\n } else if (_peerConnection.remoteStreams) {\n streams = _peerConnection.remoteStreams;\n } else {\n throw new Error('Invalid Peer Connection object implements no ' + 'method for retrieving remote streams');\n } // Force streams to be an Array, rather than a 'Sequence' object,\n // which is browser dependent and does not behaviour like an Array\n // in every case.\n\n\n return Array.prototype.slice.call(streams);\n }; // / PeerConnection signaling\n\n\n const onRemoteStreamAdded = event => {\n logAnalyticsEvent('createPeerConnection', 'StreamAdded');\n api.trigger('streamAdded', event.stream);\n };\n\n const onRemoteStreamRemoved = event => {\n logAnalyticsEvent('peerConnection:streamRemoved', 'Event');\n api.trigger('streamRemoved', event.stream);\n }; // ICE Negotiation messages\n\n\n const reportError = (message, reason, prefix) => {\n processingOffer = false;\n triggerError({\n reason: `PeerConnection.offerProcessor ${message}: ${reason}`,\n prefix\n });\n }; // Process an offer that\n\n\n const processOffer = message => {\n if (processingOffer) {\n // If we get multiple pending offer messages we just handle the most recent one\n pendingOfferMessage = message;\n return;\n }\n\n processingOffer = true;\n logAnalyticsEvent('peerConnection:processOffer', 'Event');\n const offer = new NativeRTCSessionDescription({\n type: 'offer',\n sdp: message.content.sdp\n }); // Relays +answer+ Answer\n\n const relayAnswer = answer => {\n processingOffer = false;\n\n if (_iceProcessor) {\n _iceProcessor.process();\n }\n\n sendMessage('answer', answer);\n\n if (!env.isLegacyEdge) {\n qos.startCollecting(_peerConnection, isPublisher);\n }\n\n if (pendingOfferMessage) {\n processOffer(pendingOfferMessage);\n pendingOfferMessage = null;\n }\n };\n\n const onRemoteVideoSupported = supported => api.trigger('remoteVideoSupported', supported);\n\n internalCreatePeerConnection(() => {\n offerProcessor(_peerConnection, windowMock.RTCPeerConnection, windowMock.RTCSessionDescription, NativeRTCSessionDescription, sdpTransforms, offer, codecFlags, p2p, relayAnswer, reportError, onRemoteVideoSupported, replaceBaselineProfile);\n });\n };\n\n const processAnswer = message => {\n logAnalyticsEvent('peerConnection:processAnswer', 'Event');\n\n const failure = errorReason => {\n triggerError({\n reason: `Error while setting RemoteDescription ${errorReason}`,\n prefix: 'SetRemoteDescription'\n });\n };\n\n if (!message.content.sdp) {\n failure('Weird answer message, no SDP.');\n return;\n }\n\n _answer = new NativeRTCSessionDescription({\n type: 'answer',\n sdp: applySdpTransform(sdpTransforms, 'remote', 'answer', assign({\n replaceBaselineProfile\n }, answerOverrides), message.content.sdp).local\n });\n\n (() => {\n const success = () => {\n logging.debug('processAnswer: setRemoteDescription Success');\n\n if (_iceProcessor) {\n _iceProcessor.process();\n }\n };\n\n _peerConnection.setRemoteDescription(_answer).then(success).catch(failure);\n\n offerAnswerPending = false;\n\n if (regenerateOffer) {\n regenerateOffer = false;\n api.generateOffer();\n }\n })();\n\n if (!env.isLegacyEdge) {\n qos.startCollecting(_peerConnection, isPublisher);\n }\n };\n\n const processSubscribe = () => {\n var _peerConnection2, _peerConnection2$sign;\n\n if (((_peerConnection2 = _peerConnection) == null ? void 0 : (_peerConnection2$sign = _peerConnection2.signalingState) == null ? void 0 : _peerConnection2$sign.toLowerCase()) === 'closed') {\n return;\n }\n\n offerAnswerPending = true;\n logAnalyticsEvent('peerConnection:processSubscribe', 'Event');\n logging.debug('processSubscribe: Sending offer to subscriber.');\n let numSimulcastStreams = _simulcastEnabled.get() ? config.capableSimulcastStreams : 1; // When transitioning from Mantis to P2P, in order to ensure the video quality we must\n // send only one video layer, regardless that simulcast is enabled.\n\n const isAdaptiveP2pSourceStreamId = sourceStreamId === 'P2P' && !p2p;\n\n if (isAdaptiveP2pSourceStreamId) {\n numSimulcastStreams = 1;\n }\n\n internalCreatePeerConnection(() => {\n subscribeProcessor({\n peerConnection: _peerConnection,\n NativeRTCSessionDescription,\n sdpTransforms,\n numSimulcastStreams,\n offerOverrides,\n offerConstraints: {\n iceRestart: _iceRestartNeeded.get()\n },\n replaceBaselineProfile\n }).then(offer => {\n logging.debug('processSubscribe: got offer, waiting for ' + '_readyToSendOffer');\n _offer = offer;\n\n _readyToSendOffer.promise.then(() => {\n logging.debug('processSubscribe: sending offer');\n sendMessage('offer', _offer);\n });\n }, error => {\n triggerError({\n reason: `subscribeProcessor ${error.message}: ${error.reason}`,\n prefix: error.prefix\n });\n });\n\n _iceRestartNeeded.set(false);\n });\n };\n\n api.generateOffer = debounce(() => {\n if (!offerAnswerPending) {\n processSubscribe();\n } else {\n regenerateOffer = true;\n }\n }, 100);\n\n const triggerError = (_ref3) => {\n let reason = _ref3.reason,\n prefix = _ref3.prefix;\n logging.error(reason, 'in state', !_peerConnection ? '(none)' : {\n connectionState: _peerConnection.connectionState,\n iceConnectionState: _peerConnection.iceConnectionState,\n iceGatheringState: _peerConnection.iceGatheringState,\n signalingState: _peerConnection.signalingState\n });\n api.trigger('error', {\n reason,\n prefix\n });\n };\n /*\n * Add a track to the underlying PeerConnection\n *\n * @param {object} track - the track to add\n * @param {object} stream - the stream to add it to\n * @return {RTCRtpSender}\n */\n\n\n api.addTrack = (track, stream) => {\n const promise = new Promise((resolve, reject) => {\n internalCreatePeerConnection(err => {\n if (err) {\n return reject(err);\n }\n\n resolve();\n return undefined;\n });\n }).then(() => {\n if (_peerConnection.addTrack) {\n return _peerConnection.addTrack(track, stream);\n }\n\n const pcStream = _peerConnection.getLocalStreams()[0];\n\n if (pcStream === undefined) {\n throw new Error('PeerConnection has no existing streams, cannot addTrack');\n }\n\n pcStream.addTrack(track);\n api.generateOffer();\n return undefined;\n }).then(() => new Promise(resolve => {\n api.once('signalingStateStable', () => {\n resolve();\n });\n }));\n return promiseTimeout(promise, 15000, 'Renegotiation timed out');\n };\n\n function FakeRTCRtpSender(track) {\n this.track = track;\n }\n /**\n * Remove a track from the underlying PeerConnection\n *\n * @param {RTCRtpSender} RTCRtpSender - the RTCRtpSender to remove\n */\n\n\n api.removeTrack = RTCRtpSender => {\n const promise = Promise.resolve().then(() => {\n if (RTCRtpSender instanceof FakeRTCRtpSender) {\n _peerConnection.getLocalStreams()[0].removeTrack(RTCRtpSender.track);\n\n api.generateOffer();\n return undefined;\n }\n\n return _peerConnection.removeTrack(RTCRtpSender);\n }).then(() => new Promise(resolve => {\n api.once('signalingStateStable', () => {\n resolve();\n });\n }));\n return promiseTimeout(promise, 15000, 'Renegotiation timed out');\n };\n\n api.addLocalStream = webRTCStream => new Promise((resolve, reject) => {\n internalCreatePeerConnection(err => {\n if (err) {\n reject(err);\n return;\n }\n\n try {\n _peerConnection.addStream(webRTCStream);\n } catch (addStreamErr) {\n reject(addStreamErr);\n return;\n }\n\n resolve();\n }, webRTCStream);\n });\n\n api.getLocalStreams = () => _peerConnection.getLocalStreams();\n\n api.getSenders = () => {\n if (_peerConnection.getSenders) {\n return _peerConnection.getSenders();\n }\n\n return _peerConnection.getLocalStreams()[0].getTracks().map(track => new FakeRTCRtpSender(track));\n };\n\n api.disconnect = () => {\n var _peerConnection3;\n\n if (_iceProcessor) {\n _iceProcessor.destroy();\n\n _iceProcessor = null;\n }\n\n if (((_peerConnection3 = _peerConnection) == null ? void 0 : _peerConnection3.signalingState) && _peerConnection.signalingState.toLowerCase() !== 'closed') {\n _peerConnection.close();\n\n setTimeout(tearDownPeerConnection);\n }\n };\n\n api.iceRestart = () => _iceRestartNeeded.set(true);\n\n api.clearFailedTimeout = () => clearTimeout(_transitionToFailedTimeOut);\n\n api.changeMediaDirectionToRecvOnly = () => changeMediaDirectionToRecvOnly(_peerConnection);\n\n api.changeMediaDirectionToInactive = () => changeMediaDirectionToInactive(_peerConnection);\n\n api.processMessage = (type, message) => {\n logging.debug(`processMessage: Received ${type} from ${message.fromAddress}`, message);\n logging.debug(message);\n\n switch (type) {\n case 'generateoffer':\n if (message.content && message.content.simulcastEnabled !== undefined) {\n _simulcastEnabled.set(message.content.simulcastEnabled);\n }\n\n api.generateOffer();\n trackRenegotiationAttempts();\n break;\n\n case 'offer':\n processOffer(message);\n trackRenegotiationAttempts();\n break;\n\n case 'answer':\n case 'pranswer':\n processAnswer(message);\n break;\n\n case 'candidate':\n var iceCandidate = new NativeRTCIceCandidate(message.content);\n\n if (shouldFilterCandidate(iceCandidate)) {\n logging.debug('Ignore candidate', iceCandidate.candidate);\n return api;\n }\n\n if (_iceProcessor) {\n _iceProcessor.addIceCandidate(iceCandidate).catch(err => {\n // Sometimes you might get an error adding an iceCandidate\n // this does not mean we should fail, if we get a working candidate\n // later then we should let it work\n logging.warn(`Error while adding ICE candidate: ${JSON.stringify(iceCandidate)}: ${err.toString()}`);\n });\n }\n\n break;\n\n default:\n logging.debug(`processMessage: Received an unexpected message of type ${type} from ${message.fromAddress}: ${JSON.stringify(message)}`);\n }\n\n function trackRenegotiationAttempts() {\n offerMessagesReceived += 1;\n qos.handleOfferMessageReceived();\n\n if (offerMessagesReceived > 1) {\n logAnalyticsEvent('Renegotiation', 'Attempt');\n renegotiationInProgress = true;\n }\n }\n\n return api;\n };\n\n api.remoteStreams = () => _peerConnection ? getRemoteStreams() : [];\n\n api.remoteTracks = () => {\n if (!_peerConnection) {\n return [];\n }\n\n if (_peerConnection.getReceivers) {\n return Array.prototype.slice.apply(_peerConnection.getReceivers()).map(receiver => receiver.track);\n }\n\n return Array.prototype.concat.apply([], getRemoteStreams().map(stream => stream.getTracks()));\n };\n\n api.remoteDescription = () => _peerConnection.remoteDescription;\n /**\n * @param {function(DOMError, ArrayOT
object dispatches an\n * exception
event. The OT
object also dispatches an\n * exception
event if you call this method after having\n * previously called it.\n * AudioContext
based audio level sampler. It returns the maximum value in the\n * last 1024 samples.\n *\n * It is worth noting that the remote MediaStream
audio analysis is currently only\n * available in FF.\n *\n * This implementation gracefully handles the case where the MediaStream
has not\n * been set yet by returning a null
value until the stream is set. It is up to the\n * call site to decide what to do with this value (most likely ignore it and retry later).\n *\n * @constructor\n * @param {AudioContext} audioContext an audio context instance to get an analyser node\n */\nmodule.exports = (_temp = /*#__PURE__*/function () {\n function WebAudioAudioLevelSampler(audioContext) {\n (0, _defineProperty2.default)(this, \"_analyser\", null);\n (0, _defineProperty2.default)(this, \"_timeDomainData\", null);\n (0, _defineProperty2.default)(this, \"_sourceNode\", null);\n this._audioContext = audioContext;\n }\n\n var _proto = WebAudioAudioLevelSampler.prototype;\n\n _proto._initAudioAnalyser = function _initAudioAnalyser(mediaStream) {\n this._analyser = this._audioContext.createAnalyser();\n this._sourceNode = this._audioContext.createMediaStreamSource(mediaStream);\n\n this._sourceNode.connect(this._analyser);\n\n this._timeDomainData = new Uint8Array(this._analyser.frequencyBinCount);\n };\n\n _proto.webRTCStream = function webRTCStream(mediaStream) {\n if (this._sourceNode) {\n this._sourceNode.disconnect(this._analyser);\n }\n\n if (this._audioContext.state === 'suspended') {\n this._audioContext.resume();\n }\n\n this._initAudioAnalyser(mediaStream);\n };\n\n _proto.destroy = function destroy() {\n if (this._sourceNode) {\n this._sourceNode.disconnect(this._analyser);\n }\n\n this._timeDomainData = null;\n };\n\n _proto.sample = function sample(done) {\n if (typeof done === 'function') {\n throw new Error('sample no longer takes a callback');\n }\n\n if (this._analyser && this._timeDomainData) {\n this._analyser.getByteTimeDomainData(this._timeDomainData); // varies from 0 to 255\n\n\n let max = 0;\n\n for (let idx = this._timeDomainData.length - 1; idx >= 0; idx -= 1) {\n max = Math.max(max, Math.abs(this._timeDomainData[idx] - 128));\n } // normalize the collected level to match the range delivered by\n // the getStats' audioOutputLevel\n\n\n return max / 128;\n }\n\n return null;\n };\n\n return WebAudioAudioLevelSampler;\n}(), _temp);\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle, no-use-before-define */\nconst domState = __webpack_require__(558);\n\nconst eventNames = __webpack_require__(26);\n\nconst eventing = __webpack_require__(6);\n\nconst Events = __webpack_require__(22)(); // Helper to synchronise several startup tasks and then dispatch a unified\n// 'envLoaded' event.\n\n\nfunction EnvironmentLoader() {\n const environmentLoader = this;\n eventing(environmentLoader);\n\n function isReady() {\n return domState.isDomLoaded() && !domState.isDomUnloaded();\n }\n\n function onLoaded() {\n if (isReady()) {\n environmentLoader.dispatchEvent(new Events.EnvLoadedEvent(eventNames.ENV_LOADED));\n }\n }\n\n function onDomReady() {\n domState.whenUnloaded.then(onDomUnload);\n onLoaded();\n }\n\n function onDomUnload() {\n environmentLoader.dispatchEvent(new Events.EnvLoadedEvent(eventNames.ENV_UNLOADED));\n }\n\n domState.whenLoaded.then(onDomReady);\n\n this.onLoad = function (cb, context) {\n if (isReady()) {\n cb.call(context);\n return;\n }\n\n environmentLoader.on(eventNames.ENV_LOADED, cb, context);\n };\n\n this.onUnload = function (cb, context) {\n if (this.isUnloaded()) {\n cb.call(context);\n return;\n }\n\n environmentLoader.on(eventNames.ENV_UNLOADED, cb, context);\n };\n\n this.isUnloaded = function () {\n return domState.isDomUnloaded();\n };\n}\n\nmodule.exports = new EnvironmentLoader();\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseMerge = __webpack_require__(559),\n createAssigner = __webpack_require__(191);\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar objectAssign = __webpack_require__(563);\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh setStyle()
method of thePublisher object. (See the documentation for\n * setStyle() to see the styles that define this object.)\n * @return {Object} The object that defines the styles of the Publisher.\n * @see setStyle()\n * @method #getStyle\n * @memberOf Publisher\n */\n\n /**\n * Returns an object that has the properties that define the current user interface controls of\n * the Subscriber. You can modify the properties of this object and pass the object to the\n * setStyle()
method of the Subscriber object. (See the documentation for\n * setStyle() to see the styles that define this object.)\n * @return {Object} The object that defines the styles of the Subscriber.\n * @see setStyle()\n * @method #getStyle\n * @memberOf Subscriber\n */\n // If +key+ is falsly then all styles will be returned.\n\n\n self.getStyle = function (key) {\n return _style.get(key);\n };\n /**\n * Sets properties that define the appearance of some user interface controls of the Publisher.\n *\n * style
, it is an object that has the following\n * properties:\n *\n * \n *
\n * audioLevelDisplayMode
(String) — How to display the audio level\n * indicator. Possible values are: \"auto\"
(the indicator is displayed when the\n * video is disabled), \"off\"
(the indicator is not displayed), and\n * \"on\"
(the indicator is always displayed).archiveStatusDisplayMode
(String) — How to display the archive\n * status indicator. Possible values are: \"auto\"
(the indicator is displayed\n * when the session is being recorded), \"off\"
(the indicator is not displayed).\n * If you disable the archive status display indicator, you can display your own user\n * interface notifications based on the archiveStarted
and\n * archiveStopped
events dispatched by the Session object.backgroundImageURI
(String) — A URI for an image to display as\n * the background image when a video is not displayed. (A video may not be displayed if\n * you call publishVideo(false)
on the Publisher object). You can pass an http\n * or https URI to a PNG, JPEG, or non-animated GIF file location. You can also use the\n * data
URI scheme (instead of http or https) and pass in base-64-encrypted\n * PNG data, such as that obtained from the \n * Publisher.getImgData() method (for example, you could call\n * myPublisher.setStyle(\"backgroundImageURI\", myPublisher.getImgData())
).\n * If the URL or the image data is invalid, the property is ignored (the attempt to set\n * the image fails silently).buttonDisplayMode
(String) — How to display the microphone\n * controls. Possible values are: \"auto\"
(controls are displayed when the\n * stream is first displayed and when the user mouses over the display), \"off\"
\n * (controls are not displayed), and \"on\"
(controls are always displayed).nameDisplayMode
(String) Whether to display the stream name.\n * Possible values are: \"auto\"
(the name is displayed when the stream is first\n * displayed and when the user mouses over the display), \"off\"
(the name is not\n * displayed), and \"on\"
(the name is always displayed).myPublisher.setStyle({nameDisplayMode: \"off\"});
\n *\n * style
and value
, they are\n * key-value pair that define one property of the display style. For example, the following\n * code passes two parameter values to the method:myPublisher.setStyle(\"nameDisplayMode\", \"off\");
\n *\n * Session.publish()
\n * or OT.initPublisher()
method. Pass a style
property as part of the\n * properties
parameter of the method.exception
event if you pass in an invalid style\n * to the method. The code
property of the ExceptionEvent object is set to 1011.style
passed in. Pass a value\n * for this parameter only if the value of the style
parameter is a String.
You can either pass one parameter or two parameters to this method.
\n *\n *If you pass one parameter, style
, it is an object that has the following\n * properties:\n *\n *
audioBlockedDisplayMode
(String) — Whether to display\n * the default audio blocked icon in Subscribers (in browsers where audio\n * autoplay is blocked). Possible values are: \"auto\"
(the default,\n * icon is displayed when the audio is disabled) and \"off\"
(the icon\n * is not displayed). Set this to \"off\"
if you want to display\n * your own UI element showing that the audio is blocked. In response to an\n * HTML element dispatching a click
event, you can call the\n * OT.unblockAudio() method to start audio\n * playback in this and all other blocked subscribers.audioLevelDisplayMode
(String) — How to display the audio level\n * indicator. Possible values are: \"auto\"
(the indicator is displayed when the\n * video is disabled), \"off\"
(the indicator is not displayed), and\n * \"on\"
(the indicator is always displayed).backgroundImageURI
(String) — A URI for an image to display as\n * the background image when a video is not displayed. (A video may not be displayed if\n * you call subscribeToVideo(false)
on the Publisher object). You can pass an\n * http or https URI to a PNG, JPEG, or non-animated GIF file location. You can also use the\n * data
URI scheme (instead of http or https) and pass in base-64-encrypted\n * PNG data, such as that obtained from the \n * Subscriber.getImgData() method (for example, you could call\n * mySubscriber.setStyle(\"backgroundImageURI\", mySubscriber.getImgData())
).\n * If the URL or the image data is invalid, the property is ignored (the attempt to set\n * the image fails silently).buttonDisplayMode
(String) — How to display the speaker\n * controls. Possible values are: \"auto\"
(controls are displayed when the\n * stream is first displayed and when the user mouses over the display), \"off\"
\n * (controls are not displayed), and \"on\"
(controls are always displayed).nameDisplayMode
(String) Whether to display the stream name.\n * Possible values are: \"auto\"
(the name is displayed when the stream is first\n * displayed and when the user mouses over the display), \"off\"
(the name is not\n * displayed), and \"on\"
(the name is always displayed).videoDisabledDisplayMode
(String) Whether to display the video\n * disabled indicator and video disabled warning icons for a Subscriber. These icons\n * indicate that the video has been disabled (or is in risk of being disabled for\n * the warning icon) due to poor stream quality. Possible values are: \"auto\"
\n * (the icons are automatically when the displayed video is disabled or in risk of being\n * disabled due to poor stream quality), \"off\"
(do not display the icons), and\n * \"on\"
(display the icons).For example, the following code passes one parameter to the method:
\n *\n *mySubscriber.setStyle({nameDisplayMode: \"off\"});\n *\n *
If you pass two parameters, style
and value
, they are key-value\n * pair that define one property of the display style. For example, the following code passes\n * two parameter values to the method:
mySubscriber.setStyle(\"nameDisplayMode\", \"off\");\n *\n *
You can set the initial settings when you call the Session.subscribe()
method.\n * Pass a style
property as part of the properties
parameter of the\n * method.
The OT object dispatches an exception
event if you pass in an invalid style\n * to the method. The code
property of the ExceptionEvent object is set to 1011.
style
passed in. Pass a value\n * for this parameter only if the value of the style
parameter is a String.\n *\n * @returns {Subscriber} The Subscriber object.\n *\n * @see getStyle()\n * @see setStyle()\n *\n * @see Session.subscribe()\n * @method #setStyle\n * @memberOf Subscriber\n */\n\n\n self.setStyle = function (keyOrStyleHash, value, silent) {\n if (_readOnly) {\n logging.warn('Calling setStyle() has no effect because the' + 'showControls option was set to false');\n return this;\n }\n\n let styleHash;\n\n if (typeof keyOrStyleHash !== 'string') {\n styleHash = keyOrStyleHash;\n } else {\n styleHash = {};\n styleHash[keyOrStyleHash] = value;\n }\n\n if (styleHash.backgroundImageURI) {\n styleHash.backgroundImageURI = fixBackgroundImageURI(styleHash.backgroundImageURI);\n }\n\n _style.setAll(styleHash, silent);\n\n logSetStyleWithPayload(styleHashLogFilter(styleHash));\n return this;\n };\n};\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst once = __webpack_require__(49);\n\nconst StaticConfig = __webpack_require__(44)();\n\nconst Analytics = __webpack_require__(27);\n\nconst APIKEY = __webpack_require__(72);\n\nconst EnvironmentLoader = __webpack_require__(146);\n\nconst hasOpenTokSupport = __webpack_require__(60).once;\n\nconst isWebSocketSupported = __webpack_require__(584);\n\nconst OTHelpers = __webpack_require__(5);\n\nconst logging = __webpack_require__(1)('systemRequirements');\n\nconst upgradeHtml = __webpack_require__(585);\n\nconst Modal = __webpack_require__(586);\n\nconst staticConfig = StaticConfig.onlyLocal(); // This will be logged before we even get the correct loggingUrl from\n// config.opentok.com.\n\nconst analytics = new Analytics();\nconst logOnce = once(() => {\n analytics.logEvent({\n action: 'checkSystemRequirements',\n variation: 'notHasRequirements',\n partnerId: APIKEY.value,\n payload: {\n userAgent: OTHelpers.env.userAgent\n }\n });\n});\nconst logUserAgentParsingOnce = once(() => {\n __webpack_require__(587)(); // eslint-disable-line global-require\n\n});\nlet isDialogOpen = false;\nmodule.exports = {\n /**\n * Checks if the system supports OpenTok for WebRTC. Note that this method is called\n * automatically when you call OT.initPublisher()
or OT.initSession()
,\n * and if the system doesn't support OpenTok, the OpenTok.js library displays a message to\n * the user. Call the OT.checkSystemRequirements()
method before calling\n * OT.initPublisher()
or OT.initSession()
if you do not want the\n * library to display that message.\n *\n * @return {Number} Whether the system supports OpenTok for WebRTC (1) or not (0).\n * @see OT.upgradeSystemRequirements()\n * @method OT.checkSystemRequirements\n * @memberof OT\n */\n check() {\n logging.debug('OT.checkSystemRequirements()'); // We use Number here to coerce a Boolean to 1 or 0\n\n const systemRequirementsMet = Number(isWebSocketSupported && hasOpenTokSupport());\n logUserAgentParsingOnce();\n\n if (!systemRequirementsMet) {\n logOnce();\n }\n\n return systemRequirementsMet;\n },\n\n /**\n * Displays information about system requirements for OpenTok for WebRTC. This\n * information is displayed in an iframe element that fills the browser window.\n * \n * Note: this information is displayed automatically when you call the\n * OT.initSession()
or the OT.initPublisher()
method\n * if the client does not support OpenTok for WebRTC.\n *
\n * Note: A screen-sharing extension is not required in Chrome 72+ or Opera 59+.\n * The end user is prompted to grant access to the screen, just as they would be when granting\n * access to a camera. You only need a screen-sharing extension for older versions\n * of Opera and Chrome.\n *
\n * Use the OT.checkScreenSharingCapability()
method to check if an extension is\n * required, registered, and installed.\n *
\n * The OpenTok\n * screensharing-extensions\n * repo includes code for creating an extension for screen-sharing support.\n *\n * @param {String} kind Set this parameter to \"chrome\"
. Currently, you can only\n * register a screen-sharing extension for older versions of Chrome and Opera.\n *\n * @param {String} id The ID for your screen-sharing extension. You can find this ID at\n * chrome://extensions.\n *\n * @param {Number} version The version of the screen-sharing extension from the\n * screensharing-extensions repo.\n * Set this if you are using version 2 or later. For example, if you are using version 2, set this\n * to 2. With version 2, the client can use the extension immediately after installing it, without\n * reloading the page.\n *\n * @see OT.initPublisher()\n * @see OT.checkScreenSharingCapability()\n * @method OT.registerScreenSharingExtension\n * @memberof OT\n */\n\n\n screenSharing.registerExtension = function (kind) {\n if (screenSharing.extensionClasses[kind] == null) {\n throw new Error('Unsupported kind passed to OT.registerScreenSharingExtension');\n }\n\n for (var _len = arguments.length, initArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n initArgs[_key - 1] = arguments[_key];\n }\n\n const x = screenSharing.extensionClasses[kind].register(...initArgs);\n screenSharing.extensionByKind[kind] = x;\n };\n\n const screenSharingPickHelper = () => {\n const foundClass = find(Object.keys(screenSharing.extensionClasses).sort( // Try \"electron\" first. Reason being, even though `getDisplayMedia`\n // is exposed in electron, developers must use the electron's\n // `desktopCapturer` instead.\n cls => cls === 'electron' ? -1 : 1), cls => screenSharing.extensionClasses[cls].isSupportedInThisBrowser);\n\n if (foundClass === undefined) {\n return {};\n }\n\n return {\n name: foundClass,\n proto: screenSharing.extensionClasses[foundClass],\n instance: screenSharing.extensionByKind[foundClass]\n };\n };\n\n screenSharing.pickHelper = () => screenSharingPickHelper();\n /**\n * Checks for support for publishing screen-sharing streams on the client browser. The object\n * passed to the callback function defines whether screen sharing is supported, as well as\n * which screen-sharing sources (application, screen, or window) are supported. It also indicates\n * whether an extension is required, installed, and registered (if needed).\n *
\n *
\n * OT.checkScreenSharingCapability(function(response) {\n * if (!response.supported || response.extensionRegistered === false) {\n * // This browser does not support screen sharing\n * } else if (response.extensionInstalled === false) {\n * // Prompt to install the extension\n * } else {\n * // Screen sharing is available.\n * }\n * });\n *\n *
\n * Chrome 72+, Firefox 52+, Safari 13+, Edge 79+, and Opera 59+ have screen-sharing\n * support built-in, with no extension required. (Note that support for the OpenTok\n * plugin for Internet Explorer is removed in OpenTok 2.17.) Screen sharing is\n * not supported in mobile browsers. In Electron, screen sharing is supported if\n * the webPreferences.contextIsolation
option of the Electron BrowserWindow is\n * set to false
or if the app uses a preload script to access the desktop capturer.\n * (The default value of webPreferences.contextIsolation
option is true
\n * in Electron 12 and false
in previous versions). To publish a screen-sharing video\n * in older versions of Chrome or Opera, the client adds an extension that enables publishing a\n * screen-sharing video stream on your domain. The OpenTok\n * screensharing-extensions\n * sample includes code for creating an extension for screen-sharing support in\n * older versions of Chrome and Opera.\n *
\n * For more information, see the \n * OpenTok Screen Sharing developer guide.\n *\n * @param {function} callback The callback invoked with the support options object passed as\n * the parameter. This object has the following properties that indicate support for publishing\n * screen-sharing streams in the client:\n *
\n *
extensionInstalled
(Boolean) — In older versions of Chrome and Opera,\n * this is set to true
if the extension is installed and registered.\n * In Chrome 72+, Firefox 52+, Safari 13+, Opera 59+, Edge 79+, and Internet Explorer,\n * this property is undefined.\n * supported
(Boolean) — Set to true
if screen sharing\n * is supported in the browser. Check the extensionRequired
property\n * to see if the browser requires an extension for screen sharing.\n * supportedSources
(Object) — Deprecated. In older\n * browser versions, you could select a type of screen-sharing source\n * (such as \"application\"
, \"browser\"
, \"screen\"
,\n * or \"window\"
by setting the videoSource
property\n * of the options passed into the OT.initPublisher()
method.\n * However, in current browsers that support screen sharing, passing in\n * any of these values results in the same behavior — the browser\n * displays a dialog box in which the end user selects the screen-sharing\n * source (which can be the entire screen or a specific window). In Electron,\n * screen sharing captures the entire screen, without prompting the user for permission.\n * The options parameter also includes the following properties, which apply to screen-sharing\n * support in older versions of Chrome and Opera (in all other browsers these properties are\n * undefined):\n *
extensionRequired
(String) — Set to \"chrome\"
\n * in older versions of Chrome and Opera, which require a screen-sharing extension\n * to be installed. This property is undefined in other browsers.\n * extensionRegistered
(Boolean) — In older versions of Chrome and Opera,\n * this property is set to true
if a screen-sharing extension is registered;\n * otherwise it is set to false
. In other browsers (which do not require\n * an extension), this property is undefined. Use the\n * OT.registerScreenSharingExtension()
method to register a screen-sharing\n * extension in older versions of Chrome or Opera.\n * ${errorMsg}${helpMsg ? `
`;\n OTHelpers.addClass(this._container, classNames || 'OT_subscriber_error');\n\n if (this._container.querySelector('p').offsetHeight > this._container.offsetHeight) {\n this._container.querySelector('span').style.display = 'none';\n }\n }\n }\n /**\n * Destroy the video\n */\n ;\n\n _proto.destroy = function destroy() {\n this.emit('destroy');\n this.destroyVideo();\n\n if (this._container) {\n OTHelpers.removeElement(this._container);\n this._container = null;\n }\n };\n\n _proto.setBackgroundImageURI = function setBackgroundImageURI(bgImgURI) {\n OTHelpers.css(this._posterContainer, 'backgroundImage', `url(${bgImgURI})`);\n OTHelpers.css(this._posterContainer, 'backgroundSize', 'contain');\n OTHelpers.css(this._posterContainer, 'opacity', '1.0');\n };\n\n _proto.isAudioBlocked = function isAudioBlocked() {\n return Boolean(this._videoElementFacade && this._videoElementFacade.isAudioBlocked());\n };\n\n _proto.unblockAudio = function unblockAudio() {\n return this._videoElementFacade.unblockAudio();\n };\n\n _proto.userGesture = function userGesture() {\n if (this.isAudioBlocked()) {\n unblockAudio().then(() => logging.debug('Successfully unblocked audio'), err => logging.error('Error retrying audio on user interaction:', err));\n }\n };\n\n _proto.setAudioBlockedUi = function setAudioBlockedUi(audioBlocked) {\n if (!this._container) {\n return;\n }\n\n if (audioBlocked) {\n this._container.classList.add('OT_container-audio-blocked');\n } else {\n this._container.classList.remove('OT_container-audio-blocked');\n }\n };\n\n _proto.rebindSrcObject = function rebindSrcObject() {\n if (this._videoElementFacade) {\n this._videoElementFacade._rebindSrcObject();\n }\n };\n\n _proto.pauseAndPlayVideoElement = function pauseAndPlayVideoElement() {\n if (this._videoElementFacade) {\n this._videoElementFacade._pauseAndPlay();\n }\n };\n\n _proto._createVideoElementFacade = function _createVideoElementFacade(_ref3) {\n let _inject = _ref3._inject,\n audioVolume = _ref3.audioVolume,\n fallbackText = _ref3.fallbackText,\n muted = _ref3.muted;\n this._videoElementFacade = new VideoElementFacade({\n defaultAudioVolume: parseFloat(audioVolume),\n fallbackText,\n fitMode: this._fitMode,\n _inject,\n muted,\n widgetType: this._widgetType\n });\n const videoFacadeEvents = eventHelper(this._videoElementFacade);\n this._videoFacadeEvents = videoFacadeEvents;\n videoFacadeEvents.on('error', () => {\n this.trigger('error');\n });\n videoFacadeEvents.on('videoDimensionsChanged', (oldValue, newValue) => {\n this.trigger('videoDimensionsChanged', oldValue, newValue);\n });\n videoFacadeEvents.on('mediaStopped', track => {\n this.trigger('mediaStopped', track);\n });\n videoFacadeEvents.on('audioBlocked', () => this.trigger('audioBlocked'));\n videoFacadeEvents.on('audioUnblocked', () => this.trigger('audioUnblocked')); // makes the incoming audio streams take priority (will impact only FF OS for now)\n\n this._videoElementFacade.audioChannelType('telephony');\n\n logging.debug('Appending the video facade');\n\n this._videoElementFacade.appendTo(this._widgetContainer); // Initialize the audio volume\n\n\n if (typeof audioVolume !== 'undefined') {\n try {\n this._videoElementFacade.setAudioVolume(audioVolume);\n } catch (e) {\n logging.warn(`bindVideo ${e}`);\n }\n }\n };\n\n _proto._bindToStream = /*#__PURE__*/function () {\n var _bindToStream2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(webRTCStream, cancellation) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return this._videoElementFacade.bindToStream(webRTCStream);\n\n case 3:\n _context.next = 14;\n break;\n\n case 5:\n _context.prev = 5;\n _context.t0 = _context[\"catch\"](0);\n\n if (!cancellation.isCanceled()) {\n _context.next = 12;\n break;\n }\n\n logging.debug('Refusing to destroyVideo as bindVideo was cancelled');\n throw new CancellationError('CANCEL');\n\n case 12:\n this.destroyVideo();\n throw _context.t0;\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this, [[0, 5]]);\n }));\n\n function _bindToStream(_x, _x2) {\n return _bindToStream2.apply(this, arguments);\n }\n\n return _bindToStream;\n }();\n\n _proto._getNewBindCancellation = function _getNewBindCancellation() {\n if (this._cancelBind) {\n logging.debug('Cancelling last bindVideo request');\n\n this._cancelBind.cancel();\n }\n\n const cancellation = new Cancellation();\n this._cancelBind = cancellation;\n this.once('destroy', () => cancellation.cancel());\n return cancellation;\n };\n\n _proto._triggerVideoElementCreated = function _triggerVideoElementCreated() {\n const triggerVideoElementCreated = element => {\n this.trigger('videoElementCreated', element);\n\n if (this._insertDefaultUI) {\n OTHelpers.addClass(element, 'OT_video-element');\n }\n };\n\n if (this._videoElementFacade.domElement()) {\n triggerVideoElementCreated(this._videoElementFacade.domElement());\n } else {\n this._videoFacadeEvents.on('videoElementCreated', element => {\n triggerVideoElementCreated(element);\n });\n }\n };\n\n _proto._waitForVideoResolution = /*#__PURE__*/function () {\n var _waitForVideoResolution2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(webRTCStream) {\n var subscribingToAudioOnlyStream;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n subscribingToAudioOnlyStream = this.audioOnly() && this._widgetType === 'subscriber';\n\n if (!(!subscribingToAudioOnlyStream && webRTCStream.getVideoTracks().length > 0)) {\n _context2.next = 6;\n break;\n }\n\n logging.debug('Waiting for correct resolution');\n _context2.next = 5;\n return waitForVideoResolution(this._videoElementFacade, 5000);\n\n case 5:\n logging.debug(`Resolution: ${this._videoElementFacade.videoWidth()}x${this._videoElementFacade.videoHeight()}`);\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n\n function _waitForVideoResolution(_x3) {\n return _waitForVideoResolution2.apply(this, arguments);\n }\n\n return _waitForVideoResolution;\n }()\n /**\n * Bind a video to a VideoElementFacade\n *\n * @param {MediaStream} webRTCStream the MediaStream to bind\n * @param {Object} options\n * @param {Function} options.error Error callback\n * @param {Float} options.audioVolume The initial audioVolume\n * @param {Boolean} options.muted The initial mute state\n * @param {String} [options.fallbackText] The default fallbackText\n *\n * @return {Promise ` : ''}click
event.\n * \n * You only need to call this method if you disable display of\n * the Subscriber's default audio playback icon (by setting the\n * style.audioBlockedDisplayMode
property of the\n * options
parameter of the\n * Session.subscribe() method).\n * You may call this method in response to the user clicking an HTML element\n * that you display on the page.\n *
\n * The Subscriber dispatches an\n * audioBlocked event\n * if audio is blocked. In response to that event, you can display a UI\n * element to notify the end user to respond to playback subscriber audio.\n * Call the OT.unblockAudio()
method in response to the user\n * clicking a DOM element.\n *
\n * Note: Subscriber audio is also unblocked automatically if\n * the local client gains access to the camera or microphone (for instance,\n * in response to a successful call to OT.initPublisher()
).\n *\n * @returns Promise The promise resolves if audio playback succeeds\n * on all blocked subscribers. The promise is rejected if playback fails.\n * See Error for details.\n *\n * @see Subscriber.isAudioBlocked()\n * @see The audioBlocked\n * and audioUnblocked\n * Subscriber events\n *\n * @method OT.unblockAudio\n * @memberof OT\n */\n\n\n return sub._.unblockAudio();\n}));\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = sourceStreamId => sourceStreamId === 'P2P' ? 'RELAYED' : 'ROUTED';\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(12));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(13));\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(25));\n\n/* eslint-disable global-require, func-names */\n\n/* eslint-disable no-use-before-define, no-prototype-builtins, no-underscore-dangle */\n\n/* global MediaStreamTrack */\n// @todo need to ensure logging for peer disconnected, and peer failures is intact\nconst get = __webpack_require__(56);\n\nconst assert = __webpack_require__(148);\n\nconst assign = __webpack_require__(7);\n\nconst cloneDeep = __webpack_require__(55);\n\nconst find = __webpack_require__(61);\n\nconst isString = __webpack_require__(275);\n\nconst pick = __webpack_require__(47);\n\nconst once = __webpack_require__(49);\n\nconst startCase = __webpack_require__(665);\n\nconst uuid = __webpack_require__(19);\n\nconst capitalize = __webpack_require__(258);\n\nconst WeakMap = __webpack_require__(194);\n\nconst _require = __webpack_require__(165),\n CancellationError = _require.CancellationError,\n Cancellation = _require.default;\n\nconst env = __webpack_require__(2);\n\nconst setEncodersActiveStateDefault = __webpack_require__(675);\n\nconst promisify = __webpack_require__(307);\n\nconst getStatsHelpers = __webpack_require__(75);\n\nconst eventNames = __webpack_require__(26);\n\nconst eventing = __webpack_require__(6);\n\nconst promiseDelay = __webpack_require__(106);\n\nconst Event = __webpack_require__(126);\n\nconst AnalyticsHelperDefault = __webpack_require__(27);\n\nconst IntervalRunnerDefault = __webpack_require__(74);\n\nconst createCleanupJobs = __webpack_require__(154);\n\nconst whitelistPublisherProperties = __webpack_require__(676);\n\nconst defaultWidgetView = __webpack_require__(164)();\n\nconst audioLevelBehaviour = __webpack_require__(677);\n\nconst blockCallsUntilComplete = __webpack_require__(678);\n\nconst unblockAudio = __webpack_require__(166);\n\nconst _require2 = __webpack_require__(23)(),\n getInputMediaDevices = _require2.getInputMediaDevices;\n\nconst createCanvasVideoTrack = __webpack_require__(679);\n\nconst isSecureContextRequired = __webpack_require__(269);\n\nconst isGetRtcStatsReportSupported = __webpack_require__(306);\n\nconst getDeviceIdFromStream = __webpack_require__(680);\n\nconst createStreamErrorMap = __webpack_require__(681);\n\nconst _require3 = __webpack_require__(290),\n setVideoContentHint = _require3.setVideoContentHint,\n getVideoContentHint = _require3.getVideoContentHint;\n\nconst getMediaModeBySourceStreamId = __webpack_require__(167);\n\nconst STOP_SENDING_MEDIA_DELAY = 3 * 1000;\nconst KEEP_SENDING_RTCP_DELAY = 30 * 1000;\n\nmodule.exports = function PublisherFactory(_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n let _ref2 = _ref,\n deps = (0, _extends2.default)({}, _ref2);\n ['processPubOptions'].forEach(key => {\n assert(deps[key], `${key} dependency must be injected into Publisher`);\n });\n const AnalyticsHelper = deps.AnalyticsHelper || AnalyticsHelperDefault;\n\n const calculateCapableSimulcastStreams = deps.calculateCapableSimulcastStreams || __webpack_require__(252);\n\n const createChromeMixin = deps.createChromeMixin || __webpack_require__(281)();\n\n const deviceHelpers = deps.deviceHelpers || __webpack_require__(23)();\n\n const EnvironmentLoader = deps.EnvironmentLoader || __webpack_require__(146);\n\n const Errors = deps.Errors || __webpack_require__(4);\n\n const Events = deps.Events || __webpack_require__(22)();\n\n const ExceptionCodes = deps.ExceptionCodes || __webpack_require__(8);\n\n const interpretPeerConnectionError = deps.interpretPeerConnectionError || __webpack_require__(162)();\n\n const IntervalRunner = deps.IntervalRunner || IntervalRunnerDefault;\n\n const logging = deps.logging || __webpack_require__(1)('Publisher');\n\n const Microphone = deps.Microphone || __webpack_require__(291)();\n\n const otError = deps.otError || __webpack_require__(11)();\n\n const OTErrorClass = deps.OTErrorClass || __webpack_require__(21);\n\n const OTHelpers = deps.OTHelpers || __webpack_require__(5);\n\n const parseIceServers = deps.parseIceServers || __webpack_require__(100).parseIceServers;\n\n const PUBLISH_MAX_DELAY = deps.PUBLISH_MAX_DELAY || __webpack_require__(267);\n\n const PublisherPeerConnection = deps.PublisherPeerConnection || __webpack_require__(295)();\n\n const PublishingState = deps.PublishingState || __webpack_require__(297)();\n\n const StreamChannel = deps.StreamChannel || __webpack_require__(149);\n\n const systemRequirements = deps.systemRequirements || __webpack_require__(152);\n\n const VideoOrientation = deps.VideoOrientation || __webpack_require__(150)();\n\n const WidgetView = deps.WidgetView || defaultWidgetView;\n const windowMock = deps.global || (typeof window !== undefined ? window : global);\n\n const createSendMethod = deps.createSendMethod || __webpack_require__(304);\n\n const setEncodersActiveState = deps.setEncodersActiveState || setEncodersActiveStateDefault;\n const processPubOptions = deps.processPubOptions;\n /**\n * The Publisher object provides the mechanism through which control of the\n * published stream is accomplished. Calling the OT.initPublisher()
method\n * creates a Publisher object.
The following code instantiates a session, and publishes an audio-video stream\n * upon connection to the session:
\n *\n *\n * var apiKey = ''; // Replace with your API key. See https://tokbox.com/account\n * var sessionID = ''; // Replace with your own session ID.\n * // See https://tokbox.com/developer/guides/create-session/.\n * var token = ''; // Replace with a generated token that has been assigned the moderator role.\n * // See https://tokbox.com/developer/guides/create-token/.\n *\n * var session = OT.initSession(apiKey, sessionID);\n * session.connect(token, function(error) {\n * if (error) {\n * console.log(error.message);\n * } else {\n * // This example assumes that a DOM element with the ID 'publisherElement' exists\n * var publisherProperties = {width: 400, height:300, name:\"Bob's stream\"};\n * publisher = OT.initPublisher('publisherElement', publisherProperties);\n * session.publish(publisher);\n * }\n * });\n *\n *\n *
This example creates a Publisher object and adds its video to a DOM element\n * with the ID publisherElement
by calling the OT.initPublisher()
\n * method. It then publishes a stream to the session by calling\n * the publish()
method of the Session object.
accessAllowed
event when\n * the user grants access. The Publisher object dispatches an accessDenied
event\n * when the user denies access.\n * @property {Element} element The HTML DOM element containing the Publisher. (Note:\n * when you set the insertDefaultUI
option to false
in the call to\n * OT.initPublisher, the element
property\n * is undefined.)\n * @property {String} id The DOM ID of the Publisher.\n * @property {Stream} stream The {@link Stream} object corresponding the stream of\n * the Publisher.\n * @property {Session} session The {@link Session} to which the Publisher belongs.\n *\n * @see OT.initPublisher\n * @see Session.publish()\n *\n * @class Publisher\n * @augments EventDispatcher\n */\n\n const Publisher = function Publisher(options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n let privateEvents = eventing({});\n const peerConnectionMetaMap = new WeakMap();\n /**\n * @typedef {Object} peerConnectionMeta\n * @property {String} remoteConnectionId The connection id of the remote side\n * @property {String} remoteSubscriberId The subscriber id of the remote side\n * @property {String} peerId The peerId of this peer connection\n * @property {String} peerConnectionId Our local identifier for this peer connection\n */\n\n /**\n * Retrieve meta information for this peer connection\n * @param {PublisherPeerConnection} peerConnection\n * @returns {peerConnectionMeta} meta data regarding this peer connection\n */\n\n const getPeerConnectionMeta = peerConnection => peerConnectionMetaMap.get(peerConnection);\n\n const setPeerConnectionMeta = (peerConnection, value) => peerConnectionMetaMap.set(peerConnection, value);\n\n eventing(this);\n const streamCleanupJobs = createCleanupJobs();\n /** @type AnalyticsHelperDefault */\n\n let analytics = new AnalyticsHelper(); // Check that the client meets the minimum requirements, if they don't the upgrade\n // flow will be triggered.\n\n if (!systemRequirements.check()) {\n systemRequirements.upgrade();\n }\n /** @type {WidgetView|null} */\n\n\n let widgetView;\n let lastRequestedStreamId;\n let webRTCStream;\n let publishStartTime;\n let microphone;\n let state;\n let rumorIceServers;\n let attemptStartTime;\n let audioDevices;\n let videoDevices;\n let selectedVideoInputDeviceId;\n let selectedAudioInputDeviceId;\n let didPublishComplete = false;\n let activeSourceStreamId;\n\n let _keepSendingRtcpToMantisTimeout;\n\n let _restartSendingRtpToMantisCalled;\n\n const hybridSessionTransitionStartTimes = {};\n const lastIceConnectionStates = {};\n\n let _streamDestroyTimeout;\n\n const STREAM_DESTROY_DELAY = 5000;\n /** @type IntervalRunnerDefault | undefined */\n\n let connectivityAttemptPinger; // previousSession mimics the publisher.session variable except it's never set to null\n // this allows analytics to refer to it in cases where we disconnect/destroy\n // and go to log analytics and publisher.session has been set to null\n\n let previousSession;\n\n const getLastSession = () => this.session || previousSession || {\n isConnected() {\n return false;\n }\n\n };\n\n const streamChannels = [];\n this.once('publishComplete', err => {\n if (!err) {\n var _this$session;\n\n didPublishComplete = true;\n activeSourceStreamId = ((_this$session = this.session) == null ? void 0 : _this$session.sessionInfo.p2pEnabled) ? 'P2P' : 'MANTIS';\n }\n });\n this.on('sourceStreamIdChanged', newSourceStreamId => {\n activeSourceStreamId = newSourceStreamId;\n });\n this.on('audioAcquisitionProblem', (_ref3) => {\n let method = _ref3.method;\n logAnalyticsEvent('publisher:audioAcquisitionProblem', 'Event', {\n didPublishComplete,\n method\n });\n });\n\n function getCommonAnalyticsFields() {\n return {\n connectionId: getLastSession().isConnected() ? getLastSession().connection.connectionId : null,\n streamId: lastRequestedStreamId,\n widgetType: 'Publisher'\n };\n }\n\n const onStreamAvailableError = plainError => {\n const names = Object.keys(Errors).map(shortName => Errors[shortName]);\n const error = otError(names.indexOf(plainError.name) > -1 ? plainError.name : Errors.MEDIA_ERR_ABORTED, plainError, ExceptionCodes.UNABLE_TO_PUBLISH);\n logging.error(`onStreamAvailableError ${error.name}: ${error.message}`);\n state.set('Failed');\n\n if (widgetView) {\n widgetView.destroy();\n widgetView = null;\n }\n\n const logOptions = {\n failureReason: 'GetUserMedia',\n failureCode: ExceptionCodes.UNABLE_TO_PUBLISH,\n failureMessage: `OT.Publisher failed to access camera/mic: ${error.message}`\n };\n logConnectivityEvent('Failure', {}, logOptions);\n OTErrorClass.handleJsException({\n error,\n errorMsg: logOptions.failureReason,\n code: logOptions.failureCode,\n target: this,\n analytics\n });\n this.trigger('publishComplete', error);\n };\n\n const onScreenSharingError = errorParam => {\n const error = cloneDeep(errorParam);\n error.code = ExceptionCodes.UNABLE_TO_PUBLISH;\n logging.error(`OT.Publisher.onScreenSharingError ${error.message}`);\n state.set('Failed');\n error.message = `Screensharing: ${error.message}`;\n this.trigger('publishComplete', error);\n logConnectivityEvent('Failure', {}, {\n failureReason: 'ScreenSharing',\n failureMessage: error.message\n });\n\n if (widgetView) {\n widgetView.destroy();\n widgetView = null;\n }\n }; // The user has clicked the 'deny' button in the allow access dialog, or it's\n // set to always deny, or the access was denied due to HTTP restrictions;\n\n\n const onAccessDenied = errorParam => {\n const error = cloneDeep(errorParam);\n let isIframe;\n\n try {\n isIframe = window.self !== window.top;\n } catch (err) {// ignore errors, (some browsers throw a security error when accessing cross domain)\n }\n\n if ((typeof window !== undefined ? window : global).location.protocol !== 'https:') {\n if (isScreenSharing) {\n /*\n * in http:// the browser will deny permission without asking the\n * user. There is also no way to tell if it was denied by the\n * user, or prevented from the browser.\n */\n error.message += ' Note: https:// is required for screen sharing.';\n } else if (isSecureContextRequired() && OTHelpers.env.hostName !== 'localhost') {\n error.message += ` Note: ${OTHelpers.env.name} requires HTTPS for camera and microphone access.`;\n }\n }\n\n if (isIframe && !isScreenSharing) {\n error.message += ' Note: Check that the iframe has the allow attribute for camera and microphone';\n }\n\n logging.error(error.message);\n state.set('Failed'); // Note: The substring 'Publisher Access Denied:' is part of our api contract for now.\n // https://tokbox.com/developer/guides/publish-stream/js/#troubleshooting\n\n error.message = `OT.Publisher Access Denied: Permission Denied: ${error.message}`;\n error.code = ExceptionCodes.UNABLE_TO_PUBLISH;\n\n if (widgetView) {\n widgetView.destroy();\n widgetView = null;\n }\n\n logConnectivityEvent('Cancel', {\n reason: 'AccessDenied'\n });\n this.trigger('publishComplete', error);\n this.dispatchEvent(new Event(eventNames.ACCESS_DENIED));\n };\n\n const userMediaError = error => {\n const isPermissionError = error.name === Errors.USER_MEDIA_ACCESS_DENIED || error.name === Errors.NOT_SUPPORTED && error.originalMessage.match(/Only secure origins/);\n\n if (isPermissionError) {\n onAccessDenied(error);\n } else if (processPubOptions.isScreenSharing) {\n onScreenSharingError(error);\n } else {\n onStreamAvailableError(error);\n }\n\n throw error;\n };\n\n const onAccessDialogOpened = () => {\n logAnalyticsEvent('accessDialog', 'Opened');\n this.dispatchEvent(new Event(eventNames.ACCESS_DIALOG_OPENED, true));\n };\n\n const onAccessDialogClosed = () => {\n logAnalyticsEvent('accessDialog', 'Closed');\n this.dispatchEvent(new Event(eventNames.ACCESS_DIALOG_CLOSED, false));\n };\n\n const guid = uuid();\n const peerConnectionsAsync = {};\n let loaded = false;\n let previousAnalyticsStats = {};\n let audioAcquisitionProblemDetected = false;\n let processedOptions = processPubOptions(options, 'OT.Publisher', () => state && state.isDestroyed());\n processedOptions.on({\n accessDialogOpened: onAccessDialogOpened,\n accessDialogClosed: onAccessDialogClosed\n });\n const _processedOptions = processedOptions,\n isScreenSharing = _processedOptions.isScreenSharing,\n isCustomAudioTrack = _processedOptions.isCustomAudioTrack,\n isCustomVideoTrack = _processedOptions.isCustomVideoTrack,\n shouldAllowAudio = _processedOptions.shouldAllowAudio,\n properties = _processedOptions.properties,\n getUserMedia = _processedOptions.getUserMedia; // start with undefined\n\n Object.defineProperty(this, 'loudness', {\n writable: false,\n value: undefined,\n configurable: true\n });\n\n function removeTrackListeners(trackListeners) {\n trackListeners.forEach(off => off());\n }\n\n const listenWithOff = (obj, event, listener) => {\n if (!obj.addEventListener) {\n // noop\n return () => {};\n }\n\n obj.addEventListener(event, listener);\n return () => obj.removeEventListener(event, listener);\n };\n\n (function handleAudioEnded() {\n const trackListeners = [];\n privateEvents.on('streamDestroy', () => removeTrackListeners(trackListeners));\n privateEvents.on('streamChange', () => {\n removeTrackListeners(trackListeners);\n const newListeners = webRTCStream.getAudioTracks().map(track => listenWithOff(track, 'ended', () => {\n // chrome audio acquisition issue\n audioAcquisitionProblemDetected = true;\n this.trigger('audioAcquisitionProblem', {\n method: 'trackEndedEvent'\n });\n }));\n trackListeners.splice(0, trackListeners.length, ...newListeners);\n });\n }).call(this);\n\n (function handleMuteTrack() {\n const trackListeners = [];\n privateEvents.on('streamDestroy', () => removeTrackListeners(trackListeners));\n privateEvents.on('streamChange', () => {\n removeTrackListeners(trackListeners); // Check if we should ignore mute/unmute events coming from the tracks.\n // Further info in shouldSkipMuteEventsFromTrack()\n\n if (!shouldSkipMuteEventsFromTrack()) {\n webRTCStream.getTracks().forEach(track => {\n if (track.addEventListener) {\n trackListeners.push(listenWithOff(track, 'mute', () => {\n refreshAudioVideoUI();\n }));\n trackListeners.push(listenWithOff(track, 'unmute', () => {\n refreshAudioVideoUI();\n }));\n }\n });\n }\n });\n })(); // / Private Methods\n\n\n const shouldSkipMuteEventsFromTrack = () => {\n // Screensharing in Chrome sometimes triggers 'mute' and 'unmute'\n // repeatedly for no reason OPENTOK-37818\n // https://bugs.chromium.org/p/chromium/issues/detail?id=931033\n if (isScreenSharing) {\n return true;\n } // On Chrome when the custom video is static, we are receiving a mute event.\n // If videoContentHint suggests video could be static, i.e. text or detail\n // we will ignore the mute events coming from the video track.\n // Further info: OPENTOK-44289\n\n\n const staticContentHints = ['text', 'detail'];\n const isStaticContent = staticContentHints.includes(properties.videoContentHint);\n return isCustomVideoTrack && isStaticContent;\n };\n\n const logAnalyticsEvent = options.logAnalyticsEvent || ((action, variation, payload, logOptions, throttle) => {\n let stats = assign({\n action,\n variation,\n payload\n }, getCommonAnalyticsFields(), logOptions);\n\n if (variation === 'Failure') {\n stats = assign(previousAnalyticsStats, stats);\n }\n\n previousAnalyticsStats = pick(stats, 'sessionId', 'connectionId', 'partnerId');\n analytics.logEvent(stats, throttle);\n });\n\n const logConnectivityEvent = function logConnectivityEvent(variation, payload, logOptions) {\n if (payload === void 0) {\n payload = {};\n }\n\n if (logOptions === void 0) {\n logOptions = {};\n }\n\n if (logOptions.failureReason === 'Non-fatal') {\n // we don't want to log because it was a non-fatal failure\n return;\n }\n\n if (variation === 'Attempt') {\n attemptStartTime = new Date().getTime();\n\n if (connectivityAttemptPinger) {\n connectivityAttemptPinger.stop();\n logging.error('_connectivityAttemptPinger should have been cleaned up');\n }\n\n connectivityAttemptPinger = new IntervalRunner(() => {\n logAnalyticsEvent('Publish', 'Attempting', payload, (0, _extends2.default)({}, getCommonAnalyticsFields(), logOptions));\n }, 1 / 5, 6);\n }\n\n if (variation === 'Failure' || variation === 'Success' || variation === 'Cancel') {\n if (connectivityAttemptPinger) {\n connectivityAttemptPinger.stop();\n connectivityAttemptPinger = undefined;\n } else {\n logging.warn(`Received connectivity event: \"${variation}\" without \"Attempt\"`);\n }\n\n logAnalyticsEvent('Publish', variation, (0, _extends2.default)({\n videoInputDevices: videoDevices,\n audioInputDevices: audioDevices,\n videoInputDeviceCount: videoDevices ? videoDevices.length : undefined,\n audioInputDeviceCount: audioDevices ? audioDevices.length : undefined,\n selectedVideoInputDeviceId,\n selectedAudioInputDeviceId\n }, payload), (0, _extends2.default)({\n attemptDuration: new Date().getTime() - attemptStartTime\n }, logOptions));\n } else {\n logAnalyticsEvent('Publish', variation, payload, logOptions);\n }\n };\n\n const logRepublish = (variation, payload) => {\n logAnalyticsEvent('ICERestart', variation, payload);\n };\n\n const logHybridSessionTransition = (action, variation, payload) => {\n if (variation === 'Attempt') {\n hybridSessionTransitionStartTimes[action] = new Date().getTime();\n logAnalyticsEvent(action, variation, payload);\n } else if (variation === 'Failure' || variation === 'Success') {\n logAnalyticsEvent(action, variation, payload, {\n attemptDuration: new Date().getTime() - hybridSessionTransitionStartTimes[action]\n });\n }\n };\n\n const logRoutedToRelayedTransition = function logRoutedToRelayedTransition(variation, payload) {\n if (payload === void 0) {\n payload = {};\n }\n\n logHybridSessionTransition('RoutedToRelayedTransition', variation, payload);\n };\n\n const logRelayedToRoutedTransition = function logRelayedToRoutedTransition(variation, payload) {\n if (payload === void 0) {\n payload = {};\n }\n\n logHybridSessionTransition('RelayedToRoutedTransition', variation, payload);\n }; // logs an analytics event for getStats on the first call\n\n\n const notifyGetStatsCalled = once(() => {\n logAnalyticsEvent('GetStats', 'Called');\n });\n const notifyGetRtcStatsCalled = once(() => {\n logAnalyticsEvent('GetRtcStatsReport', 'Called');\n });\n\n const recordQOS = (_ref4) => {\n let parsedStats = _ref4.parsedStats,\n simulcastEnabled = _ref4.simulcastEnabled,\n remoteConnectionId = _ref4.remoteConnectionId,\n peerId = _ref4.peerId,\n sourceStreamId = _ref4.sourceStreamId;\n const QoSBlob = {\n peerId,\n widgetType: 'Publisher',\n connectionId: this.session && this.session.isConnected() ? this.session.connection.connectionId : null,\n streamId: lastRequestedStreamId,\n width: widgetView.width,\n height: widgetView.height,\n audioTrack: webRTCStream && webRTCStream.getAudioTracks().length > 0,\n hasAudio: hasAudio(),\n publishAudio: properties.publishAudio,\n videoTrack: webRTCStream && webRTCStream.getVideoTracks().length > 0,\n hasVideo: hasVideo(),\n publishVideo: properties.publishVideo,\n audioSource: isCustomAudioTrack ? 'Custom' : undefined,\n duration: publishStartTime ? Math.round((new Date().getTime() - publishStartTime.getTime()) / 1000) : 0,\n remoteConnectionId,\n scalableVideo: simulcastEnabled,\n sourceStreamId: getMediaModeBySourceStreamId(sourceStreamId)\n };\n let videoSource = isScreenSharing && isCustomVideoTrack && 'Screen' || isScreenSharing && options.videoSource || isCustomVideoTrack && 'Custom' || properties.constraints.video && 'Camera' || null; // Normalize videoSource so that \"application\" becomes \"Application\"\n\n if (isString(videoSource)) {\n videoSource = startCase(videoSource);\n }\n\n QoSBlob.videoSource = videoSource;\n const videoDimensions = {\n videoWidth: this.videoWidth(),\n videoHeight: this.videoHeight()\n };\n const parsedAndQosStats = assign({}, QoSBlob, parsedStats, videoDimensions);\n analytics.logQOS(parsedAndQosStats);\n this.trigger('qos', parsedAndQosStats);\n }; // Returns the video dimensions. Which could either be the ones that\n // the developer specific in the videoDimensions property, or just\n // whatever the video element reports.\n //\n // If all else fails then we'll just default to 640x480\n //\n\n\n const getVideoDimensions = () => {\n let streamWidth;\n let streamHeight;\n const video = widgetView && widgetView.video(); // We set the streamWidth and streamHeight to be the minimum of the requested\n // resolution and the actual resolution.\n\n if (properties.videoDimensions) {\n streamWidth = Math.min(properties.videoDimensions.width, video && video.videoWidth() || 640);\n streamHeight = Math.min(properties.videoDimensions.height, video && video.videoHeight() || 480);\n } else {\n streamWidth = video && video.videoWidth() || 640;\n streamHeight = video && video.videoHeight() || 480;\n }\n\n return {\n width: streamWidth,\n height: streamHeight\n };\n }; // / Private Events\n\n\n const stateChangeFailed = changeFailed => {\n logging.error('OT.Publisher State Change Failed: ', changeFailed.message);\n logging.debug(changeFailed);\n };\n\n const onLoaded = () => {\n if (state.isDestroyed()) {\n // The publisher was destroyed before loading finished\n if (widgetView) {\n widgetView.destroyVideo();\n }\n\n return;\n }\n\n logging.debug('OT.Publisher.onLoaded; resolution:', `${this.videoWidth()}x${this.videoHeight()}`);\n state.set('MediaBound'); // Try unblock audio on all subscribers\n\n unblockAudio().catch(logging.error); // If we have a session and we haven't created the stream yet then\n // wait until that is complete before hiding the loading spinner\n\n widgetView.loading(this.session ? !this.stream : false);\n loaded = true;\n };\n\n const onLoadFailure = plainError => {\n // eslint-disable-next-line no-param-reassign\n const err = otError(Errors.CONNECT_FAILED, plainError, ExceptionCodes.P2P_CONNECTION_FAILED);\n err.message = `OT.Publisher PeerConnection Error: ${err.message}`;\n logConnectivityEvent('Failure', {}, {\n failureReason: 'PeerConnectionError',\n failureCode: err.code,\n failureMessage: err.message\n });\n state.set('Failed');\n this.trigger('publishComplete', err);\n OTErrorClass.handleJsException({\n error: err,\n target: this,\n analytics\n });\n }; // Clean up our LocalMediaStream\n\n\n const cleanupLocalStream = () => {\n if (webRTCStream) {\n privateEvents.emit('streamDestroy'); // Stop revokes our access cam and mic access for this instance\n // of localMediaStream.\n\n if (windowMock.MediaStreamTrack && windowMock.MediaStreamTrack.prototype.stop) {\n // Newer spec\n webRTCStream.getTracks().forEach(track => track.stop());\n } else {\n // Older spec\n webRTCStream.stop();\n }\n }\n };\n\n const iOSRotatedVideoFeedBugHandler = () => {\n // In iOS 15+, when the page is put on background and then restored, the publisher video feed\n // is getting rotated. A workaround is to rebind the srcObject.\n const isBuggediOS = env.isiOS && env.iOSVersion >= 15;\n const videoTrack = webRTCStream.getVideoTracks()[0];\n\n if (!isBuggediOS || !videoTrack) {\n return;\n }\n\n const visibilityHandler = () => {\n if (!document.hidden && widgetView) {\n widgetView.rebindSrcObject();\n }\n };\n\n document.addEventListener('visibilitychange', visibilityHandler);\n };\n\n const iOSBuggedLocalAudioTrackHandler = () => {\n // see https://bugs.webkit.org/show_bug.cgi?id=208209 & https://bugs.webkit.org/show_bug.cgi?id=208516\n // in iOS 13.3 and later, the audiotrack sometimes fails to unmute after receivng a phone call\n // this work around relies on the visibility of the page to see if the call is over\n const isBuggediOS = env.isiOS && env.iOSVersion >= 13.3;\n const audioTrack = webRTCStream.getAudioTracks()[0];\n\n if (isBuggediOS && audioTrack) {\n audioTrack.onmute = () => handleBuggedMutedLocalAudioTrack(audioTrack); // When iOS uses compact UI for phone calls, the visibility of the page is not relevant.\n // As a workaround for this specific case, when the track is back to unmuted\n // we reset the audio source. See OPENTOK-42233.\n\n\n audioTrack.onunmute = () => handleBuggedUnMutedLocalAudioTrack(audioTrack);\n }\n };\n\n const bindVideo = /*#__PURE__*/function () {\n var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var videoContainerOptions;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n videoContainerOptions = {\n muted: true\n };\n\n if (widgetView) {\n _context.next = 3;\n break;\n }\n\n throw new Error('Cannot bind video after widget view has been destroyed');\n\n case 3:\n return _context.abrupt(\"return\", widgetView.bindVideo(webRTCStream, videoContainerOptions));\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n\n return function bindVideo() {\n return _ref5.apply(this, arguments);\n };\n }();\n\n const onStreamAvailable = webOTStream => {\n logging.debug('OT.Publisher.onStreamAvailable');\n state.set('BindingMedia');\n\n if (properties.videoContentHint !== undefined) {\n setVideoContentHint(webOTStream, properties.videoContentHint);\n }\n\n cleanupLocalStream();\n webRTCStream = webOTStream;\n privateEvents.emit('streamChange');\n iOSBuggedLocalAudioTrackHandler();\n iOSRotatedVideoFeedBugHandler();\n\n const findSelectedDeviceId = (tracks, devices) => {\n // Store the device labels to log later\n let selectedDeviceId;\n tracks.forEach(track => {\n if (track.deviceId) {\n selectedDeviceId = track.deviceId.toString();\n } else if (track.label && devices) {\n const selectedDevice = find(devices, el => el.label === track.label);\n\n if (selectedDevice) {\n selectedDeviceId = selectedDevice.deviceId;\n }\n }\n });\n return selectedDeviceId;\n };\n\n selectedVideoInputDeviceId = findSelectedDeviceId(webRTCStream.getVideoTracks(), videoDevices);\n selectedAudioInputDeviceId = findSelectedDeviceId(webRTCStream.getAudioTracks(), audioDevices);\n microphone = new Microphone(webRTCStream, !properties.publishAudio);\n updateVideo();\n updateAudio();\n this.accessAllowed = true;\n this.dispatchEvent(new Event(eventNames.ACCESS_ALLOWED, false));\n };\n\n const onPublishingTimeout = session => {\n logging.error('OT.Publisher.onPublishingTimeout');\n let errorName;\n let errorMessage;\n\n if (audioAcquisitionProblemDetected) {\n errorName = Errors.CHROME_MICROPHONE_ACQUISITION_ERROR;\n errorMessage = 'Unable to publish because your browser failed to get access to your ' + 'microphone. You may need to fully quit and restart your browser to get it to work. ' + 'See https://bugs.chromium.org/p/webrtc/issues/detail?id=4799 for more details.';\n } else {\n errorName = Errors.TIMEOUT;\n errorMessage = 'Could not publish in a reasonable amount of time';\n }\n\n const logOptions = {\n failureReason: 'ICEWorkflow',\n failureCode: ExceptionCodes.UNABLE_TO_PUBLISH,\n failureMessage: 'OT.Publisher failed to publish in a reasonable amount of time (timeout)'\n };\n logConnectivityEvent('Failure', {}, logOptions);\n OTErrorClass.handleJsException({\n errorMsg: logOptions.failureReason,\n code: logOptions.failureCode,\n target: this,\n analytics\n });\n\n if (session.isConnected() && this.streamId) {\n session._.streamDestroy(this.streamId);\n } // Disconnect immediately, rather than wait for the WebSocket to\n // reply to our destroyStream message.\n\n\n this.disconnect();\n this.session = null; // We're back to being a stand-alone publisher again.\n\n if (!state.isDestroyed()) {\n state.set('MediaBound');\n }\n\n this.trigger('publishComplete', otError(errorName, new Error(errorMessage), ExceptionCodes.UNABLE_TO_PUBLISH));\n };\n\n const onVideoError = plainErr => {\n // eslint-disable-next-line no-param-reassign\n const err = otError(Errors.MEDIA_ERR_DECODE, plainErr, ExceptionCodes.UNABLE_TO_PUBLISH);\n err.message = `OT.Publisher while playing stream: ${err.message}`;\n logging.error('OT.Publisher.onVideoError:', err);\n logAnalyticsEvent('stream', null, {\n reason: err.message\n }); // Check if attempting to publish *before* overwriting the state\n\n const isAttemptingToPublish = state.isAttemptingToPublish();\n state.set('Failed');\n\n if (isAttemptingToPublish) {\n this.trigger('publishComplete', err);\n } else {\n // FIXME: This emits a string instead of an error here for backwards compatibility despite\n // being undocumented. When possible we should remove access to this and other undocumented\n // events, and restore emitting actual errors here.\n this.trigger('error', err.message);\n }\n\n OTErrorClass.handleJsException({\n error: err,\n target: this,\n analytics\n });\n };\n\n this._removePeerConnection = peerConnection => {\n const _getPeerConnectionMet = getPeerConnectionMeta(peerConnection),\n peerConnectionId = _getPeerConnectionMet.peerConnectionId;\n\n delete peerConnectionsAsync[peerConnectionId];\n peerConnection.destroy();\n };\n\n this._removeSubscriber = subscriberId => {\n const isAdaptiveEnabled = this.session.sessionInfo.isAdaptiveEnabled;\n\n if (isAdaptiveEnabled && activeSourceStreamId === 'P2P') {\n this._.startRelayedToRoutedTransition();\n }\n\n getPeerConnectionsBySubscriber(subscriberId).then(peerConnections => {\n peerConnections.forEach(pc => this._removePeerConnection(pc));\n });\n };\n\n const onPeerDisconnected = peerConnection => {\n const _getPeerConnectionMet2 = getPeerConnectionMeta(peerConnection),\n remoteSubscriberId = _getPeerConnectionMet2.remoteSubscriberId,\n peerConnectionId = _getPeerConnectionMet2.peerConnectionId;\n\n logging.debug('Subscriber has been disconnected from the Publisher\\'s PeerConnection');\n logAnalyticsEvent('disconnect', 'PeerConnection', {\n subscriberConnection: peerConnectionId\n });\n\n this._removeSubscriber(remoteSubscriberId);\n }; // @todo find out if we get onPeerDisconnected when a failure occurs.\n\n\n const onPeerConnectionFailure = /*#__PURE__*/function () {\n var _ref7 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(peerConnection, _ref6) {\n var reason, prefix, sessionInfo, _ref8, _ref8$remoteConnectio, remoteConnectionId, peerConnectionId, error, payload, logOptions, pc;\n\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n reason = _ref6.reason, prefix = _ref6.prefix;\n sessionInfo = _this.session && _this.session.sessionInfo;\n\n if (!(prefix === 'ICEWorkflow' && sessionInfo && sessionInfo.reconnection && loaded)) {\n _context2.next = 5;\n break;\n }\n\n // @todo not sure this is the right thing to do\n logging.debug('Ignoring peer connection failure due to possibility of reconnection.');\n return _context2.abrupt(\"return\");\n\n case 5:\n _ref8 = getPeerConnectionMeta(peerConnection) || {}, _ref8$remoteConnectio = _ref8.remoteConnectionId, remoteConnectionId = _ref8$remoteConnectio === void 0 ? '(not found)' : _ref8$remoteConnectio, peerConnectionId = _ref8.peerConnectionId;\n error = interpretPeerConnectionError(undefined, reason, prefix, remoteConnectionId, 'Publisher');\n payload = {\n hasRelayCandidates: peerConnection && peerConnection.hasRelayCandidates()\n };\n logOptions = {\n failureReason: prefix || 'PeerConnectionError',\n failureCode: error.code,\n failureMessage: error.message\n };\n\n if (state.isPublishing()) {\n // We're already publishing so this is a Non-fatal failure, must be p2p and one of our\n // peerconnections failed\n logOptions.reason = 'Non-fatal';\n } else {\n _this.trigger('publishComplete', error);\n }\n\n logConnectivityEvent('Failure', payload, logOptions);\n OTErrorClass.handleJsException({\n errorMsg: `OT.Publisher PeerConnection Error: ${reason}`,\n code: error.code,\n target: _this,\n analytics\n });\n _context2.next = 14;\n return peerConnectionsAsync[peerConnectionId];\n\n case 14:\n pc = _context2.sent;\n pc.destroy();\n delete peerConnectionsAsync[peerConnectionId];\n\n case 17:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n\n return function onPeerConnectionFailure(_x, _x2) {\n return _ref7.apply(this, arguments);\n };\n }();\n\n const isRoutedToRelayedTransitionComplete = peerConnection => {\n const isAdaptiveEnabled = this.session.sessionInfo.isAdaptiveEnabled;\n return isAdaptiveEnabled && peerConnection.getSourceStreamId() === 'P2P';\n };\n\n const onIceRestartSuccess = peerConnection => {\n const _getPeerConnectionMet3 = getPeerConnectionMeta(peerConnection),\n remoteConnectionId = _getPeerConnectionMet3.remoteConnectionId;\n\n logRepublish('Success', {\n remoteConnectionId\n });\n };\n\n const onIceRestartFailure = peerConnection => {\n const _getPeerConnectionMet4 = getPeerConnectionMeta(peerConnection),\n remoteConnectionId = _getPeerConnectionMet4.remoteConnectionId;\n\n logRepublish('Failure', {\n reason: 'ICEWorkflow',\n message: 'OT.Publisher PeerConnection Error: ' + 'The stream was unable to connect due to a network error.' + ' Make sure your connection isn\\'t blocked by a firewall.',\n remoteConnectionId\n });\n };\n\n const onIceConnectionStateChange = /*#__PURE__*/function () {\n var _ref9 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(newState, peerConnection) {\n var isAdaptiveEnabled, sourceStreamId, isMantisConnected, isP2PConnected, isSocketReconnecting, socket, isSocketConnected;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n isAdaptiveEnabled = _this.session.sessionInfo.isAdaptiveEnabled;\n sourceStreamId = peerConnection.getSourceStreamId();\n lastIceConnectionStates[sourceStreamId] = newState;\n\n if (newState === 'disconnected') {\n setTimeout(() => {\n const isSocketReconnecting = _this.session._.isSocketReconnecting;\n\n const socket = _this.session._.getSocket();\n\n const isSocketConnected = socket.is('connected') && !isSocketReconnecting();\n\n if (lastIceConnectionStates[sourceStreamId] === 'disconnected' && isSocketConnected) {\n const _getPeerConnectionMet5 = getPeerConnectionMeta(peerConnection),\n remoteConnectionId = _getPeerConnectionMet5.remoteConnectionId;\n\n logRepublish('Attempt', {\n remoteConnectionId\n });\n peerConnection.iceRestart();\n }\n }, 2000);\n }\n\n if (!(newState === 'connected')) {\n _context3.next = 14;\n break;\n }\n\n clearTimeout(_streamDestroyTimeout);\n\n if (!isAdaptiveEnabled) {\n _context3.next = 14;\n break;\n }\n\n _context3.next = 9;\n return getMantisPeerConnection();\n\n case 9:\n isMantisConnected = _context3.sent.iceConnectionStateIsConnected();\n _context3.next = 12;\n return getP2pPeerConnection();\n\n case 12:\n isP2PConnected = _context3.sent.iceConnectionStateIsConnected();\n\n if (isMantisConnected && isP2PConnected) {\n _stopSendingRtpToMantis();\n }\n\n case 14:\n if (!(newState === 'failed')) {\n _context3.next = 21;\n break;\n }\n\n isSocketReconnecting = _this.session._.isSocketReconnecting;\n socket = _this.session._.getSocket();\n isSocketConnected = socket.is('connected') && !isSocketReconnecting();\n\n if (isSocketConnected) {\n _context3.next = 20;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 20:\n // If PC has failed and the socket is connected we will either transition to Mantis\n // if adaptive and P2P leg or destroy the publisher in all other cases\n // Instead of destroying the publisher straight away, we will destroy it after 5 secs\n // in order to avoid a race condition where we just got the socket connected at the\n // same moment PC transition to failed\n if (isAdaptiveEnabled && sourceStreamId === activeSourceStreamId && sourceStreamId === 'P2P') {\n _this._.startRelayedToRoutedTransition();\n } else {\n _streamDestroyTimeout = setTimeout(() => {\n _this.session._.streamDestroy(_this.streamId, sourceStreamId);\n }, STREAM_DESTROY_DELAY);\n }\n\n case 21:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n\n return function onIceConnectionStateChange(_x3, _x4) {\n return _ref9.apply(this, arguments);\n };\n }();\n\n const onPeerConnected = peerConnection => {\n if (isRoutedToRelayedTransitionComplete(peerConnection)) {\n logRoutedToRelayedTransition('Success');\n }\n }; // / Private Helpers\n // Assigns +stream+ to this publisher. The publisher listens for a bunch of events on the stream\n // so it can respond to changes.\n\n\n const assignStream = stream => {\n // the Publisher only expects a stream in the PublishingToSession state\n if (state.current !== 'PublishingToSession') {\n throw new Error('assignStream called when publisher is not successfully publishing');\n }\n\n streamCleanupJobs.releaseAll();\n this.stream = stream;\n this.stream.on('destroyed', this.disconnect, this);\n streamCleanupJobs.add(() => {\n if (this.stream) {\n this.stream.off('destroyed', this.disconnect, this);\n }\n });\n state.set('Publishing');\n widgetView.loading(!loaded);\n publishStartTime = new Date();\n this.dispatchEvent(new Events.StreamEvent('streamCreated', stream, null, false));\n logConnectivityEvent('Success');\n this.trigger('publishComplete', null, this);\n };\n /**\n * Provides the peer connection associated to the given peerConnectionId.\n *\n * It there is no PC associated it creates a new one and stores it so that the next call returns\n * the same instance.\n *\n * @param {Object} configuration\n * @param {string} configuration.peerConnectionId\n * @returns {Promisevalue
is true
; stops publishing audio\n * (if it is currently being published) when the value
is false
.\n *\n * @param {Boolean} value Whether to start publishing audio (true
)\n * or not (false
).\n *\n * @see OT.initPublisher()\n * @see Stream.hasAudio\n * @see StreamPropertyChangedEvent\n * @method #publishAudio\n * @memberOf Publisher\n */\n\n\n this.publishAudio = value => {\n logAnalyticsEvent('publishAudio', 'Attempt', {\n publishAudio: value\n });\n properties.publishAudio = value;\n\n try {\n updateAudio();\n logAnalyticsEvent('publishAudio', 'Success', {\n publishAudio: value\n });\n } catch (e) {\n logAnalyticsEvent('publishAudio', 'Failure', {\n message: e.message\n });\n }\n\n return this;\n };\n\n let updateVideoSenderParametersSentinel; // keeps track of if the client has called mediaStreamTrack.stop(), so that we don't restart\n // the camera if they then call publishVideo(true)\n\n let isTrackManuallyStopped = false;\n\n const updateVideo = () => {\n const shouldSendVideo = haveWorkingTracks('video') && properties.publishVideo;\n\n if (env.name === 'Chrome' && env.version >= 69) {\n (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n var executionSentinel, peerConnections;\n return _regenerator.default.wrap(function _callee11$(_context11) {\n while (1) switch (_context11.prev = _context11.next) {\n case 0:\n if (updateVideoSenderParametersSentinel) {\n updateVideoSenderParametersSentinel.cancel();\n }\n\n updateVideoSenderParametersSentinel = new Cancellation();\n executionSentinel = updateVideoSenderParametersSentinel;\n _context11.next = 5;\n return getAllPeerConnections();\n\n case 5:\n peerConnections = _context11.sent;\n\n if (!executionSentinel.isCanceled()) {\n // only proceed if we weren't canceled during the async operation above\n peerConnections.forEach(peerConnection => {\n setEncodersActiveState(peerConnection, shouldSendVideo);\n });\n }\n\n case 7:\n case \"end\":\n return _context11.stop();\n }\n }, _callee11);\n }))();\n }\n\n if (webRTCStream) {\n webRTCStream.getVideoTracks().forEach(track => {\n track.enabled = shouldSendVideo; // eslint-disable-line no-param-reassign\n\n if (track.isCreatedCanvas) {\n // eslint-disable-next-line no-param-reassign\n track.enabled = false;\n }\n });\n }\n\n refreshAudioVideoUI();\n };\n\n let currentDeviceId;\n this._toggleVideo = blockCallsUntilComplete( /*#__PURE__*/function () {\n var _ref23 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(shouldHaveVideo) {\n var oldTrack, _properties$videoDime, videoDimensions, canvasTrack, vidDevices, newTrack;\n\n return _regenerator.default.wrap(function _callee12$(_context12) {\n while (1) switch (_context12.prev = _context12.next) {\n case 0:\n if (!(isScreenSharing || isCustomVideoTrack || isTrackManuallyStopped)) {\n _context12.next = 2;\n break;\n }\n\n return _context12.abrupt(\"return\");\n\n case 2:\n oldTrack = getCurrentTrack();\n\n if (oldTrack) {\n _context12.next = 5;\n break;\n }\n\n throw otError(Errors.NOT_SUPPORTED, new Error('Publisher._toggleVideo cannot toggleVideo when you have no video source.'));\n\n case 5:\n if (!(oldTrack.readyState === 'ended')) {\n _context12.next = 8;\n break;\n }\n\n isTrackManuallyStopped = true;\n return _context12.abrupt(\"return\");\n\n case 8:\n // create a canvas and grab the track from it to pass into video\n // resize the canvas so that we don't emit a 'streamPropertyChanged' event\n _properties$videoDime = properties.videoDimensions, videoDimensions = _properties$videoDime === void 0 ? getVideoDimensions() : _properties$videoDime;\n _context12.prev = 9;\n canvasTrack = createCanvasVideoTrack(videoDimensions);\n _context12.next = 16;\n break;\n\n case 13:\n _context12.prev = 13;\n _context12.t0 = _context12[\"catch\"](9);\n return _context12.abrupt(\"return\");\n\n case 16:\n _context12.next = 18;\n return getVideoDevices();\n\n case 18:\n vidDevices = _context12.sent;\n\n if (shouldHaveVideo && OTHelpers.env.isAndroid && OTHelpers.env.isChrome) {\n // On Chrome on Android you need to stop the previous video track OPENTOK-37206\n if (oldTrack && oldTrack.stop) {\n oldTrack.stop();\n }\n } // store the current deviceId to reacquire the video later\n\n\n if (!shouldHaveVideo) {\n currentDeviceId = vidDevices.find(device => device.label === oldTrack.label).deviceId;\n }\n\n if (!(currentDeviceId && vidDevices.findIndex(device => device.deviceId === currentDeviceId) === -1)) {\n _context12.next = 23;\n break;\n }\n\n throw otError(Errors.NO_DEVICES_FOUND, new Error('Previous device no longer available - deviceId not found'));\n\n case 23:\n privateEvents.emit('streamDestroy');\n\n if (!shouldHaveVideo) {\n _context12.next = 30;\n break;\n }\n\n _context12.next = 27;\n return getTrackFromDeviceId(currentDeviceId);\n\n case 27:\n _context12.t1 = _context12.sent;\n _context12.next = 31;\n break;\n\n case 30:\n _context12.t1 = canvasTrack;\n\n case 31:\n newTrack = _context12.t1;\n _context12.next = 34;\n return replaceTrackAndUpdate(oldTrack, newTrack);\n\n case 34:\n case \"end\":\n return _context12.stop();\n }\n }, _callee12, null, [[9, 13]]);\n }));\n\n return function (_x9) {\n return _ref23.apply(this, arguments);\n };\n }());\n /**\n * Starts publishing video (if it is currently not being published)\n * when the value
is true
; stops publishing video\n * (if it is currently being published) when the value
is false
.\n *\n * @param {Boolean} value Whether to start publishing video (true
)\n * or not (false
).\n *\n * @see OT.initPublisher()\n * @see Stream.hasVideo\n * @see StreamPropertyChangedEvent\n * @method #publishVideo\n * @memberOf Publisher\n */\n\n this.publishVideo = value => {\n logAnalyticsEvent('publishVideo', 'Attempt', {\n publishVideo: value\n });\n properties.publishVideo = value;\n\n try {\n this._toggleVideo(properties.publishVideo);\n\n updateVideo();\n logAnalyticsEvent('publishVideo', 'Success', {\n publishVideo: value\n });\n } catch (e) {\n logAnalyticsEvent('publishVideo', 'Failure', {\n message: e.message\n });\n }\n\n return this;\n };\n /**\n * Sets the content hint for the video track of the publisher's stream. This allows browsers\n * to use encoding or processing methods more appropriate to the type of content.\n * \n * Use this method to change the video content hit dynamically. Set the initial video content\n * hit by setting the videoContentHint
property of the options passed into the\n * OT.initPublisher() method.\n *
\n * Chrome 60+, Safari 12.1+, Edge 79+, and Opera 47+ support video content hints.\n *\n * @param {String} videoContentHint You can set this to one of the following values:\n *
\n *
\"\"
— No hint is provided.\n * \"motion\"
— The track should be treated as if it contains video\n * where motion is important.\n * \"detail\"
— The track should be treated as if video details\n * are extra important.\n * \"text\"
— The track should be treated as if text details are\n * extra important.\n * \"\"
,\n * \"motion\"
, \"detail
, or \"text\"
.\n * @see Publisher.setVideoContentHint()\n * @method #getVideoContentHint\n * @memberOf Publisher\n */\n\n\n this.getVideoContentHint = () => getVideoContentHint(webRTCStream);\n /**\n * Deletes the Publisher object and removes it from the HTML DOM.\n * \n * The Publisher object dispatches a destroyed
event when the DOM\n * element is removed.\n *
You can use the string as the value for a data URL scheme passed to the src parameter of\n * an image file, as in the following:
\n *\n *\n * var imgData = publisher.getImgData();\n *\n * var img = document.createElement(\"img\");\n * img.setAttribute(\"src\", \"data:image/png;base64,\" + imgData);\n * var imgWin = window.open(\"about:blank\", \"Screenshot\");\n * imgWin.document.write(\"<body></body>\");\n * imgWin.document.body.appendChild(img);\n *\n *\n * @method #getImgData\n * @memberOf Publisher\n * @return {String} The base-64 encoded string. Returns an empty string if there is no video.\n */\n\n\n this.getImgData = function () {\n if (!loaded) {\n logging.error('OT.Publisher.getImgData: Cannot getImgData before the Publisher is publishing.');\n return null;\n }\n\n const video = widgetView && widgetView.video();\n return video ? video.imgData() : null;\n };\n\n const setNewStream = newStream => {\n cleanupLocalStream();\n webRTCStream = newStream;\n privateEvents.emit('streamChange');\n microphone = new Microphone(webRTCStream, !properties.publishAudio);\n };\n\n const defaultReplaceTrackLogic = peerConnection => {\n peerConnection.getSenders().forEach(sender => {\n if (sender.track.kind === 'audio' && webRTCStream.getAudioTracks().length) {\n return sender.replaceTrack(webRTCStream.getAudioTracks()[0]);\n } else if (sender.track.kind === 'video' && webRTCStream.getVideoTracks().length) {\n return sender.replaceTrack(webRTCStream.getVideoTracks()[0]);\n }\n\n return undefined;\n });\n };\n\n const replaceTracks = function replaceTracks(replaceTrackLogic) {\n if (replaceTrackLogic === void 0) {\n replaceTrackLogic = defaultReplaceTrackLogic;\n }\n\n return getAllPeerConnections().then(peerConnections => {\n const tasks = [];\n peerConnections.map(replaceTrackLogic);\n return Promise.all(tasks);\n });\n };\n\n {\n let videoIndex = 0;\n /**\n * Switches the video input source used by the publisher to the next one in the list\n * of available devices.\n *
\n * This will result in an error (the Promise returned by the method is rejected) in the\n * following conditions:\n *
videoSource
\n * option of the OT.initPublisher() method was\n * set to null
, false
, a MediaStreamTrack object, or\n * \"screen\"
).\n * deviceId
property set to the device ID of the camera used:\n *\n * \n * publisher.cycleVideo().then(console.log);\n * // Output: {deviceId: \"967a86e52...\"}\n *\n *\n * If there is an error, the promise is rejected.\n *\n * @see Publisher.setVideoSource()\n */\n\n this.cycleVideo = blockCallsUntilComplete( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {\n var oldTrack, vidDevices, hasOtherVideoDevices, newVideoDevice, deviceId;\n return _regenerator.default.wrap(function _callee13$(_context13) {\n while (1) switch (_context13.prev = _context13.next) {\n case 0:\n if (!(OTHelpers.env.isLegacyEdge || !windowMock.RTCRtpSender || typeof windowMock.RTCRtpSender.prototype.replaceTrack !== 'function')) {\n _context13.next = 2;\n break;\n }\n\n throw otError(Errors.UNSUPPORTED_BROWSER, new Error('Publisher#cycleVideo is not supported in your browser.'), ExceptionCodes.UNABLE_TO_PUBLISH);\n\n case 2:\n if (!(isCustomVideoTrack || isScreenSharing)) {\n _context13.next = 4;\n break;\n }\n\n throw otError(Errors.NOT_SUPPORTED, new Error('Publisher#cycleVideo: The publisher is not using a camera video source'));\n\n case 4:\n oldTrack = getCurrentTrack();\n\n if (oldTrack) {\n _context13.next = 7;\n break;\n }\n\n throw otError(Errors.NOT_SUPPORTED, new Error('Publisher#cycleVideo cannot cycleVideo when you have no video source.'));\n\n case 7:\n videoIndex += 1;\n _context13.next = 10;\n return getVideoDevices();\n\n case 10:\n vidDevices = _context13.sent;\n // different devices return the cameras in different orders\n hasOtherVideoDevices = vidDevices.filter(device => device.label !== oldTrack.label).length > 0;\n\n if (hasOtherVideoDevices) {\n while (vidDevices[videoIndex % vidDevices.length].label === oldTrack.label) {\n videoIndex += 1;\n }\n }\n\n privateEvents.emit('streamDestroy');\n newVideoDevice = vidDevices[videoIndex % vidDevices.length];\n deviceId = newVideoDevice.deviceId;\n _context13.next = 18;\n return attemptToSetVideoTrack(deviceId);\n\n case 18:\n return _context13.abrupt(\"return\", {\n deviceId: currentDeviceId\n });\n\n case 19:\n case \"end\":\n return _context13.stop();\n }\n }, _callee13);\n })));\n }\n\n const replaceTrackAndUpdate = /*#__PURE__*/function () {\n var _ref25 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(oldTrack, newTrack) {\n var pcs, video;\n return _regenerator.default.wrap(function _callee14$(_context14) {\n while (1) switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return getAllPeerConnections();\n\n case 2:\n pcs = _context14.sent;\n _context14.next = 5;\n return Promise.all(pcs.map(pc => pc.findAndReplaceTrack(oldTrack, newTrack)));\n\n case 5:\n webRTCStream.addTrack(newTrack);\n webRTCStream.removeTrack(oldTrack);\n\n if (oldTrack && oldTrack.stop) {\n oldTrack.stop();\n }\n\n if (OTHelpers.env.name === 'Firefox' || OTHelpers.env.name === 'Safari') {\n // Local video freezes on old stream without this for some reason\n _this.videoElement().srcObject = null;\n _this.videoElement().srcObject = webRTCStream;\n }\n\n video = widgetView && widgetView.video();\n\n if (video) {\n video.refreshTracks();\n }\n\n privateEvents.emit('streamChange');\n updateVideo();\n\n case 13:\n case \"end\":\n return _context14.stop();\n }\n }, _callee14);\n }));\n\n return function replaceTrackAndUpdate(_x10, _x11) {\n return _ref25.apply(this, arguments);\n };\n }();\n\n const getTrackFromDeviceId = /*#__PURE__*/function () {\n var _ref26 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(deviceId) {\n var newOptions, _processedOptions2, getUserMediaHelper, newVideoStream;\n\n return _regenerator.default.wrap(function _callee15$(_context15) {\n while (1) switch (_context15.prev = _context15.next) {\n case 0:\n newOptions = cloneDeep(options);\n newOptions.audioSource = null;\n newOptions.videoSource = deviceId;\n processedOptions = processPubOptions(newOptions, 'OT.Publisher.getTrackFromDeviceId', () => state && state.isDestroyed());\n processedOptions.on({\n accessDialogOpened: onAccessDialogOpened,\n accessDialogClosed: onAccessDialogClosed\n });\n _processedOptions2 = processedOptions, getUserMediaHelper = _processedOptions2.getUserMedia;\n _context15.prev = 6;\n _context15.next = 9;\n return getUserMediaHelper();\n\n case 9:\n newVideoStream = _context15.sent;\n _context15.next = 15;\n break;\n\n case 12:\n _context15.prev = 12;\n _context15.t0 = _context15[\"catch\"](6);\n logging.error(_context15.t0);\n\n case 15:\n return _context15.abrupt(\"return\", newVideoStream && newVideoStream.getVideoTracks()[0]);\n\n case 16:\n case \"end\":\n return _context15.stop();\n }\n }, _callee15, null, [[6, 12]]);\n }));\n\n return function getTrackFromDeviceId(_x12) {\n return _ref26.apply(this, arguments);\n };\n }();\n\n const getCurrentTrack = () => {\n const _webRTCStream$getVide = webRTCStream.getVideoTracks(),\n currentTrack = _webRTCStream$getVide[0];\n\n return currentTrack;\n };\n\n const getVideoDevices = /*#__PURE__*/function () {\n var _ref27 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {\n var devices, vidDevices;\n return _regenerator.default.wrap(function _callee16$(_context16) {\n while (1) switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return deviceHelpers.shouldAskForDevices();\n\n case 2:\n devices = _context16.sent;\n vidDevices = devices.videoDevices;\n\n if (!(!devices.video || !vidDevices || !vidDevices.length)) {\n _context16.next = 6;\n break;\n }\n\n throw otError(Errors.NO_DEVICES_FOUND, new Error('No video devices available'), ExceptionCodes.UNABLE_TO_PUBLISH);\n\n case 6:\n return _context16.abrupt(\"return\", vidDevices);\n\n case 7:\n case \"end\":\n return _context16.stop();\n }\n }, _callee16);\n }));\n\n return function getVideoDevices() {\n return _ref27.apply(this, arguments);\n };\n }();\n\n const replaceAudioTrack = (oldTrack, newTrack) => {\n if (newTrack) {\n webRTCStream.addTrack(newTrack);\n }\n\n if (oldTrack) {\n webRTCStream.removeTrack(oldTrack);\n }\n\n const video = widgetView && widgetView.video();\n\n if (video) {\n video.refreshTracks();\n }\n\n if (chromeMixin) {\n if (newTrack && !oldTrack) {\n chromeMixin.addAudioTrack();\n }\n\n if (oldTrack && !newTrack) {\n chromeMixin.removeAudioTrack();\n }\n }\n\n if (oldTrack && oldTrack.stop) {\n oldTrack.stop();\n }\n\n if (newTrack) {\n // Turn the audio back on if the audio track stopped because it was disconnected\n updateAudio();\n microphone = new Microphone(webRTCStream, !properties.publishAudio);\n }\n\n privateEvents.emit('streamChange');\n refreshAudioVideoUI();\n };\n\n const resetAudioSource = /*#__PURE__*/function () {\n var _ref28 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(audioTrack) {\n var audioDeviceId, newAudioTrack;\n return _regenerator.default.wrap(function _callee17$(_context17) {\n while (1) switch (_context17.prev = _context17.next) {\n case 0:\n audioDeviceId = audioTrack.getSettings().deviceId;\n _context17.prev = 1;\n _context17.next = 4;\n return _this.setAudioSource(audioDeviceId);\n\n case 4:\n // We need to add the onmute listener to the new audio track.\n newAudioTrack = webRTCStream.getAudioTracks()[0];\n\n if (newAudioTrack) {\n newAudioTrack.onmute = () => handleBuggedMutedLocalAudioTrack(newAudioTrack);\n\n newAudioTrack.onunmute = () => handleBuggedUnMutedLocalAudioTrack(newAudioTrack);\n }\n\n _context17.next = 11;\n break;\n\n case 8:\n _context17.prev = 8;\n _context17.t0 = _context17[\"catch\"](1);\n logging.error(_context17.t0);\n\n case 11:\n case \"end\":\n return _context17.stop();\n }\n }, _callee17, null, [[1, 8]]);\n }));\n\n return function resetAudioSource(_x13) {\n return _ref28.apply(this, arguments);\n };\n }(); // this should be called when we detect a mute event from a bugged device\n\n\n const handleBuggedMutedLocalAudioTrack = audioTrack => {\n let shouldRePublishVideo = false;\n\n if (properties.publishVideo && document.hidden) {\n shouldRePublishVideo = true; // turning the video off to prevent that videotrack is ended\n\n this.publishVideo(false);\n } // trigger the handler onVisibilityChange\n\n\n const visibilityHandler = /*#__PURE__*/function () {\n var _ref29 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {\n return _regenerator.default.wrap(function _callee18$(_context18) {\n while (1) switch (_context18.prev = _context18.next) {\n case 0:\n if (document.hidden) {\n _context18.next = 5;\n break;\n }\n\n _context18.next = 3;\n return resetAudioSource(audioTrack);\n\n case 3:\n if (shouldRePublishVideo) {\n _this.publishVideo(true);\n }\n\n document.removeEventListener('visibilitychange', visibilityHandler);\n\n case 5:\n case \"end\":\n return _context18.stop();\n }\n }, _callee18);\n }));\n\n return function visibilityHandler() {\n return _ref29.apply(this, arguments);\n };\n }();\n\n document.addEventListener('visibilitychange', visibilityHandler);\n };\n\n const handleBuggedUnMutedLocalAudioTrack = audioTrack => {\n if (hasAudio()) {\n if (!hasVideo()) {\n // We only need to reset the audio source when the publisher is audio only.\n resetAudioSource(audioTrack);\n } else {\n // Inconsistenly the publisher shows a black frame after the incoming call with compact UI\n // ends. In order to unblock the video element we added this hack that needs to be\n // revisited.\n // We need to call pause and play again, and since we have a listener on the onpause event\n // that internally calls the play function, we only need to call pause(),\n // and the play will be automatically executed.\n this.videoElement().pause();\n }\n }\n\n this.session.trigger('gsmCallEnded');\n };\n /**\n * Switches the audio input source used by the publisher. You can set the\n *
audioSource
to a device ID (string) or audio MediaStreamTrack object.\n * \n * This will result in an error (the Promise returned by the method is rejected) in the\n * following conditions:\n *
audioSource
\n * option of the OT.initPublisher() method was\n * set to null
or false
).\n * audioSource
value is not a string or MediaStreamTrack object.\n * audioSource
string is not a valid audio input device available\n * to the browser.\n * \n * The following will result in errors:\n *\n *
videoSourceId
parameter is not a string\n * or the device ID for a valid video input device, the promise\n * will reject with an error with the name
property\n * set to 'OT_INVALID_VIDEO_SOURCE'
.\n * name
property\n * set to 'OT_SET_VIDEO_SOURCE_FAILURE'
.\n * \n *
deviceId
(String | null) — The device ID.type
(String | null) — This is set to\n * 'camera' (for a camera-based video), 'screen' (for a screen-sharing video),\n * or 'custom' (for a video with a MediaStreamTrack source). track
(MediaStreamTrack | null) — The\n * MediaStreamTrack for the video.\n * Any inapplicable properties will be set to null.\n */\n\n\n this.getVideoSource = () => {\n const sourceProperties = {};\n const isAudioOnly = !webRTCStream || webRTCStream.getVideoTracks().length === 0;\n sourceProperties.track = webRTCStream && properties.publishVideo && webRTCStream.getVideoTracks()[0] || null;\n sourceProperties.deviceId = !isScreenSharing && !isCustomVideoTrack && currentDeviceId ? currentDeviceId : null;\n\n if (isCustomVideoTrack) {\n sourceProperties.type = 'custom';\n } else if (isScreenSharing) {\n sourceProperties.type = 'screen';\n } else if (!isAudioOnly) {\n sourceProperties.type = 'camera';\n } else {\n sourceProperties.type = null;\n }\n\n return sourceProperties;\n }; // API Compatibility layer for Flash Publisher, this could do with some tidyup.\n\n\n this._ = {\n publishToSession: (session, analyticsReplacement) => {\n if (analyticsReplacement) {\n analytics = analyticsReplacement;\n } // Add session property to Publisher\n\n\n previousSession = session;\n this.session = session;\n const requestedStreamId = uuid();\n lastRequestedStreamId = requestedStreamId;\n this.streamId = requestedStreamId;\n logConnectivityEvent('Attempt', {\n dataChannels: properties.channels,\n properties: whitelistPublisherProperties(properties)\n });\n const loadedPromise = new Promise((resolve, reject) => {\n if (loaded) {\n resolve();\n return;\n }\n\n this.once('initSuccess', resolve);\n this.once('destroyed', (_ref32) => {\n let reason = _ref32.reason;\n let reasonDescription = '';\n\n if (reason) {\n reasonDescription = ` Reason: ${reason}`;\n }\n\n reject(new Error(`Publisher destroyed before it finished loading.${reasonDescription}`));\n });\n });\n logging.debug('publishToSession: waiting for publishComplete, which is triggered by ' + 'stream#created from rumor');\n const completedPromise = new Promise((resolve, reject) => {\n this.once('publishComplete', error => {\n if (error) {\n reject(error);\n return;\n }\n\n this._setScalableFramerates(properties.scalableFramerates);\n\n this._setScalableVideoLayers(properties.scalableVideoLayers);\n\n logging.debug('publishToSession: got publishComplete');\n resolve();\n });\n });\n\n const processMessagingError = error => {\n const publicError = createStreamErrorMap(error);\n logConnectivityEvent('Failure', {}, {\n failureReason: 'Publish',\n failureCode: publicError.code,\n failureMessage: publicError.message\n });\n\n if (state.isAttemptingToPublish()) {\n this.trigger('publishComplete', publicError);\n }\n\n OTErrorClass.handleJsException({\n errorMsg: error.message,\n code: publicError.code,\n target: this,\n error,\n analytics\n });\n throw publicError;\n };\n\n logging.debug('publishToSession: waiting for loaded');\n const streamCreatedPromise = loadedPromise.then(() => session._.getVideoCodecsCompatible(webRTCStream)).then(videoCodecsCompatible => {\n logging.debug('publishToSession: loaded'); // Bail if this.session is gone, it means we were unpublished\n // before createStream could finish.\n\n if (!this.session) {\n return undefined;\n } // make sure we trigger an error if we are not getting any \"ack\" after a reasonable\n // amount of time\n\n\n const publishGuardingTo = setTimeout(() => {\n onPublishingTimeout(session);\n }, PUBLISH_MAX_DELAY);\n this.once('publishComplete', () => {\n clearTimeout(publishGuardingTo);\n });\n state.set('PublishingToSession');\n const video = videoCodecsCompatible && widgetView && widgetView.video();\n const hasVideoTrack = webRTCStream.getVideoTracks().length > 0;\n const didRequestVideo = properties.videoSource !== null && properties.videoSource !== false;\n\n if (video && hasVideoTrack && didRequestVideo) {\n streamChannels.push(new StreamChannel({\n id: 'video1',\n type: 'video',\n active: properties.publishVideo,\n orientation: VideoOrientation.ROTATED_NORMAL,\n frameRate: properties.frameRate,\n width: video.videoWidth(),\n height: video.videoHeight(),\n source: (() => {\n if (isScreenSharing) {\n return 'screen';\n }\n\n if (isCustomVideoTrack) {\n return 'custom';\n }\n\n return 'camera';\n })(),\n fitMode: properties.fitMode\n }));\n }\n\n const hasAudioTrack = webRTCStream.getAudioTracks().length > 0;\n const didRequestAudio = properties.audioSource !== null && properties.audioSource !== false; // @todo should we just use hasAudioTrack here? if hasAudioTrack is true\n // then does it matter if didRequestAudio is false? we still have an audio\n // track for some reason!\n\n if (didRequestAudio && hasAudioTrack) {\n streamChannels.push(new StreamChannel({\n id: 'audio1',\n type: 'audio',\n active: properties.publishAudio\n }));\n }\n\n logging.debug('publishToSession: creating rumor stream id');\n return new Promise((resolve, reject) => {\n _createStream(null, (messagingError, streamId, message) => {\n if (messagingError) {\n reject(processMessagingError(messagingError));\n return;\n }\n\n resolve({\n streamId,\n message\n });\n });\n });\n }).then(maybeStream => {\n if (maybeStream === undefined) {\n return;\n }\n\n const streamId = maybeStream.streamId,\n message = maybeStream.message;\n logging.debug('publishToSession: rumor stream id created:', streamId, '(this is different from stream#created, which requires media to actually be ' + 'flowing for mantis sessions)');\n\n if (streamId !== requestedStreamId) {\n throw new Error('streamId response does not match request');\n }\n\n this.streamId = streamId;\n rumorIceServers = parseIceServers(message);\n }).catch(err => {\n this.trigger('publishComplete', err);\n throw err;\n });\n return Promise.all([streamCreatedPromise, completedPromise]);\n },\n unpublishFromSession: (session, reason) => {\n if (!this.session || session.id !== this.session.id) {\n if (reason === 'unpublished') {\n const selfSessionText = this.session && this.session.id || 'no session';\n logging.warn(`The publisher ${guid} is trying to unpublish from a session ${session.id} it is not ` + `attached to (it is attached to ${selfSessionText})`);\n }\n\n return this;\n }\n\n if (session.isConnected() && (this.stream || state.isAttemptingToPublish())) {\n session._.streamDestroy(this.streamId);\n }\n\n streamCleanupJobs.releaseAll(); // Disconnect immediately, rather than wait for the WebSocket to\n // reply to our destroyStream message.\n\n this.disconnect();\n\n if (state.isAttemptingToPublish()) {\n logConnectivityEvent('Cancel', {\n reason: 'unpublish'\n });\n\n const createErrorFromReason = () => {\n switch (reason) {\n case 'mediaStopped':\n return 'The video element fired the ended event, indicating there is an issue with the media';\n\n case 'unpublished':\n return 'The publisher was unpublished before it could be published';\n\n case 'reset':\n return 'The publisher was reset';\n\n default:\n return `The publisher was destroyed due to ${reason}`;\n }\n };\n\n const err = new Error(createErrorFromReason());\n this.trigger('publishComplete', otError(reason === 'mediaStopped' ? Errors.MEDIA_ENDED : Errors.CANCEL, err));\n }\n\n this.session = null;\n logAnalyticsEvent('unpublish', 'Success');\n\n this._.streamDestroyed(reason);\n\n return this;\n },\n unpublishStreamFromSession: (stream, session, reason) => {\n if (!lastRequestedStreamId || stream.id !== lastRequestedStreamId) {\n logging.warn(`The publisher ${guid} is trying to destroy a stream ${stream.id} that is not attached to it (it has ${lastRequestedStreamId || 'no stream'} attached to it)`);\n return this;\n }\n\n return this._.unpublishFromSession(session, reason);\n },\n streamDestroyed: reason => {\n if (['reset'].indexOf(reason) < 0) {\n // We're back to being a stand-alone publisher again.\n if (!state.isDestroyed()) {\n state.set('MediaBound');\n }\n }\n\n const event = new Events.StreamEvent('streamDestroyed', this.stream, reason, true);\n this.dispatchEvent(event);\n\n if (!event.isDefaultPrevented()) {\n this.destroy();\n }\n },\n\n archivingStatus(status) {\n if (chromeMixin) {\n chromeMixin.setArchivingStatus(status);\n }\n\n return status;\n },\n\n webRtcStream() {\n return webRTCStream;\n },\n\n switchTracks() {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {\n var stream;\n return _regenerator.default.wrap(function _callee22$(_context22) {\n while (1) switch (_context22.prev = _context22.next) {\n case 0:\n _context22.prev = 0;\n _context22.next = 3;\n return getUserMedia().catch(userMediaError);\n\n case 3:\n stream = _context22.sent;\n _context22.next = 10;\n break;\n\n case 6:\n _context22.prev = 6;\n _context22.t0 = _context22[\"catch\"](0);\n logging.error(`OT.Publisher.switchTracks failed to getUserMedia: ${_context22.t0}`);\n throw _context22.t0;\n\n case 10:\n setNewStream(stream);\n _context22.prev = 11;\n bindVideo();\n _context22.next = 21;\n break;\n\n case 15:\n _context22.prev = 15;\n _context22.t1 = _context22[\"catch\"](11);\n\n if (!(_context22.t1 instanceof CancellationError)) {\n _context22.next = 19;\n break;\n }\n\n return _context22.abrupt(\"return\");\n\n case 19:\n logging.error('Error while binding video', _context22.t1);\n throw _context22.t1;\n\n case 21:\n _context22.prev = 21;\n replaceTracks();\n _context22.next = 29;\n break;\n\n case 25:\n _context22.prev = 25;\n _context22.t2 = _context22[\"catch\"](21);\n logging.error('Error replacing tracks', _context22.t2);\n throw _context22.t2;\n\n case 29:\n case \"end\":\n return _context22.stop();\n }\n }, _callee22, null, [[0, 6], [11, 15], [21, 25]]);\n }))();\n },\n\n getDataChannel(label, getOptions, completion) {\n const pc = getPeerConnectionById(Object.keys(peerConnectionsAsync)[0]); // @fixme this will fail if it's called before we have a PublisherPeerConnection.\n // I.e. before we have a subscriber.\n\n if (!pc) {\n completion(new OTHelpers.Error('Cannot create a DataChannel before there is a subscriber.'));\n return;\n }\n\n pc.then(peerConnection => {\n peerConnection.getDataChannel(label, getOptions, completion);\n });\n },\n\n iceRestart() {\n getAllPeerConnections().then(peerConnections => {\n peerConnections.forEach(peerConnection => {\n const _getPeerConnectionMet7 = getPeerConnectionMeta(peerConnection),\n remoteConnectionId = _getPeerConnectionMet7.remoteConnectionId;\n\n logRepublish('Attempt', {\n remoteConnectionId\n });\n logging.debug('Publisher: ice restart attempt');\n peerConnection.iceRestart();\n });\n });\n },\n\n getState() {\n return state;\n },\n\n demoOnlyCycleVideo: this.cycleVideo,\n\n testOnlyGetFramesEncoded() {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {\n var peerConnections;\n return _regenerator.default.wrap(function _callee23$(_context23) {\n while (1) switch (_context23.prev = _context23.next) {\n case 0:\n _context23.next = 2;\n return getAllPeerConnections();\n\n case 2:\n peerConnections = _context23.sent;\n\n if (peerConnections.length) {\n _context23.next = 5;\n break;\n }\n\n throw new Error('No established PeerConnections yet');\n\n case 5:\n return _context23.abrupt(\"return\", peerConnections[0]._testOnlyGetFramesEncoded());\n\n case 6:\n case \"end\":\n return _context23.stop();\n }\n }, _callee23);\n }))();\n },\n\n onStreamAvailable,\n startRoutedToRelayedTransition: () => {\n logRoutedToRelayedTransition('Attempt');\n\n const processMessagingError = error => {\n const publicError = createStreamErrorMap(error);\n this.trigger('streamCreateForP2PComplete', publicError);\n logRoutedToRelayedTransition('Failure', {\n reason: publicError.message\n });\n };\n\n if (!this.session) {\n logRoutedToRelayedTransition('Failure', {\n reason: 'Not connected to the session.'\n });\n return;\n }\n\n const streamCreateForP2PCompleteTimeout = setTimeout(() => {\n logRoutedToRelayedTransition('Failure', {\n reason: 'Timeout'\n });\n }, PUBLISH_MAX_DELAY);\n this.once('streamCreateForP2PComplete', () => {\n clearTimeout(streamCreateForP2PCompleteTimeout);\n });\n logging.debug('streamCreateWithSource: send a message to RUMOR for ' + `creating the stream with the sourceStreaId P2P and stream ${this.streamId}`);\n\n _createStream('P2P', messagingError => {\n if (messagingError) {\n processMessagingError(messagingError);\n } else {\n this.trigger('streamCreateForP2PComplete');\n }\n });\n },\n startRelayedToRoutedTransition: function () {\n var _startRelayedToRoutedTransition = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {\n return _regenerator.default.wrap(function _callee24$(_context24) {\n while (1) switch (_context24.prev = _context24.next) {\n case 0:\n logRelayedToRoutedTransition('Attempt');\n\n if (_this.session) {\n _context24.next = 4;\n break;\n }\n\n logRelayedToRoutedTransition('Failure', {\n reason: 'Not connected to the session.'\n });\n return _context24.abrupt(\"return\");\n\n case 4:\n if (_this.streamId) {\n _context24.next = 7;\n break;\n }\n\n logRelayedToRoutedTransition('Failure', {\n reason: 'No streamId available'\n });\n return _context24.abrupt(\"return\");\n\n case 7:\n if (getP2pPeerConnection()) {\n _context24.next = 10;\n break;\n }\n\n // If the P2P leg doesn't exist, it means there's no need to transition to routed.\n logRelayedToRoutedTransition('Failure', {\n reason: 'There is no Relayed Peer connection created.'\n });\n return _context24.abrupt(\"return\");\n\n case 10:\n _this.session._.streamDestroy(_this.streamId, 'P2P');\n\n _context24.t0 = _this;\n _context24.next = 14;\n return getP2pPeerConnection();\n\n case 14:\n _context24.t1 = _context24.sent;\n\n _context24.t0._removePeerConnection.call(_context24.t0, _context24.t1);\n\n _context24.next = 18;\n return _restartSendingRtpToMantis();\n\n case 18:\n logRelayedToRoutedTransition('Success');\n\n _this.trigger('streamDestroyForP2PComplete');\n\n case 20:\n case \"end\":\n return _context24.stop();\n }\n }, _callee24);\n }));\n\n function startRelayedToRoutedTransition() {\n return _startRelayedToRoutedTransition.apply(this, arguments);\n }\n\n return startRelayedToRoutedTransition;\n }(),\n forceMuteAudio: function () {\n logAnalyticsEvent('publishAudio', 'Attempt', {\n publishAudio: false\n });\n properties.publishAudio = false;\n\n try {\n updateAudio('auto');\n this.dispatchEvent(new Events.MuteForcedEvent());\n logAnalyticsEvent('publishAudio', 'Success', {\n publishAudio: false\n });\n } catch (e) {\n logAnalyticsEvent('publishAudio', 'Failure', {\n message: e.message\n });\n }\n }.bind(this)\n };\n\n this.detectDevices = function () {\n logging.warn('Publisher.detectDevices() is not implemented.');\n };\n\n this.detectMicActivity = function () {\n logging.warn('Publisher.detectMicActivity() is not implemented.');\n };\n\n this.getEchoCancellationMode = function () {\n logging.warn('Publisher.getEchoCancellationMode() is not implemented.');\n return 'fullDuplex';\n };\n\n this.setMicrophoneGain = function () {\n logging.warn('Publisher.setMicrophoneGain() is not implemented.');\n };\n\n this.getMicrophoneGain = function () {\n logging.warn('Publisher.getMicrophoneGain() is not implemented.');\n return 0.5;\n };\n\n this.setCamera = function () {\n logging.warn('Publisher.setCamera() is not implemented.');\n };\n\n this.setMicrophone = function () {\n logging.warn('Publisher.setMicrophone() is not implemented.');\n }; // Platform methods:\n\n\n this.guid = function () {\n return guid;\n };\n\n this.videoElement = function () {\n const video = widgetView && widgetView.video();\n return video ? video.domElement() : null;\n };\n\n this.setStream = assignStream;\n this.isWebRTC = true;\n\n this.isLoading = function () {\n return widgetView && widgetView.loading();\n };\n /**\n * Returns the width, in pixels, of the Publisher video. This may differ from the\n * resolution
property passed in as the properties
property\n * the options passed into the OT.initPublisher()
method, if the browser\n * does not support the requested resolution.\n *\n * @method #videoWidth\n * @memberOf Publisher\n * @return {Number} the width, in pixels, of the Publisher video.\n */\n\n\n this.videoWidth = function () {\n const video = widgetView && widgetView.video();\n return video ? video.videoWidth() : undefined;\n };\n /**\n * Returns the height, in pixels, of the Publisher video. This may differ from the\n * resolution
property passed in as the properties
property\n * the options passed into the OT.initPublisher()
method, if the browser\n * does not support the requested resolution.\n *\n * @method #videoHeight\n * @memberOf Publisher\n * @return {Number} the height, in pixels, of the Publisher video.\n */\n\n\n this.videoHeight = function () {\n const video = widgetView && widgetView.video();\n return video ? video.videoHeight() : undefined;\n };\n /**\n * Returns the details on the publisher's stream quality, including the following:\n *\n *
error
(Error) — Upon successful completion\n * the method, this is undefined. An error results if the publisher is not connected to a\n * session or if it is not publishing audio or video.statsArray
(Array) — An array of objects defining the current\n * audio-video statistics for the publisher. For a publisher in a routed session (one that\n * uses the OpenTok\n * Media Router), this array includes one object, defining the statistics for the single\n * audio-media stream that is sent to the OpenTok Media Router. In a relayed session, the\n * array includes an object for each subscriber to the published stream. Each object in the\n * array contains a stats
property that includes the following properties:\n *\n * \n *
audio.bytesSent
(Number) — The total number of audio bytes\n * sent to the subscriber (or to the OpenTok Media Router)audio.packetsLost
(Number) — The total number audio packets\n * that did not reach the subscriber (or to the OpenTok Media Router)audio.packetsSent
(Number) — The total number of audio\n * packets sent to the subscriber (or to the OpenTok Media Router)timestamp
(Number) — The timestamp, in milliseconds since\n * the Unix epoch, for when these stats were gatheredvideo.bytesSent
(Number) — The total video bytes sent to\n * the subscriber (or to the OpenTok Media Router)video.packetsLost
(Number) — The total number of video packets\n * that did not reach the subscriber (or to the OpenTok Media Router)video.packetsSent
(Number) — The total number of video\n * packets sent to the subscribervideo.frameRate
(Number) — The current video frame rateAdditionally, for a publisher in a relayed session, each object in the array contains\n * the following two properties:\n *\n *
connectionId
(String) — The unique ID of the client's\n * connection, which matches the id
property of the connection
\n * property of the connectionCreated\n * event that the Session object dispatched for the remote client.subscriberId
(String) — The unique ID of the subscriber, which\n * matches the id
property of the Subscriber object in the subscribing\n * client's app.These two properties are undefined for a publisher in a routed session.\n *\n *
\n * For a publisher in a routed session (one that uses the\n * OpenTok\n * Media Router), this array includes one object, defining the statistics for the single\n * audio-media stream that is sent to the OpenTok Media Router. In a relayed session, the\n * array includes an object for each subscriber to the published stream. Each object in the\n * array contains an rtcStatsReport
property that is a RTCStatsReport object.\n *\n *
\n * Additionally, for a publisher in a relayed session, each object in the array contains\n * the following two properties:\n *\n *
connectionId
(String) — The unique ID of the client's\n * connection, which matches the id
property of the connection
\n * property of the connectionCreated\n * event that the Session object dispatched for the remote client.subscriberId
(String) — The unique ID of the subscriber, which\n * matches the id
property of the Subscriber object in the subscribing\n * client's app.\n * These two properties are undefined for a publisher in a routed session.\n *\n *
\n * The Promise will be rejected in the following conditions:\n *
accessAllowed
property which indicates whether the user\n * has granted access to the camera and microphone.\n * @see Event\n * @name accessAllowed\n * @event\n * @memberof Publisher\n */\n\n /**\n * Dispatched when the user has clicked the Deny button, preventing the\n * app from having access to the camera and microphone.\n * \n * Note: On macOS 10.15+ (Catalina), to publish a screen-sharing stream\n * the user must grant the browser access to the screen in macOS System Preferences >\n * Security & Privacy > Privacy > Screen Recording. Otherwise,\n * the Publisher will dispatch an accessDenied
event.\n *\n * @see Event\n * @name accessDenied\n * @event\n * @memberof Publisher\n */\n\n /**\n * Dispatched when the Allow/Deny dialog box is opened. (This is the dialog box in which\n * the user can grant the app access to the camera and microphone.)\n * @see Event\n * @name accessDialogOpened\n * @event\n * @memberof Publisher\n */\n\n /**\n * Dispatched when the Allow/Deny box is closed. (This is the dialog box in which the\n * user can grant the app access to the camera and microphone.)\n * @see Event\n * @name accessDialogClosed\n * @event\n * @memberof Publisher\n */\n\n /**\n * Dispatched periodically to indicate the publisher's audio level. The event is dispatched\n * up to 60 times per second, depending on the browser. The audioLevel
property\n * of the event is audio level, from 0 to 1.0. See {@link AudioLevelUpdatedEvent} for more\n * information.\n *
\n * The following example adjusts the value of a meter element that shows volume of the\n * publisher. Note that the audio level is adjusted logarithmically and a moving average\n * is applied:\n *
\n *
\n * var movingAvg = null;\n * publisher.on('audioLevelUpdated', function(event) {\n * if (movingAvg === null || movingAvg <= event.audioLevel) {\n * movingAvg = event.audioLevel;\n * } else {\n * movingAvg = 0.7 * movingAvg + 0.3 * event.audioLevel;\n * }\n *\n * // 1.5 scaling to map the -30 - 0 dBm range to [0,1]\n * var logLevel = (Math.log(movingAvg) / Math.LN10) / 1.5 + 1;\n * logLevel = Math.min(Math.max(logLevel, 0), 1);\n * document.getElementById('publisherMeter').value = logLevel;\n * });\n *\n *
This example shows the algorithm used by the default audio level indicator displayed\n * in an audio-only Publisher.\n *\n * @name audioLevelUpdated\n * @event\n * @memberof Publisher\n * @see AudioLevelUpdatedEvent\n */\n\n /**\n * The publisher has started streaming to the session.\n * @name streamCreated\n * @event\n * @memberof Publisher\n * @see StreamEvent\n * @see Session.publish()\n */\n\n /**\n * The publisher has stopped streaming to the session. The default behavior is that\n * the Publisher object is removed from the HTML DOM. The Publisher object dispatches a\n * destroyed
event when the element is removed from the HTML DOM. If you call the\n * preventDefault()
method of the event object in the event listener, the default\n * behavior is prevented, and you can, optionally, retain the Publisher for reuse or clean it up\n * using your own code.\n * @name streamDestroyed\n * @event\n * @memberof Publisher\n * @see StreamEvent\n */\n\n /**\n * Dispatched when the Publisher element is removed from the HTML DOM. When this event\n * is dispatched, you may choose to adjust or remove HTML DOM elements related to the publisher.\n * @name destroyed\n * @event\n * @memberof Publisher\n */\n\n /**\n * Dispatched when the video dimensions of the video change. This can only occur in when the\n * stream.videoType
property is set to \"screen\"
(for a screen-sharing\n * video stream), when the user resizes the window being captured. This event object has a\n * newValue
property and an oldValue
property, representing the new and\n * old dimensions of the video. Each of these has a height
property and a\n * width
property, representing the height and width, in pixels.\n * @name videoDimensionsChanged\n * @event\n * @memberof Publisher\n * @see VideoDimensionsChangedEvent\n */\n\n /**\n * Dispatched when the Publisher's video element is created. Add a listener for this event when\n * you set the insertDefaultUI
option to false
in the call to the\n * OT.initPublisher() method. The element
\n * property of the event object is a reference to the Publisher's video
element\n * (or in Internet Explorer the object
element containing the video). Add it to\n * the HTML DOM to display the video. When you set the insertDefaultUI
option to\n * false
, the video
(or object
) element is not\n * automatically inserted into the DOM.\n *
\n * Add a listener for this event only if you have set the insertDefaultUI
option to\n * false
. If you have not set insertDefaultUI
option to\n * false
, do not move the video
(or object
) element in\n * in the HTML DOM. Doing so causes the Publisher object to be destroyed.\n *\n * @name videoElementCreated\n * @event\n * @memberof Publisher\n * @see VideoElementCreatedEvent\n */\n\n /**\n * A moderator has forced this client to mute audio.\n *\n * @name muteForced\n * @event\n * @memberof Publisher\n * @see Event\n */\n\n /**\n * The user publishing the stream has stopped sharing one or all media\n * types (video, audio and/or screen). This can occur when a user disconnects a camera or\n * microphone used as a media source for the Publisher. Or it can occur when a user closes\n * a when the video and audio sources of the stream are MediaStreamTrack elements and\n * tracks are stopped or destroyed.\n *\n * @name mediaStopped\n * @event\n * @memberof Publisher\n * @see MediaStoppedEvent\n */\n\n\n return Publisher;\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst hasOpenTokSupport = __webpack_require__(60).once;\n/**\n * A class defining properties of the capabilities
property of a\n * Session object. See Session.capabilities.\n *
\n * All Capabilities properties are undefined until you have connected to a session\n * and the Session object has dispatched the sessionConnected
event.\n *
\n * For more information on token roles, see the\n * Token Creation Overview.\n *\n * @class Capabilities\n *\n * @property {Number} forceDisconnect Specifies whether you can call\n * the Session.forceDisconnect()
method (1) or not (0). To call the\n * Session.forceDisconnect()
method,\n * the user must have a token that is assigned the role of moderator.\n * @property {Number} forceUnpublish Specifies whether you can call\n * the Session.forceUnpublish()
method (1) or not (0). To call the\n * Session.forceUnpublish()
method, the user must have a token that\n * is assigned the role of moderator.\n * @property {Number} forceMute Specifies whether you can call\n * the Session.forceMuteStream()
and Session.forceMuteAll()
\n * methods (1) or not (0). To call the Session.forceMuteStream()
and\n * Session.forceMuteAll()
methods, the user must have a token that is\n * assigned the role of moderator.\n * @property {Number} publish Specifies whether you can publish to the session (1) or not (0).\n * The ability to publish is based on a few factors. To publish, the user must have a token that\n * is assigned a role that supports publishing. There must be a connected camera and microphone.\n * @property {Number} subscribe Specifies whether you can subscribe to streams\n * in the session (1) or not (0). Currently, this capability is available for all users on all\n * platforms.\n */\n\n\nmodule.exports = function Capabilities(permissions) {\n this.publish = permissions.indexOf('publish') !== -1 ? 1 : 0;\n this.subscribe = permissions.indexOf('subscribe') !== -1 ? 1 : 0;\n this.forceUnpublish = permissions.indexOf('forceunpublish') !== -1 ? 1 : 0;\n this.forceDisconnect = permissions.indexOf('forcedisconnect') !== -1 ? 1 : 0;\n this.forceMute = permissions.indexOf('forcemute') !== -1 ? 1 : 0;\n this.supportsWebRTC = hasOpenTokSupport() ? 1 : 0;\n\n this.permittedTo = action => Object.prototype.hasOwnProperty.call(this, action) && this[action] === 1;\n};\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-shadow, no-underscore-dangle, max-len, no-use-before-define */\n\n/* eslint-disable no-void, vars-on-top, no-var, no-restricted-syntax, no-prototype-builtins */\n\n/* eslint-disable no-continue */\nconst logging = __webpack_require__(1)('Stream');\n\nconst OTHelpers = __webpack_require__(5);\n\nconst sessionObjects = __webpack_require__(20);\n\nconst eventing = __webpack_require__(6);\n\nconst Events = __webpack_require__(22)();\n\nconst validPropertyNames = ['name', 'archiving'];\n/**\n * Specifies a stream. A stream is a representation of a published stream in a session. When a\n * client calls the Session.publish() method, a new stream is\n * created. Properties of the Stream object provide information about the stream.\n *\n *
When a stream is added to a session, the Session object dispatches a\n * streamCreatedEvent
. When a stream is destroyed, the Session object dispatches a\n * streamDestroyed
event. The StreamEvent object, which defines these event objects,\n * has a stream
property, which is an array of Stream object. For details and a code\n * example, see {@link StreamEvent}.
When a connection to a session is made, the Session object dispatches a\n * sessionConnected
event, defined by the SessionConnectEvent object. The\n * SessionConnectEvent object has a streams
property, which is an array of Stream\n * objects pertaining to the streams in the session at that time. For details and a code example,\n * see {@link SessionConnectEvent}.
connection
property of the Session object to see if the stream is being published\n * by the local web page.\n *\n * @property {Number} creationTime The timestamp for the creation\n * of the stream. This value is calculated in milliseconds. You can convert this value to a\n * Date object by calling new Date(creationTime)
, where creationTime
is\n * the creationTime
property of the Stream object.\n *\n * @property {Number} frameRate The frame rate of the video stream. This property is only set if\n * the publisher of the stream specifies a frame rate when calling the\n * OT.initPublisher()
method; otherwise, this property is undefined.\n *\n * @property {Boolean} hasAudio Whether the stream has audio. This property can change if the\n * publisher turns on or off audio (by calling\n * Publisher.publishAudio()). When this occurs, the\n * {@link Session} object dispatches a streamPropertyChanged
event (see\n * {@link StreamPropertyChangedEvent}).\n *\n * @property {Boolean} hasVideo Whether the stream has video. This property can change if the\n * publisher turns on or off video (by calling\n * Publisher.publishVideo()). When this occurs, the\n * {@link Session} object dispatches a streamPropertyChanged
event (see\n * {@link StreamPropertyChangedEvent}).\n *\n * @property {String} name The name of the stream. Publishers can specify a name when publishing\n * a stream (using the publish()
method of the publisher's Session object).\n *\n * @property {String} streamId The unique ID of the stream.\n *\n * @property {Object} videoDimensions This object has two properties: width
and\n * height
. Both are numbers. The width
property is the width of the\n * encoded stream; the height
property is the height of the encoded stream. (These\n * are independent of the actual width of Publisher and Subscriber objects corresponding to the\n * stream.) This property can change if a stream published from a mobile device resizes, based on\n * a change in the device orientation. When the video dimensions change,\n * the {@link Session} object dispatches a streamPropertyChanged
event\n * (see {@link StreamPropertyChangedEvent}).\n *\n * @property {String} videoType The type of video — either \"camera\"
,\n * \"screen\"
, or \"custom\"
.\n * A \"screen\"
video uses screen sharing on the publisher\n * as the video source; for other videos, this property is set to \"camera\"
.\n * A \"custom\"
video uses a VideoTrack element as the video source on the publisher.\n * (See the videoSource
property of the options
parameter passed\n * into the OT.initPublisher() method.)\n * This property can change if a stream published from a mobile device changes from a\n * camera to a screen-sharing video type. When the video type changes, the {@link Session} object\n * dispatches a streamPropertyChanged
event (see {@link StreamPropertyChangedEvent}).\n */\n\nmodule.exports = function Stream(id, name, creationTime, connection, session, channel) {\n const self = this;\n let destroyedReason;\n this.id = id;\n this.streamId = id;\n this.name = name;\n this.creationTime = Number(creationTime);\n this.connection = connection;\n this.channel = channel;\n this.publisher = sessionObjects.publishers.find({\n streamId: this.id\n });\n eventing(this);\n\n const onChannelUpdate = function onChannelUpdate(channel, key, oldValue, newValue) {\n let _key = key;\n\n switch (_key) {\n case 'active':\n _key = channel.type === 'audio' ? 'hasAudio' : 'hasVideo';\n self[_key] = newValue;\n break;\n\n case 'disableWarning':\n _key = channel.type === 'audio' ? 'audioDisableWarning' : 'videoDisableWarning';\n self[_key] = newValue;\n\n if (!self[channel.type === 'audio' ? 'hasAudio' : 'hasVideo']) {\n return; // Do NOT event in this case.\n }\n\n break;\n\n case 'fitMode':\n _key = 'defaultFitMode';\n self[_key] = newValue;\n break;\n\n case 'source':\n _key = channel.type === 'audio' ? 'audioType' : 'videoType';\n self[_key] = newValue;\n break;\n\n case 'videoDimensions':\n self.videoDimensions = newValue;\n break;\n\n case 'orientation':\n case 'width':\n case 'height':\n // We dispatch this via the videoDimensions key instead so do not\n // trigger an event for them.\n return;\n\n default:\n }\n\n if (self.videoType === 'screen' && _key === 'hasVideo' && newValue === false) {\n // if this stream is from a screen ignore hasVideo=false events from rumor\n return;\n }\n\n self.dispatchEvent(new Events.StreamUpdatedEvent(self, _key, oldValue, newValue));\n };\n\n const associatedWidget = function associatedWidget() {\n if (self.publisher) {\n return self.publisher;\n }\n\n return sessionObjects.subscribers.find(subscriber => subscriber.stream && subscriber.stream.id === self.id && subscriber.session.id === session.id);\n }; // Returns true if this stream is subscribe to.\n\n\n const isBeingSubscribedTo = function isBeingSubscribedTo() {\n // @fixme This is not strictly speaking the right test as a stream\n // can be published and subscribed by the same connection. But the\n // update features don't handle this case properly right now anyway.\n //\n // The issue is that the stream needs to know whether the stream is\n // 'owned' by a publisher or a subscriber. The reason for that is that\n // when a Publisher updates a stream channel then we need to send the\n // `streamChannelUpdate` message, whereas if a Subscriber does then we\n // need to send `subscriberChannelUpdate`. The current code will always\n // send `streamChannelUpdate`.\n return !self.publisher;\n }; // Returns all channels that have a type of +type+.\n\n\n this.getChannelsOfType = function getChannelsOfType(type) {\n return self.channel.filter(channel => channel.type === type);\n };\n\n this.getChannel = function getChannel(id) {\n for (let i = 0; i < self.channel.length; ++i) {\n if (self.channel[i].id === id) {\n return self.channel[i];\n }\n }\n\n return null;\n }; // implement the following using the channels\n // * hasAudio\n // * hasVideo\n // * videoDimensions\n\n\n const audioChannel = this.getChannelsOfType('audio')[0];\n const videoChannel = this.getChannelsOfType('video')[0]; // @todo this should really be: \"has at least one video/audio track\" instead of\n // \"the first video/audio track\"\n\n this.hasAudio = audioChannel != null && audioChannel.active;\n this.hasVideo = videoChannel != null && videoChannel.active;\n this.videoType = videoChannel && videoChannel.source;\n this.defaultFitMode = videoChannel && videoChannel.fitMode;\n this.videoDimensions = {};\n\n if (videoChannel) {\n this.videoDimensions.width = videoChannel.width;\n this.videoDimensions.height = videoChannel.height;\n this.videoDimensions.orientation = videoChannel.orientation;\n videoChannel.on('update', onChannelUpdate);\n this.frameRate = videoChannel.frameRate;\n }\n\n if (audioChannel) {\n audioChannel.on('update', onChannelUpdate);\n }\n\n this.setChannelActiveState = function setChannelActiveState(channelType, activeState, activeReason) {\n const attributes = {\n active: activeState\n };\n\n if (activeReason) {\n attributes.activeReason = activeReason;\n }\n\n updateChannelsOfType(channelType, attributes);\n };\n\n this.setVideoDimensions = function setVideoDimensions(width, height) {\n updateChannelsOfType('video', {\n width,\n height,\n orientation: 0\n });\n };\n\n this.setRestrictFrameRate = function setRestrictFrameRate(restrict) {\n updateChannelsOfType('video', {\n restrictFrameRate: restrict\n });\n };\n\n this.setPreferredResolution = function setPreferredResolution(resolution) {\n if (!isBeingSubscribedTo()) {\n logging.warn('setPreferredResolution has no affect when called by a publisher');\n return;\n }\n\n if (session.sessionInfo.p2pEnabled) {\n logging.warn('Stream.setPreferredResolution will not work in a P2P Session');\n return;\n }\n\n if (resolution && resolution.width === void 0 && resolution.height === void 0) {\n return;\n } // This duplicates some of the code in updateChannelsOfType. We do this for a\n // couple of reasons:\n // 1. Because most of the work that updateChannelsOfType does is in calling\n // getChannelsOfType, which we need to do here anyway so that we can update\n // the value of maxResolution in the Video Channel.\n // 2. updateChannelsOfType on only sends a message to update the channel in\n // Rumor. The client then expects to receive a subsequent channel update\n // indicating that the update was successful. We don't receive those updates\n // for preferredFrameRate/maxResolution so we need to complete both tasks and it's\n // neater to do the related tasks right next to each other.\n // 3. This code shouldn't be in Stream anyway. There is way too much coupling\n // between Stream, Session, Publisher, and Subscriber. This will eventually be\n // fixed, and when it is then it will be easier to exact the code if it's a\n // single piece.\n //\n\n\n const video = self.getChannelsOfType('video')[0];\n\n if (!video) {\n return;\n }\n\n if (resolution && resolution.width) {\n if (isNaN(parseInt(resolution.width, 10))) {\n throw new OTHelpers.Error('stream preferred width must be an integer', 'Subscriber');\n }\n\n video.preferredWidth = parseInt(resolution.width, 10);\n } else {\n video.preferredWidth = void 0;\n }\n\n if (resolution && resolution.height) {\n if (isNaN(parseInt(resolution.height, 10))) {\n throw new OTHelpers.Error('stream preferred height must be an integer', 'Subscriber');\n }\n\n video.preferredHeight = parseInt(resolution.height, 10);\n } else {\n video.preferredHeight = void 0;\n }\n\n session._.subscriberChannelUpdate(self, associatedWidget(), video, {\n preferredWidth: video.preferredWidth || 0,\n preferredHeight: video.preferredHeight || 0\n });\n };\n\n this.getPreferredResolution = function getPreferredResolution() {\n const videoChannel = self.getChannelsOfType('video')[0];\n\n if (!videoChannel || !videoChannel.preferredWidth && !videoChannel.preferredHeight) {\n return void 0;\n }\n\n return {\n width: videoChannel.preferredWidth,\n height: videoChannel.preferredHeight\n };\n };\n\n this.setPreferredFrameRate = function setPreferredFrameRate(preferredFrameRate) {\n if (!isBeingSubscribedTo()) {\n logging.warn('setPreferredFrameRate has no affect when called by a publisher');\n return;\n }\n\n if (session.sessionInfo.p2pEnabled) {\n logging.warn('Stream.setPreferredFrameRate will not work in a P2P Session');\n return;\n }\n\n if (preferredFrameRate && isNaN(parseFloat(preferredFrameRate))) {\n throw new OTHelpers.Error('stream preferred frameRate must be a number', 'Subscriber');\n } // This duplicates some of the code in updateChannelsOfType. We do this for a\n // couple of reasons:\n // 1. Because most of the work that updateChannelsOfType does is in calling\n // getChannelsOfType, which we need to do here anyway so that we can update\n // the value of preferredFrameRate in the Video Channel.\n // 2. updateChannelsOfType on only sends a message to update the channel in\n // Rumor. The client then expects to receive a subsequent channel update\n // indicating that the update was successful. We don't receive those updates\n // for preferredFrameRate/maxResolution so we need to complete both tasks and it's\n // neater to do the related tasks right next to each other.\n // 3. This code shouldn't be in Stream anyway. There is way too much coupling\n // between Stream, Session, Publisher, and Subscriber. This will eventually be\n // fixed, and when it is then it will be easier to exact the code if it's a\n // single piece.\n //\n\n\n const video = self.getChannelsOfType('video')[0];\n\n if (video) {\n video.preferredFrameRate = preferredFrameRate ? parseFloat(preferredFrameRate) : null;\n\n session._.subscriberChannelUpdate(self, associatedWidget(), video, {\n preferredFrameRate: video.preferredFrameRate || 0\n });\n }\n };\n\n this.getPreferredFrameRate = function getPreferredFrameRate() {\n const videoChannel = self.getChannelsOfType('video')[0];\n return videoChannel ? videoChannel.preferredFrameRate : null;\n };\n\n let updateChannelsOfType = function updateChannelsOfType(channelType, attributes) {\n let setChannelActiveState;\n\n if (!self.publisher) {\n const subscriber = associatedWidget();\n\n setChannelActiveState = channel => session._.subscriberChannelUpdate(self, subscriber, channel, attributes);\n } else {\n setChannelActiveState = channel => session._.streamChannelUpdate(self, channel, attributes);\n }\n\n self.getChannelsOfType(channelType).forEach(setChannelActiveState);\n };\n\n this.destroyed = false;\n this.destroyedReason = void 0;\n\n this.destroy = function destroy(reason, quiet) {\n if (reason === void 0) {\n reason = 'clientDisconnected';\n }\n\n destroyedReason = reason;\n self.destroyed = true;\n self.destroyedReason = destroyedReason;\n\n if (quiet !== true) {\n self.dispatchEvent(new Events.DestroyedEvent('destroyed', // This should be eventNames.STREAM_DESTROYED, but\n // the value of that is currently shared with Session\n self, destroyedReason));\n }\n }; // PRIVATE STUFF CALLED BY Raptor.Dispatcher\n //\n // Confusingly, this should not be called when you want to change\n // the stream properties. This is used by Raptor dispatch to notify\n // the stream that it's properties have been successfully updated\n //\n // @todo make this sane. Perhaps use setters for the properties that can\n // send the appropriate Raptor message. This would require that Streams\n // have access to their session.\n\n\n this._ = {};\n\n this._.updateProperty = function privateUpdateProperty(key, value) {\n if (validPropertyNames.indexOf(key) === -1) {\n logging.warn(`Unknown stream property \"${key}\" was modified to \"${value}\".`);\n return;\n }\n\n const oldValue = self[key];\n const newValue = value;\n\n switch (key) {\n case 'name':\n self[key] = newValue;\n break;\n\n case 'archiving':\n var widget = associatedWidget();\n\n if (self.publisher && widget) {\n widget._.archivingStatus(newValue);\n }\n\n self[key] = newValue;\n break;\n\n default:\n }\n\n const event = new Events.StreamUpdatedEvent(self, key, oldValue, newValue);\n self.dispatchEvent(event);\n }; // Mass update, called by Raptor.Dispatcher\n\n\n this._.update = function privateUpdate(attributes) {\n for (const key in attributes) {\n if (!attributes.hasOwnProperty(key)) {\n continue;\n }\n\n self._.updateProperty(key, attributes[key]);\n }\n };\n\n this._.forceMute = function forceMute(content) {\n if (content.hasOwnProperty('channels')) {\n if (content.channels.includes('audio')) {\n if (self.publisher) {\n self.publisher._.forceMuteAudio();\n }\n }\n }\n };\n\n this._.updateChannel = function privateUpdateChannel(channelId, attributes) {\n const channel = self.getChannel(channelId);\n\n if (channel) {\n channel.update(attributes);\n }\n };\n};\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.STATUS = exports.PONG = exports.PING = exports.DISCONNECT = exports.CONNECT = exports.MESSAGE = exports.UNSUBSCRIBE = exports.SUBSCRIBE = void 0;\n// Rumor Messaging for JS\n//\n// https://tbwiki.tokbox.com/index.php/Rumor_:_Messaging_FrameWork\n//\n// @todo Rumor {\n// Add error codes for all the error cases\n// Add Dependability commands\n// }\n// This is used to subscribe to address/addresses. The address/addresses the\n// client specifies here is registered on the server. Once any message is sent to\n// that address/addresses, the client receives that message.\nconst SUBSCRIBE = 0; // This is used to unsubscribe to address / addresses. Once the client unsubscribe\n// to an address, it will stop getting messages sent to that address.\n\nexports.SUBSCRIBE = SUBSCRIBE;\nconst UNSUBSCRIBE = 1; // This is used to send messages to arbitrary address/ addresses. Messages can be\n// anything and Rumor will not care about what is included.\n\nexports.UNSUBSCRIBE = UNSUBSCRIBE;\nconst MESSAGE = 2; // This will be the first message that the client sends to the server. It includes\n// the uniqueId for that client connection and a disconnect_notify address that will\n// be notified once the client disconnects.\n\nexports.MESSAGE = MESSAGE;\nconst CONNECT = 3; // This will be the message used by the server to notify an address that a\n// client disconnected.\n\nexports.CONNECT = CONNECT;\nconst DISCONNECT = 4; // Enhancements to support Keepalives\n\nexports.DISCONNECT = DISCONNECT;\nconst PING = 7;\nexports.PING = PING;\nconst PONG = 8;\nexports.PONG = PONG;\nconst STATUS = 9;\nexports.STATUS = STATUS;\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst assign = __webpack_require__(7);\n\nconst Capabilities = __webpack_require__(169);\n\nconst eventing = __webpack_require__(6);\n\nconst Events = __webpack_require__(22)();\n\nconst connectionCapabilities = __webpack_require__(711);\n/**\n * The Connection object represents a connection to an OpenTok session. Each client that connects\n * to a session has a unique connection, with a unique connection ID (represented by the\n * id
property of the Connection object for the client).\n * \n * The Session object has a connection
property that is a Connection object.\n * It represents the local client's connection. (A client only has a connection once the\n * client has successfully called the connect()
method of the {@link Session}\n * object.)\n *
\n * The Session object dispatches a connectionCreated
event when each client (including\n * your own) connects to a session (and for clients that are present in the session when you\n * connect). The connectionCreated
event object has a connection
\n * property, which is a Connection object corresponding to the client the event pertains to.\n *
\n * The Stream object has a connection
property that is a Connection object.\n * It represents the connection of the client that is publishing the stream.\n *\n * @class Connection\n * @property {String} connectionId The ID of this connection.\n * @property {Number} creationTime The timestamp for the creation of the connection. This\n * value is calculated in milliseconds.\n * You can convert this value to a Date object by calling new Date(creationTime)
,\n * where creationTime
\n * is the creationTime
property of the Connection object.\n * @property {String} data A string containing metadata describing the\n * connection. When you generate a user token, you can define connection data (see the\n * Token creation overview).\n */\n\n\nfunction Connection(id, creationTime, data, capabilitiesHash, permissionsHash) {\n let destroyedReason;\n this.id = id;\n this.connectionId = id;\n this.creationTime = creationTime ? Number(creationTime) : null;\n this.data = data;\n this.capabilities = connectionCapabilities(capabilitiesHash);\n this.permissions = new Capabilities(permissionsHash);\n this.quality = null;\n eventing(this);\n\n this.destroy = (reason, quiet) => {\n destroyedReason = reason || 'clientDisconnected';\n\n if (quiet !== true) {\n this.dispatchEvent(new Events.DestroyedEvent( // This should be eventNames.CONNECTION_DESTROYED, but\n // the value of that is currently shared with Session\n 'destroyed', this, destroyedReason));\n }\n };\n\n this.destroyed = () => destroyedReason !== undefined;\n\n this.destroyedReason = () => destroyedReason;\n}\n\nConnection.fromHash = (_ref) => {\n let id = _ref.id,\n creationTime = _ref.creationTime,\n data = _ref.data,\n capablities = _ref.capablities,\n permissions = _ref.permissions;\n return new Connection(id, creationTime, data, assign(capablities || {}, {\n supportsWebRTC: true\n }), permissions || []);\n};\n\nmodule.exports = Connection;\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports) {\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof (typeof window !== undefined ? window : global) == 'object' && (typeof window !== undefined ? window : global) && (typeof window !== undefined ? window : global).Object === Object && (typeof window !== undefined ? window : global);\n\nmodule.exports = freeGlobal;\n\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(37);\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar copyObject = __webpack_require__(39),\n keys = __webpack_require__(30);\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseTimes = __webpack_require__(369),\n isArguments = __webpack_require__(64),\n isArray = __webpack_require__(10),\n isBuffer = __webpack_require__(65),\n isIndex = __webpack_require__(66),\n isTypedArray = __webpack_require__(85);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(14);\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(84)(module)))\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayPush = __webpack_require__(116),\n getPrototype = __webpack_require__(117),\n getSymbols = __webpack_require__(115),\n stubArray = __webpack_require__(180);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetAllKeys = __webpack_require__(183),\n getSymbols = __webpack_require__(115),\n keys = __webpack_require__(30);\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayPush = __webpack_require__(116),\n isArray = __webpack_require__(10);\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetAllKeys = __webpack_require__(183),\n getSymbolsIn = __webpack_require__(181),\n keysIn = __webpack_require__(52);\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(37),\n root = __webpack_require__(14);\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getNative = __webpack_require__(37),\n root = __webpack_require__(14);\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(14);\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar cloneArrayBuffer = __webpack_require__(118);\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseCreate = __webpack_require__(86),\n getPrototype = __webpack_require__(117),\n isPrototype = __webpack_require__(68);\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MapCache = __webpack_require__(110);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseRest = __webpack_require__(87),\n isIterateeCall = __webpack_require__(122);\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar apply = __webpack_require__(120);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports) {\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(397)() ? WeakMap : __webpack_require__(398);\n\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar create = Object.create, getPrototypeOf = Object.getPrototypeOf, plainObject = {};\n\nmodule.exports = function (/* CustomCreate*/) {\n\tvar setPrototypeOf = Object.setPrototypeOf, customCreate = arguments[0] || create;\n\tif (typeof setPrototypeOf !== \"function\") return false;\n\treturn getPrototypeOf(setPrototypeOf(customCreate(null), plainObject)) === plainObject;\n};\n\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* eslint no-proto: \"off\" */\n\n// Big thanks to @WebReflection for sorting this out\n// https://gist.github.com/WebReflection/5593554\n\n\n\nvar isObject = __webpack_require__(197)\n , value = __webpack_require__(31)\n , objIsPrototypeOf = Object.prototype.isPrototypeOf\n , defineProperty = Object.defineProperty\n , nullDesc = { configurable: true, enumerable: false, writable: true, value: undefined }\n , validate;\n\nvalidate = function (obj, prototype) {\n\tvalue(obj);\n\tif (prototype === null || isObject(prototype)) return obj;\n\tthrow new TypeError(\"Prototype must be null or an object\");\n};\n\nmodule.exports = (function (status) {\n\tvar fn, set;\n\tif (!status) return null;\n\tif (status.level === 2) {\n\t\tif (status.set) {\n\t\t\tset = status.set;\n\t\t\tfn = function (obj, prototype) {\n\t\t\t\tset.call(validate(obj, prototype), prototype);\n\t\t\t\treturn obj;\n\t\t\t};\n\t\t} else {\n\t\t\tfn = function (obj, prototype) {\n\t\t\t\tvalidate(obj, prototype).__proto__ = prototype;\n\t\t\t\treturn obj;\n\t\t\t};\n\t\t}\n\t} else {\n\t\tfn = function self(obj, prototype) {\n\t\t\tvar isNullBase;\n\t\t\tvalidate(obj, prototype);\n\t\t\tisNullBase = objIsPrototypeOf.call(self.nullPolyfill, obj);\n\t\t\tif (isNullBase) delete self.nullPolyfill.__proto__;\n\t\t\tif (prototype === null) prototype = self.nullPolyfill;\n\t\t\tobj.__proto__ = prototype;\n\t\t\tif (isNullBase) defineProperty(self.nullPolyfill, \"__proto__\", nullDesc);\n\t\t\treturn obj;\n\t\t};\n\t}\n\treturn Object.defineProperty(fn, \"level\", {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tvalue: status.level\n\t});\n})(\n\t(function () {\n\t\tvar tmpObj1 = Object.create(null)\n\t\t , tmpObj2 = {}\n\t\t , set\n\t\t , desc = Object.getOwnPropertyDescriptor(Object.prototype, \"__proto__\");\n\n\t\tif (desc) {\n\t\t\ttry {\n\t\t\t\tset = desc.set; // Opera crashes at this point\n\t\t\t\tset.call(tmpObj1, tmpObj2);\n\t\t\t} catch (ignore) {}\n\t\t\tif (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { set: set, level: 2 };\n\t\t}\n\n\t\ttmpObj1.__proto__ = tmpObj2;\n\t\tif (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 2 };\n\n\t\ttmpObj1 = {};\n\t\ttmpObj1.__proto__ = tmpObj2;\n\t\tif (Object.getPrototypeOf(tmpObj1) === tmpObj2) return { level: 1 };\n\n\t\treturn false;\n\t})()\n);\n\n__webpack_require__(400);\n\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isValue = __webpack_require__(42);\n\nvar map = { function: true, object: true };\n\nmodule.exports = function (value) { return (isValue(value) && map[typeof value]) || false; };\n\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isFunction = __webpack_require__(403);\n\nvar classRe = /^\\s*class[\\s{/}]/, functionToString = Function.prototype.toString;\n\nmodule.exports = function (value) {\n\tif (!isFunction(value)) return false;\n\tif (classRe.test(functionToString.call(value))) return false;\n\treturn true;\n};\n\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isValue = __webpack_require__(42);\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function (opts1/*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (!isValue(options)) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(410)() ? String.prototype.contains : __webpack_require__(411);\n\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isArguments = __webpack_require__(89)\n , isString = __webpack_require__(90)\n , ArrayIterator = __webpack_require__(412)\n , StringIterator = __webpack_require__(441)\n , iterable = __webpack_require__(442)\n , iteratorSymbol = __webpack_require__(43).iterator;\n\nmodule.exports = function (obj) {\n\tif (typeof iterable(obj)[iteratorSymbol] === \"function\") return obj[iteratorSymbol]();\n\tif (isArguments(obj)) return new ArrayIterator(obj);\n\tif (isString(obj)) return new StringIterator(obj);\n\treturn new ArrayIterator(obj);\n};\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSymbol = __webpack_require__(417);\n\nmodule.exports = function (value) {\n\tif (!isSymbol(value)) throw new TypeError(value + \" is not a symbol\");\n\treturn value;\n};\n\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar clear = __webpack_require__(421)\n , assign = __webpack_require__(125)\n , callable = __webpack_require__(70)\n , value = __webpack_require__(31)\n , d = __webpack_require__(32)\n , autoBind = __webpack_require__(422)\n , Symbol = __webpack_require__(43);\n\nvar defineProperty = Object.defineProperty, defineProperties = Object.defineProperties, Iterator;\n\nmodule.exports = Iterator = function (list, context) {\n\tif (!(this instanceof Iterator)) throw new TypeError(\"Constructor requires 'new'\");\n\tdefineProperties(this, {\n\t\t__list__: d(\"w\", value(list)),\n\t\t__context__: d(\"w\", context),\n\t\t__nextIndex__: d(\"w\", 0)\n\t});\n\tif (!context) return;\n\tcallable(context.on);\n\tcontext.on(\"_add\", this._onAdd);\n\tcontext.on(\"_delete\", this._onDelete);\n\tcontext.on(\"_clear\", this._onClear);\n};\n\n// Internal %IteratorPrototype% doesn't expose its constructor\ndelete Iterator.prototype.constructor;\n\ndefineProperties(\n\tIterator.prototype,\n\tassign(\n\t\t{\n\t\t\t_next: d(function () {\n\t\t\t\tvar i;\n\t\t\t\tif (!this.__list__) return undefined;\n\t\t\t\tif (this.__redo__) {\n\t\t\t\t\ti = this.__redo__.shift();\n\t\t\t\t\tif (i !== undefined) return i;\n\t\t\t\t}\n\t\t\t\tif (this.__nextIndex__ < this.__list__.length) return this.__nextIndex__++;\n\t\t\t\tthis._unBind();\n\t\t\t\treturn undefined;\n\t\t\t}),\n\t\t\tnext: d(function () {\n\t\t\t\treturn this._createResult(this._next());\n\t\t\t}),\n\t\t\t_createResult: d(function (i) {\n\t\t\t\tif (i === undefined) return { done: true, value: undefined };\n\t\t\t\treturn { done: false, value: this._resolve(i) };\n\t\t\t}),\n\t\t\t_resolve: d(function (i) {\n\t\t\t\treturn this.__list__[i];\n\t\t\t}),\n\t\t\t_unBind: d(function () {\n\t\t\t\tthis.__list__ = null;\n\t\t\t\tdelete this.__redo__;\n\t\t\t\tif (!this.__context__) return;\n\t\t\t\tthis.__context__.off(\"_add\", this._onAdd);\n\t\t\t\tthis.__context__.off(\"_delete\", this._onDelete);\n\t\t\t\tthis.__context__.off(\"_clear\", this._onClear);\n\t\t\t\tthis.__context__ = null;\n\t\t\t}),\n\t\t\ttoString: d(function () {\n\t\t\t\treturn \"[object \" + (this[Symbol.toStringTag] || \"Object\") + \"]\";\n\t\t\t})\n\t\t},\n\t\tautoBind({\n\t\t\t_onAdd: d(function (index) {\n\t\t\t\tif (index >= this.__nextIndex__) return;\n\t\t\t\t++this.__nextIndex__;\n\t\t\t\tif (!this.__redo__) {\n\t\t\t\t\tdefineProperty(this, \"__redo__\", d(\"c\", [index]));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.__redo__.forEach(function (redo, i) {\n\t\t\t\t\tif (redo >= index) this.__redo__[i] = ++redo;\n\t\t\t\t}, this);\n\t\t\t\tthis.__redo__.push(index);\n\t\t\t}),\n\t\t\t_onDelete: d(function (index) {\n\t\t\t\tvar i;\n\t\t\t\tif (index >= this.__nextIndex__) return;\n\t\t\t\t--this.__nextIndex__;\n\t\t\t\tif (!this.__redo__) return;\n\t\t\t\ti = this.__redo__.indexOf(index);\n\t\t\t\tif (i !== -1) this.__redo__.splice(i, 1);\n\t\t\t\tthis.__redo__.forEach(function (redo, j) {\n\t\t\t\t\tif (redo > index) this.__redo__[j] = --redo;\n\t\t\t\t}, this);\n\t\t\t}),\n\t\t\t_onClear: d(function () {\n\t\t\t\tif (this.__redo__) clear.call(this.__redo__);\n\t\t\t\tthis.__nextIndex__ = 0;\n\t\t\t})\n\t\t})\n\t)\n);\n\ndefineProperty(\n\tIterator.prototype,\n\tSymbol.iterator,\n\td(function () {\n\t\treturn this;\n\t})\n);\n\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isValue = __webpack_require__(54)\n , isObject = __webpack_require__(124)\n , stringCoerce = __webpack_require__(424)\n , toShortString = __webpack_require__(425);\n\nvar resolveMessage = function (message, value) {\n\treturn message.replace(\"%v\", toShortString(value));\n};\n\nmodule.exports = function (value, defaultMessage, inputOptions) {\n\tif (!isObject(inputOptions)) throw new TypeError(resolveMessage(defaultMessage, value));\n\tif (!isValue(value)) {\n\t\tif (\"default\" in inputOptions) return inputOptions[\"default\"];\n\t\tif (inputOptions.isOptional) return null;\n\t}\n\tvar errorMessage = stringCoerce(inputOptions.errorMessage);\n\tif (!isValue(errorMessage)) errorMessage = defaultMessage;\n\tthrow new TypeError(resolveMessage(errorMessage, value));\n};\n\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(453);\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(17);\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nvar utils = __webpack_require__(17);\nvar normalizeHeaderName = __webpack_require__(458);\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = __webpack_require__(211);\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = __webpack_require__(211);\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(69)))\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\nvar utils = __webpack_require__(17);\nvar settle = __webpack_require__(459);\nvar cookies = __webpack_require__(461);\nvar buildURL = __webpack_require__(208);\nvar buildFullPath = __webpack_require__(462);\nvar parseHeaders = __webpack_require__(465);\nvar isURLSameOrigin = __webpack_require__(466);\nvar createError = __webpack_require__(212);\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar enhanceError = __webpack_require__(460);\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(17);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseConvert = __webpack_require__(471),\n util = __webpack_require__(473);\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar identity = __webpack_require__(88),\n metaMap = __webpack_require__(217);\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar WeakMap = __webpack_require__(186);\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar composeArgs = __webpack_require__(219),\n composeArgsRight = __webpack_require__(220),\n countHolders = __webpack_require__(477),\n createCtor = __webpack_require__(95),\n createRecurry = __webpack_require__(221),\n getHolder = __webpack_require__(227),\n reorder = __webpack_require__(486),\n replaceHolders = __webpack_require__(134),\n root = __webpack_require__(14);\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports) {\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports) {\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isLaziable = __webpack_require__(478),\n setData = __webpack_require__(225),\n setWrapToString = __webpack_require__(226);\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar metaMap = __webpack_require__(217),\n noop = __webpack_require__(223);\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseCreate = __webpack_require__(86),\n baseLodash = __webpack_require__(133);\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseSetData = __webpack_require__(216),\n shortOut = __webpack_require__(193);\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getWrapDetails = __webpack_require__(483),\n insertWrapDetails = __webpack_require__(484),\n setToString = __webpack_require__(121),\n updateWrapDetails = __webpack_require__(485);\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseTrim = __webpack_require__(490),\n isObject = __webpack_require__(9),\n isSymbol = __webpack_require__(71);\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsEqualDeep = __webpack_require__(498),\n isObjectLike = __webpack_require__(16);\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar SetCache = __webpack_require__(92),\n arraySome = __webpack_require__(231),\n cacheHas = __webpack_require__(94);\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports) {\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(9);\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar memoizeCapped = __webpack_require__(503);\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseHasIn = __webpack_require__(505),\n hasPath = __webpack_require__(506);\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayPush = __webpack_require__(116),\n isFlattenable = __webpack_require__(512);\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createBaseFor = __webpack_require__(519);\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar punycode = __webpack_require__(520);\nvar util = __webpack_require__(521);\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = __webpack_require__(522);\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, no-shadow */\nconst isFunction = __webpack_require__(15);\n\nconst uuid = __webpack_require__(19);\n\nconst logging = __webpack_require__(1)('guidStorage');\n\nconst guidStorage = {};\nmodule.exports = guidStorage;\nlet currentGuidStorage;\nlet currentGuid;\n\nconst isInvalidStorage = function isInvalidStorage(storageInterface) {\n return !(isFunction(storageInterface.get) && isFunction(storageInterface.set));\n};\n\nconst getClientGuid = function getClientGuid(completion) {\n if (currentGuid) {\n completion(null, currentGuid);\n return;\n } // It's the first time that getClientGuid has been called\n // in this page lifetime. Attempt to load any existing Guid\n // from the storage\n\n\n currentGuidStorage.get(completion);\n};\n/*\n* Sets the methods for storing and retrieving client GUIDs persistently\n* across sessions. By default, OpenTok.js attempts to use browser cookies to\n* store GUIDs.\n*
\n* Pass in an object that has a get()
method and\n* a set()
method.\n*
\n* The get()
method must take one parameter: the callback\n* method to invoke. The callback method is passed two parameters —\n* the first parameter is an error object or null if the call is successful;\n* and the second parameter is the GUID (a string) if successful.\n*
\n* The set()
method must include two parameters: the GUID to set\n* (a string) and the callback method to invoke. The callback method is\n* passed an error object on error, or it is passed no parameter if the call is\n* successful.\n*
\n* Here is an example:\n*
\n*
\n* var ComplexStorage = function() {\n* this.set = function(guid, completion) {\n* AwesomeBackendService.set(guid, function(response) {\n* completion(response.error || null);\n* });\n* };\n* this.get = function(completion) {\n* AwesomeBackendService.get(function(response, guid) {\n* completion(response.error || null, guid);\n* });\n* };\n* };\n*\n* OT.overrideGuidStorage(new ComplexStorage());\n*\n*/\n\n\nguidStorage.override = storageInterface => {\n if (isInvalidStorage(storageInterface)) {\n throw new Error('The storageInterface argument does not seem to be valid, ' + 'it must implement get and set methods');\n }\n\n if (currentGuidStorage === storageInterface) {\n return;\n }\n\n currentGuidStorage = storageInterface; // If a client Guid has already been assigned to this client then\n // let the new storage know about it so that it's in sync.\n\n if (currentGuid) {\n currentGuidStorage.set(currentGuid, error => {\n if (error) {\n logging.error(`Failed to send initial Guid value (${currentGuid}) to the newly assigned Guid Storage. The error was: ${error}`); // @todo error\n }\n });\n }\n};\n\nguidStorage.get = completion => {\n getClientGuid((error, guid) => {\n if (error) {\n completion(error);\n return;\n }\n\n if (!guid) {\n // Nothing came back, this client is entirely new.\n // generate a new Guid and persist it\n guid = uuid();\n currentGuidStorage.set(guid, error => {\n if (error) {\n completion(error);\n return;\n }\n\n currentGuid = guid;\n });\n } else if (!currentGuid) {\n currentGuid = guid;\n }\n\n completion(null, currentGuid);\n });\n}; // Implement our default storage mechanism, which sets/gets a cookie\n// called 'opentok_client_id'\n\n\nguidStorage.override({\n get(completion) {\n let clientId;\n\n try {\n clientId = (typeof window !== undefined ? window : global).localStorage.getItem('opentok_client_id');\n } catch (err) {\n // will get Uncaught DOMException: Failed to read the 'localStorage' property from 'Window':\n // The document is sandboxed and lacks the 'allow-same-origin' flag.\n if (!clientId) {\n clientId = uuid();\n }\n }\n\n completion(null, clientId);\n },\n\n set(guid, completion) {\n try {\n (typeof window !== undefined ? window : global).localStorage.setItem('opentok_client_id', guid);\n } catch (err) {// will get Uncaught DOMException: Failed to read the 'localStorage' property from 'Window':\n // The document is sandboxed and lacks the 'allow-same-origin' flag.\n }\n\n completion(null);\n }\n\n}); // Test only\n\nguidStorage.set = guid => {\n currentGuid = guid;\n};\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports) {\n\n// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports) {\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst assign = __webpack_require__(7);\n\nconst logging = __webpack_require__(1)('analytics');\n\nconst QueueRunner = __webpack_require__(527);\n\nconst uuid = __webpack_require__(19);\n\nconst defaultAjax = __webpack_require__(244);\n\nconst _require = __webpack_require__(138),\n prependProxyToUrlIfNeeded = _require.prependProxyToUrlIfNeeded;\n\nconst _require2 = __webpack_require__(139),\n getProxyUrl = _require2.getProxyUrl;\n\nconst clientInstanceId = uuid();\nconst defaultQueue = new QueueRunner();\n\nmodule.exports = function Analytics(_ref) {\n var _this = this;\n\n let loggingUrl = _ref.loggingUrl,\n _ref$queue = _ref.queue,\n queue = _ref$queue === void 0 ? defaultQueue : _ref$queue,\n _ref$ajax = _ref.ajax,\n ajax = _ref$ajax === void 0 ? defaultAjax : _ref$ajax;\n this.loggingUrl = loggingUrl;\n\n this.updateEndPoints = () => {\n if (!this.proxyUrl) {\n this.proxyUrl = getProxyUrl();\n const prependedUrl = prependProxyToUrlIfNeeded(this.loggingUrl, this.proxyUrl);\n this.loggingUrl = prependedUrl;\n }\n\n this.endPoint = `${this.loggingUrl}/logging/ClientEvent`;\n this.endPointQos = `${this.loggingUrl}/logging/ClientQos`;\n };\n\n this.updateEndPoints();\n const reportedErrors = {};\n\n const post = function post(data, onComplete, isQos) {\n if (onComplete === void 0) {\n onComplete = () => {};\n }\n\n queue.add(callback => {\n logging.debug('sending analytics:', _this.loggingUrl, data);\n ajax.post(isQos ? _this.endPointQos : _this.endPoint, {\n body: data,\n overrideMimeType: 'text/plain',\n headers: {\n Accept: 'text/plain',\n 'Content-Type': 'application/json'\n }\n }, err => {\n if (err) {\n logging.debug('Failed to send ClientEvent, moving on to the next item.');\n }\n\n onComplete(err || undefined);\n callback();\n });\n });\n };\n\n const shouldThrottleError = (code, type, partnerId) => {\n if (!partnerId) {\n return false;\n }\n\n const errKey = [partnerId, type, code].join('_');\n const msgLimit = 100;\n return (reportedErrors[errKey] || 0) >= msgLimit;\n }; // Log an error via ClientEvents.\n //\n // @param [String] code\n // @param [String] type\n // @param [String] message\n // @param [Hash] details additional error details\n //\n // @param [Hash] options the options to log the client event with.\n // @option options [String] action The name of the Event that we are logging. E.g.\n // 'TokShowLoaded'. Required.\n // @option options [String] variation Usually used for Split A/B testing, when you\n // have multiple variations of the +_action+.\n // @option options [String] payload The payload. Required.\n // @option options [String] sessionId The active OpenTok session, if there is one\n // @option options [String] connectionId The active OpenTok connectionId, if there is one\n // @option options [String] partnerId\n // @option options [String] guid ...\n // @option options [String] streamId ...\n // @option options [String] section ...\n // @option options [String] clientVersion ...\n //\n // Reports will be throttled to X reports (see exceptionLogging.messageLimitPerPartner\n // from the dynamic config for X) of each error type for each partner. Reports can be\n // disabled/enabled globally or on a per partner basis (per partner settings\n // take precedence) using exceptionLogging.enabled.\n //\n\n\n this.logError = function (code, type, message, details, options) {\n if (details === void 0) {\n details = null;\n }\n\n if (options === void 0) {\n options = {};\n }\n\n const _options = options,\n partnerId = _options.partnerId;\n\n if (shouldThrottleError(code, type, partnerId)) {\n // OT.log('ClientEvents.error has throttled an error of type ' + type + '.' +\n // code + ' for partner ' + (partnerId || 'No Partner Id'));\n return;\n }\n\n const errKey = [partnerId, type, code].join('_');\n const payload = details;\n reportedErrors[errKey] = typeof reportedErrors[errKey] !== 'undefined' ? reportedErrors[errKey] + 1 : 1;\n\n _this.logEvent(assign(options, {\n action: `${type}.${code}`,\n payload\n }), false);\n }; // Log a client event to the analytics backend.\n //\n // @example Logs a client event called 'foo'\n // this.logEvent({\n // action: 'foo',\n // payload: 'bar',\n // sessionId: sessionId,\n // connectionId: connectionId\n // }, false)\n //\n // @param [Hash] data the data to log the client event with.\n // @param [Boolean] qos Whether this is a QoS event.\n // @param [Boolean] throttle A number specifying the ratio of events to be sent\n // out of the total number of events (other events are not ignored). If not\n // set to a number, all events are sent.\n // @param [Number] completionHandler A completion handler function to call when the\n // client event POST request succeeds or fails. If it fails, an error\n // object is passed into the function. (See throttledPost().)\n //\n\n\n this.logEvent = function (data, qos, throttle, completionHandler) {\n if (qos === void 0) {\n qos = false;\n }\n\n if (completionHandler === void 0) {\n completionHandler = () => {};\n }\n\n _this.updateEndPoints();\n\n data.clientInstanceId = clientInstanceId; // eslint-disable-line no-param-reassign\n\n if (throttle && !isNaN(throttle)) {\n if (Math.random() > throttle) {\n logging.debug('skipping sending analytics due to throttle:', data);\n return;\n }\n }\n\n logging.debug('queueing analytics:', _this.loggingUrl, data);\n let serializedData;\n\n try {\n serializedData = JSON.stringify(data);\n } catch (err) {\n completionHandler(err);\n return;\n }\n\n post(serializedData, completionHandler, qos);\n }; // Log a client QOS to the analytics backend.\n // @option options [String] action The name of the Event that we are logging.\n // E.g. 'TokShowLoaded'. Required.\n // @option options [String] variation Usually used for Split A/B testing, when\n // you have multiple variations of the +_action+.\n // @option options [String] payload The payload. Required.\n // @option options [String] sessionId The active OpenTok session, if there is one\n // @option options [String] connectionId The active OpenTok connectionId, if there is one\n // @option options [String] partnerId\n // @option options [String] guid ...\n // @option options [String] streamId ...\n // @option options [String] section ...\n // @option options [String] clientVersion ...\n //\n\n\n this.logQOS = options => this.logEvent(options, true);\n};\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle, no-void, no-param-reassign */\n\n/* eslint-disable no-restricted-syntax, no-continue */\nconst $ = __webpack_require__(245);\n\nconst env = __webpack_require__(2);\n\nconst makeEverythingAttachToOTHelpers = __webpack_require__(247);\n\nconst assign = __webpack_require__(7);\n\nconst browserAjax = {};\nmodule.exports = browserAjax;\n\nfunction formatPostData(data) {\n // , contentType\n // If it's a string, we assume it's properly encoded\n if (typeof data === 'string') {\n return data;\n }\n\n const queryString = [];\n Object.keys(data).forEach(key => {\n queryString.push(`${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`);\n });\n return queryString.join('&').replace(/\\+/g, '%20');\n}\n\nif (env.name !== 'Node') {\n browserAjax.request = function (url, options, callback) {\n const request = new (typeof window !== undefined ? window : global).XMLHttpRequest();\n\n const _options = options || {};\n\n const _method = _options.method;\n\n if (!_method) {\n callback(new Error('No HTTP method specified in options'));\n return;\n }\n\n if (options.overrideMimeType) {\n if (request.overrideMimeType) {\n request.overrideMimeType(options.overrideMimeType);\n }\n\n delete options.overrideMimeType;\n } // Setup callbacks to correctly respond to success and error callbacks. This includes\n // interpreting the responses HTTP status, which XmlHttpRequest seems to ignore\n // by default.\n\n\n if (callback) {\n $(request).on('load', event => {\n const status = event.target.status; // We need to detect things that XMLHttpRequest considers a success,\n // but we consider to be failures.\n\n if (status >= 200 && (status < 300 || status === 304)) {\n callback(null, event);\n } else {\n callback(event);\n }\n });\n $(request).on('error', callback);\n }\n\n request.open(options.method, url, true);\n\n if (!_options.headers) {\n _options.headers = {};\n }\n\n for (const name in _options.headers) {\n if (!Object.prototype.hasOwnProperty.call(_options.headers, name)) {\n continue;\n }\n\n request.setRequestHeader(name, _options.headers[name]);\n }\n\n request.send(options.body && formatPostData(options.body));\n };\n\n browserAjax.get = function (url, options, callback) {\n const _options = assign(options || {}, {\n method: 'GET'\n });\n\n browserAjax.request(url, _options, callback);\n };\n\n browserAjax.post = function (url, options, callback) {\n const _options = assign(options || {}, {\n method: 'POST'\n });\n\n browserAjax.request(url, _options, callback);\n };\n\n browserAjax.getJSON = function (url, options, callback) {\n options = options || {};\n\n const done = function done(error, event) {\n if (error) {\n callback(error, event && event.target && event.target.responseText);\n } else {\n let response;\n\n try {\n response = JSON.parse(event.target.responseText);\n } catch (e) {\n // Badly formed JSON\n callback(e, event && event.target && event.target.responseText);\n return;\n }\n\n callback(null, response, event);\n }\n };\n\n const extendedHeaders = assign({\n Accept: 'application/json'\n }, options.headers || {});\n browserAjax.get(url, assign(options || {}, {\n headers: extendedHeaders\n }), done);\n };\n\n makeEverythingAttachToOTHelpers(browserAjax);\n}\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst ElementCollection = __webpack_require__(246);\n\nmodule.exports = function (selector, context) {\n return new ElementCollection(selector, context);\n};\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable global-require, no-param-reassign, no-void */\n\n/* eslint-disable no-underscore-dangle, prefer-rest-params, prefer-const */\nconst isFunction = __webpack_require__(15);\n\nconst extensions = {\n attributes: __webpack_require__(528),\n css: __webpack_require__(529),\n classNames: __webpack_require__(533),\n observers: __webpack_require__(535)\n};\nconst idRegex = /^#([\\w-]*)$/; // A helper for converting a NodeList to a JS Array\n\nconst nodeListToArray = function nodeListToArray(nodes) {\n return Array.prototype.slice.call(nodes);\n};\n\nconst selectorToElementArray = function selectorToElementArray(selector, context) {\n let elements;\n\n if (typeof selector === 'undefined') {\n return [];\n }\n\n if (typeof selector === 'string') {\n elements = [];\n const idSelector = idRegex.exec(selector);\n context = context || document;\n\n if (idSelector && idSelector[1]) {\n const element = context.getElementById(idSelector[1]);\n\n if (element) {\n elements.push(element);\n }\n } else {\n elements = context.querySelectorAll(selector);\n }\n } else if (selector && (selector.nodeType || (typeof window !== undefined ? window : global).XMLHttpRequest && selector instanceof (typeof window !== undefined ? window : global).XMLHttpRequest || selector === (typeof window !== undefined ? window : global))) {\n // allow OTHelpers(DOMNode) and OTHelpers(xmlHttpRequest)\n elements = [selector];\n context = selector;\n } else if (Array.isArray(selector)) {\n elements = selector.slice();\n context = null;\n } else {\n elements = nodeListToArray(elements);\n }\n\n return elements;\n}; // ElementCollection contains the result of calling OTHelpers.\n//\n// It has the following properties:\n// length\n// first\n// last\n//\n// It also has a get method that can be used to access elements in the collection\n//\n// var videos = OTHelpers('video');\n// var firstElement = videos.get(0); // identical to videos.first\n// var lastElement = videos.get(videos.length-1); // identical to videos.last\n// var allVideos = videos.get();\n//\n//\n// The collection also implements the following helper methods:\n// some, forEach, map, filter, find,\n// appendTo, after, before, remove, empty,\n// attr, center, width, height,\n// addClass, removeClass, hasClass, toggleClass,\n// on, off, once,\n// observeStyleChanges, observeNodeOrChildNodeRemoval\n//\n// Mostly the usage should be obvious. When in doubt, assume it functions like\n// the jQuery equivalent.\n//\n\n\nconst ElementCollection = function ElementCollection(selector, context) {\n const elements = selectorToElementArray(selector, context);\n this.context = context;\n\n this.toArray = function () {\n return elements;\n };\n\n this.length = elements.length;\n this.first = elements[0];\n this.last = elements[elements.length - 1];\n\n this.get = function (index) {\n if (index === void 0) {\n return elements;\n }\n\n return elements[index];\n };\n};\n\nmodule.exports = ElementCollection;\nElementCollection._attachToOTHelpers = {}; // @remove\n\nElementCollection._attachToOTHelpers.removeElement = function (element) {\n return new ElementCollection(element).remove();\n};\n\nElementCollection.prototype.getAsArray = function () {\n let _collection = this.get();\n\n if (!isFunction(_collection.forEach)) {\n // It's possibly something Array-ish that isn't quite an\n // Array. Something like arguments or a NodeList\n _collection = nodeListToArray(_collection);\n }\n\n return _collection;\n};\n\nElementCollection.prototype.some = function (iter, context) {\n return this.getAsArray().some(iter, context);\n};\n\nElementCollection.prototype.forEach = function (fn, context) {\n this.getAsArray().forEach(fn, context);\n return this;\n};\n\nElementCollection.prototype.map = function (fn, context) {\n return new ElementCollection(this.getAsArray().map(fn, context), this.context);\n};\n\nElementCollection.prototype.filter = function (fn, context) {\n return new ElementCollection(this.getAsArray().filter(fn, context), this.context);\n};\n\nElementCollection.prototype.find = function (selector) {\n return new ElementCollection(selector, this.first);\n}; // Helper function for adding event listeners to dom elements.\n// WARNING: This doesn't preserve event types, your handler could\n// be getting all kinds of different parameters depending on the browser.\n// You also may have different scopes depending on the browser and bubbling\n// and cancelable are not supported.\n\n\nElementCollection.prototype.on = function (eventName, handler) {\n return this.forEach(element => {\n element.addEventListener(eventName, handler, false);\n });\n}; // Helper function for removing event listeners from dom elements.\n\n\nElementCollection.prototype.off = function (eventName, handler) {\n return this.forEach(element => {\n element.removeEventListener(eventName, handler, false);\n });\n};\n\nElementCollection.prototype.once = function (eventName, handler) {\n const removeAfterTrigger = function () {\n this.off(eventName, removeAfterTrigger);\n handler(...arguments);\n }.bind(this);\n\n return this.on(eventName, removeAfterTrigger);\n};\n\nElementCollection.prototype.appendTo = function (parentElement) {\n if (!parentElement) {\n throw new Error('appendTo requires a DOMElement to append to.');\n }\n\n return this.forEach(child => {\n parentElement.appendChild(child);\n });\n};\n\nElementCollection.prototype.append = function () {\n const parentElement = this.first;\n\n if (!parentElement) {\n return this;\n }\n\n Array.prototype.forEach.call(arguments, child => {\n parentElement.appendChild(child);\n });\n return this;\n};\n\nElementCollection.prototype.prepend = function () {\n if (arguments.length === 0) {\n return this;\n }\n\n const parentElement = this.first;\n let elementsToPrepend;\n\n if (!parentElement) {\n return this;\n }\n\n elementsToPrepend = Array.prototype.slice.call(arguments);\n\n if (!parentElement.firstElementChild) {\n parentElement.appendChild(elementsToPrepend.shift());\n }\n\n elementsToPrepend.forEach(element => {\n parentElement.insertBefore(element, parentElement.firstElementChild);\n });\n return this;\n};\n\nElementCollection.prototype.after = function (prevElement) {\n if (!prevElement) {\n throw new Error('after requires a DOMElement to insert after');\n }\n\n return this.forEach(element => {\n if (element.parentElement) {\n if (prevElement !== element.parentNode.lastChild) {\n element.parentElement.insertBefore(element, prevElement);\n } else {\n element.parentElement.appendChild(element);\n }\n }\n });\n};\n\nElementCollection.prototype.before = function (nextElement) {\n if (!nextElement) {\n throw new Error('before requires a DOMElement to insert before');\n }\n\n return this.forEach(element => {\n if (element.parentElement) {\n element.parentElement.insertBefore(element, nextElement);\n }\n });\n};\n\nElementCollection.prototype.remove = function () {\n return this.forEach(element => {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n });\n};\n\nElementCollection.prototype.empty = function () {\n return this.forEach(element => {\n // elements is a \"live\" NodesList collection. Meaning that the collection\n // itself will be mutated as we remove elements from the DOM. This means\n // that \"while there are still elements\" is safer than \"iterate over each\n // element\" as the collection length and the elements indices will be modified\n // with each iteration.\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n });\n}; // Detects when an element is not part of the document flow because\n// it or one of it's ancesters has display:none.\n\n\nElementCollection.prototype.isDisplayNone = function () {\n return this.some(element => {\n if ((element.offsetWidth === 0 || element.offsetHeight === 0) && new ElementCollection(element).css('display') === 'none') {\n return true;\n }\n\n if (element.parentNode && element.parentNode.style) {\n return new ElementCollection(element.parentNode).isDisplayNone();\n }\n\n return false;\n });\n};\n\nconst findElementWithDisplayNone = function findElementWithDisplayNone(element) {\n if ((element.offsetWidth === 0 || element.offsetHeight === 0) && new ElementCollection(element).css('display') === 'none') {\n return element;\n }\n\n if (element.parentNode && element.parentNode.style) {\n return findElementWithDisplayNone(element.parentNode);\n }\n\n return null;\n}; // @remove\n\n\nElementCollection._attachToOTHelpers.emptyElement = function (element) {\n return new ElementCollection(element).empty();\n};\n\nElementCollection._attachToOTHelpers._findElementWithDisplayNone = findElementWithDisplayNone;\nextensions.css(ElementCollection, findElementWithDisplayNone);\nextensions.attributes(ElementCollection);\nextensions.classNames(ElementCollection);\nextensions.observers(ElementCollection); // TODO: Deprecation logging?\n// @remove\n\n['on', 'off', 'isDisplayNone', 'show', 'hide', 'css', 'makeVisibleAndYield', 'addClass', 'removeClass'].forEach(methodName => {\n ElementCollection._attachToOTHelpers[methodName] = function ()\n /* arguments */\n {\n const args = Array.prototype.slice.apply(arguments);\n const element = args.shift();\n const collection = new ElementCollection(element);\n return ElementCollection.prototype[methodName].apply(collection, args);\n };\n});\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle, no-param-reassign */\nmodule.exports = function (mod) {\n const attachments = {};\n Object.keys(mod).forEach(key => {\n attachments[key] = mod[key];\n });\n mod._attachToOTHelpers = attachments;\n};\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle, no-void, no-restricted-syntax, no-prototype-builtins */\n\n/* eslint-disable no-continue, prefer-spread, prefer-rest-params */\nconst isFunction = __webpack_require__(15);\n\nconst eventing = __webpack_require__(6);\n\nconst logging = __webpack_require__(1)('Collection');\n\nmodule.exports = function Collection(idField) {\n let _models = [];\n let _byId = {};\n\n const _idField = idField || 'id';\n\n eventing(this);\n\n const modelProperty = function modelProperty(model, property) {\n if (isFunction(model[property])) {\n return model[property]();\n }\n\n return model[property];\n };\n\n const onModelUpdate = function onModelUpdate(event) {\n this.trigger('update', event);\n this.trigger(`update:${event.target.id}`, event);\n }.bind(this);\n\n const onModelDestroy = function onModelDestroyed(event) {\n this.remove(event.target, event.reason);\n }.bind(this);\n\n this.reset = function () {\n // Stop listening on the models, they are no longer our problem\n _models.forEach(function (model) {\n model.off('updated', onModelUpdate, this);\n model.off('destroyed', onModelDestroy, this);\n }, this);\n\n _models = [];\n _byId = {};\n };\n\n this.destroy = function (reason) {\n _models.forEach(model => {\n if (model && typeof model.destroy === 'function') {\n model.destroy(reason, true);\n }\n });\n\n this.reset();\n this.off();\n };\n\n this.get = function (id) {\n return id && _byId[id] !== void 0 ? _models[_byId[id]] : void 0;\n };\n\n this.has = function (id) {\n return id && _byId[id] !== void 0;\n };\n\n this.toString = function () {\n return _models.toString();\n }; // Return only models filtered by either a dict of properties\n // or a filter function.\n //\n // @example Return all publishers with a streamId of 1\n // OT.publishers.where({streamId: 1})\n //\n // @example The same thing but filtering using a filter function\n // OT.publishers.where(function(publisher) {\n // return publisher.stream.id === 4;\n // });\n //\n // @example The same thing but filtering using a filter function\n // executed with a specific this\n // OT.publishers.where(function(publisher) {\n // return publisher.stream.id === 4;\n // }, self);\n //\n\n\n this.where = function (attrsOrFilterFn, context) {\n if (isFunction(attrsOrFilterFn)) {\n return _models.filter(attrsOrFilterFn, context);\n }\n\n return _models.filter(model => {\n for (const key in attrsOrFilterFn) {\n if (!attrsOrFilterFn.hasOwnProperty(key)) {\n continue;\n }\n\n if (modelProperty(model, key) !== attrsOrFilterFn[key]) {\n return false;\n }\n }\n\n return true;\n });\n }; // Similar to where in behaviour, except that it only returns\n // the first match.\n\n\n this.find = function (attrsOrFilterFn, context) {\n let filterFn;\n\n if (isFunction(attrsOrFilterFn)) {\n filterFn = attrsOrFilterFn;\n } else {\n filterFn = function filterFn(model) {\n for (const key in attrsOrFilterFn) {\n if (!attrsOrFilterFn.hasOwnProperty(key)) {\n continue;\n }\n\n if (modelProperty(model, key) !== attrsOrFilterFn[key]) {\n return false;\n }\n }\n\n return true;\n };\n }\n\n filterFn = filterFn.bind(context);\n\n for (let i = 0; i < _models.length; ++i) {\n if (filterFn(_models[i]) === true) {\n return _models[i];\n }\n }\n\n return null;\n };\n\n this.forEach = function (fn, context) {\n _models.forEach(fn, context);\n\n return this;\n };\n\n this.map = function (fn) {\n return _models.map(fn);\n };\n\n this.add = function (model) {\n const id = modelProperty(model, _idField);\n\n if (this.has(id)) {\n logging.warn(`Model ${id} is already in the collection`, _models);\n return this;\n }\n\n _byId[id] = _models.push(model) - 1;\n model.on('updated', onModelUpdate, this);\n model.on('destroyed', onModelDestroy, this);\n this.trigger('add', model);\n this.trigger(`add:${id}`, model);\n return this;\n };\n\n this.remove = function (model, reason) {\n const id = modelProperty(model, _idField);\n\n _models.splice(_byId[id], 1); // Shuffle everyone down one\n\n\n for (let i = _byId[id]; i < _models.length; ++i) {\n _byId[modelProperty(_models[i], _idField)] = i;\n }\n\n delete _byId[id];\n model.off('updated', onModelUpdate, this);\n model.off('destroyed', onModelDestroy, this);\n this.trigger('remove', model, reason);\n this.trigger(`remove:${id}`, model, reason);\n return this;\n }; // Retrigger the add event behaviour for each model. You can also\n // select a subset of models to trigger using the same arguments\n // as the #where method.\n\n\n this._triggerAddEvents = function () {\n this.where.apply(this, arguments).forEach(function (model) {\n this.trigger('add', model);\n this.trigger(`add:${modelProperty(model, _idField)}`, model);\n }, this);\n };\n\n this.length = function () {\n return _models.length;\n };\n};\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst logging = __webpack_require__(1)('deprecation');\n\nmodule.exports = function setDeprecatedProperty(object, key, _temp) {\n let _ref = _temp === void 0 ? {} : _temp,\n defaultValue = _ref.value,\n _ref$name = _ref.name,\n name = _ref$name === void 0 ? `${key}` : _ref$name,\n _ref$getWarning = _ref.getWarning,\n getWarning = _ref$getWarning === void 0 ? '' : _ref$getWarning,\n _ref$setWarning = _ref.setWarning,\n setWarning = _ref$setWarning === void 0 ? '' : _ref$setWarning,\n _ref$canSet = _ref.canSet,\n canSet = _ref$canSet === void 0 ? false : _ref$canSet,\n _ref$warnOnSet = _ref.warnOnSet,\n warnOnSet = _ref$warnOnSet === void 0 ? false : _ref$warnOnSet;\n\n let value = defaultValue;\n let hasWarnedOnGet = false;\n let hasWarnedOnSet = !warnOnSet;\n const propertyDescriptor = {\n get() {\n if (!hasWarnedOnGet) {\n hasWarnedOnGet = true;\n logging.warn(`${name} is deprecated, and will be removed in the future. ${getWarning}`.trim());\n }\n\n return value;\n },\n\n set(newValue) {\n if (canSet) {\n value = newValue;\n }\n\n if (!hasWarnedOnSet) {\n hasWarnedOnSet = true;\n\n if (canSet) {\n logging.warn(`${name} is deprecated. ${setWarning}`.trim());\n } else {\n logging.warn(`${name} is deprecated, and will be removed in the future. ${setWarning}`.trim());\n }\n }\n }\n\n };\n Object.defineProperty(object, key, propertyDescriptor);\n};\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle, no-param-reassign, no-void */\n\n/* eslint-disable no-restricted-syntax, no-prototype-builtins, no-shadow, one-var, vars-on-top */\n\n/* eslint-disable no-var */\nconst env = __webpack_require__(2);\n\nconst isObject = __webpack_require__(9);\n\nlet getErrorLocation; // Properties that we'll acknowledge from the JS Error object\n\nconst safeErrorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack']; // OTHelpers.Error\n//\n// A construct to contain error information that also helps with extracting error\n// context, such as stack trace.\n//\n// @constructor\n// @memberof OTHelpers\n// @method Error\n//\n// @param {String} message\n// Optional. The error message\n//\n// @param {Object} props\n// Optional. A dictionary of properties containing extra Error info.\n//\n//\n// @example Create a simple error with juts a custom message\n// var error = new OTHelpers.Error('Something Broke!');\n// error.message === 'Something Broke!';\n//\n// @example Create an Error with a message and a name\n// var error = new OTHelpers.Error('Something Broke!', 'FooError');\n// error.message === 'Something Broke!';\n// error.name === 'FooError';\n//\n// @example Create an Error with a message, name, and custom properties\n// var error = new OTHelpers.Error('Something Broke!', 'FooError', {\n// foo: 'bar',\n// listOfImportantThings: [1,2,3,4]\n// });\n// error.message === 'Something Broke!';\n// error.name === 'FooError';\n// error.foo === 'bar';\n// error.listOfImportantThings == [1,2,3,4];\n//\n// @example Create an Error from a Javascript Error\n// var error = new OTHelpers.Error(domSyntaxError);\n// error.message === domSyntaxError.message;\n// error.name === domSyntaxError.name === 'SyntaxError';\n// // ...continues for each properties of domSyntaxError\n//\n// @references\n// * https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi\n// * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/Stack\n// * http://www.w3.org/TR/dom/#interface-domerror\n//\n//\n// @todo\n// * update usage in OTMedia\n// * replace error handling in OT.js\n// * normalise stack behaviour under Chrome/Node/Safari with other browsers\n// * unit test for stack parsing\n//\n\nconst Error_ = function Error_(message, name, props) {\n switch (arguments.length) {\n case 1:\n if (isObject(message)) {\n props = message;\n name = void 0;\n message = void 0;\n } // Otherwise it's the message\n\n\n break;\n\n case 2:\n if (isObject(name)) {\n props = name;\n name = void 0;\n } // Otherwise name is actually the name\n\n\n break;\n\n default: // FIXME: Should something go here?\n\n }\n\n if (props instanceof Error) {\n // Special handling of this due to Chrome weirdness. It seems that\n // properties of the Error object, and it's children, are not\n // enumerable in Chrome?\n for (let i = 0, num = safeErrorProps.length; i < num; ++i) {\n this[safeErrorProps[i]] = props[safeErrorProps[i]];\n }\n } else if (isObject(props)) {\n // Use an custom properties that are provided\n for (const key in props) {\n if (props.hasOwnProperty(key)) {\n this[key] = props[key];\n }\n }\n } // If any of the fundamental properties are missing then try and\n // extract them.\n\n\n if (!(this.fileName && this.lineNumber && this.columnNumber && this.stack)) {\n const err = getErrorLocation();\n\n if (!this.fileName && err.fileName) {\n this.fileName = err.fileName;\n }\n\n if (!this.lineNumber && err.lineNumber) {\n this.lineNumber = err.lineNumber;\n }\n\n if (!this.columnNumber && err.columnNumber) {\n this.columnNumber = err.columnNumber;\n }\n\n if (!this.stack && err.stack) {\n this.stack = err.stack;\n }\n }\n\n if (!this.message && message) {\n this.message = message;\n }\n\n if ((!this.name || this.name === 'Error') && name) {\n this.name = name;\n }\n};\n\nmodule.exports = Error_;\nError_.prototype = Object.create(Error.prototype);\n\nError_.prototype.toString = function () {\n let locationDetails = '';\n\n if (this.fileName) {\n locationDetails += ` ${this.fileName}`;\n }\n\n if (this.lineNumber) {\n locationDetails += ` ${this.lineNumber}`;\n\n if (this.columnNumber) {\n locationDetails += `:${this.columnNumber}`;\n }\n }\n\n return `<${this.name ? `${this.name} ` : ''}${this.message}${locationDetails}>`;\n};\n\nError_.prototype.valueOf = Error_.prototype.toString; // Normalise err.stack so that it is the same format as the other browsers\n// We skip the first two frames so that we don't capture getErrorLocation() and\n// the callee.\n//\n// Used by Environments that support the StackTrace API. (Chrome, Node, Opera)\n//\n\nconst prepareStackTrace = function prepareStackTrace(_, stack) {\n return stack.slice(2).map(frame => {\n const _f = {\n fileName: frame.getFileName(),\n linenumber: frame.getLineNumber(),\n columnNumber: frame.getColumnNumber()\n };\n\n if (frame.getFunctionName()) {\n _f.functionName = frame.getFunctionName();\n }\n\n if (frame.getMethodName()) {\n _f.methodName = frame.getMethodName();\n }\n\n if (frame.getThis()) {\n _f.self = frame.getThis();\n }\n\n return _f;\n });\n}; // Black magic to retrieve error location info for various environments\n\n\ngetErrorLocation = function getErrorLocation() {\n const info = {};\n let callstack, errLocation, err;\n\n switch (env.name) {\n case 'Firefox':\n case 'Safari':\n try {\n (typeof window !== undefined ? window : global).call.js.is.explody();\n } catch (e) {\n err = e;\n }\n\n callstack = (err.stack || '').split('\\n'); // Remove call to getErrorLocation() and the callee\n\n callstack.shift();\n callstack.shift();\n info.stack = callstack;\n errLocation = /@(.+?):([0-9]+)(:([0-9]+))?$/.exec(callstack[0]);\n\n if (errLocation) {\n info.fileName = errLocation[1];\n info.lineNumber = parseInt(errLocation[2], 10);\n\n if (errLocation.length > 3) {\n info.columnNumber = parseInt(errLocation[4], 10);\n }\n }\n\n break;\n\n case 'Chrome':\n case 'Node':\n case 'Opera':\n var currentPST = Error.prepareStackTrace;\n Error.prepareStackTrace = prepareStackTrace;\n err = new Error();\n info.stack = err.stack;\n Error.prepareStackTrace = currentPST;\n var topFrame = info.stack[0];\n info.lineNumber = topFrame.lineNumber;\n info.columnNumber = topFrame.columnNumber;\n info.fileName = topFrame.fileName;\n\n if (topFrame.functionName) {\n info.functionName = topFrame.functionName;\n }\n\n if (topFrame.methodName) {\n info.methodName = topFrame.methodName;\n }\n\n if (topFrame.self) {\n info.self = topFrame.self;\n }\n\n break;\n\n default:\n err = new Error();\n\n if (err.stack) {\n info.stack = err.stack.split('\\n');\n }\n\n break;\n }\n\n if (err.message) {\n info.message = err.message;\n }\n\n return info;\n};\n\n/***/ }),\n/* 251 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* eslint-env node */\n\n\n// SDP helpers.\nvar SDPUtils = {};\n\n// Generate an alphanumeric identifier for cname or mids.\n// TODO: use UUIDs instead? https://gist.github.com/jed/982883\nSDPUtils.generateIdentifier = function() {\n return Math.random().toString(36).substr(2, 10);\n};\n\n// The RTCP CNAME used by all peerconnections from the same JS.\nSDPUtils.localCName = SDPUtils.generateIdentifier();\n\n// Splits SDP into lines, dealing with both CRLF and LF.\nSDPUtils.splitLines = function(blob) {\n return blob.trim().split('\\n').map(function(line) {\n return line.trim();\n });\n};\n// Splits SDP into sessionpart and mediasections. Ensures CRLF.\nSDPUtils.splitSections = function(blob) {\n var parts = blob.split('\\nm=');\n return parts.map(function(part, index) {\n return (index > 0 ? 'm=' + part : part).trim() + '\\r\\n';\n });\n};\n\n// returns the session description.\nSDPUtils.getDescription = function(blob) {\n var sections = SDPUtils.splitSections(blob);\n return sections && sections[0];\n};\n\n// returns the individual media sections.\nSDPUtils.getMediaSections = function(blob) {\n var sections = SDPUtils.splitSections(blob);\n sections.shift();\n return sections;\n};\n\n// Returns lines that start with a certain prefix.\nSDPUtils.matchPrefix = function(blob, prefix) {\n return SDPUtils.splitLines(blob).filter(function(line) {\n return line.indexOf(prefix) === 0;\n });\n};\n\n// Parses an ICE candidate line. Sample input:\n// candidate:702786350 2 udp 41819902 8.8.8.8 60769 typ relay raddr 8.8.8.8\n// rport 55996\"\nSDPUtils.parseCandidate = function(line) {\n var parts;\n // Parse both variants.\n if (line.indexOf('a=candidate:') === 0) {\n parts = line.substring(12).split(' ');\n } else {\n parts = line.substring(10).split(' ');\n }\n\n var candidate = {\n foundation: parts[0],\n component: parseInt(parts[1], 10),\n protocol: parts[2].toLowerCase(),\n priority: parseInt(parts[3], 10),\n ip: parts[4],\n address: parts[4], // address is an alias for ip.\n port: parseInt(parts[5], 10),\n // skip parts[6] == 'typ'\n type: parts[7]\n };\n\n for (var i = 8; i < parts.length; i += 2) {\n switch (parts[i]) {\n case 'raddr':\n candidate.relatedAddress = parts[i + 1];\n break;\n case 'rport':\n candidate.relatedPort = parseInt(parts[i + 1], 10);\n break;\n case 'tcptype':\n candidate.tcpType = parts[i + 1];\n break;\n case 'ufrag':\n candidate.ufrag = parts[i + 1]; // for backward compability.\n candidate.usernameFragment = parts[i + 1];\n break;\n default: // extension handling, in particular ufrag\n candidate[parts[i]] = parts[i + 1];\n break;\n }\n }\n return candidate;\n};\n\n// Translates a candidate object into SDP candidate attribute.\nSDPUtils.writeCandidate = function(candidate) {\n var sdp = [];\n sdp.push(candidate.foundation);\n sdp.push(candidate.component);\n sdp.push(candidate.protocol.toUpperCase());\n sdp.push(candidate.priority);\n sdp.push(candidate.address || candidate.ip);\n sdp.push(candidate.port);\n\n var type = candidate.type;\n sdp.push('typ');\n sdp.push(type);\n if (type !== 'host' && candidate.relatedAddress &&\n candidate.relatedPort) {\n sdp.push('raddr');\n sdp.push(candidate.relatedAddress);\n sdp.push('rport');\n sdp.push(candidate.relatedPort);\n }\n if (candidate.tcpType && candidate.protocol.toLowerCase() === 'tcp') {\n sdp.push('tcptype');\n sdp.push(candidate.tcpType);\n }\n if (candidate.usernameFragment || candidate.ufrag) {\n sdp.push('ufrag');\n sdp.push(candidate.usernameFragment || candidate.ufrag);\n }\n return 'candidate:' + sdp.join(' ');\n};\n\n// Parses an ice-options line, returns an array of option tags.\n// a=ice-options:foo bar\nSDPUtils.parseIceOptions = function(line) {\n return line.substr(14).split(' ');\n};\n\n// Parses an rtpmap line, returns RTCRtpCoddecParameters. Sample input:\n// a=rtpmap:111 opus/48000/2\nSDPUtils.parseRtpMap = function(line) {\n var parts = line.substr(9).split(' ');\n var parsed = {\n payloadType: parseInt(parts.shift(), 10) // was: id\n };\n\n parts = parts[0].split('/');\n\n parsed.name = parts[0];\n parsed.clockRate = parseInt(parts[1], 10); // was: clockrate\n parsed.channels = parts.length === 3 ? parseInt(parts[2], 10) : 1;\n // legacy alias, got renamed back to channels in ORTC.\n parsed.numChannels = parsed.channels;\n return parsed;\n};\n\n// Generate an a=rtpmap line from RTCRtpCodecCapability or\n// RTCRtpCodecParameters.\nSDPUtils.writeRtpMap = function(codec) {\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n var channels = codec.channels || codec.numChannels || 1;\n return 'a=rtpmap:' + pt + ' ' + codec.name + '/' + codec.clockRate +\n (channels !== 1 ? '/' + channels : '') + '\\r\\n';\n};\n\n// Parses an a=extmap line (headerextension from RFC 5285). Sample input:\n// a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n// a=extmap:2/sendonly urn:ietf:params:rtp-hdrext:toffset\nSDPUtils.parseExtmap = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n id: parseInt(parts[0], 10),\n direction: parts[0].indexOf('/') > 0 ? parts[0].split('/')[1] : 'sendrecv',\n uri: parts[1]\n };\n};\n\n// Generates a=extmap line from RTCRtpHeaderExtensionParameters or\n// RTCRtpHeaderExtension.\nSDPUtils.writeExtmap = function(headerExtension) {\n return 'a=extmap:' + (headerExtension.id || headerExtension.preferredId) +\n (headerExtension.direction && headerExtension.direction !== 'sendrecv'\n ? '/' + headerExtension.direction\n : '') +\n ' ' + headerExtension.uri + '\\r\\n';\n};\n\n// Parses an ftmp line, returns dictionary. Sample input:\n// a=fmtp:96 vbr=on;cng=on\n// Also deals with vbr=on; cng=on\nSDPUtils.parseFmtp = function(line) {\n var parsed = {};\n var kv;\n var parts = line.substr(line.indexOf(' ') + 1).split(';');\n for (var j = 0; j < parts.length; j++) {\n kv = parts[j].trim().split('=');\n parsed[kv[0].trim()] = kv[1];\n }\n return parsed;\n};\n\n// Generates an a=ftmp line from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeFmtp = function(codec) {\n var line = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.parameters && Object.keys(codec.parameters).length) {\n var params = [];\n Object.keys(codec.parameters).forEach(function(param) {\n if (codec.parameters[param]) {\n params.push(param + '=' + codec.parameters[param]);\n } else {\n params.push(param);\n }\n });\n line += 'a=fmtp:' + pt + ' ' + params.join(';') + '\\r\\n';\n }\n return line;\n};\n\n// Parses an rtcp-fb line, returns RTCPRtcpFeedback object. Sample input:\n// a=rtcp-fb:98 nack rpsi\nSDPUtils.parseRtcpFb = function(line) {\n var parts = line.substr(line.indexOf(' ') + 1).split(' ');\n return {\n type: parts.shift(),\n parameter: parts.join(' ')\n };\n};\n// Generate a=rtcp-fb lines from RTCRtpCodecCapability or RTCRtpCodecParameters.\nSDPUtils.writeRtcpFb = function(codec) {\n var lines = '';\n var pt = codec.payloadType;\n if (codec.preferredPayloadType !== undefined) {\n pt = codec.preferredPayloadType;\n }\n if (codec.rtcpFeedback && codec.rtcpFeedback.length) {\n // FIXME: special handling for trr-int?\n codec.rtcpFeedback.forEach(function(fb) {\n lines += 'a=rtcp-fb:' + pt + ' ' + fb.type +\n (fb.parameter && fb.parameter.length ? ' ' + fb.parameter : '') +\n '\\r\\n';\n });\n }\n return lines;\n};\n\n// Parses an RFC 5576 ssrc media attribute. Sample input:\n// a=ssrc:3735928559 cname:something\nSDPUtils.parseSsrcMedia = function(line) {\n var sp = line.indexOf(' ');\n var parts = {\n ssrc: parseInt(line.substr(7, sp - 7), 10)\n };\n var colon = line.indexOf(':', sp);\n if (colon > -1) {\n parts.attribute = line.substr(sp + 1, colon - sp - 1);\n parts.value = line.substr(colon + 1);\n } else {\n parts.attribute = line.substr(sp + 1);\n }\n return parts;\n};\n\nSDPUtils.parseSsrcGroup = function(line) {\n var parts = line.substr(13).split(' ');\n return {\n semantics: parts.shift(),\n ssrcs: parts.map(function(ssrc) {\n return parseInt(ssrc, 10);\n })\n };\n};\n\n// Extracts the MID (RFC 5888) from a media section.\n// returns the MID or undefined if no mid line was found.\nSDPUtils.getMid = function(mediaSection) {\n var mid = SDPUtils.matchPrefix(mediaSection, 'a=mid:')[0];\n if (mid) {\n return mid.substr(6);\n }\n};\n\nSDPUtils.parseFingerprint = function(line) {\n var parts = line.substr(14).split(' ');\n return {\n algorithm: parts[0].toLowerCase(), // algorithm is case-sensitive in Edge.\n value: parts[1]\n };\n};\n\n// Extracts DTLS parameters from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the fingerprint line as input. See also getIceParameters.\nSDPUtils.getDtlsParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=fingerprint:');\n // Note: a=setup line is ignored since we use the 'auto' role.\n // Note2: 'algorithm' is not case sensitive except in Edge.\n return {\n role: 'auto',\n fingerprints: lines.map(SDPUtils.parseFingerprint)\n };\n};\n\n// Serializes DTLS parameters to SDP.\nSDPUtils.writeDtlsParameters = function(params, setupType) {\n var sdp = 'a=setup:' + setupType + '\\r\\n';\n params.fingerprints.forEach(function(fp) {\n sdp += 'a=fingerprint:' + fp.algorithm + ' ' + fp.value + '\\r\\n';\n });\n return sdp;\n};\n\n// Parses a=crypto lines into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#dictionary-rtcsrtpsdesparameters-members\nSDPUtils.parseCryptoLine = function(line) {\n var parts = line.substr(9).split(' ');\n return {\n tag: parseInt(parts[0], 10),\n cryptoSuite: parts[1],\n keyParams: parts[2],\n sessionParams: parts.slice(3),\n };\n};\n\nSDPUtils.writeCryptoLine = function(parameters) {\n return 'a=crypto:' + parameters.tag + ' ' +\n parameters.cryptoSuite + ' ' +\n (typeof parameters.keyParams === 'object'\n ? SDPUtils.writeCryptoKeyParams(parameters.keyParams)\n : parameters.keyParams) +\n (parameters.sessionParams ? ' ' + parameters.sessionParams.join(' ') : '') +\n '\\r\\n';\n};\n\n// Parses the crypto key parameters into\n// https://rawgit.com/aboba/edgertc/master/msortc-rs4.html#rtcsrtpkeyparam*\nSDPUtils.parseCryptoKeyParams = function(keyParams) {\n if (keyParams.indexOf('inline:') !== 0) {\n return null;\n }\n var parts = keyParams.substr(7).split('|');\n return {\n keyMethod: 'inline',\n keySalt: parts[0],\n lifeTime: parts[1],\n mkiValue: parts[2] ? parts[2].split(':')[0] : undefined,\n mkiLength: parts[2] ? parts[2].split(':')[1] : undefined,\n };\n};\n\nSDPUtils.writeCryptoKeyParams = function(keyParams) {\n return keyParams.keyMethod + ':'\n + keyParams.keySalt +\n (keyParams.lifeTime ? '|' + keyParams.lifeTime : '') +\n (keyParams.mkiValue && keyParams.mkiLength\n ? '|' + keyParams.mkiValue + ':' + keyParams.mkiLength\n : '');\n};\n\n// Extracts all SDES paramters.\nSDPUtils.getCryptoParameters = function(mediaSection, sessionpart) {\n var lines = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=crypto:');\n return lines.map(SDPUtils.parseCryptoLine);\n};\n\n// Parses ICE information from SDP media section or sessionpart.\n// FIXME: for consistency with other functions this should only\n// get the ice-ufrag and ice-pwd lines as input.\nSDPUtils.getIceParameters = function(mediaSection, sessionpart) {\n var ufrag = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-ufrag:')[0];\n var pwd = SDPUtils.matchPrefix(mediaSection + sessionpart,\n 'a=ice-pwd:')[0];\n if (!(ufrag && pwd)) {\n return null;\n }\n return {\n usernameFragment: ufrag.substr(12),\n password: pwd.substr(10),\n };\n};\n\n// Serializes ICE parameters to SDP.\nSDPUtils.writeIceParameters = function(params) {\n return 'a=ice-ufrag:' + params.usernameFragment + '\\r\\n' +\n 'a=ice-pwd:' + params.password + '\\r\\n';\n};\n\n// Parses the SDP media section and returns RTCRtpParameters.\nSDPUtils.parseRtpParameters = function(mediaSection) {\n var description = {\n codecs: [],\n headerExtensions: [],\n fecMechanisms: [],\n rtcp: []\n };\n var lines = SDPUtils.splitLines(mediaSection);\n var mline = lines[0].split(' ');\n for (var i = 3; i < mline.length; i++) { // find all codecs from mline[3..]\n var pt = mline[i];\n var rtpmapline = SDPUtils.matchPrefix(\n mediaSection, 'a=rtpmap:' + pt + ' ')[0];\n if (rtpmapline) {\n var codec = SDPUtils.parseRtpMap(rtpmapline);\n var fmtps = SDPUtils.matchPrefix(\n mediaSection, 'a=fmtp:' + pt + ' ');\n // Only the first a=fmtp:
RTCPeerConnection.getStats
based audio level sampler.\n *\n * It uses the getStats
method to get the audioOutputLevel
.\n * This implementation expects the single parameter version of the getStats
method.\n *\n * Currently the audioOutputLevel
stats is only supported in Chrome.\n *\n * @param {function} \"getStats\" function or \"getSynchronizationSources\" function\n * @constructor\n */\n\n\nmodule.exports = (_temp = /*#__PURE__*/function () {\n function GetAudioLevelSampler(getAudioLevel, _temp2) {\n var _context;\n\n let _ref = _temp2 === void 0 ? {} : _temp2,\n _ref$requestAnimation = _ref.requestAnimationFrame,\n requestAnimationFrame = _ref$requestAnimation === void 0 ? (_context = window).requestAnimationFrame.bind(_context) : _ref$requestAnimation;\n\n (0, _defineProperty2.default)(this, \"_lastCalled\", now());\n (0, _defineProperty2.default)(this, \"_audioLevel\", undefined);\n (0, _defineProperty2.default)(this, \"_running\", false);\n this._requestAnimationFrame = requestAnimationFrame;\n this._getAudioLevel = getAudioLevel;\n\n this._startLoop();\n }\n\n var _proto = GetAudioLevelSampler.prototype;\n\n _proto._startLoop = function _startLoop() {\n if (this._running) {\n return;\n }\n\n this._running = true;\n\n this._requestAnimationFrame(this._loop.bind(this));\n };\n\n _proto._loop = function _loop() {\n this._getAudioLevel((error, stats) => {\n // @todo we should measure how long the getStats so that we can determine\n // our impact on the render loop, and skip frames if need to reduce our\n // CPU utilization\n // Stat entries without audio can have audioLevel 0 so we just look for the max level\n let maxLevel = null;\n\n if (!error) {\n for (let idx = 0; idx < stats.length; idx += 1) {\n const stat = stats[idx];\n let level = null;\n\n if (stat.audioOutputLevel !== undefined) {\n // the max value delivered by getStats via audioOutputLevel is 2^15\n const audioOutputLevel = parseFloat(stat.audioOutputLevel) / 32768;\n\n if (!isNaN(audioOutputLevel)) {\n level = audioOutputLevel;\n }\n } else if (stat.audioLevel !== undefined) {\n level = stat.audioLevel;\n }\n\n if (level !== null && (maxLevel === null || level > maxLevel)) {\n maxLevel = level;\n }\n }\n\n this._audioLevel = maxLevel;\n\n if (this._running && now() - this._lastCalled < 10000) {\n this._requestAnimationFrame(this._loop.bind(this));\n } else {\n this._running = false;\n }\n }\n });\n };\n\n _proto.destroy = function destroy() {\n this._running = false;\n };\n\n _proto.sample = function sample(done) {\n if (typeof done === 'function') {\n throw new Error('sample no longer takes a callback');\n }\n\n this._startLoop();\n\n this._lastCalled = now();\n return this._audioLevel;\n };\n\n return GetAudioLevelSampler;\n}(), _temp);\n\n/***/ }),\n/* 254 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst merge = __webpack_require__(147);\n\nconst normalizeConstraintInput = __webpack_require__(562);\n\nconst isScreenSharingSource = __webpack_require__(264);\n\nfunction createSourceConstraint(media, enableRenegotiation, usingOptionalMandatoryStyle) {\n if (!media.publish && enableRenegotiation) {\n // FIXME: I'm still not quite happy with how this works. With renegotiation, when publish\n // changes to true we shouldn't have to recalculate constraints. I think Publisher should handle\n // this override instead and this component shouldn't know anything about renegotiation.\n // Related: OPENTOK-31082\n return false;\n }\n\n if (typeof media.source === 'boolean') {\n return media.source;\n }\n\n if (usingOptionalMandatoryStyle) {\n return {\n mandatory: {\n sourceId: media.source\n }\n };\n } // getDisplayMedia doesn't support exact constraints\n\n\n if (isScreenSharingSource(media.source)) {\n return {};\n }\n\n return {\n deviceId: {\n exact: media.source\n }\n };\n}\n\nfunction generateAudioConstraints(opt) {\n let constraints = createSourceConstraint(opt.audio, opt.enableRenegotiation, opt.usingOptionalMandatoryStyle);\n\n if (constraints === false) {\n return false;\n }\n\n const usingOptionalMandatoryStyle = opt.usingOptionalMandatoryStyle,\n enableStereo = opt.enableStereo,\n echoCancellation = opt.echoCancellation,\n noiseSuppression = opt.noiseSuppression,\n autoGainControl = opt.autoGainControl,\n disableAudioProcessing = opt.disableAudioProcessing;\n\n const addConstraint = constraint => {\n if (typeof constraints !== 'object') return; // Chrome<61 uses optional/mandatory style because a boolean is equivalent to an ideal value\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=700223#c3\n\n if (usingOptionalMandatoryStyle) {\n merge(constraints, {\n optional: []\n });\n constraints.optional.push(constraint);\n } else {\n merge(constraints, constraint);\n }\n };\n\n if ((enableStereo || disableAudioProcessing || !echoCancellation || !noiseSuppression || !autoGainControl) && constraints === true) {\n constraints = {};\n }\n\n if (enableStereo) {\n addConstraint({\n channelCount: 2\n });\n }\n\n ['echoCancellation', 'autoGainControl', 'noiseSuppression'].forEach(audioConstraintName => {\n const constraintValue = !disableAudioProcessing && opt[audioConstraintName];\n addConstraint({\n [audioConstraintName]: constraintValue\n });\n });\n return constraints;\n}\n\nfunction generateVideoConstraints(opt) {\n let constraints = createSourceConstraint(opt.video, opt.enableRenegotiation, opt.usingOptionalMandatoryStyle);\n\n if (constraints === false) {\n return false;\n }\n\n const videoDimensions = opt.videoDimensions,\n frameRate = opt.frameRate,\n maxResolution = opt.maxResolution,\n facingMode = opt.facingMode,\n usingOptionalMandatoryStyle = opt.usingOptionalMandatoryStyle;\n\n if ((videoDimensions || frameRate || maxResolution || facingMode) && constraints === true) {\n constraints = {};\n }\n\n if (videoDimensions) {\n const width = videoDimensions.width;\n const height = videoDimensions.height;\n\n if (usingOptionalMandatoryStyle) {\n merge(constraints, {\n optional: []\n });\n constraints.optional.push({\n minWidth: width\n }, {\n maxWidth: width\n }, {\n minHeight: height\n }, {\n maxHeight: height\n });\n } else {\n merge(constraints, {\n width: {\n ideal: width\n },\n height: {\n ideal: height\n }\n });\n }\n }\n\n if (frameRate) {\n if (usingOptionalMandatoryStyle) {\n merge(constraints, {\n optional: []\n });\n constraints.optional.push({\n minFrameRate: frameRate\n }, {\n maxFrameRate: frameRate\n });\n } else {\n merge(constraints, {\n frameRate: {\n ideal: frameRate\n }\n });\n }\n }\n\n if (maxResolution) {\n if (usingOptionalMandatoryStyle) {\n merge(constraints, {\n mandatory: {\n maxWidth: maxResolution.width,\n maxHeight: maxResolution.height\n }\n });\n } else {\n merge(constraints, {\n width: {\n max: maxResolution.width\n },\n height: {\n max: maxResolution.height\n }\n });\n }\n }\n\n if (facingMode) {\n if (usingOptionalMandatoryStyle) {\n merge(constraints, {\n optional: []\n });\n constraints.optional.push({\n facingMode\n });\n } else {\n merge(constraints, {\n facingMode: {\n ideal: facingMode\n }\n });\n }\n }\n\n return constraints;\n}\n\nfunction generateConstraints(opt) {\n return {\n audio: generateAudioConstraints(opt),\n video: generateVideoConstraints(opt)\n };\n}\n\nmodule.exports = function generateConstraintInfo(opt) {\n const normOpt = normalizeConstraintInput(opt);\n const constraints = generateConstraints(normOpt);\n return {\n constraints,\n publishAudio: normOpt.audio.publish,\n publishVideo: normOpt.video.publish,\n frameRate: normOpt.frameRate,\n videoDimensions: normOpt.videoDimensions,\n audioDeviceId: typeof normOpt.audio.source === 'string' ? normOpt.audio.source : undefined,\n videoDeviceId: typeof normOpt.video.source === 'string' ? normOpt.video.source : undefined\n };\n};\n\n/***/ }),\n/* 255 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseAssignValue = __webpack_require__(63),\n eq = __webpack_require__(51);\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n\n\n/***/ }),\n/* 256 */\n/***/ (function(module, exports) {\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst _require = __webpack_require__(2),\n name = _require.name,\n version = _require.version,\n isChromiumEdge = _require.isChromiumEdge;\n\nmodule.exports = isChromiumEdge || name === 'Chrome' && version >= 72 || name === 'Firefox' && version >= 66 || name === 'Opera' && version >= 60 || name === 'Safari';\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toString = __webpack_require__(58),\n upperFirst = __webpack_require__(259);\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createCaseFirst = __webpack_require__(567);\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports) {\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar asciiToArray = __webpack_require__(569),\n hasUnicode = __webpack_require__(261),\n unicodeToArray = __webpack_require__(570);\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst env = __webpack_require__(2);\n/*\nthe capture screen share with audio is only avaible for Chrome >= 74 & Chromium Edge >= 79, see\nhttps://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia#browser_compatibility\n\nAlso note that capture audio is only avaible for the user via the checkmark in tab selection\n*/\n\n\nmodule.exports = Boolean(env.isChrome && env.version >= 74 || env.isEdge && env.version >= 79);\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst screenSharingSources = __webpack_require__(571);\n\nconst isElectronScreenSharingSource = __webpack_require__(265);\n\nconst env = __webpack_require__(2);\n\nmodule.exports = videoSource => {\n if (env.isElectron) {\n // Electron only supports a subset of `screenSharingSources` available on\n // other user agents\n if (videoSource === 'screen') {\n return true;\n } // Checks if this video source is a custom screensharing source\n\n\n return isElectronScreenSharingSource(videoSource);\n }\n\n return screenSharingSources.indexOf(videoSource) > -1;\n};\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* global MediaStreamTrack */\nconst env = __webpack_require__(2);\n\nmodule.exports = videoSource => {\n if (!env.isElectron) {\n return false;\n } // ElectronJS sets the label to the same value for screensharing sources,\n // regardless of the DesktopCapturer source type\n\n\n return videoSource instanceof MediaStreamTrack && videoSource.label === 'Screen';\n};\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseForOwn = __webpack_require__(99),\n createBaseEach = __webpack_require__(576);\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = 15000;\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * castToBoolean\n *\n * @param {any} The value to cast\n * @returns {Boolean} True if value === 'true' or value === true, otherwise false.\n */\nmodule.exports = function (value, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = false;\n }\n\n return value === undefined ? defaultValue : value === 'true' || value === true;\n};\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst env = __webpack_require__(2);\n\nmodule.exports = () => {\n const isBrowser = !env.isNode && !env.isElectron;\n\n if (!isBrowser) {\n return false;\n } // More recent browsers don't expose GUM when called in insecure context\n // From https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n\n\n const isSecureContextRequired = // See https://www.chromestatus.com/feature/4924861776396288\n (env.isChrome || env.isOpera || env.isChromiumEdge) && env.version >= 74 || env.isFirefox && env.version >= 68 || // See https://webkit.org/blog/7763/a-closer-look-into-webrtc/\n env.isSafari && env.version >= 11;\n return isSecureContextRequired;\n};\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports) {\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayMap = __webpack_require__(33),\n baseClone = __webpack_require__(77),\n baseUnset = __webpack_require__(593),\n castPath = __webpack_require__(57),\n copyObject = __webpack_require__(39),\n customOmitClone = __webpack_require__(596),\n flatRest = __webpack_require__(137),\n getAllKeysIn = __webpack_require__(184);\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseFindIndex = __webpack_require__(205),\n baseIteratee = __webpack_require__(34),\n toInteger = __webpack_require__(96);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseUniq = __webpack_require__(598);\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst toArray = __webpack_require__(606);\n\nconst getRtcStatsReportAdapter = __webpack_require__(277);\n\nconst shouldUseStandardGetStats = __webpack_require__(102)(); // This returns the array-ified list of stats our users are accustomed to\n\n\nmodule.exports = (peerConnection, completion) => {\n getRtcStatsReportAdapter(peerConnection, (err, rtcStatsReport) => {\n let stats = [];\n\n if (shouldUseStandardGetStats) {\n // Firefox <= 45 can't use rtcStatsReport.values OPENTOK-32755\n if (typeof rtcStatsReport.values === 'function') {\n stats = toArray(rtcStatsReport.values());\n } else if (typeof rtcStatsReport.forEach !== 'function') {\n stats = Object.keys(rtcStatsReport).map(key => rtcStatsReport[key]);\n } else {\n rtcStatsReport.forEach(rtcStats => {\n stats.push(rtcStats);\n });\n }\n } else {\n rtcStatsReport.result().forEach(rtcStat => {\n const stat = {};\n rtcStat.names().forEach(name => {\n stat[name] = rtcStat.stat(name);\n }); // fake the structure of the \"new\" RTC stat object\n\n stat.id = rtcStat.id;\n stat.type = rtcStat.type;\n stat.timestamp = rtcStat.timestamp;\n stats.push(stat);\n });\n }\n\n completion(null, stats);\n });\n};\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(29),\n isArray = __webpack_require__(10),\n isObjectLike = __webpack_require__(16);\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n\n\n/***/ }),\n/* 276 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseValues = __webpack_require__(608),\n keys = __webpack_require__(30);\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst shouldUseStandardGetStats = __webpack_require__(102)();\n\nconst getRtcStats = (peerConnection, completion) => {\n peerConnection.getStats(null).then(stats => completion(null, stats)).catch(completion);\n};\n\nconst getRtcStatsLegacy = (peerConnection, completion) => {\n peerConnection.getStats(stats => {\n completion(null, stats);\n }, completion);\n}; // This returns the native or \"raw\" RtcStatsReport object\n\n\nconst getRtcStatsReportAdapter = (peerConnection, completion) => {\n const getRtcStatsReport = shouldUseStandardGetStats ? getRtcStats : getRtcStatsLegacy;\n getRtcStatsReport(peerConnection, completion);\n};\n\nmodule.exports = getRtcStatsReportAdapter;\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(156));\n\nvar _inheritsLoose2 = _interopRequireDefault(__webpack_require__(59));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(18));\n\nvar _events = __webpack_require__(41);\n\nvar _clone = _interopRequireDefault(__webpack_require__(36));\n\nvar _parseQOS = _interopRequireDefault(__webpack_require__(618));\n\nvar _TruthyChangeCounter = _interopRequireDefault(__webpack_require__(620));\n\nvar _now = _interopRequireDefault(__webpack_require__(48));\n\nvar _log = _interopRequireDefault(__webpack_require__(1));\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, no-void, no-use-before-define, one-var */\n\n/* eslint-disable no-restricted-syntax, no-prototype-builtins, no-underscore-dangle */\nconst logging = (0, _log.default)('QoS');\n\nlet Qos = /*#__PURE__*/function (_EventEmitter) {\n (0, _inheritsLoose2.default)(Qos, _EventEmitter);\n\n function Qos() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _EventEmitter.call(this, ...args) || this;\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"_peerConnection\", void 0);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"_isPublisher\", void 0);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"timeoutId\", void 0);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"_creationTime\", (0, _now.default)());\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"offerMessagesReceived\", 0);\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"prevStats\", {\n timeStamp: (0, _now.default)()\n });\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), \"changeCounters\", {\n videoCodec: new _TruthyChangeCounter.default(),\n audioCodec: new _TruthyChangeCounter.default()\n });\n return _this;\n }\n\n var _proto = Qos.prototype;\n\n _proto.startCollecting = function startCollecting(peerConnection, isPublisher) {\n if (!peerConnection || !peerConnection.getStats) {\n // this peerConnection doesn't support getStats, bail\n return;\n }\n\n this._isPublisher = isPublisher;\n const hadPeerConnection = Boolean(this._peerConnection);\n this._peerConnection = peerConnection;\n\n if (hadPeerConnection) {\n return;\n }\n\n const collectionLoop = interval => {\n const currentTime = (0, _now.default)(); // parseQOS pushes properties onto this object and gives it back\n\n const blankStats = {\n timeStamp: currentTime,\n duration: Math.round((currentTime - this._creationTime) / 1000),\n period: Math.round((currentTime - this.prevStats.timeStamp) / 1000)\n };\n (0, _parseQOS.default)(this._peerConnection, this.prevStats, blankStats, this._isPublisher, (err, parsedStats) => {\n if (err) {\n logging.error('Failed to Parse QOS Stats:', err);\n return;\n }\n\n this.handleParsedStats(parsedStats); // Recalculate the stats\n\n clearTimeout(this.timeoutId);\n this.timeoutId = setTimeout(() => collectionLoop(Qos.INTERVAL), interval);\n });\n };\n\n this.timeoutId = setTimeout(() => collectionLoop(Qos.INTERVAL - Qos.INITIAL_INTERVAL), Qos.INITIAL_INTERVAL);\n };\n\n _proto.stopCollecting = function stopCollecting() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n\n this._peerConnection = null;\n };\n\n _proto.handleOfferMessageReceived = function handleOfferMessageReceived() {\n this.offerMessagesReceived += 1;\n };\n\n _proto.handleParsedStats = function handleParsedStats(parsedStats) {\n Object.keys(this.changeCounters).forEach(key => {\n this.changeCounters[key].onValue(parsedStats[key]); // audioCodecChangeCount, videoCodecChangeCount\n\n parsedStats[`${key}ChangeCount`] = this.changeCounters[key].changeCount;\n });\n parsedStats.offerMessagesReceived = this.offerMessagesReceived;\n const periodicStats = (0, _clone.default)(parsedStats); // The following stats are reported with cumulative values:\n\n const periodicDataKeys = ['audioSentBytes', 'audioSentPackets', 'audioSentPacketsLost', 'videoSentBytes', 'videoSentPackets', 'videoSentPacketsLost', 'audioRecvBytes', 'audioRecvPackets', 'audioRecvPacketsLost', 'videoRecvBytes', 'videoRecvPackets', 'videoRecvPacketsLost']; // This adjusts the QoS values to be periodic, rather than cumulative:\n\n periodicDataKeys.forEach(dataKey => {\n periodicStats[dataKey] = this.prevStats && this.prevStats[dataKey] ? parsedStats[dataKey] - this.prevStats[dataKey] : parsedStats[dataKey];\n });\n\n if (this.prevStats && this.prevStats.videoFramesReceived) {\n const framesReceived = parsedStats.videoFramesReceived - this.prevStats.videoFramesReceived;\n const period = parsedStats.period;\n periodicStats.videoFrameRateReceived = Math.round(framesReceived / period);\n }\n\n this.prevStats = parsedStats; // We only need framesDecoded and framesEncoded in prevStats for calculating the video framerate\n // in Firefox 96+. So we can safely delete it from periodicStats to avoid putting it in the\n // QOS log.\n\n delete periodicStats.framesDecoded;\n delete periodicStats.framesEncoded;\n this.emit('stats', periodicStats);\n };\n\n return Qos;\n}(_events.EventEmitter); // Send stats after 1 sec\n\n\nQos.INITIAL_INTERVAL = 1000; // Recalculate the stats every 30 sec\n\nQos.INTERVAL = 30000;\nvar _default = Qos;\nexports.default = _default;\n\n/***/ }),\n/* 279 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = priority => {\n switch (priority >> 24) {\n // eslint-disable-line no-bitwise\n case 0:\n return 'TURN/TLS';\n\n case 1:\n return 'TURN/TCP';\n\n case 2:\n return 'TURN/UDP';\n\n default:\n return '';\n }\n};\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, global-require, no-void, prefer-rest-params, no-shadow */\nconst uuid = __webpack_require__(19);\n\nconst _require = __webpack_require__(159),\n haveGetDisplayMediaDefault = _require.default;\n\nconst ErrorsDefault = __webpack_require__(4);\n\nconst otErrorDefault = __webpack_require__(11);\n\nmodule.exports = function chromeExtensionHelperFactory(_temp) {\n let _ref = _temp === void 0 ? {} : _temp,\n _ref$haveGetDisplayMe = _ref.haveGetDisplayMedia,\n haveGetDisplayMedia = _ref$haveGetDisplayMe === void 0 ? haveGetDisplayMediaDefault : _ref$haveGetDisplayMe,\n _ref$global = _ref.global,\n context = _ref$global === void 0 ? (typeof window !== undefined ? window : global) : _ref$global,\n _ref$Errors = _ref.Errors,\n Errors = _ref$Errors === void 0 ? ErrorsDefault : _ref$Errors,\n _ref$otError = _ref.otError,\n otError = _ref$otError === void 0 ? otErrorDefault() : _ref$otError;\n\n const isSupportedInThisBrowser = // don't bother supporting extension when we have display media\n !haveGetDisplayMedia && !!context.navigator.webkitGetUserMedia && !context.navigator.userAgent.match(/android/i) && typeof context.chrome !== 'undefined';\n return {\n isSupportedInThisBrowser,\n autoRegisters: false,\n extensionRequired: true,\n getConstraintsShowsPermissionUI: true,\n sources: {\n screen: true,\n application: false,\n window: true,\n browser: true\n },\n\n register(extensionID, version) {\n if (version === 2) {\n return this.registerVersion2(extensionID);\n }\n\n return this.registerVersion1(extensionID);\n },\n\n registerVersion1(extensionID) {\n if (!extensionID) {\n throw new Error('initChromeScreenSharingExtensionHelper: extensionID is required.');\n }\n\n const isChrome = isSupportedInThisBrowser;\n const callbackRegistry = {};\n let isInstalled = void 0;\n const prefix = `com.tokbox.screenSharing.${extensionID}`;\n\n const request = function request(method, payload) {\n const res = {\n payload,\n from: 'jsapi'\n };\n res[prefix] = method;\n return res;\n };\n\n const addCallback = function addCallback(fn, timeToWait) {\n let timeout;\n const requestId = uuid();\n\n callbackRegistry[requestId] = function () {\n clearTimeout(timeout);\n timeout = null;\n fn(...arguments);\n };\n\n if (timeToWait) {\n timeout = setTimeout(() => {\n delete callbackRegistry[requestId];\n fn(otError(Errors.TIMEOUT, new Error('Timeout waiting for response to screensharing request.')));\n }, timeToWait);\n }\n\n return requestId;\n };\n\n const isAvailable = function isAvailable(callback) {\n if (!callback) {\n throw new Error('isAvailable: callback is required.');\n }\n\n if (!isChrome) {\n setTimeout(callback.bind(null, false));\n return;\n }\n\n if (isInstalled !== void 0) {\n setTimeout(callback.bind(null, isInstalled));\n } else {\n const requestId = addCallback(event => {\n if (isInstalled !== true) {\n isInstalled = event === 'extensionLoaded';\n }\n\n callback(isInstalled);\n }, 2000);\n const post = request('isExtensionInstalled', {\n requestId\n });\n context.postMessage(post, '*');\n }\n };\n\n const getConstraints = function getConstraints(source, constraints, callback) {\n if (!callback) {\n throw new Error('getSourceId: callback is required');\n }\n\n isAvailable(isInstalled => {\n if (!isInstalled) {\n return callback(otError(Errors.SCREEN_SHARING_EXTENSION_NOT_INSTALLED, new Error('Extension is not installed')));\n }\n\n const requestId = addCallback((event, payload) => {\n if (typeof event === 'object' && event.name && event.stack) {\n // FIXME: The callback shouldn't be overloaded like this ('event' is actually an\n // error), but I'm adding tests and don't want to refactor right now without testing\n // more thorougly.\n const error = event;\n callback(error);\n } else if (event === 'permissionDenied') {\n callback(otError(Errors.USER_MEDIA_ACCESS_DENIED, new Error('User denied access to screensharing')));\n } else {\n if (!constraints.video) {\n constraints.video = {};\n }\n\n if (!constraints.video.mandatory) {\n constraints.video.mandatory = {};\n }\n\n constraints.video.mandatory.chromeMediaSource = 'desktop';\n constraints.video.mandatory.chromeMediaSourceId = payload.sourceId;\n callback(void 0, constraints);\n }\n });\n context.postMessage(request('getSourceId', {\n requestId,\n source\n }), '*');\n return undefined;\n });\n };\n\n context.addEventListener('message', event => {\n if (event.origin !== context.location.origin) {\n return;\n }\n\n if (!(event.data != null && typeof event.data === 'object')) {\n return;\n }\n\n if (event.data.from !== 'extension') {\n return;\n }\n\n const method = event.data[prefix];\n const payload = event.data.payload;\n\n if (payload && payload.requestId) {\n const callback = callbackRegistry[payload.requestId];\n delete callbackRegistry[payload.requestId];\n\n if (callback) {\n callback(method, payload);\n }\n }\n\n if (method === 'extensionLoaded') {\n isInstalled = true;\n }\n });\n return {\n extensionAPIVersion: 1,\n extensionID,\n isInstalled: isAvailable,\n getConstraints\n };\n },\n\n registerVersion2(extensionID) {\n const isChrome = isSupportedInThisBrowser && typeof context.chrome.runtime !== 'undefined';\n\n const isInstalled = function isInstalled(callback) {\n if (!callback) {\n throw new Error('isAvailable: callback is required.');\n }\n\n if (!isChrome) {\n setTimeout(callback.bind(null, false));\n return;\n }\n\n context.chrome.runtime.sendMessage(extensionID, {\n type: 'isInstalled'\n }, null, response => {\n setTimeout(callback.bind(null, !!response));\n });\n };\n\n const getConstraints = function getConstraints(source, constraints, callback) {\n if (!callback) {\n throw new Error('getSourceId: callback is required');\n }\n\n isInstalled(installed => {\n if (!installed) {\n return callback(otError(Errors.SCREEN_SHARING_EXTENSION_NOT_INSTALLED, new Error('Extension is not installed')));\n }\n\n context.chrome.runtime.sendMessage(extensionID, {\n type: 'getSourceId',\n source\n }, null, data => {\n if (data.error === 'permissionDenied') {\n callback(otError(Errors.USER_MEDIA_ACCESS_DENIED, new Error('User denied access to screensharing')));\n } else if (data.error) {\n callback(new Error(`UnexpectError: ${data.error}`));\n } else {\n if (!constraints.video) {\n constraints.video = {};\n }\n\n if (!constraints.video.mandatory) {\n constraints.video.mandatory = {};\n }\n\n constraints.video.mandatory.chromeMediaSource = 'desktop';\n constraints.video.mandatory.chromeMediaSourceId = data.sourceId;\n callback(void 0, constraints);\n }\n });\n return undefined;\n });\n };\n\n return {\n extensionAPIVersion: 2,\n extensionID,\n isInstalled,\n getConstraints\n };\n }\n\n };\n};\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable global-require */\nconst createCleanupJobs = __webpack_require__(154);\n\nconst RafRunner = __webpack_require__(103);\n\nmodule.exports = function createChromeMixinFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const Archiving = deps.Archiving || __webpack_require__(624);\n\n const AudioLevelMeter = deps.AudioLevelMeter || __webpack_require__(282);\n\n const AudioLevelTransformer = deps.AudioLevelTransformer || __webpack_require__(143);\n\n const BackingBar = deps.BackingBar || __webpack_require__(283);\n\n const Chrome = deps.Chrome || __webpack_require__(144);\n\n const MuteButton = deps.MuteButton || __webpack_require__(284)();\n\n const NamePanel = deps.NamePanel || __webpack_require__(285);\n\n const StylableComponent = deps.StylableComponent || __webpack_require__(151);\n\n const logging = deps.logging || __webpack_require__(1)('createChromeMixin');\n\n return function createChromeMixin(publisher, _temp) {\n let _ref = _temp === void 0 ? {} : _temp,\n name = _ref.name,\n publishAudio = _ref.publishAudio,\n publishVideo = _ref.publishVideo,\n audioSource = _ref.audioSource,\n showControls = _ref.showControls,\n shouldAllowAudio = _ref.shouldAllowAudio,\n logAnalyticsEvent = _ref.logAnalyticsEvent;\n\n let audioLevelMeter;\n let chrome;\n let widgetView;\n const chromeMixin = {};\n const cleanupJobs = createCleanupJobs(); // If mode is false, then that is the mode. If mode is true then we'll\n // definitely display the button, but we'll defer the model to the\n // Publishers buttonDisplayMode style property.\n\n const chromeButtonMode = mode => {\n if (mode === false) {\n return 'off';\n }\n\n const defaultMode = publisher.getStyle('buttonDisplayMode'); // The default model is false, but it's overridden by +mode+ being true\n\n if (defaultMode === false) {\n return 'on';\n } // defaultMode is either true or auto.\n\n\n return defaultMode;\n };\n\n let uiPromise = new Promise((resolve, reject) => {\n chromeMixin.init = widgetViewParam => {\n if (!publisher.getStyle('showArchiveStatus')) {\n logAnalyticsEvent('showArchiveStatus', 'createChrome', {\n mode: 'off'\n });\n }\n\n const widgets = {\n backingBar: new BackingBar({\n nameMode: !name ? 'off' : publisher.getStyle('nameDisplayMode'),\n muteMode: chromeButtonMode(publisher.getStyle('buttonDisplayMode'))\n }),\n name: new NamePanel({\n name,\n mode: publisher.getStyle('nameDisplayMode')\n }),\n archive: new Archiving({\n show: Boolean(publisher.getStyle('showArchiveStatus')) && publisher.getStyle('archiveStatusDisplayMode') !== 'off',\n archiving: false\n }),\n muteButton: new MuteButton({\n muted: publishAudio === false,\n mode: chromeButtonMode.call(null, publisher.getStyle('buttonDisplayMode'))\n })\n };\n audioLevelMeter = new AudioLevelMeter({\n mode: publisher.getStyle('audioLevelDisplayMode')\n });\n const audioLevelTransformer = new AudioLevelTransformer();\n const audioWatcher = new RafRunner(() => {\n // @FIXME\n // We force the audio level value to be zero here if audio is disabled\n // because the AudioLevelMeter cannot currently differentiate\n // between video being disabled and audio being disabled.\n // To be fixed as part of OPENTOK-29865\n const audioLevel = !publishAudio ? 0 : audioLevelTransformer.transform(publisher.loudness);\n audioLevelMeter.setValue(audioLevel);\n });\n audioLevelMeter.watchVisibilityChanged(visible => {\n if (visible) {\n audioWatcher.start();\n } else {\n audioWatcher.stop();\n }\n });\n audioLevelMeter.audioOnly(!publishVideo && publishAudio);\n widgets.audioLevel = audioLevelMeter;\n\n if (widgetViewParam && widgetViewParam.domElement) {\n widgetView = widgetViewParam;\n chrome = new Chrome({\n parent: widgetView.domElement\n }).set(widgets).on({\n muted: () => publisher.publishAudio(false),\n unmuted: () => publisher.publishAudio(true)\n });\n\n if (audioSource === null || audioSource === false) {\n chromeMixin.removeAudioTrack();\n }\n\n resolve();\n }\n };\n\n chromeMixin.reset = () => {\n // reject in case the chrome creating was still pending\n reject(new Error('Chrome still being created'));\n\n if (chrome) {\n chrome.destroy();\n chrome = null;\n }\n };\n\n chromeMixin.destroy = () => {\n chromeMixin.reset();\n cleanupJobs.releaseAll();\n uiPromise = null;\n };\n });\n uiPromise.catch(err => {\n // Only log unexpected rejections\n if (!err || err.message !== 'Chrome still being created') {\n logging.error('createChromeMixin failed to setup UI', err);\n }\n });\n\n chromeMixin.setAudioOnly = value => {\n if (audioLevelMeter) {\n audioLevelMeter.audioOnly(value);\n }\n };\n\n chromeMixin.setArchivingStatus = status => {\n if (chrome) {\n chrome.archive.setArchiving(status);\n }\n };\n\n chromeMixin.setMuted = muted => {\n if (chrome && chrome.muteButton) {\n chrome.muteButton.muted(muted);\n }\n };\n\n chromeMixin.removeAudioTrack = () => {\n if (chrome && chrome.muteButton) {\n chrome.muteButton.remove();\n }\n };\n\n chromeMixin.addAudioTrack = () => {\n if (chrome && chrome.muteButton) {\n chrome.muteButton.add();\n }\n };\n\n StylableComponent(publisher, {\n showArchiveStatus: true,\n nameDisplayMode: 'auto',\n buttonDisplayMode: 'auto',\n audioLevelDisplayMode: shouldAllowAudio ? 'auto' : 'off',\n archiveStatusDisplayMode: 'auto',\n backgroundImageURI: null\n }, showControls, payload => {\n logAnalyticsEvent('SetStyle', 'Publisher', payload, null, 0.1);\n });\n\n const onStyleValueChanged = (key, value) => {\n // enlist style change for when the the chrome is created\n uiPromise.then(() => {\n switch (key) {\n case 'nameDisplayMode':\n chrome.name.setDisplayMode(value);\n chrome.backingBar.setNameMode(value);\n break;\n\n case 'showArchiveStatus':\n logAnalyticsEvent('showArchiveStatus', 'styleChange', {\n mode: value ? 'on' : 'off'\n });\n chrome.archive.setShowArchiveStatus(Boolean(value));\n break;\n\n case 'archiveStatusDisplayMode':\n chrome.archive.setShowArchiveStatus(value !== 'off');\n break;\n\n case 'buttonDisplayMode':\n chrome.muteButton.setDisplayMode(value);\n chrome.backingBar.setMuteMode(value);\n break;\n\n case 'audioLevelDisplayMode':\n chrome.audioLevel.setDisplayMode(value);\n break;\n\n case 'backgroundImageURI':\n widgetView.setBackgroundImageURI(value);\n break;\n\n default:\n }\n });\n };\n\n publisher.on('styleValueChanged', onStyleValueChanged);\n cleanupJobs.add(() => publisher.off('styleValueChanged', onStyleValueChanged));\n return chromeMixin;\n };\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle, one-var, no-mixed-operators */\nconst defineProperties = __webpack_require__(104);\n\nconst Widget = __webpack_require__(35);\n\nconst OTHelpers = __webpack_require__(5);\n\nconst EventEmitter = __webpack_require__(41);\n\nmodule.exports = function AudioLevelMeter(options) {\n const _audioLevelMeter = this;\n\n const _eventEmitter = new EventEmitter();\n\n let _voiceOnlyIconElement;\n\n let _meterValueElement;\n\n let _value;\n\n let _lastComputedVisibility; // display the widget by default but can be hidden when calling hideWhileLoading\n\n\n let _displayAroundLoading = true;\n let _audioOnly = false;\n let _displayMode = 'auto';\n\n const _maxValue = options.maxValue || 1;\n\n const _minValue = options.minValue || 0;\n\n function onCreate() {\n _meterValueElement = OTHelpers.createElement('div', {\n className: 'OT_audio-level-meter__value'\n }, '');\n _voiceOnlyIconElement = OTHelpers.createElement('div', {\n className: 'OT_audio-level-meter__audio-only-img'\n }, '');\n const domElement = _audioLevelMeter.domElement;\n domElement.appendChild(_voiceOnlyIconElement);\n domElement.appendChild(_meterValueElement);\n\n _audioLevelMeter.watchVisibilityChanged(visible => {\n if (visible) {\n OTHelpers.removeClass(_audioLevelMeter.domElement, 'OT_hide-forced');\n } else {\n OTHelpers.addClass(_audioLevelMeter.domElement, 'OT_hide-forced');\n }\n });\n }\n\n function onDestroy() {\n _eventEmitter.removeAllListeners('visibilityChanged');\n }\n\n function updateView() {\n const percentSize = (_value - _minValue) / (_maxValue - _minValue);\n _meterValueElement.style.transform = `scale(${Math.sqrt(percentSize)})`;\n } // computes the visibility value from the different \"inputs\" variables and asynchronously triggers\n // the internal \"visibilityChanged\" events if the value changed from last time it was computed\n\n\n function computeVisibility() {\n const computedVisibility = (_audioOnly && _displayMode === 'auto' || _displayMode === 'on') && _displayAroundLoading;\n\n if (_lastComputedVisibility !== computedVisibility) {\n _lastComputedVisibility = computedVisibility;\n\n _eventEmitter.emit('visibilityChanged', computedVisibility);\n }\n }\n\n defineProperties(_audioLevelMeter, {\n audioOnly: {\n get() {\n return _audioOnly;\n },\n\n set(audioOnly) {\n _audioOnly = audioOnly;\n computeVisibility();\n }\n\n }\n });\n\n _audioLevelMeter.setValue = function (value) {\n _value = value;\n updateView();\n };\n /**\n * Registers an callback to be executed when the visibility of the audio level meter changes.\n * \"true\" means the widget is shown.\n * The contracts is that the handlers should not try to change the visibility of the widget by\n * changing the value of visibility \"inputs\" (setting \"audioOnly\", \"displayMode\" or calling\n * \"hideWhileLoading\" and \"showAfterLoading\")\n *\n * @param {function(boolean)} cb the callback to be executed when the display value changes.\n * The callback is also executed with the last computed value when registered.\n * @returns {function} a callback to unregister the handler\n */\n\n\n _audioLevelMeter.watchVisibilityChanged = function (cb) {\n _eventEmitter.on('visibilityChanged', cb);\n\n Promise.resolve().then(() => {\n cb(_lastComputedVisibility);\n });\n return function stopWatching() {\n _eventEmitter.removeListener('visibilityChanged', cb);\n };\n }; // Mixin common widget behaviour\n\n\n const widgetOptions = {\n mode: options ? options.mode : 'auto',\n nodeName: 'div',\n htmlAttributes: {\n className: 'OT_audio-level-meter'\n },\n onCreate,\n onDestroy\n };\n Widget(this, widgetOptions); // The methods underneath are mixed in by \"Widget\" but overridden\n // Doing so, we can bypass it and compute the display value ourselves without relying on CSS\n\n _audioLevelMeter.setDisplayMode = function (mode) {\n _displayMode = mode;\n computeVisibility();\n };\n\n _audioLevelMeter.getDisplayMode = function () {\n return _displayMode;\n };\n\n _audioLevelMeter.showAfterLoading = function () {\n _displayAroundLoading = true;\n computeVisibility();\n };\n\n _audioLevelMeter.hideWhileLoading = function () {\n _displayAroundLoading = false;\n computeVisibility();\n }; // compute the initial visibility value\n\n\n computeVisibility();\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle */\nconst Widget = __webpack_require__(35); // BackingBar Chrome Widget\n//\n// nameMode (String)\n// Whether or not the name panel is being displayed\n// Possible values are: \"auto\" (the name is displayed\n// when the stream is first displayed and when the user mouses over the display),\n// \"off\" (the name is not displayed), and \"on\" (the name is displayed).\n//\n// muteMode (String)\n// Whether or not the mute button is being displayed\n// Possible values are: \"auto\" (the mute button is displayed\n// when the stream is first displayed and when the user mouses over the display),\n// \"off\" (the mute button is not displayed), and \"on\" (the mute button is displayed).\n//\n// displays a backing bar\n// can be shown/hidden\n// can be destroyed\n\n\nmodule.exports = function BackingBar(options) {\n let _nameMode = options.nameMode;\n let _muteMode = options.muteMode;\n\n function getDisplayMode() {\n if (_nameMode === 'on' || _muteMode === 'on') {\n return 'on';\n } else if (_nameMode === 'mini' || _muteMode === 'mini') {\n return 'mini';\n } else if (_nameMode === 'mini-auto' || _muteMode === 'mini-auto') {\n return 'mini-auto';\n } else if (_nameMode === 'auto' || _muteMode === 'auto') {\n return 'auto';\n }\n\n return 'off';\n } // Mixin common widget behaviour\n\n\n Widget(this, {\n mode: getDisplayMode(),\n nodeName: 'div',\n htmlContent: '',\n htmlAttributes: {\n className: 'OT_bar OT_edge-bar-item'\n }\n });\n\n this.setNameMode = function (nameMode) {\n _nameMode = nameMode;\n this.setDisplayMode(getDisplayMode());\n };\n\n this.setMuteMode = function (muteMode) {\n _muteMode = muteMode;\n this.setDisplayMode(getDisplayMode());\n };\n};\n\n/***/ }),\n/* 284 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst globalOTHelpers = __webpack_require__(5);\n\nconst globalWidget = __webpack_require__(35);\n\nconst defineProperties = __webpack_require__(104);\n\nmodule.exports = function MuteButtonFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const OTHelpers = deps.OTHelpers || globalOTHelpers;\n const Widget = deps.Widget || globalWidget;\n return function MuteButton(options) {\n let muted = options.muted || false;\n\n const updateClasses = () => {\n if (muted) {\n OTHelpers.addClass(this.domElement, 'OT_active');\n } else {\n OTHelpers.removeClass(this.domElement, 'OT_active ');\n }\n };\n\n const onClick = () => {\n muted = !muted;\n updateClasses();\n\n if (muted) {\n this.parent.trigger('muted', this);\n } else {\n this.parent.trigger('unmuted', this);\n }\n\n return false;\n }; // Private Event Callbacks\n\n\n const attachEvents = elem => {\n OTHelpers.on(elem, 'click', onClick);\n };\n\n const detachEvents = elem => {\n OTHelpers.off(elem, 'click', onClick);\n };\n\n defineProperties(this, {\n muted: {\n get() {\n return muted;\n },\n\n set(m) {\n muted = m;\n updateClasses();\n }\n\n }\n }); // Mixin common widget behaviour\n\n const classNames = muted ? 'OT_edge-bar-item OT_mute OT_active' : 'OT_edge-bar-item OT_mute';\n Widget(this, {\n mode: options.mode,\n nodeName: 'button',\n htmlContent: 'Mute',\n htmlAttributes: {\n className: classNames,\n type: 'button'\n },\n onCreate: attachEvents,\n onDestroy: detachEvents\n });\n let parentNode;\n\n this.remove = () => {\n if (this.domElement && this.domElement.parentNode) {\n parentNode = this.domElement.parentNode; // store in case we want to add it again\n\n this.domElement.parentNode.removeChild(this.domElement);\n }\n };\n\n this.add = () => {\n if (parentNode && this.domElement && !this.domElement.parentNode) {\n parentNode.appendChild(this.domElement);\n }\n };\n };\n};\n\n/***/ }),\n/* 285 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-underscore-dangle, no-param-reassign */\nconst Widget = __webpack_require__(35); // The \"name\" that we receive (e.g., from RUMOR) may actually be malicious HTML\n// so we need to sanitize it before it gets rendered.\n// See: OPENTOK-41141.\n\n\nconst sanitizeName = name => {\n const temp = document.createElement('div');\n temp.textContent = name;\n return temp.innerHTML;\n}; // NamePanel Chrome Widget\n//\n// mode (String)\n// Whether to display the name. Possible values are: \"auto\" (the name is displayed\n// when the stream is first displayed and when the user mouses over the display),\n// \"off\" (the name is not displayed), and \"on\" (the name is displayed).\n//\n// displays a name\n// can be shown/hidden\n// can be destroyed\n\n\nmodule.exports = function NamePanel(options) {\n let _name = options.name;\n\n if (!_name || _name.trim().length === '') {\n _name = null; // THere's no name, just flip the mode off\n\n options.mode = 'off';\n }\n\n this.setName = function (name) {\n if (!_name) {\n this.setDisplayMode('auto');\n }\n\n _name = sanitizeName(name); // The \"name\" is initially rendered as `innerHTML` when instantiated (as a\n // `Widget`). That's why we don't use `textContent` here, instead.\n\n this.domElement.innerHTML = _name;\n }.bind(this);\n\n _name = sanitizeName(_name); // Mixin common widget behaviour\n\n Widget(this, {\n mode: options.mode,\n nodeName: 'h1',\n htmlContent: _name,\n htmlAttributes: {\n className: 'OT_name OT_edge-bar-item'\n }\n });\n};\n\n/***/ }),\n/* 286 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, global-require */\nmodule.exports = function getNativeEnumerateDevicesFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const windowMock = deps.global || (typeof window !== undefined ? window : global);\n return function getNativeEnumerateDevices() {\n if (windowMock.navigator.mediaDevices) {\n const mediaDevices = windowMock.navigator.mediaDevices;\n return mediaDevices.enumerateDevices && mediaDevices.enumerateDevices.bind(mediaDevices);\n } // @todo perhaps we should throw here?\n\n\n return undefined;\n };\n};\n\n/***/ }),\n/* 287 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst env = __webpack_require__(2);\n\nconst haveDisplayMedia = __webpack_require__(159).default;\n\nconst isSupportedInThisBrowser = () => // Even though getDisplayMedia is supported in Edge, we haven't gotten it\n// to work with our SDK\n!env.isLegacyEdge && // Even though getDisplayMedia is exposed in Electron, devs need to use\n// desktopCapturer instead\n!env.isElectron && haveDisplayMedia && // getDisplayMedia is not supported in Android\n!env.isAndroid;\n\nmodule.exports = {\n isSupportedInThisBrowser: isSupportedInThisBrowser(),\n autoRegisters: true,\n extensionRequired: false,\n getConstraintsShowsPermissionUI: false,\n sources: {\n screen: true,\n application: false,\n window: env.name !== 'Safari',\n browser: env.name !== 'Safari'\n },\n\n register() {\n return {\n isInstalled(callback) {\n callback(undefined);\n },\n\n getConstraints(source, constraints, callback) {\n callback(undefined, {\n video: constraints.video,\n audio: constraints.audio\n });\n }\n\n };\n }\n\n};\n\n/***/ }),\n/* 288 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst isMediaStreamTrack = source => source && typeof source === 'object' && typeof source.kind === 'string' && typeof source.stop === 'function' && typeof source.enabled === 'boolean';\n\nexports.isMediaStreamTrack = isMediaStreamTrack;\n\n/***/ }),\n/* 289 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Promise) {var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nfunction getGlobal() {\n return typeof window !== 'undefined' ?\n window : /* istanbul ignore next */ (typeof window !== undefined ? window : global);\n}\nvar CALLBACK_INVALID_RETURN = 'onFailure must return boolean, or delay in ms';\n/**\n * Retry a promise\n *\n * Uses promiseFactory to construct promises and calls onFailure when the\n * promise rejects.\n *\n * onFailure is called with error and attempt.\n *\n * You may inspect error to decide whether to retry or not. You may use attempt\n * to control the delay/ decide how many times to retry.\n *\n * To retry: A numeric delay in milliseconds can be returned to control how long\n * between retries.\n *\n * To stop retrying: Return false/ undefined/ null.\n *\n * The returned promise will be the final promise from promiseFactory once\n * fulfilled or in the case of errors, once no longer retrying.\n *\n * @example\n *\n * const promiseEndeavour = require('../dist/promiseEndeavour.js');\n * const fetch = require('node-fetch');\n *\n * async function getDogs() {\n * const response = await fetch('https://dog.ceo/api/breeds/list/all');\n * return response.json();\n * }\n *\n * const retries = [100, 500, 1000];\n *\n * function retry(error, attempt) {\n * return retries[attempt - 1] || false;\n * }\n *\n * promiseEndeavour(getDogs, retry)()\n * .then(dogs => console.log(dogs));\n *\n * @param promiseFactory A promise returning function\n * @param onFailure A function to be called when the promise returned by promiseFactory is rejected\n * @param maxAttempts Maximum number of attempts regardless of onFailure\n * @return A function with the same interface to promiseFactory\n */\nfunction promiseEndeavour(promiseFactory, onFailure, maxAttempts) {\n if (maxAttempts === void 0) { maxAttempts = 10; }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return __awaiter(this, void 0, void 0, function () {\n var attempt, _loop_1, state_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n attempt = 0;\n _loop_1 = function () {\n var _a, error_1, delay_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 6]);\n _a = {};\n return [4 /*yield*/, promiseFactory.apply(void 0, args)];\n case 1: return [2 /*return*/, (_a.value = _b.sent(), _a)];\n case 2:\n error_1 = _b.sent();\n delay_1 = onFailure(error_1, attempt);\n if (delay_1 === false || delay_1 == null || attempt >= maxAttempts) {\n throw error_1;\n }\n if (!(typeof delay_1 === 'number')) return [3 /*break*/, 4];\n return [4 /*yield*/, new Promise(function (resolve) { return getGlobal().setTimeout(resolve, delay_1); })];\n case 3:\n _b.sent();\n return [3 /*break*/, 5];\n case 4:\n if (delay_1 !== true) {\n throw new Error(CALLBACK_INVALID_RETURN);\n }\n _b.label = 5;\n case 5: return [3 /*break*/, 6];\n case 6: return [2 /*return*/];\n }\n });\n };\n _a.label = 1;\n case 1:\n if (!(attempt += 1) /* istanbul ignore next: condition is always true */) return [3 /*break*/, 3];\n return [5 /*yield**/, _loop_1()];\n case 2:\n state_1 = _a.sent();\n if (typeof state_1 === \"object\")\n return [2 /*return*/, state_1.value];\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (promiseEndeavour);\n//# sourceMappingURL=promiseEndeavour.js.map\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 290 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst logging = __webpack_require__(1)('videoContentHint');\n\nconst videoContentHints = ['', 'text', 'motion', 'detail'];\n\nconst isValidVideoContentHint = hint => videoContentHints.includes(hint);\n\nconst getVideoTrackForStream = mediaStream => {\n var _mediaStream$getVideo;\n\n return mediaStream == null ? void 0 : (_mediaStream$getVideo = mediaStream.getVideoTracks()) == null ? void 0 : _mediaStream$getVideo[0];\n};\n/**\n * Sets contentHint for videoTrack of MediaStream\n * @param {MediaStream} mediaStream\n * @param {String} contentHint, one of \"\", \"motion\", \"detail\" or \"text\"\n */\n\n\nconst setVideoContentHint = (mediaStream, contentHint) => {\n if (!isValidVideoContentHint(contentHint)) {\n logging.warn('Invalid content hint. Valid content hints are \"text\", \"detail\", \"motion\", or \"\"');\n return;\n }\n\n const videoTrack = getVideoTrackForStream(mediaStream);\n\n if (!videoTrack) {\n logging.warn('Tried to set contentHint but no video track is present');\n return;\n }\n\n if (videoTrack.contentHint === undefined) {\n logging.warn('contentHint not supported by this browser');\n return;\n }\n\n videoTrack.contentHint = contentHint;\n};\n/**\n * Returns contentHint for videoTrack of MediaStream\n * @param {MediaStream} mediaStream\n * @returns {String} contentHint, one of \"\", \"motion\", \"detail\" or \"text\"\n\n */\n\n\nconst getVideoContentHint = mediaStream => {\n const videoTrack = getVideoTrackForStream(mediaStream);\n return (videoTrack == null ? void 0 : videoTrack.contentHint) || '';\n};\n\nmodule.exports = {\n isValidVideoContentHint,\n setVideoContentHint,\n getVideoContentHint\n};\n\n/***/ }),\n/* 291 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, global-require, no-underscore-dangle, no-shadow */\nconst defineProperties = __webpack_require__(104);\n\nmodule.exports = function MicrophoneFactory() {\n /*\n * A Publishers Microphone.\n *\n * TODO\n * * bind to changes in mute/unmute/volume/etc and respond to them\n */\n return function Microphone(webRTCStream, muted) {\n let _muted;\n\n defineProperties(this, {\n muted: {\n get() {\n return _muted;\n },\n\n set(muted) {\n if (_muted === muted) {\n return;\n }\n\n _muted = muted;\n const audioTracks = webRTCStream.getAudioTracks();\n\n for (let i = 0, num = audioTracks.length; i < num; ++i) {\n audioTracks[i].enabled = !_muted;\n }\n }\n\n }\n }); // Set the initial value\n\n if (muted !== undefined) {\n this.muted(muted === true);\n } else if (webRTCStream.getAudioTracks().length) {\n this.muted(!webRTCStream.getAudioTracks()[0].enabled);\n } else {\n this.muted(false);\n }\n };\n};\n\n/***/ }),\n/* 292 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, global-require */\nmodule.exports = function videoElementErrorMapFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const Errors = deps.Errors || __webpack_require__(4);\n\n const otError = deps.otError || __webpack_require__(11)(); // See http://www.w3.org/TR/2010/WD-html5-20101019/video.html#error-codes\n\n\n const videoErrorDetails = {}; // Checking for global.MediaError for IE compatibility, just so we don't throw\n // exceptions when the script is included\n\n if ((typeof window !== undefined ? window : global).MediaError) {\n videoErrorDetails[(typeof window !== undefined ? window : global).MediaError.MEDIA_ERR_ABORTED] = {\n name: Errors.MEDIA_ERR_ABORTED,\n message: 'The fetching process for the media resource was aborted by the ' + 'user agent at the user\\'s request.'\n };\n videoErrorDetails[(typeof window !== undefined ? window : global).MediaError.MEDIA_ERR_NETWORK] = {\n name: Errors.MEDIA_ERR_NETWORK,\n message: 'A network error of some description caused the user agent to ' + 'stop fetching the media resource, after the resource was established ' + 'to be usable.'\n };\n videoErrorDetails[(typeof window !== undefined ? window : global).MediaError.MEDIA_ERR_DECODE] = {\n name: Errors.MEDIA_ERR_DECODE,\n message: 'An error of some description occurred while decoding the media ' + 'resource, after the resource was established to be usable.'\n };\n videoErrorDetails[(typeof window !== undefined ? window : global).MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED] = {\n name: Errors.MEDIA_ERR_SRC_NOT_SUPPORTED,\n message: 'The media resource indicated by the src attribute was not ' + 'suitable.'\n };\n }\n\n return function videoElementErrorMap(error) {\n const errorDetails = videoErrorDetails[error.code];\n\n if (!errorDetails) {\n return new Error(`An unknown error occurred${error.message ? `: ${error.message}` : '.'}`);\n }\n\n return otError(errorDetails.name, new Error(`There was an unexpected problem with the Video Stream: ${errorDetails.message}`));\n };\n};\n\n/***/ }),\n/* 293 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(25));\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(12));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(13));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(18));\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, global-require, one-var, no-underscore-dangle */\n\n/* eslint-disable no-cond-assign, max-len, no-void, prefer-const */\nconst eventing = __webpack_require__(6);\n\nconst eventHelper = __webpack_require__(62);\n\nconst destroyObj = __webpack_require__(635);\n\nconst patchSrcObject = __webpack_require__(636);\n\nconst isDomElementVisible = __webpack_require__(637);\n\nconst promiseDelay = __webpack_require__(106);\n\nconst env = __webpack_require__(2);\n\nconst _require = __webpack_require__(23)(),\n hasAudioOutputApiSupport = _require.hasAudioOutputApiSupport;\n\nconst noop = __webpack_require__(294);\n\nconst _require2 = __webpack_require__(105),\n getCurrentAudioOutputDeviceId = _require2.getCurrentAudioOutputDeviceId;\n\nfunction createDomVideoElement(fallbackText, muted) {\n const videoElement = document.createElement('video');\n patchSrcObject(videoElement);\n videoElement.autoplay = true;\n videoElement.playsinline = true;\n videoElement.innerHTML = fallbackText; // Safari on iOS requires setAttribute OPENTOK-37229\n\n videoElement.setAttribute('autoplay', '');\n videoElement.setAttribute('playsinline', '');\n\n if (muted === true) {\n videoElement.muted = 'true';\n }\n\n return videoElement;\n}\n\nfunction createDomAudioOnlyVideoElement() {\n const audioOnlyVideoElement = createDomVideoElement('');\n audioOnlyVideoElement.setAttribute('style', 'display:none');\n return audioOnlyVideoElement;\n}\n/**\n * NativeVideoElementWrapperFactory DI container\n *\n * @package\n * @param {any} [deps={}]\n */\n\n\nfunction NativeVideoElementWrapperFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const audioContextProvider = deps.audioContext || __webpack_require__(158)();\n\n const canBeOrientatedMixin = deps.canBeOrientatedMixin || __webpack_require__(638);\n /** @type {Document} */\n\n\n const document = deps.document || (typeof window !== undefined ? window : global).document;\n\n const listenForTracksEnded = deps.listenForTracksEnded || __webpack_require__(639)();\n\n const createLog = deps.logging || __webpack_require__(1);\n\n const OTHelpers = deps.OTHelpers || __webpack_require__(5);\n\n const videoElementErrorMap = deps.videoElementErrorMap || __webpack_require__(292)();\n\n const WebAudioLevelSampler = deps.WebaudioAudioLevelSampler || __webpack_require__(145);\n\n const windowMock = deps.global || (typeof window !== undefined ? window : global);\n let id = 1;\n /**\n * NativeVideoElementWrapper\n *\n * @package\n * @class\n * @param {Object} options\n * @param {Object} [options._inject] injected variables @todo move to DI\n * @param {Function} [options._inject.createVideoElement] function used to create video element\n * @param {Function} [options._inject.createAudioOnlyVideoElement] function used to create audio only video element\n * @param {Boolean} [options.muted] initial mute state\n * @param {String} [options.fallbackText] text to display when not supported\n * @param {Function} errorHandler callback for when there are errors\n * @param {Number} defaultAudioVolume the initial audio volume\n */\n\n let NativeVideoElementWrapper = /*#__PURE__*/function () {\n /** @type {HTMLVideoElement|undefined} */\n\n /** @type {number|undefined} */\n function NativeVideoElementWrapper(_ref, defaultAudioVolume) {\n var _this = this;\n\n let _ref$_inject = _ref._inject,\n _ref$_inject2 = _ref$_inject === void 0 ? {} : _ref$_inject,\n _ref$_inject2$createV = _ref$_inject2.createVideoElement,\n _createVideoElement = _ref$_inject2$createV === void 0 ? createDomVideoElement : _ref$_inject2$createV,\n _ref$_inject2$createA = _ref$_inject2.createAudioOnlyVideoElement,\n _createAudioOnlyVideoElement = _ref$_inject2$createA === void 0 ? createDomAudioOnlyVideoElement : _ref$_inject2$createA,\n muted = _ref.muted,\n fallbackText = _ref.fallbackText,\n widgetType = _ref.widgetType;\n\n (0, _defineProperty2.default)(this, \"_domElement\", void 0);\n (0, _defineProperty2.default)(this, \"_domAudioOnlyVideoElement\", void 0);\n (0, _defineProperty2.default)(this, \"_blockedVolume\", void 0);\n (0, _defineProperty2.default)(this, \"_mediaStoppedListener\", void 0);\n (0, _defineProperty2.default)(this, \"_audioLevelSampler\", void 0);\n (0, _defineProperty2.default)(this, \"_playInterrupts\", 0);\n (0, _defineProperty2.default)(this, \"_isVideoLoadedMetaData\", false);\n (0, _defineProperty2.default)(this, \"_audioOnlyVideoElementWatcher\", void 0);\n this.logging = createLog(`NativeVideoElementWrapper:${id}`);\n id += 1;\n eventing(this);\n this._defaultAudioVolume = defaultAudioVolume;\n this._widgetType = widgetType;\n let _videoElementMovedWarning = false; // / Private API\n // The video element pauses itself when it's reparented, this is\n // unfortunate. This function plays the video again and is triggered\n // on the pause event.\n\n const _playVideoOnPause = () => {\n if (!_videoElementMovedWarning) {\n this.logging.warn('Video element paused, auto-resuming. If you intended to do this, ' + 'use publishVideo(false) or subscribeToVideo(false) instead.');\n _videoElementMovedWarning = true;\n }\n\n this.play();\n };\n\n this._domElement = _createVideoElement(fallbackText, muted);\n this.trigger('videoElementCreated', this._domElement);\n this._domElementEvents = eventHelper(this._domElement);\n\n this._domElementEvents.on('loadstart', () => this._onDomElementLoadStart());\n\n this._domElementEvents.on('timeupdate', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _this.trigger('timeupdate', ...args);\n });\n\n this._domElementEvents.on('loadedmetadata', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var _len2,\n args,\n _key2,\n hasSrcObject,\n _args = arguments;\n\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _this._isVideoLoadedMetaData = true;\n\n for (_len2 = _args.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = _args[_key2];\n }\n\n _this.trigger('loadedmetadata', ...args); // We can safely remove the audio only element since the video element\n // could trigger the loadedmetada, meaning it can start playing video.\n // For more info, see OPENTOK-41739.\n\n\n if (!_this._domAudioOnlyVideoElement) {\n _context.next = 10;\n break;\n }\n\n hasSrcObject = _this._domAudioOnlyVideoElement.srcObject;\n\n _this._removeAudioOnlyVideoElement(); // We need to call play only if _domAudioOnlyVideoElement had\n // a srcObject, meaning it was used for audio.\n\n\n if (!hasSrcObject) {\n _context.next = 10;\n break;\n }\n\n _context.next = 9;\n return noop();\n\n case 9:\n _this.play();\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n })));\n\n const onError = event => {\n this.trigger('error', videoElementErrorMap(event.target.error));\n };\n\n this._domElementEvents.on('error', onError, false);\n\n this._domElementEvents.on('pause', _playVideoOnPause);\n\n this.on('destroyed', () => {\n this._domElementEvents.removeAll();\n\n if (this._domAudioOnlyVideoElementEvents) {\n this._domAudioOnlyVideoElementEvents.removeAll();\n }\n });\n canBeOrientatedMixin(this, () => this._domElement); // Safari subscribers needs special handling for audio-only video\n // https://bugs.webkit.org/show_bug.cgi?id=174152\n\n if (env.name === 'Safari' && this._widgetType === 'subscriber') {\n this._domAudioOnlyVideoElement = _createAudioOnlyVideoElement();\n\n this._bindAudioOnlyVideoElementEvents();\n }\n }\n\n var _proto = NativeVideoElementWrapper.prototype;\n\n _proto._onDomElementLoadStart = /*#__PURE__*/function () {\n var _onDomElementLoadStart2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (!(this._widgetType === 'subscriber' && hasAudioOutputApiSupport())) {\n _context2.next = 3;\n break;\n }\n\n _context2.next = 3;\n return this._setActiveAudioOutputDevice();\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n\n function _onDomElementLoadStart() {\n return _onDomElementLoadStart2.apply(this, arguments);\n }\n\n return _onDomElementLoadStart;\n }();\n\n _proto._setActiveAudioOutputDevice = /*#__PURE__*/function () {\n var _setActiveAudioOutputDevice2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var deviceId;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n deviceId = getCurrentAudioOutputDeviceId();\n\n if (!(deviceId === '' || deviceId === 'default')) {\n _context3.next = 3;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 3:\n _context3.next = 5;\n return this.setSinkId(deviceId);\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, this);\n }));\n\n function _setActiveAudioOutputDevice() {\n return _setActiveAudioOutputDevice2.apply(this, arguments);\n }\n\n return _setActiveAudioOutputDevice;\n }();\n\n _proto._rebindSrcObject = function _rebindSrcObject() {\n if (this._domElement) {\n this._domElement.srcObject = this._domElement.srcObject;\n }\n };\n\n _proto._pauseAndPlay = function _pauseAndPlay() {\n if (this._domElement) {\n this._domElement.pause();\n\n this._domElement.play();\n }\n };\n\n _proto._startAudioOnlyVideoElementWatcher = /*#__PURE__*/function () {\n var _startAudioOnlyVideoElementWatcher2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var watcherIntervalTimeout, shouldPlay;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n // In Safari, after setting the srcObject the video element gets paused.\n // Calling play() is not sufficient to unpause it.\n // A workaround for this is to rebind when we detect that the video gets paused.\n // Notice that if it's iOS we need to call play() after the rebind, otherwise\n // it won't play.\n watcherIntervalTimeout = 1000;\n shouldPlay = env.isiOS;\n this._audioOnlyVideoElementWatcher = setInterval(() => {\n if (this._domAudioOnlyVideoElement && this._domAudioOnlyVideoElement.paused) {\n this._domAudioOnlyVideoElement.srcObject = this._domAudioOnlyVideoElement.srcObject;\n\n if (shouldPlay) {\n this._domAudioOnlyVideoElement.play();\n }\n }\n }, 100);\n _context4.next = 5;\n return promiseDelay(watcherIntervalTimeout);\n\n case 5:\n clearInterval(this._audioOnlyVideoElementWatcher);\n this._audioOnlyVideoElementWatcher = null;\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, this);\n }));\n\n function _startAudioOnlyVideoElementWatcher() {\n return _startAudioOnlyVideoElementWatcher2.apply(this, arguments);\n }\n\n return _startAudioOnlyVideoElementWatcher;\n }();\n\n _proto._removeAudioOnlyVideoElement = /*#__PURE__*/function () {\n var _removeAudioOnlyVideoElement2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n this._domAudioOnlyVideoElement.srcObject = null;\n\n this._domAudioOnlyVideoElement.parentNode.removeChild(this._domAudioOnlyVideoElement);\n\n if (this._domAudioOnlyVideoElementEvents) {\n this._domAudioOnlyVideoElementEvents.removeAll();\n }\n\n this._domAudioOnlyVideoElement = null;\n\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n\n function _removeAudioOnlyVideoElement() {\n return _removeAudioOnlyVideoElement2.apply(this, arguments);\n }\n\n return _removeAudioOnlyVideoElement;\n }();\n\n _proto.bindAudioTrackOnly = /*#__PURE__*/function () {\n var _bindAudioTrackOnly = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var videoTracks, audioTracks, _videoTracks$, videoTrack, _audioTracks$, audioTrack, isAudioOnlyVideo;\n\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n videoTracks = this._stream.getVideoTracks();\n audioTracks = this._stream.getAudioTracks();\n _videoTracks$ = videoTracks[0], videoTrack = _videoTracks$ === void 0 ? {} : _videoTracks$;\n _audioTracks$ = audioTracks[0], audioTrack = _audioTracks$ === void 0 ? {} : _audioTracks$;\n _context6.next = 6;\n return noop();\n\n case 6:\n isAudioOnlyVideo = !videoTrack.enabled && audioTrack.enabled;\n\n if (!this._isVideoLoadedMetaData && isAudioOnlyVideo && this._domAudioOnlyVideoElement) {\n this._domAudioOnlyVideoElement.srcObject = new windowMock.MediaStream(audioTracks);\n\n this._startAudioOnlyVideoElementWatcher();\n }\n\n case 8:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6, this);\n }));\n\n function bindAudioTrackOnly() {\n return _bindAudioTrackOnly.apply(this, arguments);\n }\n\n return bindAudioTrackOnly;\n }();\n\n _proto._bindAudioOnlyVideoElementEvents = function _bindAudioOnlyVideoElementEvents() {\n var _this2 = this;\n\n this._domAudioOnlyVideoElementEvents = eventHelper(this._domAudioOnlyVideoElement); // Safari may stop playing audio if the browser is not visible or losses\n // focus. When it does, continue playing it.\n\n this._domAudioOnlyVideoElementEvents.on('pause', () => this.play());\n\n this._domAudioOnlyVideoElementEvents.on('timeupdate', function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this2.trigger('timeupdate', ...args);\n });\n\n this._domAudioOnlyVideoElementEvents.on('loadedmetadata', function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this2.trigger('loadedmetadata', ...args);\n });\n };\n\n _proto.whenTimeIncrements = function whenTimeIncrements(callback, context) {\n this.once('timeupdate', () => {\n callback.call(context, this);\n });\n }\n /**\n * Get the underlying DOM video element\n * @return {Element}\n */\n ;\n\n _proto.domElement = function domElement() {\n return this._domElement;\n };\n\n _proto.videoWidth = function videoWidth() {\n return this._domElement ? Number(this._domElement[`video${this.isRotated() ? 'Height' : 'Width'}`]) : 0;\n };\n\n _proto.videoHeight = function videoHeight() {\n return this._domElement ? Number(this._domElement[`video${this.isRotated() ? 'Width' : 'Height'}`]) : 0;\n };\n\n _proto.aspectRatio = function aspectRatio() {\n return this.videoWidth() / this.videoHeight();\n };\n\n _proto.imgData = function imgData() {\n const canvas = OTHelpers.createElement('canvas', {\n width: this.videoWidth(),\n height: this.videoHeight(),\n style: {\n display: 'none'\n }\n });\n document.body.appendChild(canvas);\n let imgData = null;\n\n try {\n canvas.getContext('2d').drawImage(this._domElement, 0, 0, canvas.width, canvas.height);\n imgData = canvas.toDataURL('image/png');\n } catch (err) {// Warning emitted for imgData === null below\n }\n\n OTHelpers.removeElement(canvas);\n\n if (imgData === null || imgData === 'data:,') {\n // 'data:,' is sometimes returned by canvas.toDataURL when one cannot be\n // generated.\n this.logging.warn('Cannot get image data yet');\n return null;\n }\n\n return imgData.replace('data:image/png;base64,', '').trim();\n } // Append the Video DOM element to a parent node\n ;\n\n _proto.appendTo = function appendTo(parentDomElement) {\n parentDomElement.appendChild(this._domElement);\n\n if (this._domAudioOnlyVideoElement) {\n parentDomElement.appendChild(this._domAudioOnlyVideoElement);\n }\n\n return this;\n };\n\n _proto.isAudioBlocked = function isAudioBlocked() {\n return this._blockedVolume !== undefined;\n };\n\n _proto.unblockAudio = /*#__PURE__*/function () {\n var _unblockAudio = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n var blockedVolume;\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n if (this.isAudioBlocked()) {\n _context7.next = 3;\n break;\n }\n\n this.logging.warn('Unexpected call to unblockAudio() without blocked audio');\n return _context7.abrupt(\"return\");\n\n case 3:\n blockedVolume = this._blockedVolume;\n this._blockedVolume = undefined;\n this.setAudioVolume(blockedVolume);\n _context7.prev = 6;\n _context7.next = 9;\n return this.play();\n\n case 9:\n _context7.next = 16;\n break;\n\n case 11:\n _context7.prev = 11;\n _context7.t0 = _context7[\"catch\"](6);\n this._blockedVolume = blockedVolume;\n this._domElement.muted = true;\n throw _context7.t0;\n\n case 16:\n this.trigger('audioUnblocked');\n\n case 17:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7, this, [[6, 11]]);\n }));\n\n function unblockAudio() {\n return _unblockAudio.apply(this, arguments);\n }\n\n return unblockAudio;\n }() // useful for some browsers (old chrome) that show black when a peer connection\n // is renegotiated\n ;\n\n _proto.rebind =\n /*#__PURE__*/\n function () {\n var _rebind = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n return _regenerator.default.wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n if (this._domElement) {\n _context8.next = 2;\n break;\n }\n\n throw new Error('Can\\'t rebind because _domElement no longer exists');\n\n case 2:\n this._playInterrupts++;\n this._domElement.srcObject = this._domElement.srcObject;\n\n if (this._hasAudioOnlyVideoElement()) {\n this._domAudioOnlyVideoElement.srcObject = this._domAudioOnlyVideoElement.srcObject;\n }\n\n case 5:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8, this);\n }));\n\n function rebind() {\n return _rebind.apply(this, arguments);\n }\n\n return rebind;\n }();\n\n _proto._createAudioLevelSampler = function _createAudioLevelSampler() {\n this._removeAudioLevelSampler();\n\n if (this._stream.getAudioTracks().length > 0) {\n try {\n this._audioContext = audioContextProvider();\n } catch (e) {\n this.logging.warn('Failed to get AudioContext(), audio level visualisation will not work', e);\n }\n\n if (this._audioContext) {\n this._audioLevelSampler = new WebAudioLevelSampler(this._audioContext);\n\n this._audioLevelSampler.webRTCStream(this._stream);\n }\n }\n };\n\n _proto._removeAudioLevelSampler = function _removeAudioLevelSampler() {\n if (this._audioContext) {\n delete this._audioContext;\n delete this._audioLevelSampler;\n }\n } // For MediaStreams with multiple tracks, video tracks are disabled and\n // then re-enabled\n ;\n\n _proto._toggleVideoTracks =\n /*#__PURE__*/\n function () {\n var _toggleVideoTracks2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {\n var enabledTracks, hasMultipleTracks, videoTracks;\n return _regenerator.default.wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n enabledTracks = this._domElement.srcObject.getTracks().filter(track => track.enabled);\n hasMultipleTracks = enabledTracks.length > 1;\n\n if (!hasMultipleTracks) {\n _context9.next = 8;\n break;\n }\n\n videoTracks = enabledTracks.filter(track => track.kind === 'video');\n videoTracks.forEach(track => {\n track.enabled = false;\n });\n _context9.next = 7;\n return noop();\n\n case 7:\n videoTracks.forEach(track => {\n track.enabled = true;\n });\n\n case 8:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9, this);\n }));\n\n function _toggleVideoTracks() {\n return _toggleVideoTracks2.apply(this, arguments);\n }\n\n return _toggleVideoTracks;\n }();\n\n _proto._hasAudioOnlyVideoElement = function _hasAudioOnlyVideoElement() {\n return this._domAudioOnlyVideoElement && this._domAudioOnlyVideoElement.srcObject;\n };\n\n _proto.play = /*#__PURE__*/function () {\n var _play = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10() {\n var playInterruptsOnStart, isSafari, domElement, isBuggediOS, _this$_stream$getVide, _this$_stream$getVide2, videoTrack, _this$_stream$getAudi, _this$_stream$getAudi2, audioTrack, _ref3, errorName, isAbortError;\n\n return _regenerator.default.wrap(function _callee10$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n playInterruptsOnStart = this._playInterrupts;\n isSafari = env.name === 'Safari'; // Which element do we try to play? The `audio` or `video` element?\n\n domElement = this._hasAudioOnlyVideoElement() ? this._domAudioOnlyVideoElement : this._domElement; // In Safari, if a HTMLMediaElement property is mutated or if the element is moved,\n // a delay is needed else element may fail to play\n\n if (!isSafari) {\n _context10.next = 6;\n break;\n }\n\n _context10.next = 6;\n return noop();\n\n case 6:\n if (!(env.isiOS && env.isSafari)) {\n _context10.next = 16;\n break;\n }\n\n if (!(this._widgetType === 'publisher')) {\n _context10.next = 15;\n break;\n }\n\n isBuggediOS = env.iOSVersion >= 14 && env.iOSVersion <= 14.2;\n _this$_stream$getVide = this._stream.getVideoTracks(), _this$_stream$getVide2 = _this$_stream$getVide[0], videoTrack = _this$_stream$getVide2 === void 0 ? {} : _this$_stream$getVide2;\n _this$_stream$getAudi = this._stream.getAudioTracks(), _this$_stream$getAudi2 = _this$_stream$getAudi[0], audioTrack = _this$_stream$getAudi2 === void 0 ? {} : _this$_stream$getAudi2;\n /**\n * OPENTOK-41742: Prevent to call play() on a hidden video element. Otherwise the\n * readyState of the MediaStreamTrack will be ended and the publisher will stop\n * publishing video.\n * This issue happens only on iOS Safari >= 14.0 and <= 14.2\n * */\n\n if (!(isBuggediOS && !isDomElementVisible(domElement) && videoTrack.enabled)) {\n _context10.next = 13;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 13:\n if (!audioTrack.muted) {\n _context10.next = 15;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 15:\n // OPENTOK-39347: Toggle video tracks, else audio maybe garbled\n this._toggleVideoTracks();\n\n case 16:\n _context10.prev = 16;\n _context10.next = 19;\n return domElement.play();\n\n case 19:\n return _context10.abrupt(\"return\");\n\n case 22:\n _context10.prev = 22;\n _context10.t0 = _context10[\"catch\"](16);\n _ref3 = _context10.t0 || {}, errorName = _ref3.name;\n isAbortError = errorName === 'AbortError'; // Play request was interrupted\n\n if (isAbortError) {\n this._playInterrupts++;\n }\n\n if (!(this._playInterrupts > playInterruptsOnStart)) {\n _context10.next = 31;\n break;\n }\n\n _context10.next = 30;\n return this.play();\n\n case 30:\n return _context10.abrupt(\"return\");\n\n case 31:\n throw _context10.t0;\n\n case 32:\n case \"end\":\n return _context10.stop();\n }\n }, _callee10, this, [[16, 22]]);\n }));\n\n function play() {\n return _play.apply(this, arguments);\n }\n\n return play;\n }();\n\n _proto._bindToStream = function _bindToStream(webRtcStream) {\n this._stream = webRtcStream;\n this._domElement.srcObject = webRtcStream; // Audio-only video won't play in Safari since the browser won't dispatch\n // the `loadedmetadata` event (since the video has unknown dimensions)\n // https://bugs.webkit.org/show_bug.cgi?id=174152\n\n if (this._domAudioOnlyVideoElement) {\n this.bindAudioTrackOnly();\n }\n };\n\n _proto.bindToStream = /*#__PURE__*/function () {\n var _bindToStream2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(webRtcStream) {\n var _this3 = this;\n\n var currentVideoSize, onAllEnded, onSingleEnded;\n return _regenerator.default.wrap(function _callee12$(_context12) {\n while (1) switch (_context12.prev = _context12.next) {\n case 0:\n if (this._domElement) {\n _context12.next = 2;\n break;\n }\n\n throw new Error('Can\\'t bind because _domElement no longer exists');\n\n case 2:\n this._bindToStream(webRtcStream);\n\n (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n var hasAudio;\n return _regenerator.default.wrap(function _callee11$(_context11) {\n while (1) switch (_context11.prev = _context11.next) {\n case 0:\n _context11.prev = 0;\n _context11.next = 3;\n return _this3.play();\n\n case 3:\n _context11.next = 26;\n break;\n\n case 5:\n _context11.prev = 5;\n _context11.t0 = _context11[\"catch\"](0);\n hasAudio = !!webRtcStream.getAudioTracks().length;\n\n if (!(_this3._hasAudioOnlyVideoElement() && _context11.t0.name === 'NotAllowedError')) {\n _context11.next = 15;\n break;\n }\n\n // Audio-only video failed to play. Mute audio and try again.\n _this3._domAudioOnlyVideoElement.muted = true;\n _context11.next = 12;\n return _this3.play();\n\n case 12:\n // Now that audio-only stream is playing, unmute it.\n _this3._domAudioOnlyVideoElement.muted = false;\n _context11.next = 26;\n break;\n\n case 15:\n if (!hasAudio) {\n _context11.next = 23;\n break;\n }\n\n // Media (with audio) failed to play. Mute audio and try again.\n _this3._blockedVolume = _this3.getAudioVolume();\n _this3._domElement.muted = true;\n _context11.next = 20;\n return _this3.play();\n\n case 20:\n _this3.trigger('audioBlocked');\n\n _context11.next = 26;\n break;\n\n case 23:\n // Media failed to play. Mute audio, even though there's no audio\n // track (e.g., a screenshare), and try again.\n _this3._domElement.muted = true;\n _context11.next = 26;\n return _this3.play();\n\n case 26:\n case \"end\":\n return _context11.stop();\n }\n }, _callee11, null, [[0, 5]]);\n }))().catch(err => {\n this.logging.debug('.play() failed: ', err);\n });\n currentVideoSize = {\n width: this._domElement.videoWidth,\n height: this._domElement.videoHeight\n };\n this.trigger('videoDimensionsChanged', (0, _extends2.default)({}, currentVideoSize), (0, _extends2.default)({}, currentVideoSize));\n\n this._domElementEvents.on('resize', () => {\n const _this$_domElement = this._domElement,\n width = _this$_domElement.videoWidth,\n height = _this$_domElement.videoHeight;\n const widthChanged = width !== currentVideoSize.width;\n const heightChanged = height !== currentVideoSize.height;\n\n if (widthChanged || heightChanged) {\n this.trigger('videoDimensionsChanged', (0, _extends2.default)({}, currentVideoSize), {\n width,\n height\n });\n currentVideoSize.width = width;\n currentVideoSize.height = height;\n }\n });\n\n onAllEnded = () => {\n this._mediaStoppedListener.stop();\n\n if (this._domElement) {\n this._domElement.onended = null;\n }\n\n this.trigger('mediaStopped');\n };\n\n onSingleEnded = track => {\n this.trigger('mediaStopped', track);\n }; // OPENTOK-22428: Firefox doesn't emit the ended event on the webRtcStream when the user\n // stops sharing their camera, but we do get the ended event on the video element.\n // TODO: should this apply to all elements?\n\n\n this._domElement.onended = () => onAllEnded();\n\n this._mediaStoppedListener = listenForTracksEnded(webRtcStream, onAllEnded, onSingleEnded);\n\n this._createAudioLevelSampler();\n\n return _context12.abrupt(\"return\", undefined);\n\n case 13:\n case \"end\":\n return _context12.stop();\n }\n }, _callee12, this);\n }));\n\n function bindToStream(_x) {\n return _bindToStream2.apply(this, arguments);\n }\n\n return bindToStream;\n }() // Unbind the currently bound stream from the video element.\n ;\n\n _proto.unbindStream = function unbindStream() {\n if (this._domElement) {\n this._domElement.srcObject = null;\n }\n\n if (this._domAudioOnlyVideoElement) {\n this._domAudioOnlyVideoElement.srcObject = null;\n }\n\n this._removeAudioLevelSampler();\n\n return this;\n };\n\n _proto.setAudioVolume = function setAudioVolume(rawValue) {\n if (this.isAudioBlocked()) {\n this._blockedVolume = rawValue;\n return;\n }\n\n const value = parseFloat(rawValue) / 100;\n const domElements = [this.domElement()];\n\n if (this._domAudioOnlyVideoElement) {\n domElements.push(this._domAudioOnlyVideoElement);\n }\n\n domElements.forEach(domElement => {\n if (domElement) {\n domElement.volume = value; // In Safari on iOS setting the volume does not work but setting muted does so at\n // least this will mute when you click the mute icon\n // https://bugs.webkit.org/show_bug.cgi?id=176045\n\n domElement.muted = value === 0;\n }\n });\n };\n\n _proto.getAudioVolume = function getAudioVolume() {\n if (this.isAudioBlocked()) {\n return this._blockedVolume;\n } // Return the actual volume of the DOM element\n\n\n const domElement = this.domElement();\n\n if (domElement) {\n return domElement.muted ? 0 : domElement.volume * 100;\n }\n\n return this._defaultAudioVolume;\n } // see https://wiki.mozilla.org/WebAPI/AudioChannels\n // The audioChannelType is currently only available in Firefox. This property returns\n // \"unknown\" in other browser. The related HTML tag attribute is \"mozaudiochannel\"\n ;\n\n _proto.audioChannelType = function audioChannelType(type) {\n const domElement = this.domElement();\n\n if (type !== void 0) {\n domElement.mozAudioChannelType = type;\n }\n\n if ('mozAudioChannelType' in this._domElement) {\n return domElement.mozAudioChannelType;\n }\n\n return 'unknown';\n };\n\n _proto.getAudioInputLevel = function getAudioInputLevel() {\n return this._audioLevelSampler.sample();\n };\n\n _proto.refreshTracks = function refreshTracks() {\n if (this._mediaStoppedListener) {\n this._mediaStoppedListener.refresh();\n }\n\n this._createAudioLevelSampler();\n };\n\n _proto.destroy = function destroy() {\n // Unbind events first, otherwise 'pause' will trigger when the\n // video element is removed from the DOM.\n if (this._mediaStoppedListener) {\n this._mediaStoppedListener.stop();\n }\n\n this.logging.debug('removing domElementEvents');\n\n this._domElementEvents.removeAll();\n\n if (this._domAudioOnlyVideoElementEvents) {\n this._domAudioOnlyVideoElementEvents.removeAll();\n }\n\n if (this._audioOnlyVideoElementWatcher) {\n clearInterval(this._audioOnlyVideoElementWatcher);\n }\n\n this.unbindStream();\n\n if (this._domElement) {\n OTHelpers.removeElement(this._domElement);\n this._domElement = null;\n }\n\n if (this._domAudioOnlyVideoElement) {\n OTHelpers.removeElement(this._domAudioOnlyVideoElement);\n this._domAudioOnlyVideoElement = null;\n }\n\n this.trigger('destroyed');\n destroyObj('NativeVideoElementWrapper', this);\n return void 0;\n };\n\n _proto.setSinkId = function setSinkId(deviceId) {\n const videoElements = [this._domElement, this._domAudioOnlyVideoElement];\n const setSinkIdPromises = videoElements.map(videoElement => {\n if (!videoElement) {\n return undefined;\n }\n\n return videoElement.setSinkId(deviceId);\n });\n return Promise.all(setSinkIdPromises);\n };\n\n return NativeVideoElementWrapper;\n }();\n\n return NativeVideoElementWrapper;\n}\n\nmodule.exports = NativeVideoElementWrapperFactory;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 294 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\nmodule.exports = () => new Promise(resolve => setTimeout(resolve));\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 295 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, global-require, no-underscore-dangle, func-names */\nconst assign = __webpack_require__(7);\n\nconst pick = __webpack_require__(47);\n\nconst find = __webpack_require__(61);\n\nconst eventing = __webpack_require__(6);\n\nmodule.exports = function PublisherPeerConnectionFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const getStatsHelpers = deps.getStatsHelpers || __webpack_require__(75);\n\n const OTHelpers = deps.OTHelpers || __webpack_require__(5);\n\n const PeerConnection = deps.PeerConnection || __webpack_require__(101)();\n\n const setCertificates = deps.setCertificates || __webpack_require__(163)();\n\n const watchAudioAcquisition = deps.watchAudioAcquisition || __webpack_require__(641);\n /**\n * @typedef {object} PublisherPeerConnectionConfig\n * @property {function(string, string=, object=, object=, boolean=)} logAnalyticsEvent\n * @property {Connection} remoteConnection\n * @property {boolean} reconnection\n * @property {MediaStream} webRTCStream\n * @property {objectsubscribe()
method of the\n * {@link Session} object returns a Subscriber object.\n *\n * @property {Element} element The HTML DOM element containing the Subscriber.\n * @property {String} id The DOM ID of the Subscriber.\n * @property {Stream} stream The stream to which you are subscribing.\n *\n * @class Subscriber\n * @augments EventDispatcher\n */\n\n const Subscriber = function Subscriber(targetElement, options, completionHandler) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (completionHandler === void 0) {\n completionHandler = () => {};\n }\n\n if (options.analytics === undefined) {\n // @todo does anyone instantiate a Subscriber outside of `session.subscribe`?\n // it might be best to instantiate an analytics object and replace it on subscribe like\n // we do in the publisher.\n throw new Error('Subscriber requires an instance of analytics');\n }\n /** @type AnalyticsHelperDefault */\n\n\n const analytics = options.analytics;\n\n const _widgetId = uuid();\n\n const _audioLevelCapable = Subscriber.hasAudioOutputLevelStatCapability() || hasRemoteStreamsWithWebAudio();\n\n const _subscriber = this;\n\n const _pcConnected = {};\n const peerConnectionsAsync = {};\n const webRTCStreams = {};\n const hybridSessionTransitionStartTimes = {};\n const _peerConnectionEvents = {};\n /** @type {defaultWidgetView|null} */\n\n let _widgetView;\n\n let _chrome;\n\n let _muteDisplayMode;\n\n let _audioLevelMeter;\n\n let _subscribeStartTime;\n\n let _state;\n\n let _audioLevelSampler;\n\n let _audioLevelBehaviour;\n\n let _webRTCStream;\n\n let _videoEnabled;\n\n let _lastSubscribeToVideoReason;\n\n let _attemptStartTime;\n /** @type IntervalRunnerDefault | undefined */\n\n\n let _streamEventHandlers;\n\n let _isSubscribingToAudio;\n\n let _loaded = false;\n\n let _domId = targetElement || _widgetId;\n\n let _session = options.session;\n let _stream = options.stream;\n\n let _audioVolume;\n\n let _latestPositiveVolume;\n\n let _frameRateRestricted = false;\n\n let _frameRateWatcher;\n\n let _preDisconnectStats = {};\n let _congestionLevel = null;\n let _hasLoadedAtLeastOnce = false;\n let _isVideoSupported = true;\n let fallbackIceServers = [];\n\n let _properties = defaults({}, options, {\n showControls: true,\n testNetwork: false,\n fitMode: _stream.defaultFitMode || 'cover',\n insertDefaultUI: true\n });\n\n let _activeSourceStreamId;\n\n const _lastConnectionStatesMap = {\n P2P: eventNames.SUBSCRIBER_DISCONNECTED,\n MANTIS: eventNames.SUBSCRIBER_DISCONNECTED\n }; // The audio stats watcher is only supported on chromium-based browsers that supports\n // the standard version of the getStats API.\n\n const _supportsAudioStatsWatcher = env.name === 'Chrome' && env.version >= 58 || env.isChromiumEdge || env.isOpera;\n\n const socket = _session._.getSocket();\n\n const getAllPeerConnections = () => values(peerConnectionsAsync);\n\n const getPeerConnectionBySourceStreamId = sourceStreamId => peerConnectionsAsync[sourceStreamId];\n\n const getCurrentPeerConnection = () => peerConnectionsAsync[_activeSourceStreamId];\n\n const removePeerConnectionBySourceStreamId = /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(sourceStreamId) {\n var peerConnection;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return peerConnectionsAsync[sourceStreamId];\n\n case 2:\n peerConnection = _context.sent;\n peerConnection.close();\n delete peerConnectionsAsync[sourceStreamId];\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n\n return function removePeerConnectionBySourceStreamId(_x) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n const removeWebRTCStream = sourceStreamId => {\n delete webRTCStreams[sourceStreamId];\n };\n\n const bindWebRTCStream = /*#__PURE__*/function () {\n var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(webRTCStream) {\n var videoContainerOptions;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n if (webRTCStream) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n videoContainerOptions = {\n error: onVideoError,\n audioVolume: _audioVolume\n };\n _context2.prev = 3;\n _context2.next = 6;\n return _widgetView.bindVideo(webRTCStream, videoContainerOptions);\n\n case 6:\n _context2.next = 14;\n break;\n\n case 8:\n _context2.prev = 8;\n _context2.t0 = _context2[\"catch\"](3);\n\n if (!(_context2.t0 instanceof CancellationError || _state.isDestroyed())) {\n _context2.next = 12;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 12:\n onVideoError(_context2.t0);\n throw _context2.t0;\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[3, 8]]);\n }));\n\n return function bindWebRTCStream(_x2) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n const _getStatsWrapper = /*#__PURE__*/function () {\n var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(reportType, callback) {\n var isRtcStatsReport, errorCode, pc, getStats;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n isRtcStatsReport = false;\n\n if (typeof reportType === 'function') {\n /* eslint-disable-next-line no-param-reassign */\n callback = reportType;\n } else {\n isRtcStatsReport = reportType === 'rtcStatsReport';\n }\n\n if (isRtcStatsReport) {\n notifyGetRtcStatsReportCalled();\n } else {\n notifyGetStatsCalled();\n }\n\n if (!(isRtcStatsReport && !isGetRtcStatsReportSupported)) {\n _context3.next = 7;\n break;\n }\n\n errorCode = ExceptionCodes.GET_RTC_STATS_REPORT_NOT_SUPPORTED;\n callback(otError(Errors.GET_RTC_STATS_REPORT_NOT_SUPPORTED, new Error(OTErrorClass.getTitleByCode(errorCode)), errorCode));\n return _context3.abrupt(\"return\");\n\n case 7:\n if (getCurrentPeerConnection()) {\n _context3.next = 11;\n break;\n }\n\n errorCode = ExceptionCodes.PEER_CONNECTION_NOT_CONNECTED;\n callback(otError(errors.PEER_CONNECTION_NOT_CONNECTED, new Error(OTErrorClass.getTitleByCode(errorCode)), errorCode));\n return _context3.abrupt(\"return\");\n\n case 11:\n _context3.next = 13;\n return getCurrentPeerConnection();\n\n case 13:\n pc = _context3.sent;\n getStats = isRtcStatsReport ? pc.getRtcStatsReport : pc.getStats;\n getStats((error, stats) => {\n if (error) {\n if (error.code === ExceptionCodes.PEER_CONNECTION_NOT_CONNECTED) {\n error = otError(errors.PEER_CONNECTION_NOT_CONNECTED, error, ExceptionCodes.PEER_CONNECTION_NOT_CONNECTED);\n }\n\n callback(error);\n } else {\n callback(null, stats);\n }\n });\n\n case 16:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n\n return function _getStatsWrapper(_x3, _x4) {\n return _ref5.apply(this, arguments);\n };\n }();\n\n const _getStats = callback => _getStatsWrapper(callback);\n\n const _getRtcStatsReport = callback => _getStatsWrapper('rtcStatsReport', callback);\n\n const logAnalyticsEvent = (action, variation, payload, options, throttle) => {\n let stats = assign({\n action,\n variation,\n payload,\n streamId: _stream ? _stream.id : null,\n sessionId: _session ? _session.sessionId : null,\n connectionId: _session && _session.isConnected() ? _session.connection.connectionId : null,\n partnerId: _session && _session.sessionInfo ? _session.sessionInfo.partnerId : null,\n subscriberId: _widgetId,\n widgetType: 'Subscriber'\n }, options);\n\n if (variation === 'Failure' || variation === 'iceconnectionstatechange' && payload === 'closed') {\n stats = assign(stats, _preDisconnectStats);\n }\n\n const args = [stats];\n\n if (throttle) {\n args.push(throttle);\n }\n\n analytics.logEvent(...args);\n };\n\n const logHybridSessionTransition = (action, variation, payload) => {\n if (variation === 'Attempt') {\n hybridSessionTransitionStartTimes[action] = new Date().getTime();\n logAnalyticsEvent(action, variation, payload);\n } else if (variation === 'Failure' || variation === 'Success') {\n logAnalyticsEvent(action, variation, payload, {\n attemptDuration: new Date().getTime() - hybridSessionTransitionStartTimes[action]\n });\n }\n };\n\n const logRoutedToRelayedTransition = function logRoutedToRelayedTransition(variation, payload) {\n if (payload === void 0) {\n payload = {};\n }\n\n logHybridSessionTransition('RoutedToRelayedTransition', variation, payload);\n };\n\n const logRelayedToRoutedTransition = function logRelayedToRoutedTransition(variation, payload) {\n if (payload === void 0) {\n payload = {};\n }\n\n logHybridSessionTransition('RelayedToRoutedTransition', variation, payload);\n };\n\n const connectivityState = createConnectivityState({\n onInvalidTransition(transition, from) {\n const err = `Invalid state transition: Event '${transition}' not possible in state '${from}'`;\n logging.error(err);\n logAnalyticsEvent('Subscriber:InvalidStateTransition', 'Event', {\n details: err\n });\n }\n\n });\n {\n const errMessage = 'Unable to subscribe to stream in a reasonable amount of time'; // make sure we trigger an error if we are not getting any \"data\" after a reasonable\n // amount of time\n\n overallTimeout({\n connectivityState,\n\n onWarning() {\n logConnectivityEvent('Warning', {});\n },\n\n onTimeout: () => {\n if (_widgetView) {\n _widgetView.addError(errMessage);\n }\n\n if (_state.isAttemptingToSubscribe()) {\n _state.set('Failed');\n\n this._disconnect({\n noStateTransition: true\n });\n\n const error = otError(Errors.TIMEOUT, new Error(errMessage), ExceptionCodes.UNABLE_TO_SUBSCRIBE);\n connectivityState.fail({\n options: {\n failureReason: 'Subscribe',\n failureMessage: errMessage,\n failureCode: ExceptionCodes.UNABLE_TO_SUBSCRIBE\n },\n error\n });\n }\n },\n warningMs: BIND_VIDEO_DELAY_WARNING,\n timeoutMs: BIND_VIDEO_DELAY_MAX\n });\n }\n _pcConnected.promise = new Promise((resolve, reject) => {\n _pcConnected.resolve = resolve;\n _pcConnected.reject = reject;\n });\n\n if (_properties.testNetwork && _session.sessionInfo.p2pEnabled) {\n logging.warn('You cannot test your network with a relayed session. Use a routed session.');\n }\n\n this.id = _domId;\n this.widgetId = _widgetId;\n this.session = _session;\n this.stream = _properties.stream;\n _stream = _properties.stream;\n this.streamId = _stream.id;\n\n if (!_session) {\n OTErrorClass.handleJsException({\n errorMsg: 'OT.Subscriber must be passed a session option',\n code: 2000,\n target: this,\n analytics\n });\n return null;\n }\n\n eventing(this);\n\n _subscriber.once('subscribeComplete', function () {\n try {\n completionHandler(...arguments);\n } catch (err) {\n logging.error('Completion handler threw an exception', err);\n }\n });\n\n const getVariationFromState = (_ref6) => {\n let transition = _ref6.transition,\n from = _ref6.from;\n\n if (transition === 'fail') {\n if (from === 'connected') {\n return 'Disconnect';\n }\n\n return 'Failure';\n }\n\n if (transition === 'disconnect' && from === 'connected') {\n return 'Disconnect';\n }\n\n return 'Cancel';\n };\n\n connectivityState.observe({\n onEnterConnecting() {\n logConnectivityEvent('Attempt', null, {});\n },\n\n onEnterConnected() {\n logConnectivityEvent('Success', null, {});\n },\n\n onEnterDisconnected(state, _temp2) {\n let _ref7 = _temp2 === void 0 ? {} : _temp2,\n _ref7$options = _ref7.options,\n options = _ref7$options === void 0 ? {} : _ref7$options,\n _ref7$payload = _ref7.payload,\n payload = _ref7$payload === void 0 ? null : _ref7$payload;\n\n logConnectivityEvent(getVariationFromState(state), payload, options);\n }\n\n });\n connectivityState.observe({\n onEnterConnected: () => {\n this.trigger('subscribeComplete', undefined, this);\n },\n onEnterDisconnected: function onEnterDisconnected(_ref8, _temp3) {\n let from = _ref8.from;\n\n let _ref9 = _temp3 === void 0 ? {} : _temp3,\n error = _ref9.error;\n\n if (from === 'connecting') {\n _this.trigger('subscribeComplete', error || new Error('An unknown error occurred'), _this);\n }\n }\n });\n createConnectivityAttemptPinger({\n connectivityState,\n\n logAttempt() {\n logAnalyticsEvent('Subscribe', 'Attempting', null, {\n connectionId: _session && _session.isConnected() ? _session.connection.connectionId : null\n });\n }\n\n });\n\n const logConnectivityEvent = (variation, payload, options) => {\n if (variation === 'Attempt') {\n _attemptStartTime = new Date().getTime();\n }\n\n if (variation === 'Failure' || variation === 'Success' || variation === 'Cancel') {\n logAnalyticsEvent('Subscribe', variation, payload, (0, _extends2.default)({}, options, {\n attemptDuration: new Date().getTime() - _attemptStartTime\n }));\n } else {\n logAnalyticsEvent('Subscribe', variation, payload, options);\n }\n };\n\n const logResubscribe = (variation, payload) => {\n logAnalyticsEvent('ICERestart', variation, payload);\n };\n\n const recordQOS = (_ref10) => {\n var _properties$preferred, _properties$preferred2;\n\n let parsedStats = _ref10.parsedStats,\n remoteConnectionId = _ref10.remoteConnectionId,\n peerId = _ref10.peerId,\n sourceStreamId = _ref10.sourceStreamId;\n const QoSBlob = {\n widgetType: 'Subscriber',\n width: _widgetView.width,\n height: _widgetView.height,\n audioTrack: _webRTCStream && _webRTCStream.getAudioTracks().length > 0,\n hasAudio: _stream && _stream.hasAudio,\n subscribeToAudio: _isSubscribingToAudio,\n audioVolume: this.getAudioVolume(),\n videoTrack: _webRTCStream && _webRTCStream.getVideoTracks().length > 0,\n connectionId: _session ? _session.connection.connectionId : null,\n hasVideo: _stream && _stream.hasVideo,\n subscribeToVideo: _properties.subscribeToVideo,\n congestionLevel: _congestionLevel,\n streamId: _stream.id,\n subscriberId: _widgetId,\n duration: Math.round((now() - _subscribeStartTime) / 1000),\n remoteConnectionId,\n peerId,\n sourceStreamId: getMediaModeBySourceStreamId(sourceStreamId),\n preferredResolutionHeight: (_properties$preferred = _properties.preferredResolution) == null ? void 0 : _properties$preferred.height,\n preferredResolutionWidth: (_properties$preferred2 = _properties.preferredResolution) == null ? void 0 : _properties$preferred2.width,\n preferredFrameRate: _properties.preferredFrameRate,\n audioFallback: !_videoEnabled && _lastSubscribeToVideoReason === 'auto'\n };\n const combinedStats = assign(QoSBlob, parsedStats);\n analytics.logQOS(combinedStats);\n this.trigger('qos', analytics.combineWithCommon(combinedStats));\n };\n\n const stateChangeFailed = changeFailed => {\n logging.error('OT.Subscriber State Change Failed: ', changeFailed.message);\n logging.debug(changeFailed);\n };\n\n const onLoaded = () => {\n if (_state.isSubscribing() || !_widgetView || !_widgetView.video()) {\n return;\n }\n\n _loaded = true;\n\n if (!_hasLoadedAtLeastOnce) {\n connectivityState.connect();\n _hasLoadedAtLeastOnce = true;\n }\n\n logging.debug('OT.Subscriber.onLoaded');\n\n _state.set('Subscribing');\n\n _subscribeStartTime = now();\n\n _widgetView.loading(false);\n\n if (_chrome) {\n _chrome.showAfterLoading();\n }\n\n if (_frameRateRestricted) {\n _stream.setRestrictFrameRate(true);\n }\n\n if (_audioLevelMeter) {\n _audioLevelMeter.audioOnly(_widgetView.audioOnly());\n }\n\n this.setAudioVolume(_audioVolume);\n this.trigger('loaded', this);\n };\n\n const isAudioOn = () => _stream && _stream.hasAudio && _isSubscribingToAudio && this.getAudioVolume() > 0 && !this.isAudioBlocked();\n\n const isVideoOn = () => _stream && _stream.hasVideo;\n\n const onAudioLevelStuckWarning = reason => {\n // `audioLevelStuckAt0` warning will be ignored either because the video is ON or audio is OFF\n const shouldIgnoreWarning = reason === 'audioLevelStuckAt0' && (!isAudioOn() || isVideoOn());\n let disableAudioLevelStuckAt0 = false;\n\n if (!shouldIgnoreWarning) {\n logAnalyticsEvent('subscriber:onAudioWarning', 'Event', {\n reason\n });\n\n if (_widgetView) {\n _widgetView.rebindSrcObject();\n\n logAnalyticsEvent('subscriber:rebindSrcObject', 'Called');\n\n if (reason === 'audioLevelStuck') {\n // Since 'audioLevelStuck' anomally was detected and the rebind already happened,\n // we don't need to do future rebinds. We can do a return here so that the watcher\n // is not restarted.\n return;\n } // This is to ignore future warnings of this type in order to prevent\n // periodical rebindings.\n\n\n disableAudioLevelStuckAt0 = true;\n }\n }\n\n startAudioStatsWatcher(disableAudioLevelStuckAt0);\n };\n\n const startAudioStatsWatcher = /*#__PURE__*/function () {\n var _ref11 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(disableAudioLevelStuckAt0) {\n var peerConnection;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (disableAudioLevelStuckAt0 === void 0) {\n disableAudioLevelStuckAt0 = false;\n }\n\n if (!_supportsAudioStatsWatcher) {\n _context4.next = 6;\n break;\n }\n\n _context4.next = 4;\n return getCurrentPeerConnection();\n\n case 4:\n peerConnection = _context4.sent;\n peerConnection.startAudioStatsWatcher(disableAudioLevelStuckAt0);\n\n case 6:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n\n return function startAudioStatsWatcher(_x5) {\n return _ref11.apply(this, arguments);\n };\n }();\n\n const onPeerConnected = peerConnection => {\n const isAdaptiveEnabled = _session.sessionInfo.isAdaptiveEnabled;\n const isAdaptiveP2pSourceStreamId = isAdaptiveEnabled && peerConnection.getSourceStreamId() === 'P2P';\n\n if (isAdaptiveP2pSourceStreamId) {\n logRoutedToRelayedTransition('Success');\n }\n };\n\n const onPeerDisconnected = () => {\n logging.debug('OT.Subscriber has been disconnected from the Publisher\\'s PeerConnection');\n connectivityState.fail({\n options: {\n failureReason: 'PeerConnectionError',\n failureCode: ExceptionCodes.UNABLE_TO_PUBLISH,\n failureMessage: 'PeerConnection disconnected'\n },\n error: otError(errors.DISCONNECTED, new Error('ClientDisconnected'))\n });\n\n this._disconnect({\n noStateTransition: true\n });\n\n if (_state.isAttemptingToSubscribe() || _state.isSubscribing()) {\n _state.set('Failed');\n }\n };\n\n const onVideoError = plainErr => {\n const err = otError(errors.MEDIA_ERR_DECODE, plainErr, plainErr.code || ExceptionCodes.P2P_CONNECTION_FAILED);\n err.message = `OT.Subscriber while playing stream: ${err.message}`;\n logging.error('OT.Subscriber.onVideoError');\n connectivityState.fail({\n options: {\n failureReason: 'VideoElement',\n failureMessage: err.message,\n failureCode: err.code || ExceptionCodes.P2P_CONNECTION_FAILED\n },\n error: err\n });\n\n const isAttemptingToSubscribe = _state.isAttemptingToSubscribe();\n\n _state.set('Failed');\n\n if (!isAttemptingToSubscribe) {\n // FIXME: This emits a string instead of an error here for backwards compatibility despite\n // being undocumented. When possible we should remove access to this and other undocumented\n // events, and restore emitting actual errors here.\n _subscriber.trigger('error', err.message);\n }\n\n OTErrorClass.handleJsException({\n error: err,\n code: ExceptionCodes.UNABLE_TO_SUBSCRIBE,\n // @todo why do we override the code?\n target: _subscriber,\n analytics\n });\n };\n\n const onSubscriberCreateError = rawError => {\n // @todo v3 These errors used to come from the peer connection hence the mention\n // of peer connection in the logs/ errors. However they actually have nothing to do\n // with the peer connection. I have chosen to keep the messages / errors the same for\n // now, but we should consider changing them\n const err = interpretSubscriberCreateError(rawError);\n OTErrorClass.handleJsException({\n error: err,\n code: err.code,\n target: _subscriber,\n analytics\n });\n\n this._disconnect({\n noStateTransition: true\n });\n\n const options = {\n failureReason: 'Subscribe',\n failureMessage: `OT.Subscriber PeerConnection Error: ${err.message}`,\n failureCode: ExceptionCodes.P2P_CONNECTION_FAILED\n };\n\n _showError(err.code);\n\n connectivityState.fail({\n options,\n error: otError(err.name, new Error('Subscribe: Subscriber PeerConnection with connection (not found) ' + `failed: ${err.message}`), err.code)\n });\n\n if (err.name === Errors.STREAM_NOT_FOUND) {\n // Usually, the subscriber should be kept in an error state when the peer connection fails\n // because it still exists in the session. But when we get a 404 that means it doesn't\n // exist, even if the session still thinks it does.\n this._destroy({\n reason: 'streamNotFound',\n noStateTransition: true\n });\n }\n };\n\n const onPeerConnectionFailure = (code, reason, peerConnection, prefix) => {\n if (prefix === 'SetRemoteDescription' && !_isVideoSupported && reason.match(/Unsupported video without audio for fallback/)) {\n if (_widgetView) {\n _widgetView.addError('The stream is unable to be played.', 'Your browser does not support the video format.');\n }\n\n let err;\n\n if (OTHelpers.env.name === 'Safari') {\n err = new Error('VP8 is not supported in this version of Safari. You might want to consider switching to ' + 'an H264 project. See https://tokbox.com/safari for more information.');\n } else {\n err = new Error('Video format not supported in this browser.');\n }\n\n err.code = ExceptionCodes.UNSUPPORTED_VIDEO_CODEC;\n onVideoError(err);\n return;\n }\n\n if (prefix === 'ICEWorkflow' && _session.sessionInfo.reconnection && _loaded) {\n logging.debug('Ignoring peer connection failure due to possibility of reconnection.');\n return;\n }\n\n let errorCode;\n\n if (prefix === 'ICEWorkflow') {\n errorCode = ExceptionCodes.SUBSCRIBER_ICE_WORKFLOW_FAILED;\n } else if (code === ExceptionCodes.STREAM_LIMIT_EXCEEDED) {\n errorCode = code;\n } else {\n errorCode = ExceptionCodes.P2P_CONNECTION_FAILED;\n }\n\n const options = {\n failureReason: prefix || 'PeerConnectionError',\n failureMessage: `OT.Subscriber PeerConnection Error: ${reason}`,\n failureCode: errorCode\n };\n const error = interpretPeerConnectionError(code, reason, prefix, '(not found)', 'Subscriber');\n connectivityState.fail({\n options,\n error\n });\n\n if (_state.isAttemptingToSubscribe()) {\n // We weren't subscribing yet so this was a failure in setting\n // up the PeerConnection or receiving the initial stream.\n const payload = {\n hasRelayCandidates: peerConnection && peerConnection.hasRelayCandidates()\n };\n logAnalyticsEvent('createPeerConnection', 'Failure', payload, options);\n\n _state.set('Failed');\n } else if (_state.isSubscribing()) {\n // we were disconnected after we were already subscribing\n _state.set('Failed');\n\n this.trigger('error', reason);\n }\n\n this._disconnect({\n noStateTransition: true\n });\n\n if (Number(code) === 404) {\n // Usually, the subscriber should be kept in an error state when the peer connection fails\n // because it still exists in the session. But when we get a 404 that means it doesn't\n // exist, even if the session still thinks it does.\n this._destroy({\n noStateTransition: true\n });\n }\n\n OTErrorClass.handleJsException({\n errorMsg: `OT.Subscriber PeerConnection Error: ${reason}`,\n errorCode,\n target: this,\n analytics\n });\n\n _showError(code);\n };\n\n const onRemoteStreamAdded = /*#__PURE__*/function () {\n var _ref12 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(webRTCStream, peerConnection) {\n var isSwappingStreams, sourceStreamId, _session2, sessionInfo, video, videoIndicator, videoElementCreated, env;\n\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n isSwappingStreams = Object.keys(webRTCStreams).length === 1;\n sourceStreamId = peerConnection == null ? void 0 : peerConnection.getSourceStreamId();\n _session2 = _session, sessionInfo = _session2.sessionInfo;\n _webRTCStream = webRTCStream; // save a copy of the WebRTCStream\n\n if (sourceStreamId) {\n webRTCStreams[sourceStreamId] = webRTCStream;\n }\n\n logging.debug('OT.Subscriber.onRemoteStreamAdded with sourceStreamId', sourceStreamId);\n _context5.prev = 6;\n _context5.next = 9;\n return waitUntil(() => hasExpectedTracks(_webRTCStream, _stream));\n\n case 9:\n _context5.next = 18;\n break;\n\n case 11:\n _context5.prev = 11;\n _context5.t0 = _context5[\"catch\"](6);\n\n if (!(_context5.t0.message === 'TIMEOUT')) {\n _context5.next = 17;\n break;\n }\n\n logging.error('The expected tracks never arrived');\n _context5.next = 18;\n break;\n\n case 17:\n throw _context5.t0;\n\n case 18:\n _state.set('BindingRemoteStream'); // Disable the audio/video, if needed\n\n\n _this.subscribeToAudio(_isSubscribingToAudio);\n\n _lastSubscribeToVideoReason = 'loading';\n\n _this.subscribeToVideo(_properties.subscribeToVideo, 'loading'); // setting resolution and frame rate doesn't work in P2P\n\n\n if (!sessionInfo.p2pEnabled && sourceStreamId !== 'P2P') {\n _this.setPreferredResolution(_properties.preferredResolution);\n\n _this.setPreferredFrameRate(_properties.preferredFrameRate);\n } // This is a workaround for a bug in Chrome where a track disabled on\n // the remote end doesn't fire loadedmetadata causing the subscriber to timeout\n // https://jira.tokbox.com/browse/OPENTOK-15605\n // Also https://jira.tokbox.com/browse/OPENTOK-16425\n // Also https://jira.vonage.com/browse/OPENTOK-27112\n\n\n webRTCStream.getVideoTracks().forEach(track => {\n if ((typeof window !== undefined ? window : global).webkitMediaStream) {\n track.enabled = false;\n } else {\n track.enabled = _stream.hasVideo && _properties.subscribeToVideo;\n }\n });\n _context5.next = 26;\n return bindWebRTCStream(webRTCStream);\n\n case 26:\n startAudioStatsWatcher();\n\n if (!_state.isDestroyed()) {\n _context5.next = 29;\n break;\n }\n\n throw new Error('Subscriber destroyed');\n\n case 29:\n if ((typeof window !== undefined ? window : global).webkitMediaStream) {\n // Enable any video streams that we previously disabled for OPENTOK-27112\n webRTCStream.getVideoTracks().forEach(track => {\n track.enabled = _stream.hasVideo && _properties.subscribeToVideo;\n });\n }\n\n video = _widgetView && _widgetView.video();\n\n if (video) {\n video.orientation({\n width: _stream.videoDimensions.width,\n height: _stream.videoDimensions.height,\n videoOrientation: _stream.videoDimensions.orientation\n });\n }\n\n videoIndicator = _chrome && _chrome.videoUnsupportedIndicator;\n\n if (videoIndicator) {\n videoIndicator.setVideoUnsupported(!_isVideoSupported);\n }\n\n videoElementCreated = new Promise((resolve, reject) => {\n const video = _widgetView && _widgetView.video();\n\n if (video && video.domElement()) {\n resolve();\n return;\n }\n\n _widgetView.once('videoElementCreated', resolve);\n\n _subscriber.once('destroyed', reject);\n });\n _context5.next = 37;\n return videoElementCreated;\n\n case 37:\n _context5.next = 39;\n return _pcConnected.promise;\n\n case 39:\n if (!isSwappingStreams) {\n onLoaded();\n } else {\n _state.set('Subscribing');\n } // if the audioLevelSampler implementation requires a stream we need to set it now\n\n\n if (_audioLevelSampler && 'webRTCStream' in _audioLevelSampler && webRTCStream.getAudioTracks().length > 0) {\n _audioLevelSampler.webRTCStream(webRTCStream);\n }\n /**\n * We need frame rate watcher in Safari because framesPerSecond is\n * always zero so we need to rely on calculating the difference of\n * framesDecoded across multiple getStats invocations.\n * See https://bugs.webkit.org/show_bug.cgi?id=172682\n * In addition, we need to calculate it in Chrome v58+ and chromium based browsers\n * since framesPerSecond is not implemented in the standard getStats API.\n * In the case of Firefox 96+, the field 'frameRateMean' was removed so we need\n * to use the frame watchet to get the frameRate.\n */\n\n\n env = OTHelpers.env;\n\n if (!(env.isSafari || env.isChromiumEdge || env.isOpera || env.name === 'Chrome' && env.version >= 58 || env.isFirefox && env.version >= 96)) {\n _context5.next = 48;\n break;\n }\n\n if (_frameRateWatcher) {\n _frameRateWatcher.destroy();\n\n _frameRateWatcher = null;\n }\n\n _context5.next = 46;\n return getCurrentPeerConnection();\n\n case 46:\n peerConnection = _context5.sent;\n\n if (peerConnection) {\n _frameRateWatcher = watchFrameRate(peerConnection.getStats.bind(peerConnection));\n }\n\n case 48:\n // @todo We should revisit this event that is not public and seems to be not used anywhere.\n // Just to maintain the previous behavior, we'll avoid triggering twice in adaptive sessions.\n if (!isSwappingStreams) {\n _this.trigger('streamAdded', _this);\n }\n\n case 49:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, null, [[6, 11]]);\n }));\n\n return function onRemoteStreamAdded(_x6, _x7) {\n return _ref12.apply(this, arguments);\n };\n }();\n\n const onRemoteStreamRemoved = webRTCStream => {\n _webRTCStream = null;\n logging.debug('OT.Subscriber.onStreamRemoved');\n\n const video = _widgetView && _widgetView.video();\n\n if (video && video.stream === webRTCStream) {\n _widgetView.destroyVideo();\n }\n\n removeWebRTCStream(_activeSourceStreamId);\n this.trigger('streamRemoved', this);\n };\n\n const onRemoteVideoSupported = supported => {\n // as _isVideoSupported is true by default, this will only ever be hit if we receive\n // a onRemoteVideoSupported false, and then a onRemoteVideoSupported true. In other words\n // it will not trigger an event if video is enabled and is never disabled due to codec issues.\n if (_isVideoSupported !== supported) {\n this.dispatchEvent(new Events.VideoEnabledChangedEvent(supported ? 'videoEnabled' : 'videoDisabled', {\n reason: supported ? 'codecChanged' : 'codecNotSupported'\n }));\n }\n\n _isVideoSupported = supported;\n };\n\n const audioBlockedStateChange = value => {\n _widgetView.setAudioBlockedUi(value);\n\n const indicator = _chrome && _chrome.audioBlockedIndicator;\n\n if (indicator) {\n indicator.setAudioBlocked(value);\n }\n\n const videoIndicator = _chrome && _chrome.videoUnsupportedIndicator;\n\n if (videoIndicator) {\n videoIndicator.setVideoUnsupported(!value && !_isVideoSupported);\n }\n };\n\n this.on('audioBlocked', () => {\n audioBlockedStateChange(true);\n });\n this.on('audioUnblocked', () => {\n audioBlockedStateChange(false);\n });\n const connectionStateMap = {\n new: eventNames.SUBSCRIBER_DISCONNECTED,\n checking: eventNames.SUBSCRIBER_DISCONNECTED,\n connected: eventNames.SUBSCRIBER_CONNECTED,\n completed: eventNames.SUBSCRIBER_CONNECTED,\n disconnected: eventNames.SUBSCRIBER_DISCONNECTED\n };\n\n const onIceConnectionStateChange = (state, peerConnection) => {\n const currentConnectionState = connectionStateMap[state];\n const sourceStreamId = peerConnection.getSourceStreamId();\n const lastConnectionState = _lastConnectionStatesMap[sourceStreamId]; // check if the last mapped state changed\n\n const isConnectionStateChanged = currentConnectionState && currentConnectionState !== lastConnectionState;\n\n if (isConnectionStateChanged) {\n _lastConnectionStatesMap[sourceStreamId] = currentConnectionState;\n\n if (state === 'disconnected' && sourceStreamId !== 'P2P') {\n // This block of code initiates an iceRestart when a peer connection is disconnected\n // and the socket is still connected.\n setTimeout( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var isSocketReconnecting;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n isSocketReconnecting = _session._.isSocketReconnecting;\n\n if (!(_lastConnectionStatesMap[sourceStreamId] === 'disconnected' && socket.is('connected') && !isSocketReconnecting())) {\n _context6.next = 4;\n break;\n }\n\n _context6.next = 4;\n return _this._.iceRestart('peer connection disconnected');\n\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6);\n })), 2000);\n }\n\n if (_widgetView) {\n _widgetView.loading(currentConnectionState !== eventNames.SUBSCRIBER_CONNECTED);\n }\n\n logging.debug(`OT.Subscriber.connectionStateChanged to ${state}`);\n this.dispatchEvent(new Events.ConnectionStateChangedEvent(currentConnectionState, this));\n }\n };\n\n const onIceRestartSuccess = () => {\n logResubscribe('Success');\n };\n\n const onIceRestartFailure = () => {\n logResubscribe('Failure', {\n reason: 'ICEWorkflow',\n message: 'OT.Subscriber PeerConnection Error: ' + 'The stream was unable to connect due to a network error.' + ' Make sure your connection isn\\'t blocked by a firewall.'\n });\n };\n\n const streamUpdated = event => {\n const video = _widgetView && _widgetView.video();\n\n switch (event.changedProperty) {\n case 'videoDimensions':\n if (!video) {\n // Ignore videoDimensions updates before video is created OPENTOK-17253\n break;\n }\n\n video.orientation({\n width: event.newValue.width,\n height: event.newValue.height,\n videoOrientation: event.newValue.orientation\n });\n this.dispatchEvent(new Events.VideoDimensionsChangedEvent(this, event.oldValue, event.newValue));\n break;\n\n case 'videoDisableWarning':\n if (_chrome) {\n _chrome.videoDisabledIndicator.setWarning(event.newValue);\n }\n\n this.dispatchEvent(new Events.VideoDisableWarningEvent(event.newValue ? 'videoDisableWarning' : 'videoDisableWarningLifted'));\n _congestionLevel = event.newValue === 'videoDisableWarning' ? 1 : null;\n break;\n\n case 'hasVideo':\n // @todo setAudioOnly affects peer connections, what happens with new ones?\n setAudioOnly(!_stream.hasVideo || !_properties.subscribeToVideo); // Makes sure that the audio workaround for Safari is executed\n\n if (env.name === 'Safari' && !_stream.hasVideo && _widgetView) {\n _widgetView.bindAudioTrackOnly();\n }\n\n this.dispatchEvent(new Events.VideoEnabledChangedEvent(_stream.hasVideo ? 'videoEnabled' : 'videoDisabled', {\n reason: 'publishVideo'\n }));\n break;\n\n case 'hasAudio':\n _muteDisplayMode.update();\n\n break;\n\n default:\n }\n }; // Use _stream.getChannelsOfType instead of _webRTCStream.getAudioTracks\n // because its available as soon as Subscriber is instantiated.\n\n\n const _hasAudioTracks = () => _stream.getChannelsOfType('audio').length > 0; // / Chrome\n\n\n _muteDisplayMode = {\n get() {\n // Use buttonDisplayMode if we have an audio track, even if its muted\n return _hasAudioTracks() ? _subscriber.getStyle('buttonDisplayMode') : 'off';\n },\n\n update() {\n const mode = _muteDisplayMode.get();\n\n if (_chrome) {\n _chrome.muteButton.setDisplayMode(mode);\n\n _chrome.backingBar.setMuteMode(mode);\n }\n }\n\n };\n\n const updateChromeForStyleChange = (key, value\n /* , oldValue */\n ) => {\n if (!_chrome) {\n return;\n }\n\n switch (key) {\n case 'nameDisplayMode':\n _chrome.name.setDisplayMode(value);\n\n _chrome.backingBar.setNameMode(value);\n\n break;\n\n case 'videoUnsupportedDisplayMode':\n _chrome.videoUnsupportedIndicator.setDisplayMode(value);\n\n break;\n\n case 'videoDisabledDisplayMode':\n _chrome.videoDisabledIndicator.setDisplayMode(value);\n\n break;\n\n case 'audioBlockedDisplayMode':\n _chrome.audioBlockedIndicator.setDisplayMode(value);\n\n break;\n\n case 'showArchiveStatus':\n _chrome.archive.setShowArchiveStatus(value);\n\n break;\n\n case 'buttonDisplayMode':\n _muteDisplayMode.update();\n\n break;\n\n case 'audioLevelDisplayMode':\n _chrome.audioLevel.setDisplayMode(value);\n\n break;\n\n case 'bugDisplayMode':\n // bugDisplayMode can't be updated but is used by some partners\n break;\n\n case 'backgroundImageURI':\n _widgetView.setBackgroundImageURI(value);\n\n break;\n\n default:\n }\n };\n\n const _createChrome = () => {\n const widgets = {\n backingBar: new BackingBar({\n nameMode: !_properties.name ? 'off' : this.getStyle('nameDisplayMode'),\n muteMode: _muteDisplayMode.get()\n }),\n name: new NamePanel({\n name: _properties.name,\n mode: this.getStyle('nameDisplayMode')\n }),\n muteButton: new MuteButton({\n muted: _audioVolume === 0,\n mode: _muteDisplayMode.get()\n })\n };\n\n if (_audioLevelCapable) {\n const audioLevelTransformer = new AudioLevelTransformer();\n _audioLevelMeter = new AudioLevelMeter({\n mode: _subscriber.getStyle('audioLevelDisplayMode')\n });\n const updateAudioLevel = new RafRunner(() => {\n _audioLevelMeter.setValue(audioLevelTransformer.transform(this.loudness));\n });\n\n _audioLevelMeter.watchVisibilityChanged(visible => {\n if (visible) {\n updateAudioLevel.start();\n } else {\n updateAudioLevel.stop();\n }\n });\n\n _audioLevelMeter.setDisplayMode(this.getStyle('audioLevelDisplayMode'));\n\n _audioLevelMeter.audioOnly(false);\n\n widgets.audioLevel = _audioLevelMeter;\n }\n\n widgets.videoDisabledIndicator = new VideoDisabledIndicator({\n mode: this.getStyle('videoDisabledDisplayMode')\n });\n widgets.audioBlockedIndicator = new AudioBlockedIndicator({\n mode: this.getStyle('audioBlockedDisplayMode')\n });\n widgets.videoUnsupportedIndicator = new VideoUnsupportedIndicator({\n mode: this.getStyle('videoUnsupportedDisplayMode')\n });\n\n if (_widgetView && _widgetView.domElement) {\n _chrome = new Chrome({\n parent: _widgetView.domElement\n }).set(widgets).on({\n muted() {\n _subscriber.setAudioVolume(0);\n },\n\n unmuted() {\n _subscriber.setAudioVolume(_latestPositiveVolume);\n }\n\n }, this); // Hide the chrome until we explicitly show it\n\n _chrome.hideWhileLoading();\n }\n };\n\n const _showError = code => {\n let errorMessage;\n let helpMessage; // Display the error message inside the container, assuming it's\n // been created by now.\n\n if (_widgetView) {\n if (code === ExceptionCodes.STREAM_LIMIT_EXCEEDED) {\n errorMessage = 'The stream was unable to connect.';\n helpMessage = 'The limit for the number of media streams has been reached.';\n } else {\n errorMessage = 'The stream was unable to connect due to a network error.';\n\n if (_hasLoadedAtLeastOnce) {\n helpMessage = 'Ensure you have a stable connection and try again.';\n } else {\n helpMessage = 'Make sure you have a stable network connection and that it isn\\'t ' + 'blocked by a firewall.';\n }\n }\n\n _widgetView.addError(errorMessage, helpMessage);\n }\n };\n\n StylableComponent(this, {\n nameDisplayMode: 'auto',\n buttonDisplayMode: 'auto',\n audioLevelDisplayMode: 'auto',\n videoDisabledDisplayMode: 'auto',\n audioBlockedDisplayMode: 'auto',\n backgroundImageURI: null,\n showArchiveStatus: true,\n showMicButton: true\n }, _properties.showControls, payload => {\n logAnalyticsEvent('SetStyle', 'Subscriber', payload, null, 0.1);\n });\n\n function setAudioOnly(audioOnly) {\n getAllPeerConnections().forEach( /*#__PURE__*/function () {\n var _ref14 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(peerConnection) {\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return peerConnection;\n\n case 2:\n _context7.sent.subscribeToVideo(!audioOnly);\n\n case 3:\n case \"end\":\n return _context7.stop();\n }\n }, _callee7);\n }));\n\n return function (_x8) {\n return _ref14.apply(this, arguments);\n };\n }());\n\n if (_widgetView) {\n _widgetView.audioOnly(audioOnly);\n\n _widgetView.showPoster(audioOnly);\n }\n\n if (_audioLevelMeter) {\n _audioLevelMeter.audioOnly(audioOnly);\n }\n } // logs an analytics event for getStats on the first call\n\n\n const notifyGetStatsCalled = once(() => {\n logAnalyticsEvent('GetStats', 'Called');\n });\n const notifyGetRtcStatsReportCalled = once(() => {\n logAnalyticsEvent('GetRtcStatsReport', 'Called');\n });\n\n const createAudioLevelSampler = peerConnection => {\n if (_audioLevelBehaviour) {\n _audioLevelBehaviour.destroy();\n\n _audioLevelBehaviour = undefined;\n } // No need to create an audio level sampler, if there's no audio tracks\n\n\n if (!_webRTCStream.getAudioTracks().length) {\n return;\n } // prefer the audioLevelSampler (more efficient and better responsiveness)\n\n\n _audioLevelSampler = audioLevelSampler(peerConnection);\n\n if (_audioLevelSampler) {\n _audioLevelBehaviour = audioLevelBehaviour({\n subscriber: this,\n audioLevelSampler: _audioLevelSampler\n });\n } else if (!Object.prototype.hasOwnProperty.call(this, 'loudness')) {\n Object.defineProperty(this, 'loudness', {\n value: undefined,\n configurable: true,\n writable: false\n });\n logging.error('No suitable audio level samplers found, audio level visualisation will not work');\n }\n };\n\n const setPeerConnectionEvents = (peerConnection, sourceStreamId) => {\n if (_peerConnectionEvents[sourceStreamId]) {\n _peerConnectionEvents[sourceStreamId].removeAll();\n\n const onDisconnected = () => {\n peerConnection.off('error', onDisconnected);\n peerConnection.off('disconnected', onDisconnected);\n };\n\n peerConnection.on('error', onDisconnected);\n peerConnection.on('disconnected', onDisconnected);\n }\n\n const peerConnectionEvents = eventHelper(peerConnection);\n peerConnectionEvents.once('connected', () => onPeerConnected(peerConnection));\n peerConnectionEvents.on('disconnected', onPeerDisconnected);\n peerConnectionEvents.on('error', onPeerConnectionFailure);\n peerConnectionEvents.on('remoteStreamAdded', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n var _args8 = arguments;\n return _regenerator.default.wrap(function _callee8$(_context8) {\n while (1) switch (_context8.prev = _context8.next) {\n case 0:\n _context8.prev = 0;\n _context8.next = 3;\n return onRemoteStreamAdded(..._args8);\n\n case 3:\n _context8.next = 8;\n break;\n\n case 5:\n _context8.prev = 5;\n _context8.t0 = _context8[\"catch\"](0);\n logging.error(_context8.t0);\n\n case 8:\n case \"end\":\n return _context8.stop();\n }\n }, _callee8, null, [[0, 5]]);\n })));\n peerConnectionEvents.on('audioLevelStuckWarning', onAudioLevelStuckWarning);\n peerConnectionEvents.on('remoteStreamRemoved', onRemoteStreamRemoved);\n peerConnectionEvents.on('signalingStateStable', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {\n var video;\n return _regenerator.default.wrap(function _callee9$(_context9) {\n while (1) switch (_context9.prev = _context9.next) {\n case 0:\n _subscriber.trigger('signalingStateStable');\n\n video = _widgetView && _widgetView.video();\n\n if (video && _webRTCStream) {\n if (_audioLevelSampler && 'webRTCStream' in _audioLevelSampler && _webRTCStream.getAudioTracks().length > 0) {\n _audioLevelSampler.webRTCStream(_webRTCStream);\n }\n }\n\n case 3:\n case \"end\":\n return _context9.stop();\n }\n }, _callee9);\n })));\n peerConnectionEvents.on('iceConnectionStateChange', state => onIceConnectionStateChange(state, peerConnection));\n peerConnectionEvents.on('iceRestartSuccess', onIceRestartSuccess);\n peerConnectionEvents.on('iceRestartFailure', onIceRestartFailure);\n peerConnectionEvents.on('remoteVideoSupported', onRemoteVideoSupported);\n peerConnectionEvents.once('remoteStreamAdded', createAudioLevelSampler.bind(this, peerConnection));\n _peerConnectionEvents[sourceStreamId] = _peerConnectionEvents;\n };\n\n this._destroy = (_ref17) => {\n let _ref17$reason = _ref17.reason,\n reason = _ref17$reason === void 0 ? 'Unknown' : _ref17$reason,\n quiet = _ref17.quiet,\n _ref17$noStateTransit = _ref17.noStateTransition,\n noStateTransition = _ref17$noStateTransit === void 0 ? false : _ref17$noStateTransit;\n\n if (_state.isDestroyed()) {\n return this;\n }\n\n _state.set('Destroyed');\n\n if (_frameRateWatcher) {\n _frameRateWatcher.destroy();\n\n _frameRateWatcher = null;\n }\n\n _preDisconnectStats = {\n sessionId: _session.sessionId,\n connectionId: _session && _session.isConnected() ? _session.connection.connectionId : null,\n partnerId: _session && _session.sessionInfo ? _session.sessionInfo.partnerId : null,\n streamId: _stream && !_stream.destroyed ? _stream.id : null\n };\n\n this._disconnect({\n reason,\n noStateTransition\n });\n\n if (_chrome) {\n _chrome.destroy();\n\n _chrome = null;\n }\n\n if (_widgetView) {\n _widgetView.destroy();\n\n _widgetView.off();\n\n _widgetView = null;\n this.element = null;\n }\n\n if (_stream && !_stream.destroyed) {\n logAnalyticsEvent('unsubscribe', null, {\n streamId: _stream.id\n });\n }\n\n _stream.off(_streamEventHandlers, this);\n\n this.id = null;\n _domId = null;\n this.stream = null;\n _stream = null;\n this.streamId = null;\n this.session = null;\n _session = null;\n _properties = null;\n\n if (quiet !== true) {\n this.dispatchEvent(new Events.DestroyedEvent(eventNames.SUBSCRIBER_DESTROYED, this, reason));\n this.off();\n }\n\n return this;\n };\n\n this.destroy = function (reason, quiet) {\n if (reason === void 0) {\n reason = 'Unsubscribe';\n }\n\n logging.warn('Subscriber#destroy is deprecated and will be removed. Please use Session#unsubscribe instead');\n\n _this._destroy({\n reason,\n quiet\n });\n };\n\n this._disconnect = function (_temp4) {\n let _ref18 = _temp4 === void 0 ? {} : _temp4,\n _ref18$reason = _ref18.reason,\n reason = _ref18$reason === void 0 ? 'Unknown' : _ref18$reason,\n noStateTransition = _ref18.noStateTransition;\n\n // known reasons:\n // forceUnpublished (publisher stream was destroyed by forceUnpublish)\n // clientDisconnected (publisher unpublished)\n // Unsubscribe (when calling session.unsubscribe)\n // Unknown (when reason is not determined)\n if (!noStateTransition && !connectivityState.is('disconnected')) {\n const error = reason === 'Unsubscribe' ? undefined : otError(errors.STREAM_DESTROYED, new Error('Stream was destroyed before it could be subscribed to'));\n connectivityState.disconnect({\n payload: {\n reason\n },\n error\n });\n }\n\n if (!_state.isDestroyed() && !_state.isFailed()) {\n // If we are already in the destroyed state then disconnect\n // has been called after (or from within) destroy.\n _state.set('NotSubscribing');\n }\n\n if (_widgetView) {\n _widgetView.destroyVideo();\n } // @todo check peer connection destroy triggers disconnect, and then gets logged...\n\n\n getAllPeerConnections().forEach( /*#__PURE__*/function () {\n var _ref19 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(peerConnection) {\n return _regenerator.default.wrap(function _callee10$(_context10) {\n while (1) switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return peerConnection;\n\n case 2:\n _context10.sent.destroy();\n\n case 3:\n case \"end\":\n return _context10.stop();\n }\n }, _callee10);\n }));\n\n return function (_x9) {\n return _ref19.apply(this, arguments);\n };\n }());\n Object.keys(peerConnectionsAsync).forEach(key => {\n delete peerConnectionsAsync[key];\n }); // Unsubscribe us from the stream, if it hasn't already been destroyed\n\n if (socket.is('connected') && _stream && !_stream.destroyed) {\n // Notify the server components\n // @todo I assume we don't want to send this message, but is there anything\n // we need to do in p2p->mantis for when a peer conn is destroyed?\n socket.subscriberDestroy(_stream.id, _this.widgetId);\n }\n };\n\n this.disconnect = () => {\n logging.warn('Subscriber#disconnect is deprecated and will be removed. Please use Session#unsubscribe instead');\n\n this._disconnect({\n reason: 'Unsubscribe'\n });\n };\n\n const processOffer = /*#__PURE__*/function () {\n var _ref21 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(_ref20) {\n var peerId, fromConnectionId, sourceStreamId, uri, send, log, logQoS;\n return _regenerator.default.wrap(function _callee11$(_context11) {\n while (1) switch (_context11.prev = _context11.next) {\n case 0:\n peerId = _ref20.peerId, fromConnectionId = _ref20.fromConnectionId, sourceStreamId = _ref20.sourceStreamId;\n uri = constructSubscriberUri({\n apiKey: _session.apiKey,\n sessionId: _session.sessionId,\n streamId: _stream.id,\n subscriberId: _this.widgetId\n });\n send = createSendMethod({\n socket: _this.session._.getSocket(),\n uri,\n content: {\n peerId,\n sourceStreamId\n }\n });\n\n log = function log(action, variation, payload, options, throttle) {\n if (options === void 0) {\n options = {};\n }\n\n const transformedOptions = (0, _extends2.default)({\n peerId,\n sourceStreamId: getMediaModeBySourceStreamId(sourceStreamId)\n }, options);\n return logAnalyticsEvent(action, variation, payload, transformedOptions, throttle);\n };\n\n logQoS = qos => {\n // We only log data from the active peer connection\n if (_activeSourceStreamId !== sourceStreamId) {\n return;\n }\n\n recordQOS((0, _extends2.default)({}, qos, {\n peerId,\n remoteConnectionId: fromConnectionId,\n sourceStreamId\n }));\n };\n\n return _context11.abrupt(\"return\", _this._setupPeerConnection({\n send,\n log,\n logQoS,\n sourceStreamId\n }));\n\n case 6:\n case \"end\":\n return _context11.stop();\n }\n }, _callee11);\n }));\n\n return function processOffer(_x10) {\n return _ref21.apply(this, arguments);\n };\n }();\n\n this.processMessage = /*#__PURE__*/function () {\n var _ref22 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12(type, fromConnectionId, message) {\n var peerId, sourceStreamId, peerConnection;\n return _regenerator.default.wrap(function _callee12$(_context12) {\n while (1) switch (_context12.prev = _context12.next) {\n case 0:\n logging.debug(`OT.Subscriber.processMessage: Received ${type} message from ${fromConnectionId}`);\n logging.debug(message);\n peerId = get(message, 'content.peerId');\n sourceStreamId = get(message, 'content.sourceStreamId');\n _context12.next = 6;\n return getPeerConnectionBySourceStreamId(sourceStreamId);\n\n case 6:\n peerConnection = _context12.sent;\n\n if (!peerConnection) {\n _context12.next = 11;\n break;\n }\n\n peerConnection.processMessage(type, message);\n _context12.next = 16;\n break;\n\n case 11:\n if (!(type === 'offer')) {\n _context12.next = 16;\n break;\n }\n\n _context12.next = 14;\n return processOffer({\n peerId,\n fromConnectionId,\n sourceStreamId\n });\n\n case 14:\n peerConnection = _context12.sent;\n\n _this.session._.addSubscriberToPeerConnectionsQueue(peerConnection, message);\n\n case 16:\n case \"end\":\n return _context12.stop();\n }\n }, _callee12);\n }));\n\n return function (_x11, _x12, _x13) {\n return _ref22.apply(this, arguments);\n };\n }();\n\n this.disableVideo = active => {\n if (!active) {\n logging.warn('Due to high packet loss and low bandwidth, video has been disabled');\n } else if (_lastSubscribeToVideoReason === 'auto') {\n logging.info('Video has been re-enabled');\n } else {\n logging.info('Video was not re-enabled because it was manually disabled');\n return;\n }\n\n this.subscribeToVideo(active, 'auto');\n const payload = active ? {\n videoEnabled: true\n } : {\n videoDisabled: true\n };\n logAnalyticsEvent('updateQuality', 'video', payload);\n };\n /**\n * Returns the base-64-encoded string of PNG data representing the Subscriber video.\n *\n * You can use the string as the value for a data URL scheme passed to the src parameter of\n * an image file, as in the following:
\n *\n *\n * var imgData = subscriber.getImgData();\n *\n * var img = document.createElement(\"img\");\n * img.setAttribute(\"src\", \"data:image/png;base64,\" + imgData);\n * var imgWin = window.open(\"about:blank\", \"Screenshot\");\n * imgWin.document.write(\"<body></body>\");\n * imgWin.document.body.appendChild(img);\n *\n * @method #getImgData\n * @memberOf Subscriber\n * @return {String} The base-64 encoded string. Returns an empty string if there is no video.\n */\n\n\n this.getImgData = () => {\n if (!this.isSubscribing()) {\n logging.error('OT.Subscriber.getImgData: Cannot getImgData before the Subscriber ' + 'is subscribing.');\n return null;\n }\n\n const video = _widgetView && _widgetView.video();\n\n return video ? video.imgData() : null;\n };\n /**\n * Returns the details on the subscriber stream quality, including the following:\n *\n *
testNetwork
property to true
in the options you\n * pass into the Session.subscribe() method. For an example,\n * see the opentok-network-test\n * project on GitHub.\n * \n * You may also use these statistics to have a Subscriber subscribe to audio-only if the audio\n * packet loss reaches a certain threshold. If you choose to do this, you should set the\n * audioFallbackEnabled
setting to false
when you initialize Publisher\n * objects for the session. This prevents the OpenTok Media Router from using its own audio-only\n * toggling implementation. (See the documentation for the\n * OT.initPublisher() method.)\n *\n * @param {Function} completionHandler A function that takes the following\n * parameters:\n *\n *
error
(Error) — The error property is\n * set if the client is not connected. Upon completion of a successful call to the method,\n * this property is undefined.stats
(Object) — An object with the following properties:\n * \n *
audio.bytesReceived
(Number) — The total number of audio bytes\n * received by the subscriberaudio.packetsLost
(Number) — Total audio packets that did not reach\n * the subscriberaudio.packetsReceived
(Number) — The total number of audio packets\n * received by the subscribertimestamp
(Number) — The timestamp, in milliseconds since the Unix\n * epoch, for when these stats were gatheredvideo.bytesReceived
(Number) — The total video bytes received by\n * the subscribervideo.packetsLost
(Number) — The total number of video packets that\n * did not reach the subscribervideo.packetsReceived
(Number) — The total number of video packets\n * received by the subscribervideo.frameRate
(Number) — The current video frame rate\n * The Promise will be rejected in the following conditions:\n *
You can set the initial volume when you call the Session.subscribe()
\n * method. Pass a audioVolume
property of the properties
parameter\n * of the method.
mySubscriber.setAudioVolume(50).setStyle(newStyle);\n *\n * @see getAudioVolume()\n * @see Session.subscribe()\n * @method #setAudioVolume\n * @memberOf Subscriber\n */\n\n\n this.setAudioVolume = requestedVolume => {\n const volume = normalizeAudioVolume(requestedVolume);\n logAnalyticsEvent('setAudioVolume', 'Attempt', {\n audioVolume: volume\n });\n\n if (isNaN(volume)) {\n logging.error('OT.Subscriber.setAudioVolume: value should be an integer between 0 and 100');\n logAnalyticsEvent('setAudioVolume', 'Failure', {\n message: 'value should be an integer between 0 and 100'\n });\n return this;\n }\n\n if (volume !== requestedVolume) {\n logging.warn('OT.Subscriber.setAudioVolume: value should be an integer between 0 and 100');\n }\n\n if (volume === _audioVolume) {\n setAudioVolume(_audioVolume);\n logAnalyticsEvent('setAudioVolume', 'Success', {\n audioVolume: _audioVolume,\n message: 'Requested volume is same as already set audioVolume'\n });\n return this;\n }\n\n if (_audioVolume > 0) {\n _latestPositiveVolume = _audioVolume;\n }\n\n _audioVolume = volume;\n setAudioVolume(_audioVolume);\n\n if (_audioVolume > 0 && !_isSubscribingToAudio) {\n // in Firefox (and others) we don't stop subscribing to audio when muted, however if we are 'unmuting' and in\n // the subscribeToAudio: false state we should subscribe to audio again\n // subscribeToAudio is going to call us with _latestPositiveVolume so we'll update it here\n _latestPositiveVolume = _audioVolume;\n this.subscribeToAudio(true);\n }\n\n logAnalyticsEvent('setAudioVolume', 'Success', {\n audioVolume: _audioVolume\n });\n return this;\n };\n /**\n * Returns the audio volume, between 0 and 100, of the Subscriber.\n *\n *
Generally you use this method in conjunction with the setAudioVolume()
\n * method.
value
is true
; stops\n * subscribing to audio (if it is currently being subscribed to) when the value
\n * is false
.\n * \n * Note: This method only affects the local playback of audio. It has no impact on the\n * audio for other connections subscribing to the same stream. If the Publisher is not\n * publishing audio, enabling the Subscriber audio will have no practical effect.\n *
\n *\n * @param {Boolean} value Whether to start subscribing to audio (true
) or not\n * (false
).\n *\n * @return {Subscriber} The Subscriber object. This lets you chain method calls, as in the\n * following:\n *\n * mySubscriber.subscribeToAudio(true).subscribeToVideo(false);\n *\n * @see subscribeToVideo()\n * @see Session.subscribe()\n * @see StreamPropertyChangedEvent\n *\n * @method #subscribeToAudio\n * @memberOf Subscriber\n */\n\n\n this.subscribeToAudio = pValue => {\n const value = castToBoolean(pValue, true);\n getAllPeerConnections().forEach( /*#__PURE__*/function () {\n var _ref23 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13(peerConnection) {\n return _regenerator.default.wrap(function _callee13$(_context13) {\n while (1) switch (_context13.prev = _context13.next) {\n case 0:\n _context13.next = 2;\n return peerConnection;\n\n case 2:\n _context13.sent.subscribeToAudio(value);\n\n case 3:\n case \"end\":\n return _context13.stop();\n }\n }, _callee13);\n }));\n\n return function (_x14) {\n return _ref23.apply(this, arguments);\n };\n }());\n\n if (_stream && getAllPeerConnections().length !== 0) {\n _stream.setChannelActiveState('audio', value);\n }\n\n const changed = _isSubscribingToAudio !== value;\n _isSubscribingToAudio = value;\n\n if (changed) {\n this.setAudioVolume(value ? _latestPositiveVolume : 0);\n }\n\n logAnalyticsEvent('subscribeToAudio', 'Event', {\n subscribeToAudio: value\n });\n return this;\n };\n\n const reasonMap = {\n auto: 'quality',\n publishVideo: 'publishVideo',\n subscribeToVideo: 'subscribeToVideo'\n };\n\n if (env.name === 'Safari') {\n const onVisibilityChange = () => {\n if (!document.hidden && _properties.subscribeToVideo) {\n logging.debug('document visibility restored in Safari - resubscribing to video');\n this.subscribeToVideo(false);\n this.subscribeToVideo(true);\n }\n };\n\n document.addEventListener('visibilitychange', onVisibilityChange);\n this.once('destroyed', () => {\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n }\n /**\n * Toggles video on and off. Starts subscribing to video (if it is available and\n * currently not being subscribed to) when the
value
is true
;\n * stops subscribing to video (if it is currently being subscribed to) when the\n * value
is false
.\n * \n * Note: This method only affects the local playback of video. It has no impact on\n * the video for other connections subscribing to the same stream. If the Publisher is not\n * publishing video, enabling the Subscriber video will have no practical effect.\n *
\n *\n * @param {Boolean} value Whether to start subscribing to video (true
) or not\n * (false
).\n *\n * @return {Subscriber} The Subscriber object. This lets you chain method calls, as in the\n * following:\n *\n * mySubscriber.subscribeToVideo(true).subscribeToAudio(false);\n *\n * @see subscribeToAudio()\n * @see Session.subscribe()\n * @see StreamPropertyChangedEvent\n *\n * @method #subscribeToVideo\n * @memberOf Subscriber\n */\n\n\n this.subscribeToVideo = (pValue, reason) => {\n const value = castToBoolean(pValue, true);\n logAnalyticsEvent('subscribeToVideo', 'Attempt', {\n subscribeToVideo: value,\n reason\n });\n setAudioOnly(!value || !_stream.hasVideo || !(_webRTCStream && _webRTCStream.getVideoTracks().length > 0));\n\n if (_stream.hasVideo && _webRTCStream && _webRTCStream.getVideoTracks().length === 0) {\n if (value) {\n logging.info('Subscriber is audio-only due to incompatibility, can\\'t subscribeToVideo.');\n }\n\n _properties.subscribeToVideo = false;\n logAnalyticsEvent('subscribeToVideo', 'Failure', {\n message: 'No video tracks available'\n });\n return this;\n }\n\n if (_chrome && _chrome.videoDisabledIndicator) {\n // If this is an auto disableVideo then we want to show the indicator, otherwise hide it again\n _chrome.videoDisabledIndicator.disableVideo(reason === 'auto' && !value);\n }\n\n if (getAllPeerConnections().length > 0) {\n if (_session && _stream && (value !== _properties.subscribeToVideo || reason !== _lastSubscribeToVideoReason)) {\n _stream.setChannelActiveState('video', value, reason);\n }\n }\n\n _properties.subscribeToVideo = value;\n _lastSubscribeToVideoReason = reason;\n _videoEnabled = value;\n logAnalyticsEvent('subscribeToVideo', 'Success', {\n subscribeToVideo: value,\n reason\n });\n\n if (reason !== 'loading') {\n this.dispatchEvent(new Events.VideoEnabledChangedEvent(value ? 'videoEnabled' : 'videoDisabled', {\n reason: reasonMap[reason] || 'subscribeToVideo'\n }));\n\n if (value === 'videoDisabled' && reason === 'auto') {\n _congestionLevel = 2;\n }\n }\n\n return this;\n };\n /**\n * Sets the preferred resolution of the subscriber's video.\n *
\n * Lowering the preferred resolution\n * lowers video quality on the subscribing client, but it also reduces network and CPU usage.\n * You may want to use a lower resolution based on the dimensions of subscriber's video on\n * the web page. You may want to use a resolution rate for a subscriber to a stream that is less\n * important (and smaller) than other streams.\n *
\n *
\n * This method only applies when subscribing to a stream that uses the\n * \n * scalable video feature. Scalable video is available:\n *
\n * In streams that do not use scalable video, calling this method has no effect.\n *
\n * Note: The resolution for scalable video streams automatically adjusts for each\n * subscriber, based on network conditions and CPU usage, even if you do not call this method.\n * Call this method if you want to set a maximum resolution for this subscriber.\n *
\n * In streams that do not use scalable video, calling this method has no effect.\n *
\n * Not every frame rate is available to a subscriber. When you set the preferred resolution for\n * the subscriber, OpenTok.js picks the best resolution available that matches your setting.\n * The resolutions available are based on the value of the Subscriber object's\n * stream.resolution
property, which represents the maximum resolution available for\n * the stream. The actual resolutions available depend, dynamically, on network and CPU resources\n * available to the publisher and subscriber.\n *
\n * You can set the initial preferred resolution used by setting the\n * preferredResolution
property of the options
object you pass into the\n * Session.subscribe()
method.\n *\n * @param {Object} resolution Set this to an object with two properties: width
and\n * height
(both numbers), such as {width: 320, height: 240}
. Set this to\n * null
to remove the preferred resolution, and the client will use the highest\n * resolution available.\n *\n * @see Subscriber.setPreferredFrameRate()\n * @see Session.subscribe()\n *\n * @method #setPreferredResolution\n * @memberOf Subscriber\n */\n\n\n this.setPreferredResolution = preferredResolution => {\n if (_state.isDestroyed() || getAllPeerConnections().length === 0 && !_state.current === 'Connecting') {\n logging.warn('Cannot set the max Resolution when not subscribing to a publisher');\n return;\n }\n\n _properties.preferredResolution = preferredResolution;\n\n if (_session.sessionInfo.p2pEnabled) {\n logging.warn('OT.Subscriber.setPreferredResolution will not work in a P2P Session');\n return;\n } // We can only setPreferredResolution once the remote stream has been added. Otherwise we will save\n // the preferred resolution, and then it will be requested once the stream has been added.\n\n\n if (!_state.isStreamAdded()) {\n return;\n }\n\n const curMaxResolution = _stream.getPreferredResolution();\n\n const isUnchanged = curMaxResolution && preferredResolution && curMaxResolution.width === preferredResolution.width && curMaxResolution.height === preferredResolution.height || !curMaxResolution && !preferredResolution;\n\n if (isUnchanged) {\n return;\n }\n\n _stream.setPreferredResolution(preferredResolution);\n };\n /**\n * Sets the preferred frame rate of the subscriber's video.\n *
\n * Lowering the preferred frame rate\n * lowers video quality on the subscribing client, but it also reduces network and CPU usage.\n * You may want to use a lower frame rate for a subscriber to a stream that is less important\n * than other streams.\n *
\n *
\n * This method only applies when subscribing to a stream that uses the\n * \n * scalable video feature. Scalable video is available:\n *
\n * In streams that do not use scalable video, calling this method has no effect.\n *
\n * Note: The frame rate for scalable video streams automatically adjusts for each\n * subscriber, based on network conditions and CPU usage, even if you do not call this method.\n * Call this method if you want to set a maximum frame rate for this subscriber.\n *
\n * Not every frame rate is available to a subscriber. When you set the preferred frame rate for\n * the subscriber, OpenTok.js picks the best frame rate available that matches your setting.\n * The frame rates available are based on the value of the Subscriber object's\n * stream.frameRate
property, which represents the maximum value available for the\n * stream. The actual frame rates available depend, dynamically, on network and CPU resources\n * available to the publisher and subscriber.\n *
\n * You can set the initial preferred frame rate used by setting the preferredFrameRate
\n * property of the options
object you pass into the Session.subscribe()
\n * method.\n *\n * @param {Number} frameRate Set this to the desired frame rate (in frames per second). Set this to\n * null
to remove the preferred frame rate, and the client will use the highest\n * frame rate available.\n *\n * @see Subscriber.setPreferredResolution()\n * @see Session.subscribe()\n *\n * @method #setPreferredFrameRate\n * @memberOf Subscriber\n */\n\n\n this.setPreferredFrameRate = preferredFrameRate => {\n if (_state.isDestroyed() || getAllPeerConnections().length === 0 && !_state.current === 'Connecting') {\n logging.warn('Cannot set the max frameRate when not subscribing to a publisher');\n return;\n }\n\n _properties.preferredFrameRate = preferredFrameRate;\n\n if (_session.sessionInfo.p2pEnabled) {\n logging.warn('OT.Subscriber.setPreferredFrameRate will not work in a P2P Session');\n return;\n }\n\n const currentPreferredFrameRate = _stream.getPreferredFrameRate();\n\n const isUnchangedFrameRate = preferredFrameRate && currentPreferredFrameRate && currentPreferredFrameRate === preferredFrameRate || !currentPreferredFrameRate && !preferredFrameRate;\n\n if (isUnchangedFrameRate) {\n return;\n }\n\n _stream.setPreferredFrameRate(preferredFrameRate);\n };\n\n this.isSubscribing = () => _state.isSubscribing();\n\n this.isWebRTC = true;\n\n this.isLoading = () => _widgetView && _widgetView.loading();\n /**\n * Indicates whether the subscriber's audio is blocked because of\n * the browser's audio autoplay policy.\n *\n * @see OT.unblockAudio()\n * @see The audioBlocked\n * and audioUnblocked\n * Subscriber events\n * @see The style.audioBlockedDisplayMode
property of the\n * options
parameter of the\n * Session.subscribe() method\n *\n * @method #isAudioBlocked\n * @memberof Subscriber\n */\n\n\n this.isAudioBlocked = () => Boolean(_widgetView && _widgetView.isAudioBlocked());\n\n this.videoElement = () => {\n const video = _widgetView && _widgetView.video();\n\n return video ? video.domElement() : null;\n };\n /**\n * Returns the width, in pixels, of the Subscriber video.\n *\n * @method #videoWidth\n * @memberOf Subscriber\n * @return {Number} the width, in pixels, of the Subscriber video.\n */\n\n\n this.videoWidth = () => {\n const video = _widgetView && _widgetView.video();\n\n return video ? video.videoWidth() : undefined;\n };\n /**\n * Returns the height, in pixels, of the Subscriber video.\n *\n * @method #videoHeight\n * @memberOf Subscriber\n * @return {Number} the width, in pixels, of the Subscriber video.\n */\n\n\n this.videoHeight = () => {\n const video = _widgetView && _widgetView.video();\n\n return video ? video.videoHeight() : undefined;\n };\n\n this._subscribeToSelf = /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14() {\n var publisher;\n return _regenerator.default.wrap(function _callee14$(_context14) {\n while (1) switch (_context14.prev = _context14.next) {\n case 0:\n publisher = _session.getPublisherForStream(_stream);\n\n if (publisher && publisher._.webRtcStream()) {\n _context14.next = 5;\n break;\n }\n\n connectivityState.fail({\n payload: {\n reason: 'streamNotFound'\n },\n error: otError(errors.STREAM_DESTROYED, new Error('Tried to subscribe to a local publisher, but its stream no longer exists'))\n });\n _context14.next = 14;\n break;\n\n case 5:\n _pcConnected.resolve();\n\n _context14.prev = 6;\n _context14.next = 9;\n return onRemoteStreamAdded(publisher._.webRtcStream());\n\n case 9:\n _context14.next = 14;\n break;\n\n case 11:\n _context14.prev = 11;\n _context14.t0 = _context14[\"catch\"](6);\n logging.error(_context14.t0);\n\n case 14:\n case \"end\":\n return _context14.stop();\n }\n }, _callee14, null, [[6, 11]]);\n }));\n\n this._setupPeerConnection = /*#__PURE__*/function () {\n var _ref26 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15(_ref25) {\n var send, log, logQoS, sourceStreamId;\n return _regenerator.default.wrap(function _callee15$(_context15) {\n while (1) switch (_context15.prev = _context15.next) {\n case 0:\n send = _ref25.send, log = _ref25.log, logQoS = _ref25.logQoS, sourceStreamId = _ref25.sourceStreamId;\n\n if (_properties.testNetwork) {\n _this.setAudioVolume(0);\n }\n\n if (getAllPeerConnections().length === 0) {\n // @todo The subscribers states should be something like:\n // disconnected || connecting || reconnecting || connected || destroyed\n // the state of peer connections belong to the peer connection itself\n _state.set('Connecting');\n }\n\n _activeSourceStreamId = sourceStreamId;\n peerConnectionsAsync[sourceStreamId] = new Promise((resolve, reject) => {\n _session._.getIceConfig().then(iceConfig => {\n if (iceConfig.needRumorIceServersFallback) {\n iceConfig.servers = [...(fallbackIceServers || []), ...(iceConfig.servers || [])];\n }\n\n const props = {\n iceConfig,\n subscriberId: _this.widgetId,\n send,\n logAnalyticsEvent: log,\n p2p: _session.sessionInfo.p2pEnabled,\n sourceStreamId\n };\n\n if (Object.prototype.hasOwnProperty.call(_properties, 'codecFlags')) {\n props.codecFlags = _properties.codecFlags;\n }\n\n const peerConnection = new Subscriber.SubscriberPeerConnection(props);\n peerConnection.once('iceConnected', _pcConnected.resolve);\n peerConnection.once('error', _pcConnected.reject);\n peerConnection.on('qos', logQoS);\n setPeerConnectionEvents(peerConnection, sourceStreamId); // initialize the peer connection AFTER we've added the event listeners\n\n peerConnection.init(err => {\n if (err) {\n reject(err);\n } else {\n resolve(peerConnection);\n }\n });\n });\n });\n return _context15.abrupt(\"return\", peerConnectionsAsync[sourceStreamId]);\n\n case 6:\n case \"end\":\n return _context15.stop();\n }\n }, _callee15);\n }));\n\n return function (_x15) {\n return _ref26.apply(this, arguments);\n };\n }();\n /**\n * Restricts the frame rate of the Subscriber's video stream, when you pass in\n * true
. When you pass in false
, the frame rate of the video stream\n * is not restricted.\n *
\n * When the frame rate is restricted, the Subscriber video frame will update once or less per\n * second.\n *
\n * This feature is only available in sessions that use the OpenTok Media Router (sessions with\n * the media mode\n * set to routed), not in sessions with the media mode set to relayed. In relayed sessions,\n * calling this method has no effect.\n *
\n * Restricting the subscriber frame rate has the following benefits:\n *
\n * Reducing a subscriber's frame rate has no effect on the frame rate of the video in\n * other clients.\n *\n * @param {Boolean} value Whether to restrict the Subscriber's video frame rate\n * (true
) or not (false
).\n *\n * @return {Subscriber} The Subscriber object. This lets you chain method calls, as in the\n * following:\n *\n *
mySubscriber.restrictFrameRate(false).subscribeToAudio(true);\n *\n * @method #restrictFrameRate\n * @memberOf Subscriber\n */\n\n\n this.restrictFrameRate = val => {\n logging.debug(`OT.Subscriber.restrictFrameRate(${val})`);\n logAnalyticsEvent('restrictFrameRate', val.toString(), {\n streamId: _stream.id\n });\n\n if (_session.sessionInfo.p2pEnabled) {\n logging.warn('OT.Subscriber.restrictFrameRate: Cannot restrictFrameRate on a P2P session');\n }\n\n if (typeof val !== 'boolean') {\n logging.error(`OT.Subscriber.restrictFrameRate: expected a boolean value got a ${typeof val}`);\n } else {\n _frameRateRestricted = val;\n\n _stream.setRestrictFrameRate(val);\n }\n\n return this;\n };\n\n this.on('styleValueChanged', updateChromeForStyleChange, this);\n this._ = {\n getDataChannel(label, options, completion) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {\n return _regenerator.default.wrap(function _callee16$(_context16) {\n while (1) switch (_context16.prev = _context16.next) {\n case 0:\n if (getCurrentPeerConnection()) {\n _context16.next = 3;\n break;\n }\n\n completion(new OTHelpers.Error('Cannot create a DataChannel before there is a publisher connection.'));\n return _context16.abrupt(\"return\");\n\n case 3:\n _context16.next = 5;\n return getCurrentPeerConnection();\n\n case 5:\n _context16.sent.getDataChannel(label, options, completion);\n\n case 6:\n case \"end\":\n return _context16.stop();\n }\n }, _callee16);\n }))();\n },\n\n iceRestart(reason) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17() {\n var peerConnection;\n return _regenerator.default.wrap(function _callee17$(_context17) {\n while (1) switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return getPeerConnectionBySourceStreamId('MANTIS');\n\n case 2:\n peerConnection = _context17.sent;\n\n if (!peerConnection) {\n logging.debug('Subscriber: Skipping ice restart, we have no peer connection');\n } else {\n logResubscribe('Attempt', {\n reason\n });\n logging.debug('Subscriber: iceRestart attempt');\n peerConnection.iceRestart();\n }\n\n case 4:\n case \"end\":\n return _context17.stop();\n }\n }, _callee17);\n }))();\n },\n\n unblockAudio: () => _widgetView && _widgetView.unblockAudio(),\n webRtcStream: () => _webRTCStream,\n privateEvents: new EventEmitter(),\n\n startRoutedToRelayedTransition() {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {\n var mantisPeerConnection;\n return _regenerator.default.wrap(function _callee18$(_context18) {\n while (1) switch (_context18.prev = _context18.next) {\n case 0:\n if (!(_properties.testNetwork || isLocalStream(_stream, _session))) {\n _context18.next = 2;\n break;\n }\n\n return _context18.abrupt(\"return\");\n\n case 2:\n logRoutedToRelayedTransition('Attempt');\n _context18.next = 5;\n return getPeerConnectionBySourceStreamId('MANTIS');\n\n case 5:\n mantisPeerConnection = _context18.sent;\n\n if (mantisPeerConnection == null ? void 0 : mantisPeerConnection.iceConnectionStateIsConnected()) {\n _context18.next = 9;\n break;\n }\n\n // This is for avoiding corner cases, e.g. two subscribers that join concurrently.\n // The first one will connect first to MANTIS and then receive a stream created\n // signal from RUMOR for the new P2P stream, so it will transition to Relayed.\n // The second one - that joined a few ms later - will also receive the stream created signal\n // from RUMOR, but is not connected to MANTIS yet, so this second one shouldn't attempt\n // to transition to Relayed, because 1) this means there's another subscriber that did\n // the transition, and 2) our model is MANTIS first, so we shouldn't transition to\n // Relayed in this case.\n logRoutedToRelayedTransition('Failure', {\n reason: 'Attempted to transition to Relayed without being connected in Routed mode.'\n });\n return _context18.abrupt(\"return\");\n\n case 9:\n socket.subscriberCreate(_stream.id, _widgetId, // subscriberId\n channelsToSubscribeTo, 'P2P', (err, message) => {\n if (err && !connectivityState.is('disconnected')) {\n logRoutedToRelayedTransition('Failure', err);\n }\n\n logging.debug('message received when created a subscriber with source', message);\n });\n\n case 10:\n case \"end\":\n return _context18.stop();\n }\n }, _callee18);\n }))();\n },\n\n startRelayedToRoutedTransition() {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {\n var webRTCStream, peerConnection;\n return _regenerator.default.wrap(function _callee19$(_context19) {\n while (1) switch (_context19.prev = _context19.next) {\n case 0:\n if (!(_properties.testNetwork || isLocalStream(_stream, _session))) {\n _context19.next = 2;\n break;\n }\n\n return _context19.abrupt(\"return\");\n\n case 2:\n logRelayedToRoutedTransition('Attempt');\n webRTCStream = webRTCStreams.MANTIS;\n _webRTCStream = webRTCStream; // bind mantis stream\n\n _context19.next = 7;\n return bindWebRTCStream(webRTCStream);\n\n case 7:\n // Keep the loading spinner hidden so that the transition looks transparent.\n _widgetView.loading(false); // remove and close p2p connection\n\n\n removePeerConnectionBySourceStreamId('P2P');\n _activeSourceStreamId = 'MANTIS'; // remove webRTCStream\n\n removeWebRTCStream('P2P');\n _context19.next = 13;\n return getCurrentPeerConnection();\n\n case 13:\n peerConnection = _context19.sent;\n // Create audioLevelSampler for the current peer connection\n createAudioLevelSampler(peerConnection);\n logRelayedToRoutedTransition('Success');\n\n case 16:\n case \"end\":\n return _context19.stop();\n }\n }, _callee19);\n }))();\n },\n\n setSinkId(deviceId) {\n const video = _widgetView && _widgetView.video();\n\n if (video) {\n return _widgetView.setSinkId(deviceId);\n }\n\n logging.debug('Called setAudioOutputDevice on a subscriber without a video element');\n return undefined;\n },\n\n pauseAndPlayVideoElement() {\n if (_widgetView) {\n _widgetView.pauseAndPlayVideoElement();\n }\n }\n\n };\n _state = new SubscribingState(stateChangeFailed);\n logging.debug(`OT.Subscriber: subscribe to ${_stream.id}`);\n\n _state.set('Init');\n\n if (!_stream) {\n // @todo error\n logging.error('OT.Subscriber: No stream parameter.');\n return false;\n }\n\n _streamEventHandlers = {\n updated: streamUpdated\n };\n\n _stream.on(_streamEventHandlers, this);\n\n _properties.name = _properties.name || _stream.name;\n _properties.classNames = 'OT_root OT_subscriber';\n\n if (_properties.style) {\n this.setStyle(_properties.style, null, true);\n }\n\n _latestPositiveVolume = DEFAULT_AUDIO_VOLUME;\n _properties.subscribeToVideo = castToBoolean(_properties.subscribeToVideo, true);\n _properties.subscribeToAudio = castToBoolean(_properties.subscribeToAudio, true);\n this.subscribeToAudio(_properties.subscribeToAudio);\n this.setAudioVolume(determineAudioVolume(_properties));\n _widgetView = new Subscriber.WidgetView(targetElement, (0, _extends2.default)({}, _properties, {\n widgetType: 'subscriber'\n }));\n\n _widgetView.on('error', onVideoError);\n\n _widgetView.on('audioBlocked', () => this.trigger('audioBlocked'));\n\n _widgetView.on('audioUnblocked', () => this.trigger('audioUnblocked'));\n\n this.id = _widgetView.domId();\n _domId = _widgetView.domId();\n this.element = _widgetView.domElement;\n\n _widgetView.on('videoElementCreated', element => {\n const event = new Events.VideoElementCreatedEvent(element);\n const self = this;\n\n if (!_loaded) {\n this.once('loaded', () => {\n self.dispatchEvent(event);\n });\n } else {\n this.dispatchEvent(event);\n }\n });\n\n if (this.element) {\n // Only create the chrome if there is an element to insert it in\n // for insertDefautlUI:false we don't create the chrome\n _createChrome.call(this);\n }\n\n const audio = _stream.getChannelsOfType('audio');\n\n const video = _stream.getChannelsOfType('video');\n\n const channelsToSubscribeTo = audio.map(channel => ({\n id: channel.id,\n type: channel.type,\n active: _properties.subscribeToAudio\n })).concat(video.map(channel => {\n const props = {\n id: channel.id,\n type: channel.type,\n active: _properties.subscribeToVideo,\n restrictFrameRate: _properties.restrictFrameRate !== undefined ? _properties.restrictFrameRate : false\n };\n\n if (_properties.preferredFrameRate !== undefined) {\n props.preferredFrameRate = parseFloat(_properties.preferredFrameRate);\n }\n\n if (_properties.preferredHeight !== undefined) {\n props.preferredHeight = parseInt(_properties.preferredHeight, 10);\n }\n\n if (_properties.preferredWidth !== undefined) {\n props.preferredWidth = parseInt(_properties.preferredWidth, 10);\n }\n\n return props;\n }));\n const shouldSubscribeToSelf = !_properties.testNetwork && isLocalStream(_stream, _session);\n connectivityState.beginConnect();\n\n if (shouldSubscribeToSelf) {\n // bypass rumor etc and just subscribe locally\n this._subscribeToSelf();\n\n return this;\n }\n\n socket.subscriberCreate(_stream.id, _widgetId, // subscriberId\n channelsToSubscribeTo, null, (err, message) => {\n // when the publisher is destroyed before we subscribe, chances are we have been told about\n // before we get the subscriberCreate error, so this can be ignored.\n if (err && !connectivityState.is('disconnected')) {\n onSubscriberCreateError(err);\n }\n\n fallbackIceServers = parseIceServers(message);\n });\n /**\n * Dispatched when the subscriber's audio is blocked because of the\n * browser's autoplay policy.\n *\n * @see OT.unblockAudio()\n * @see Subscriber.isAudioBlocked()\n * @see The audioUnblocked event\n * @see The
style.audioBlockedDisplayMode
property of the\n * options
parameter of the\n * Session.subscribe() method)\n *\n * @name audioBlocked\n * @event\n * @memberof Subscriber\n */\n\n /**\n * Dispatched when the subscriber's audio is unblocked after\n * being paused because of the browser's autoplay policy.\n * \n * Subscriber audio is unblocked when any of the following occurs:\n *
click
event (if you have disabled the default\n * audio playback icon)\n * OT.initPublisher()
).\n * style.audioBlockedDisplayMode
property of the\n * options
parameter of the\n * Session#subscribe() method)\n *\n * @name audioUnblocked\n * @event\n * @memberof Subscriber\n */\n\n /**\n * Dispatched periodically to indicate the subscriber's audio level. The event is dispatched\n * up to 60 times per second, depending on the browser. The audioLevel
property\n * of the event is audio level, from 0 to 1.0. See {@link AudioLevelUpdatedEvent} for more\n * information.\n * \n * The following example adjusts the value of a meter element that shows volume of the\n * subscriber. Note that the audio level is adjusted logarithmically and a moving average\n * is applied:\n *
\n * var movingAvg = null;\n * subscriber.on('audioLevelUpdated', function(event) {\n * if (movingAvg === null || movingAvg <= event.audioLevel) {\n * movingAvg = event.audioLevel;\n * } else {\n * movingAvg = 0.7 * movingAvg + 0.3 * event.audioLevel;\n * }\n *\n * // 1.5 scaling to map the -30 - 0 dBm range to [0,1]\n * var logLevel = (Math.log(movingAvg) / Math.LN10) / 1.5 + 1;\n * logLevel = Math.min(Math.max(logLevel, 0), 1);\n * document.getElementById('subscriberMeter').value = logLevel;\n * });\n *\n *
This example shows the algorithm used by the default audio level indicator displayed\n * in an audio-only Subscriber.\n *\n * @name audioLevelUpdated\n * @event\n * @memberof Subscriber\n * @see AudioLevelUpdatedEvent\n */\n\n /**\n * Dispatched when the video for the subscriber is disabled.\n *
\n * The reason
property defines the reason the video was disabled. This can be set to\n * one of the following values:\n *
\n *\n *
\"codecNotSupported\"
— The client's browser does not support the\n * video codec used by the stream. For example, in Safari if you connect to a\n * routed session\n * in a non-Safari OpenTok\n * project, and you try to subscribe to a stream that includes video, the Subscriber\n * will dispatch a videoDisabled
event with the reason
property\n * set to \"codecNotSupported\"
. (In routed sessions in a non-Safari project,\n * streams use the VP8 video codec, which is not supported in Safari.) The subscriber\n * element will also display a \"Video format not supported\" message. (See\n * OT.getSupportedCodecs().)\"publishVideo\"
— The publisher stopped publishing video by calling\n * publishVideo(false)
.\"quality\"
— The OpenTok Media Router stopped sending video\n * to the subscriber based on stream quality changes. This feature of the OpenTok Media\n * Router has a subscriber drop the video stream when connectivity degrades. (The subscriber\n * continues to receive the audio stream, if there is one.)\n * \n * Before sending this event, when the Subscriber's stream quality deteriorates to a level\n * that is low enough that the video stream is at risk of being disabled, the Subscriber\n * dispatches a videoDisableWarning
event.\n *
\n * If connectivity improves to support video again, the Subscriber object dispatches\n * a videoEnabled
event, and the Subscriber resumes receiving video.\n *
\n * By default, the Subscriber displays a video disabled indicator when a\n * videoDisabled
event with this reason is dispatched and removes the indicator\n * when the videoEnabled
event with this reason is dispatched. You can control\n * the display of this icon by calling the setStyle()
method of the Subscriber,\n * setting the videoDisabledDisplayMode
property(or you can set the style when\n * calling the Session.subscribe()
method, setting the style
property\n * of the properties
parameter).\n *
\n * This feature is only available in sessions that use the OpenTok Media Router (sessions with\n * the media mode\n * set to routed), not in sessions with the media mode set to relayed.\n *
\n * You can disable this audio-only fallback feature, by setting the\n * audioFallbackEnabled
property to false
in the options you pass\n * into the OT.initPublisher()
method on the publishing client. (See\n * OT.initPublisher().)\n *
\"subscribeToVideo\"
— The subscriber started or stopped subscribing to\n * video, by calling subscribeToVideo(false)
.\n * videoDisabled
event.\n * \n * By default, the Subscriber displays a video disabled warning indicator when this event\n * is dispatched (and the video is disabled). You can control the display of this icon by\n * calling the setStyle()
method and setting the\n * videoDisabledDisplayMode
property (or you can set the style when calling\n * the Session.subscribe()
method and setting the style
property\n * of the properties
parameter).\n *
\n * This feature is only available in sessions that use the OpenTok Media Router (sessions with\n * the media mode\n * set to routed), not in sessions with the media mode set to relayed.\n *\n * @see Event\n * @see videoDisabled event\n * @see videoDisableWarningLifted event\n * @name videoDisableWarning\n * @event\n * @memberof Subscriber\n */\n\n /**\n * Dispatched when the Subscriber's video element is created. Add a listener for this event when\n * you set the insertDefaultUI
option to false
in the call to the\n * Session.subscribe() method. The element
\n * property of the event object is a reference to the Subscriber's video
element\n * (or in Internet Explorer the object
element containing the video). Add it to\n * the HTML DOM to display the video. When you set the insertDefaultUI
option to\n * false
, the video
(or object
) element is not automatically\n * inserted into the DOM.\n *
\n * Add a listener for this event only if you have set the insertDefaultUI
option to\n * false
. If you have not set insertDefaultUI
option to\n * false
, do not move the video
(or object
) element in\n * in the HTML DOM. Doing so causes the Subscriber object to be destroyed.\n *\n * @name videoElementCreated\n * @event\n * @memberof Subscriber\n * @see VideoElementCreatedEvent\n */\n\n /**\n * Dispatched when the OpenTok Media Router determines that the stream quality has improved\n * to the point at which the video being disabled is not an immediate risk. This event is\n * dispatched after the Subscriber object dispatches a videoDisableWarning
event.\n *
\n * This feature is only available in sessions that use the OpenTok Media Router (sessions with\n * the media mode\n * set to routed), not in sessions with the media mode set to relayed.\n *\n * @see Event\n * @see videoDisableWarning event\n * @see videoDisabled event\n * @name videoDisableWarningLifted\n * @event\n * @memberof Subscriber\n */\n\n /**\n * Dispatched when the OpenTok Media Router resumes sending video to the subscriber\n * after video was previously disabled.\n *
\n * The reason
property defines the reason the video was enabled. This can be set to\n * one of the following values:\n *
\n *\n *
\"codecChanged\"
— The subscriber video was enabled after\n * a codec change from an incompatible codec.\"publishVideo\"
— The publisher started publishing video by calling\n * publishVideo(true)
.\"quality\"
— The OpenTok Media Router resumed sending video\n * to the subscriber based on stream quality changes. This feature of the OpenTok Media\n * Router has a subscriber drop the video stream when connectivity degrades and then resume\n * the video stream if the stream quality improves.\n * \n * This feature is only available in sessions that use the OpenTok Media Router (sessions with\n * the media mode\n * set to routed), not in sessions with the media mode set to relayed.\n *
\"subscribeToVideo\"
— The subscriber started or stopped subscribing to\n * video, by calling subscribeToVideo(false)
.\n * \n * To prevent video from resuming, in the videoEnabled
event listener,\n * call subscribeToVideo(false)
on the Subscriber object.\n *\n * @see VideoEnabledChangedEvent\n * @see videoDisabled event\n * @name videoEnabled\n * @event\n * @memberof Subscriber\n */\n\n /**\n * Sent when the subscriber's stream has been interrupted.\n *
\n * In response to this event, you may want to provide a user interface notification, to let the\n * user know that the audio-video stream is temporarily disconnected and that the app is trying\n * to reconnect to it.\n *
\n * If the client reconnects to the stream, the Subscriber object dispatches a\n * connected
event. Otherwise, if the client cannot reconnect to the stream,\n * the Subscriber object dispatches a destroyed
event.\n *\n * @name disconnected\n * @event\n * @memberof Subscriber\n * @see connected event\n * @see Event\n */\n\n /**\n * Sent when the subscriber's stream has resumed, after the Subscriber dispatches a\n * disconnected
event.\n *\n * @name connected\n * @event\n * @memberof Subscriber\n * @see disconnected event\n * @see Event\n */\n\n /**\n * Dispatched when the Subscriber element is removed from the HTML DOM. When this event is\n * dispatched, you may choose to adjust or remove HTML DOM elements related to the subscriber.\n *
\n * To prevent the Subscriber from being removed from the DOM when the stream is destroyed,\n * listen for the streamDestroyed event\n * dispatched by the Session object. The streamDestroyed
event dispatched by the\n * Session object is cancelable, and calling the preventDefault()
method of the\n * event object prevents Subscribers of the stream from being removed from the HTML DOM.\n *\n * @see Event\n * @name destroyed\n * @event\n * @memberof Subscriber\n */\n\n /**\n * Dispatched when the video dimensions of the video change. This can occur when the\n * stream.videoType
property is set to \"screen\"
(for a screen-sharing\n * video stream), when the user resizes the window being captured. It can also occur if the video\n * is being published by a mobile device and the user rotates the device (causing the camera\n * orientation to change). This event object has a newValue
property and an\n * oldValue
property, representing the new and old dimensions of the video.\n * Each of these has a height
property and a width
property,\n * representing the height and width, in pixels.\n * @name videoDimensionsChanged\n * @event\n * @memberof Subscriber\n * @see VideoDimensionsChangedEvent\n */\n\n return this;\n };\n\n Subscriber.hasAudioOutputLevelStatCapability = hasAudioOutputLevelStatCapability;\n Subscriber.WidgetView = WidgetView;\n Subscriber.SubscriberPeerConnection = SubscriberPeerConnection;\n return Subscriber;\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 301 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst env = __webpack_require__(2); // @todo can we test for this instead?\n\n\nmodule.exports = () => ['Chrome', 'Opera', 'Safari'].indexOf(env.name) > -1;\n\n/***/ }),\n/* 302 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst _require = __webpack_require__(2),\n name = _require.name; // @todo can we test for these?\n\n\nmodule.exports = () => ['Firefox', 'Safari', 'Edge', 'Chrome', 'Opera'].indexOf(name) > -1;\n\n/***/ }),\n/* 303 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst generateSimpleStateMachine = __webpack_require__(160)(); // Models a Subscriber's subscribing State\n//\n// Valid States:\n// NotSubscribing (the initial state\n// Init (basic setup of DOM\n// Connecting (Failure Cases -> No Route, Bad Offer, Bad Answer\n// BindingRemoteStream (Failure Cases -> Anything to do with the media being\n// (invalid, the media never plays\n// Subscribing (this is 'onLoad'\n// Failed (terminal state, with a reason that maps to one of the\n// (failure cases above\n// Destroyed (The subscriber has been cleaned up, terminal state\n//\n//\n// Valid Transitions:\n// NotSubscribing ->\n// Init\n//\n// Init ->\n// Connecting\n// | BindingRemoteStream (if we are subscribing to ourselves and we alreay\n// (have a stream\n// | NotSubscribing (destroy()\n//\n// Connecting ->\n// BindingRemoteStream\n// | NotSubscribing\n// | Failed\n// | NotSubscribing (destroy()\n//\n// BindingRemoteStream ->\n// Subscribing\n// | Failed\n// | NotSubscribing (destroy()\n//\n// Subscribing ->\n// NotSubscribing (unsubscribe\n// | Failed (probably a peer connection failure after we began\n// (subscribing\n//\n// Failed ->\n// Destroyed\n//\n// Destroyed -> (terminal state)\n//\n//\n// @example\n// var state = new SubscribingState(function(change) {\n// console.log(change.message);\n// });\n//\n// state.set('Init');\n// state.current; -> 'Init'\n//\n// state.set('Subscribing'); -> triggers stateChangeFailed and logs out the error message\n//\n//\n\n\nconst initialState = 'NotSubscribing';\nconst validStates = ['NotSubscribing', 'Init', 'Connecting', 'BindingRemoteStream', 'Subscribing', 'Failed', 'Destroyed'];\nconst validTransitions = {\n NotSubscribing: ['NotSubscribing', 'Init', 'Destroyed'],\n Init: ['NotSubscribing', 'Connecting', 'BindingRemoteStream', 'Destroyed'],\n Connecting: ['NotSubscribing', 'BindingRemoteStream', 'Failed', 'Destroyed'],\n BindingRemoteStream: ['NotSubscribing', 'Subscribing', 'Failed', 'Destroyed', 'BindingRemoteStream'],\n Subscribing: ['NotSubscribing', 'Failed', 'Destroyed', 'BindingRemoteStream'],\n Failed: ['Destroyed'],\n Destroyed: []\n};\nconst SubscribingState = generateSimpleStateMachine(initialState, validStates, validTransitions);\n\nSubscribingState.prototype.isDestroyed = function () {\n return this.current === 'Destroyed';\n};\n\nSubscribingState.prototype.isFailed = function () {\n return this.current === 'Failed';\n};\n\nSubscribingState.prototype.isSubscribing = function () {\n return this.current === 'Subscribing';\n};\n\nSubscribingState.prototype.isAttemptingToSubscribe = function () {\n return ['Init', 'Connecting', 'BindingRemoteStream'].indexOf(this.current) !== -1;\n};\n\nSubscribingState.prototype.isStreamAdded = function () {\n return this.current === 'BindingRemoteStream' || this.isSubscribing();\n};\n\nmodule.exports = SubscribingState;\n\n/***/ }),\n/* 304 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(25));\n\nmodule.exports = (_ref) => {\n let socket = _ref.socket,\n uri = _ref.uri,\n defaultContent = _ref.content;\n return (method, content) => socket.send({\n uri,\n method,\n content: (0, _extends2.default)({}, defaultContent, content)\n });\n};\n\n/***/ }),\n/* 305 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse {}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 5);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function(target, sources) {\n var n, source, key;\n for(n = 1 ; n < arguments.length ; n++) {\n source = arguments[n];\n for(key in source) {\n if (source.hasOwnProperty(key))\n target[key] = source[key];\n }\n }\n return target;\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-------------------------------------------------------------------------------------------------\n\nvar mixin = __webpack_require__(0);\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = {\n\n build: function(target, config) {\n var n, max, plugin, plugins = config.plugins;\n for(n = 0, max = plugins.length ; n < max ; n++) {\n plugin = plugins[n];\n if (plugin.methods)\n mixin(target, plugin.methods);\n if (plugin.properties)\n Object.defineProperties(target, plugin.properties);\n }\n },\n\n hook: function(fsm, name, additional) {\n var n, max, method, plugin,\n plugins = fsm.config.plugins,\n args = [fsm.context];\n\n if (additional)\n args = args.concat(additional)\n\n for(n = 0, max = plugins.length ; n < max ; n++) {\n plugin = plugins[n]\n method = plugins[n][name]\n if (method)\n method.apply(plugin, args);\n }\n }\n\n}\n\n//-------------------------------------------------------------------------------------------------\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-------------------------------------------------------------------------------------------------\n\nfunction camelize(label) {\n\n if (label.length === 0)\n return label;\n\n var n, result, word, words = label.split(/[_-]/);\n\n // single word with first character already lowercase, return untouched\n if ((words.length === 1) && (words[0][0].toLowerCase() === words[0][0]))\n return label;\n\n result = words[0].toLowerCase();\n for(n = 1 ; n < words.length ; n++) {\n result = result + words[n].charAt(0).toUpperCase() + words[n].substring(1).toLowerCase();\n }\n\n return result;\n}\n\n//-------------------------------------------------------------------------------------------------\n\ncamelize.prepended = function(prepend, label) {\n label = camelize(label);\n return prepend + label[0].toUpperCase() + label.substring(1);\n}\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = camelize;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-------------------------------------------------------------------------------------------------\n\nvar mixin = __webpack_require__(0),\n camelize = __webpack_require__(2);\n\n//-------------------------------------------------------------------------------------------------\n\nfunction Config(options, StateMachine) {\n\n options = options || {};\n\n this.options = options; // preserving original options can be useful (e.g visualize plugin)\n this.defaults = StateMachine.defaults;\n this.states = [];\n this.transitions = [];\n this.map = {};\n this.lifecycle = this.configureLifecycle();\n this.init = this.configureInitTransition(options.init);\n this.data = this.configureData(options.data);\n this.methods = this.configureMethods(options.methods);\n\n this.map[this.defaults.wildcard] = {};\n\n this.configureTransitions(options.transitions || []);\n\n this.plugins = this.configurePlugins(options.plugins, StateMachine.plugin);\n\n}\n\n//-------------------------------------------------------------------------------------------------\n\nmixin(Config.prototype, {\n\n addState: function(name) {\n if (!this.map[name]) {\n this.states.push(name);\n this.addStateLifecycleNames(name);\n this.map[name] = {};\n }\n },\n\n addStateLifecycleNames: function(name) {\n this.lifecycle.onEnter[name] = camelize.prepended('onEnter', name);\n this.lifecycle.onLeave[name] = camelize.prepended('onLeave', name);\n this.lifecycle.on[name] = camelize.prepended('on', name);\n },\n\n addTransition: function(name) {\n if (this.transitions.indexOf(name) < 0) {\n this.transitions.push(name);\n this.addTransitionLifecycleNames(name);\n }\n },\n\n addTransitionLifecycleNames: function(name) {\n this.lifecycle.onBefore[name] = camelize.prepended('onBefore', name);\n this.lifecycle.onAfter[name] = camelize.prepended('onAfter', name);\n this.lifecycle.on[name] = camelize.prepended('on', name);\n },\n\n mapTransition: function(transition) {\n var name = transition.name,\n from = transition.from,\n to = transition.to;\n this.addState(from);\n if (typeof to !== 'function')\n this.addState(to);\n this.addTransition(name);\n this.map[from][name] = transition;\n return transition;\n },\n\n configureLifecycle: function() {\n return {\n onBefore: { transition: 'onBeforeTransition' },\n onAfter: { transition: 'onAfterTransition' },\n onEnter: { state: 'onEnterState' },\n onLeave: { state: 'onLeaveState' },\n on: { transition: 'onTransition' }\n };\n },\n\n configureInitTransition: function(init) {\n if (typeof init === 'string') {\n return this.mapTransition(mixin({}, this.defaults.init, { to: init, active: true }));\n }\n else if (typeof init === 'object') {\n return this.mapTransition(mixin({}, this.defaults.init, init, { active: true }));\n }\n else {\n this.addState(this.defaults.init.from);\n return this.defaults.init;\n }\n },\n\n configureData: function(data) {\n if (typeof data === 'function')\n return data;\n else if (typeof data === 'object')\n return function() { return data; }\n else\n return function() { return {}; }\n },\n\n configureMethods: function(methods) {\n return methods || {};\n },\n\n configurePlugins: function(plugins, builtin) {\n plugins = plugins || [];\n var n, max, plugin;\n for(n = 0, max = plugins.length ; n < max ; n++) {\n plugin = plugins[n];\n if (typeof plugin === 'function')\n plugins[n] = plugin = plugin()\n if (plugin.configure)\n plugin.configure(this);\n }\n return plugins\n },\n\n configureTransitions: function(transitions) {\n var i, n, transition, from, to, wildcard = this.defaults.wildcard;\n for(n = 0 ; n < transitions.length ; n++) {\n transition = transitions[n];\n from = Array.isArray(transition.from) ? transition.from : [transition.from || wildcard]\n to = transition.to || wildcard;\n for(i = 0 ; i < from.length ; i++) {\n this.mapTransition({ name: transition.name, from: from[i], to: to });\n }\n }\n },\n\n transitionFor: function(state, transition) {\n var wildcard = this.defaults.wildcard;\n return this.map[state][transition] ||\n this.map[wildcard][transition];\n },\n\n transitionsFor: function(state) {\n var wildcard = this.defaults.wildcard;\n return Object.keys(this.map[state]).concat(Object.keys(this.map[wildcard]));\n },\n\n allStates: function() {\n return this.states;\n },\n\n allTransitions: function() {\n return this.transitions;\n }\n\n});\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = Config;\n\n//-------------------------------------------------------------------------------------------------\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar mixin = __webpack_require__(0),\n Exception = __webpack_require__(6),\n plugin = __webpack_require__(1),\n UNOBSERVED = [ null, [] ];\n\n//-------------------------------------------------------------------------------------------------\n\nfunction JSM(context, config) {\n this.context = context;\n this.config = config;\n this.state = config.init.from;\n this.observers = [context];\n}\n\n//-------------------------------------------------------------------------------------------------\n\nmixin(JSM.prototype, {\n\n init: function(args) {\n mixin(this.context, this.config.data.apply(this.context, args));\n plugin.hook(this, 'init');\n if (this.config.init.active)\n return this.fire(this.config.init.name, []);\n },\n\n is: function(state) {\n return Array.isArray(state) ? (state.indexOf(this.state) >= 0) : (this.state === state);\n },\n\n isPending: function() {\n return this.pending;\n },\n\n can: function(transition) {\n return !this.isPending() && !!this.seek(transition);\n },\n\n cannot: function(transition) {\n return !this.can(transition);\n },\n\n allStates: function() {\n return this.config.allStates();\n },\n\n allTransitions: function() {\n return this.config.allTransitions();\n },\n\n transitions: function() {\n return this.config.transitionsFor(this.state);\n },\n\n seek: function(transition, args) {\n var wildcard = this.config.defaults.wildcard,\n entry = this.config.transitionFor(this.state, transition),\n to = entry && entry.to;\n if (typeof to === 'function')\n return to.apply(this.context, args);\n else if (to === wildcard)\n return this.state\n else\n return to\n },\n\n fire: function(transition, args) {\n return this.transit(transition, this.state, this.seek(transition, args), args);\n },\n\n transit: function(transition, from, to, args) {\n\n var lifecycle = this.config.lifecycle,\n changed = this.config.options.observeUnchangedState || (from !== to);\n\n if (!to)\n return this.context.onInvalidTransition(transition, from, to);\n\n if (this.isPending())\n return this.context.onPendingTransition(transition, from, to);\n\n this.config.addState(to); // might need to add this state if it's unknown (e.g. conditional transition or goto)\n\n this.beginTransit();\n\n args.unshift({ // this context will be passed to each lifecycle event observer\n transition: transition,\n from: from,\n to: to,\n fsm: this.context\n });\n\n return this.observeEvents([\n this.observersForEvent(lifecycle.onBefore.transition),\n this.observersForEvent(lifecycle.onBefore[transition]),\n changed ? this.observersForEvent(lifecycle.onLeave.state) : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.onLeave[from]) : UNOBSERVED,\n this.observersForEvent(lifecycle.on.transition),\n changed ? [ 'doTransit', [ this ] ] : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.onEnter.state) : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.onEnter[to]) : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.on[to]) : UNOBSERVED,\n this.observersForEvent(lifecycle.onAfter.transition),\n this.observersForEvent(lifecycle.onAfter[transition]),\n this.observersForEvent(lifecycle.on[transition])\n ], args);\n },\n\n beginTransit: function() { this.pending = true; },\n endTransit: function(result) { this.pending = false; return result; },\n failTransit: function(result) { this.pending = false; throw result; },\n doTransit: function(lifecycle) { this.state = lifecycle.to; },\n\n observe: function(args) {\n if (args.length === 2) {\n var observer = {};\n observer[args[0]] = args[1];\n this.observers.push(observer);\n }\n else {\n this.observers.push(args[0]);\n }\n },\n\n observersForEvent: function(event) { // TODO: this could be cached\n var n = 0, max = this.observers.length, observer, result = [];\n for( ; n < max ; n++) {\n observer = this.observers[n];\n if (observer[event])\n result.push(observer);\n }\n return [ event, result, true ]\n },\n\n observeEvents: function(events, args, previousEvent, previousResult) {\n if (events.length === 0) {\n return this.endTransit(previousResult === undefined ? true : previousResult);\n }\n\n var event = events[0][0],\n observers = events[0][1],\n pluggable = events[0][2];\n\n args[0].event = event;\n if (event && pluggable && event !== previousEvent)\n plugin.hook(this, 'lifecycle', args);\n\n if (observers.length === 0) {\n events.shift();\n return this.observeEvents(events, args, event, previousResult);\n }\n else {\n var observer = observers.shift(),\n result = observer[event].apply(observer, args);\n if (result && typeof result.then === 'function') {\n return result.then(this.observeEvents.bind(this, events, args, event))\n .catch(this.failTransit.bind(this))\n }\n else if (result === false) {\n return this.endTransit(false);\n }\n else {\n return this.observeEvents(events, args, event, result);\n }\n }\n },\n\n onInvalidTransition: function(transition, from, to) {\n throw new Exception(\"transition is invalid in current state\", transition, from, to, this.state);\n },\n\n onPendingTransition: function(transition, from, to) {\n throw new Exception(\"transition is invalid while previous transition is still in progress\", transition, from, to, this.state);\n }\n\n});\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = JSM;\n\n//-------------------------------------------------------------------------------------------------\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-----------------------------------------------------------------------------------------------\n\nvar mixin = __webpack_require__(0),\n camelize = __webpack_require__(2),\n plugin = __webpack_require__(1),\n Config = __webpack_require__(3),\n JSM = __webpack_require__(4);\n\n//-----------------------------------------------------------------------------------------------\n\nvar PublicMethods = {\n is: function(state) { return this._fsm.is(state) },\n can: function(transition) { return this._fsm.can(transition) },\n cannot: function(transition) { return this._fsm.cannot(transition) },\n observe: function() { return this._fsm.observe(arguments) },\n transitions: function() { return this._fsm.transitions() },\n allTransitions: function() { return this._fsm.allTransitions() },\n allStates: function() { return this._fsm.allStates() },\n onInvalidTransition: function(t, from, to) { return this._fsm.onInvalidTransition(t, from, to) },\n onPendingTransition: function(t, from, to) { return this._fsm.onPendingTransition(t, from, to) },\n}\n\nvar PublicProperties = {\n state: {\n configurable: false,\n enumerable: true,\n get: function() {\n return this._fsm.state;\n },\n set: function(state) {\n throw Error('use transitions to change state')\n }\n }\n}\n\n//-----------------------------------------------------------------------------------------------\n\nfunction StateMachine(options) {\n return apply(this || {}, options);\n}\n\nfunction factory() {\n var cstor, options;\n if (typeof arguments[0] === 'function') {\n cstor = arguments[0];\n options = arguments[1] || {};\n }\n else {\n cstor = function() { this._fsm.apply(this, arguments) };\n options = arguments[0] || {};\n }\n var config = new Config(options, StateMachine);\n build(cstor.prototype, config);\n cstor.prototype._fsm.config = config; // convenience access to shared config without needing an instance\n return cstor;\n}\n\n//-------------------------------------------------------------------------------------------------\n\nfunction apply(instance, options) {\n var config = new Config(options, StateMachine);\n build(instance, config);\n instance._fsm();\n return instance;\n}\n\nfunction build(target, config) {\n if ((typeof target !== 'object') || Array.isArray(target))\n throw Error('StateMachine can only be applied to objects');\n plugin.build(target, config);\n Object.defineProperties(target, PublicProperties);\n mixin(target, PublicMethods);\n mixin(target, config.methods);\n config.allTransitions().forEach(function(transition) {\n target[camelize(transition)] = function() {\n return this._fsm.fire(transition, [].slice.call(arguments))\n }\n });\n target._fsm = function() {\n this._fsm = new JSM(this, config);\n this._fsm.init(arguments);\n }\n}\n\n//-----------------------------------------------------------------------------------------------\n\nStateMachine.version = '3.0.1';\nStateMachine.factory = factory;\nStateMachine.apply = apply;\nStateMachine.defaults = {\n wildcard: '*',\n init: {\n name: 'init',\n from: 'none'\n }\n}\n\n//===============================================================================================\n\nmodule.exports = StateMachine;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function(message, transition, from, to, current) {\n this.message = message;\n this.transition = transition;\n this.from = from;\n this.to = to;\n this.current = current;\n}\n\n\n/***/ })\n/******/ ]);\n});\n\n/***/ }),\n/* 306 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst shouldUseStandardGetStats = __webpack_require__(102)(); // getRtcStatsReport is only supported on browsers that support the standard getStats API.\n\n\nmodule.exports = shouldUseStandardGetStats;\n\n/***/ }),\n/* 307 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\n/**\n * promisify - Promisify a node style callback function into a promise\n *\n * Returns a promisifed version of the function, if it's callback is called\n * with a truthy error parameter the promise will be rejected. If the callback\n * is called with one argument, it's value will be resolved. If the callback\n * is called with multiple arguments, the promise will resolve to an array\n * of those arguments.\n *\n * @param {function} fn Function to promisify\n * @returns {function} Promise returning function\n */\nmodule.exports = function promisify(fn) {\n return function promisified() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new Promise((resolve, reject) => {\n fn(...args, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n for (var _len2 = arguments.length, callbackArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n callbackArgs[_key2 - 1] = arguments[_key2];\n }\n\n if (callbackArgs.length === 1) {\n resolve(callbackArgs[0]);\n return;\n }\n\n resolve(callbackArgs);\n });\n });\n };\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 308 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-param-reassign, global-require, max-len, prefer-rest-params */\n\n/* eslint-disable no-use-before-define */\nconst isFunction = __webpack_require__(15);\n\nconst isObject = __webpack_require__(9);\n\nconst isNullOrFalse = __webpack_require__(682);\n\nconst setVideoContentHintIfCanvas = __webpack_require__(683);\n\nmodule.exports = function initPublisherFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const Errors = deps.Errors || __webpack_require__(4);\n\n const ExceptionCodes = deps.ExceptionCodes || __webpack_require__(8);\n\n const logging = deps.logging || __webpack_require__(1)('publisherInit');\n\n const otError = deps.otError || __webpack_require__(11)();\n\n const OTHelpers = deps.OTHelpers || __webpack_require__(5);\n\n const Publisher = deps.Publisher || __webpack_require__(168)();\n\n const sessionObjects = deps.sessionObjects || __webpack_require__(20);\n /**\n *
\n * Initializes and returns a Publisher object. You can then pass this Publisher\n * object to Session.publish()
to publish a stream to a session.\n *
\n * Note: If you intend to reuse a Publisher object created using\n * OT.initPublisher()
to publish to different sessions sequentially,\n * call either Session.disconnect()
or Session.unpublish()
.\n * Do not call both. Then call the preventDefault()
method of the\n * streamDestroyed
or sessionDisconnected
event object to prevent the\n * Publisher object from being removed from the page.\n *
id
attribute of the\n * existing DOM element used to determine the location of the Publisher video in the HTML DOM. See\n * the insertMode
property of the properties
parameter. If you do not\n * specify a targetElement
, the application appends a new DOM element to the HTML\n * body
.\n *\n * \n * The application throws an error if an element with an ID set to the\n * targetElement
value does not exist in the HTML DOM.\n *
\n * The following are recommended settings:\n *
\n * The default value is 40,000.\n *
\n *\n * Currently, this setting is not supported in streams published in Firefox.\n *
\n *true
) or not (false
). The audio-fallback\n * feature is available in sessions that use the OpenTok Media Router. With the audio-fallback\n * feature enabled (the default), when the server determines that a stream's quality has degraded\n * significantly for a specific subscriber, it disables the video in that subscriber in order to\n * preserve audio quality. For streams that use a camera as a video source, the default setting is\n * true
(the audio-fallback feature is enabled). The default setting is\n * false
(the audio-fallback feature is disabled) for screen-sharing streams, which\n * have the videoSource
property set to \"application\"
,\n * \"screen\"
, or \"window\"
in the OT.initPublisher()
\n * options. For more information, see the Subscriber\n * videoDisabled event and\n * the OpenTok Media\n * Router and media modes.\n * OT.initPublisher()
fails with an\n * error (error code 1500, \"Unable to Publish\") passed to the completion handler function.\n * \n * If you set this property to null
or false
, the browser does not\n * request access to the microphone, and no audio is published.\n *
\n * You can also set this property to an audio\n * \n * MediaStreamTrack object. This lets you use the object as the audio source for\n * the published stream. For example, you can get an array of audio MediaStreamTrack objects\n * from the audioTracks
property of an HTMLMediaElement object. Or you can call\n * the getLocalStreams()
or getRemoteStreams()
method of an\n * RTCPeerConnection object to get an array of MediaStream objects, and then call the\n * getAudioTracks()
method of one of the MediaStream objects to get an audio\n * MediaStreamTrack object.\n *
false
when publishing high-quality audio (by setting the\n * audioBitrate
property of the OT.initPublisher()
options). The\n * default value is true
. This setting is ignored if you set disableAudioProcessing
\n * to false
(which disables echo cancellation, automatic gain control, and noise suppression for\n * the published stream).\n * true
when publishing high-quality audio (by setting the\n * audioBitrate
property of the OT.initPublisher()
options). The\n * default value is false
.\n * false
when publishing high-quality audio (by setting the\n * audioBitrate
property of the OT.initPublisher()
options). The\n * default value is true
. This setting is ignored if you set disableAudioProcessing
\n * to false
(which disables echo cancellation, automatic gain control, and noise suppression for\n * the published stream).\n * false
.\n * \n * Note: Some browsers (such as Chome 73+) do not support\n * echo cancellation for stereo audio (see this\n * Chrome issue report).\n *
false
. Setting this to true
can reduce bandwidth usage\n * in streams that have long periods of silence.\n * \n *
\"user\"
— The front-facing camera.\n * \"environment\"
— The back camera.\n * \"left\"
— The camera facing the user but to the left\n * (uncommon).\n * \"right\"
— The camera facing the user but to the right\n * (uncommon).\n * \n *
\"cover\"
— The video is cropped if its dimensions do not match those of\n * the DOM element. This is the default setting for videos publishing a camera feed.\n * \"contain\"
— The video is letterboxed if its dimensions do not match\n * those of the DOM element. This is the default setting for screen-sharing videos.\n * If the publisher specifies a frame rate, the actual frame rate of the video stream\n * is set as the frameRate
property of the Stream object, though the actual frame rate\n * will vary based on changing network and system conditions. If the developer does not specify a\n * frame rate, this property is undefined. Also, if the video source is a video MediaStreamTrack\n * object (see the videoSource
), this value is ignored and the frame rate is\n * defined by the MediaStreamTrack object, which you can get by calling the\n * getConstraints()
method of the MediaStreamTrack object.\n *
\n * For sessions that use the OpenTok Media Router (sessions with\n * the media mode\n * set to routed, lowering the frame rate proportionally reduces the maximum bandwidth the stream\n * uses. However, in sessions with the media mode set to relayed, lowering the frame rate does not\n * reduce the stream's bandwidth.\n *
\n *\n * You can also restrict the frame rate of a Subscriber's video stream. To restrict the frame rate\n * a Subscriber, call the restrictFrameRate()
method of the subscriber, passing in\n * true
.\n * (See Subscriber.restrictFrameRate().)\n *
element
property of the Publisher object) or (if the height is specified as\n * a percentage) its parent DOM element (see\n * Resizing\n * or repositioning a video).\n * true
, the default) or not (false
). The default UI element contains\n * user interface controls, a video loading indicator, and automatic video cropping or\n * letterboxing, in addition to the video. (If you leave insertDefaultUI
set to\n * true
, you can control individual UI settings using the fitMode
,\n * showControls
, and style
options.)\n * \n * If you set this option to false
, OpenTok.js does not insert a default UI element\n * in the HTML DOM, and the element
property of the Publisher object is undefined.\n * Instead, the Publisher object dispatches a\n * videoElementCreated event when\n * the video
element (or in Internet Explorer the object
element\n * containing the video) is created. The element
property of the event object is a\n * reference to the Publisher's video
(or object
) element. Add it to\n * the HTML DOM to display the video.\n *
\n * Set this option to false
if you want to move the Publisher's video
\n * (or object
) element in the HTML DOM.\n *
\n * If you set this to false
, do not set the targetElement
parameter.\n * (This results in an error passed into to the OT.initPublisher()
callback\n * function.) To add the video to the HTML DOM, add an event listener for the\n * videoElementCreated
event, and then add the element
property of\n * the event object into the HTML DOM.\n *
targetElement
parameter. This string can\n * have the following values:\n * \n *
\"replace\"
The Publisher object replaces contents of the\n * targetElement. This is the default.\"after\"
The Publisher object is a new element inserted after\n * the targetElement in the HTML DOM. (Both the Publisher and targetElement have the\n * same parent element.)\"before\"
The Publisher object is a new element inserted before\n * the targetElement in the HTML DOM. (Both the Publisher and targetElement have the same\n * parent element.)\"append\"
The Publisher object is a new element added as a child\n * of the targetElement. If there are other child elements, the Publisher is appended as\n * the last child element of the targetElement.videoSource
property is set to\n * \"application\"
, \"screen\"
, or \"window\"
\n * (when the publisher is screen-sharing). The resolution of the\n * stream will match the captured screen region unless the region is greater than the\n * maxResolution
setting. Set this to an object that has two properties:\n * width
and height
(both numbers). The maximum value for each of\n * the width
and height
properties is 1920, and the minimum value\n * is 10.\n * true
\n * (the video image is mirrored), except for a screen-sharing video (when the\n * videoSource
property is set to \"application\"
,\n * \"screen\"
, or \"window\"
\n * (in which case the default is false
). This property\n * does not affect the display on subscribers' views of the video.\n * false
when publishing high-quality audio (by setting the\n * audioBitrate
property of the OT.initPublisher()
options). The\n * default value is true
. This setting is ignored if you set disableAudioProcessing
\n * to false
(which disables echo cancellation, automatic gain control, and noise suppression for\n * the published stream).\n * true
). This setting applies when you pass\n * the Publisher object in a call to the Session.publish()
method.\n * true
). This setting applies when you pass\n * the Publisher object in a call to the Session.publish()
method.\n * \"widthxheight\"
, where the width and height are represented in\n * pixels. Valid values are \"1280x720\"
, \"640x480\"
, and\n * \"320x240\"
. The published video will only use the desired resolution if the\n * client configuration supports it. Some browsers and clients do not support each of these\n * resolution settings.\n * \n * The requested resolution of a video stream is set as the videoDimensions.width
and\n * videoDimensions.height
properties of the Stream object.\n *
\n * The default resolution for a stream (if you do not specify a resolution) is 640x480 pixels.\n * If the client system cannot support the resolution you requested, the stream will use the\n * next largest setting supported.\n *
\n *\n * The actual resolution used by the Publisher is returned by the videoHeight()
and\n * videoWidth()
methods of the Publisher object. The actual resolution of a\n * Subscriber video stream is returned by the videoHeight()
and\n * videoWidth()
properties of the Subscriber object. These may differ from the values\n * of the resolution
property passed in as the properties
property of the\n * OT.initPublisher()
method, if the browser does not support the requested\n * resolution, this value is ignored. Also, if the video source is a video MediaStreamTrack\n * object (see the videoSource
), this value is ignored and the resolution\n * is defined by the MediaStreamTrack object, which you can get by calling the\n * getConstraints()
method of the MediaStreamTrack object.\n *
true
) for the Publisher. These controls include the name\n * display, the audio level indicator, and the microphone control button. You can turn off all user\n * interface controls by setting this property to false
. You can control the display\n * of individual user interface controls by leaving this property set to true
(the\n * default) and setting individual properties of the style
property.\n * style
object includes\n * the following properties:\n * audioLevelDisplayMode
(String) — How to display the audio level\n * indicator. Possible values are: \"auto\"
(the indicator is displayed when the\n * video is disabled), \"off\"
(the indicator is not displayed), and\n * \"on\"
(the indicator is always displayed).archiveStatusDisplayMode
(String) — How to display the archive status\n * indicator. Possible values are: \"auto\"
(the indicator is displayed when the\n * session is being recorded), \"off\"
(the indicator is not displayed). If you\n * disable the archive status display indicator, you can display your own user interface\n * notifications based on the archiveStarted
and archiveStopped
\n * events dispatched by the Session object.backgroundImageURI
(String) — A URI for an image to display as\n * the background image when a video is not displayed. (A video may not be displayed if\n * you call publishVideo(false)
on the Publisher object). You can pass an http\n * or https URI to a PNG, JPEG, or non-animated GIF file location. You can also use the\n * data
URI scheme (instead of http or https) and pass in base-64-encrypted\n * PNG data, such as that obtained from the\n * Publisher.getImgData() method. (For example,\n * you could set the property to a value returned by calling getImgData()
on\n * a previous Publisher object.) If the URL or the image data is invalid, the property\n * is ignored (the attempt to set the image fails silently).buttonDisplayMode
(String) — How to display the microphone controls\n * Possible values are: \"auto\"
(controls are displayed when the stream is first\n * displayed and when the user mouses over the display), \"off\"
(controls are not\n * displayed), and \"on\"
(controls are always displayed).nameDisplayMode
(String) Whether to display the stream name.\n * Possible values are: \"auto\"
(the name is displayed when the stream is first\n * displayed and when the user mouses over the display), \"off\"
(the name is not\n * displayed), and \"on\"
(the name is always displayed).\n *
\"\"
— No hint is provided (the default).\n * \"motion\"
— The track should be treated as if it contains video\n * where motion is important.\n * \"detail\"
— The track should be treated as if video details\n * are extra important.\n * \"text\"
— The track should be treated as if text details are\n * extra important.\n * \n * You can read more about these options in the\n * W3C Working Draft.\n * You may want to set the video content hint to optimize performance for screen-sharing\n * videos. For example, you can set it to \"text\"
when sharing a screen that contains\n * a lot of text (such as a slideshow).\n *
\n * Chrome 60+, Safari 12.1+, Edge 79+, and Opera 47+ support video content hints.\n *
\n *\n * Also see the Publisher.setVideoContentHint() method.\n *
OT.initPublisher()
fails with an\n * error (error code 1500, \"Unable to Publish\") passed to the completion handler function.\n * \n * If you set this property to null
or false
, the browser does not\n * request access to the camera, and no video is published. In a voice-only call, set this\n * property to null
or false
for each Publisher.\n *
\n * To publish a screen-sharing stream, set this property to \"screen\"
.\n * In older browser versions, you could also pass in \"application\"
or\n * \"window\"
to specify a type of screen-sharing source. However, in current\n * browsers that support screen sharing, passing in any of these values results in\n * the same behavior — the browser displays a dialog box in which the end user\n * selects the screen-sharing source (which can be the entire screen or a specific window).\n * In Electron, screen sharing captures the entire screen, without prompting\n * the user for permission. For screen-sharing streams, the following are\n * default values for other properties: audioFallbackEnabled == false
,\n * maxResolution == {width: 1920, height: 1920}
, mirror == false
,\n * scaleMode == \"fit\"
. Also, the default scaleMode
setting for\n * subscribers to the stream is \"fit\"
.\n *
\n * You can also set this property to a video\n * \n * MediaStreamTrack object. This lets you use the MediaStreamTrack object as the\n * video source for the published stream. For example, you can get a CanvasCaptureMediaStream\n * object by calling the captureStream()
method of a HTMLCanvasElement, and then\n * you can call the getVideoTracks()
method of the CanvasCaptureMediaStream object\n * to get a video MediaStreamTrack object. Or you can get an array of video MediaStreamTrack\n * object from the videoTracks
property of an HTMLMediaElement object. Or you can\n * call the getLocalStreams()
or getRemoteStreams()
method of an\n * RTCPeerConnection object to get an array of MediaStream objects, and then call the\n * getVideoTracks()
method of one of the MediaStream objects to get an array\n * of video MediaStreamTrack objects. Note that by default the publisher uses a microphone\n * as the audio source, so be sure to set the audioSource
option if you want\n * to use a MediaStreamTrack as the audio source or if you do not want to publish an audio\n * track. The default mirror
setting for a Publisher with a MediaStreamTrack video\n * source is false
. You can also call\n * OT.getUserMedia() to get a MediaStream object that uses\n * the microphone and camera as the audio and video sources.\n *
element
property of the Publisher object) or (if the width is specified as\n * a percentage) its parent DOM element (see\n * Resizing\n * or repositioning a video).\n * error
. On success, the error
object is set to null
. On\n * failure, the error
object has two properties: code
(an integer) and\n * message
(a string), which identify the cause of the failure. The method succeeds\n * when the user grants access to the camera and microphone. The method fails if the user denies\n * access to the camera and microphone. The completionHandler
function is called\n * before the Publisher dispatches an accessAllowed
(success) event or an\n * accessDenied
(failure) event.\n * \n * The following code adds a completionHandler
when calling the\n * OT.initPublisher()
method:\n *
\n * var publisher = OT.initPublisher('publisher', null, function (error) {\n * if (error) {\n * console.log(error);\n * } else {\n * console.log(\"Publisher initialized.\");\n * }\n * });\n *\n *\n * @returns {Publisher} The Publisher object.\n * @see Session.publish()\n * @method OT.initPublisher\n * @memberof OT\n */\n\n\n return function initPublisher(targetElement, properties, completionHandler) {\n logging.debug(`OT.initPublisher(${targetElement})`); // To support legacy (apikey, targetElement, properties) users\n // we check to see if targetElement is actually an apikey. Which we ignore.\n\n if (typeof targetElement === 'string' && !document.getElementById(targetElement)) {\n targetElement = properties;\n properties = completionHandler;\n completionHandler = arguments[3];\n }\n\n if (typeof targetElement === 'function') {\n completionHandler = targetElement;\n properties = undefined;\n targetElement = undefined;\n } else if (isObject(targetElement) && !OTHelpers.isElementNode(targetElement)) {\n completionHandler = properties;\n properties = targetElement;\n targetElement = undefined;\n }\n\n if (typeof properties === 'function') {\n completionHandler = properties;\n properties = undefined;\n }\n\n let errMsg;\n\n if (properties) {\n if (!isObject(properties)) {\n errMsg = 'properties argument to Publisher constructor, if provided, should be an object';\n properties = undefined;\n } else if (properties.insertDefaultUI === false && targetElement) {\n errMsg = 'You cannot specify a target element if insertDefaultUI is false';\n } else if (isNullOrFalse(properties.audioSource) && isNullOrFalse(properties.videoSource)) {\n errMsg = 'You cannot specify both audioSource and videoSource as null or false';\n }\n }\n\n setVideoContentHintIfCanvas(properties);\n const publisher = new Publisher(properties || {});\n sessionObjects.publishers.add(publisher);\n\n const triggerCallback = function triggerCallback() {\n if (completionHandler && isFunction(completionHandler)) {\n completionHandler(...arguments);\n completionHandler = undefined;\n }\n };\n\n if (errMsg !== undefined) {\n logging.error(errMsg);\n triggerCallback(otError(Errors.INVALID_PARAMETER, new Error(errMsg), ExceptionCodes.INVALID_PARAMETER));\n }\n\n const removeInitSuccessAndCallComplete = function removeInitSuccessAndCallComplete(err) {\n publisher.off('publishComplete', removeHandlersAndCallComplete);\n triggerCallback(err);\n };\n\n let removeHandlersAndCallComplete = function removeHandlersAndCallComplete(err) {\n publisher.off('initSuccess', removeInitSuccessAndCallComplete); // We're only handling the error case here as we're just\n // initing the publisher, not actually attempting to publish.\n\n if (err) {\n triggerCallback(err);\n }\n };\n\n publisher.once('initSuccess', removeInitSuccessAndCallComplete);\n publisher.once('publishComplete', removeHandlersAndCallComplete);\n publisher.publish(targetElement);\n return publisher;\n };\n};\n\n/***/ }),\n/* 309 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(25));\n\n/* eslint-disable no-param-reassign, global-require, no-underscore-dangle, func-names */\n\n/* eslint-disable max-len */\nconst EventEmitter = __webpack_require__(41);\n\nconst findKey = __webpack_require__(684);\n\nconst isObject = __webpack_require__(9);\n\nconst isFunction = __webpack_require__(15);\n\nconst assign = __webpack_require__(7);\n\nconst eventNames = __webpack_require__(26);\n\nconst eventing = __webpack_require__(6);\n\nconst AnalyticsHelperDefault = __webpack_require__(27);\n\nconst StaticConfigDefault = __webpack_require__(44)();\n\nconst IntervalRunner = __webpack_require__(74);\n\nconst promisify = __webpack_require__(307);\n\nconst testRemovingVideoCodecs = __webpack_require__(686);\n\nconst validateIceConfigFactory = __webpack_require__(687);\n\nconst _require = __webpack_require__(138),\n prependProxyToUrlIfNeeded = _require.prependProxyToUrlIfNeeded;\n\nconst _require2 = __webpack_require__(139),\n getProxyUrl = _require2.getProxyUrl;\n\nmodule.exports = function SessionFactory(deps) {\n if (deps === void 0) {\n deps = {};\n }\n\n const adaptIceServers = deps.adaptIceServers || __webpack_require__(100).adaptIceServers;\n /** @type {AnalyticsHelper} */\n\n\n const AnalyticsHelper = deps.AnalyticsHelper || AnalyticsHelperDefault;\n\n const APIKEY = deps.APIKEY || __webpack_require__(72);\n\n const Capabilities = deps.Capabilities || __webpack_require__(169);\n\n const convertAnvilErrorCode = deps.convertAnvilErrorCode || __webpack_require__(688);\n\n const convertRumorError = deps.convertRumorError || __webpack_require__(310);\n\n const errors = deps.Errors || __webpack_require__(4);\n\n const Events = deps.Events || __webpack_require__(22)();\n\n const Stream = deps.Stream || __webpack_require__(170);\n\n const ExceptionCodes = deps.ExceptionCodes || __webpack_require__(8);\n\n const hasIceRestartsCapability = deps.hasIceRestartsCapability || __webpack_require__(311);\n\n const logging = deps.logging || __webpack_require__(1)('Session');\n\n const otError = deps.otError || __webpack_require__(11)();\n\n const OTErrorClass = deps.OTErrorClass || __webpack_require__(21);\n\n const OTHelpers = deps.OTHelpers || __webpack_require__(5);\n\n const forceMuteErrors = __webpack_require__(689);\n /** @type {typeof StaticConfigDefault} */\n\n\n const StaticConfig = deps.StaticConfig || StaticConfigDefault;\n /** @type {StaticConfigDefault} */\n\n const localStaticConfig = deps.staticConfig || StaticConfig.onlyLocal();\n\n const Publisher = deps.Publisher || __webpack_require__(168)();\n\n const RaptorSocket = deps.RaptorSocket || __webpack_require__(690).default();\n\n const SessionDispatcher = deps.SessionDispatcher || __webpack_require__(318);\n\n const sessionObjects = deps.sessionObjects || __webpack_require__(20);\n\n const sessionTag = deps.sessionTag || __webpack_require__(317);\n\n const socketCloseCodes = deps.socketCloseCodes || __webpack_require__(76);\n\n const Subscriber = deps.Subscriber || __webpack_require__(300)();\n\n const systemRequirements = deps.systemRequirements || __webpack_require__(152);\n\n const uuid = deps.uuid || __webpack_require__(19);\n\n const validateIceConfig = validateIceConfigFactory({\n otError\n });\n const windowMock = deps.global || (typeof window !== undefined ? window : global);\n\n const getSessionInfo = deps.getSessionInfo || __webpack_require__(714)();\n\n const SessionInfo = __webpack_require__(141);\n\n const initPublisher = deps.initPublisher || __webpack_require__(308)({\n Publisher\n });\n /**\n * The Session object returned by the
OT.initSession()
method provides access to\n * much of the OpenTok functionality.\n *\n * @class Session\n * @augments EventDispatcher\n *\n * @property {Capabilities} capabilities A {@link Capabilities} object that includes information\n * about the capabilities of the client. All properties of the capabilities
object\n * are undefined until you have connected to a session and the completion handler for the\n * Session.connect()
method has been called without error.\n * @property {Connection} connection The {@link Connection} object for this session. The\n * connection property is only available once the completion handler for the\n * Session.connect()
method has been called successfully. See the\n * Session.connect() method and the {@link Connection} class.\n * @property {String} sessionId The session ID for this session. You pass this value into the\n * OT.initSession()
method when you create the Session object. (Note: a Session\n * object is not connected to the OpenTok server until you call the connect() method of the\n * object and its completion handler is called without error. See the\n * OT.initSession() and\n * the Session.connect()\n * methods.) For more information on sessions and session IDs, see\n * Session creation.\n */\n\n\n const Session = function Session(apiKey, sessionId, _temp) {\n var _this = this;\n\n let _ref = _temp === void 0 ? {} : _temp,\n iceConfig = _ref.iceConfig,\n connectionEventsSuppressed = _ref.connectionEventsSuppressed,\n _ref$ipWhitelist = _ref.ipWhitelist,\n ipWhitelist = _ref$ipWhitelist === void 0 ? false : _ref$ipWhitelist;\n\n const proxyUrl = getProxyUrl();\n /** @type AnalyticsHelperDefault */\n\n const analytics = new AnalyticsHelper();\n\n const getStream = stream => typeof stream === 'string' ? this.streams.get(stream) || {\n id: stream\n } : stream;\n\n eventing(this);\n this._tag = sessionTag; // Check that the client meets the minimum requirements, if they don't the upgrade\n // flow will be triggered.\n\n if (!systemRequirements.check()) {\n systemRequirements.upgrade();\n }\n\n if (sessionId == null) {\n sessionId = apiKey;\n apiKey = null;\n }\n\n validateIceConfig(iceConfig);\n this.id = sessionId;\n this.sessionId = sessionId;\n\n let _socket;\n /** @type IntervalRunner | undefined */\n\n\n let _connectivityAttemptPinger;\n\n let _token;\n\n let _p2p;\n\n let _messagingServer;\n\n let _attemptStartTime;\n\n let _configurationAttemptStartTime;\n\n let _iceServerDetails;\n\n let _initialConnection = true;\n let _isSocketReconnecting = false;\n let _apiKey = apiKey;\n\n const _session = this;\n\n let _sessionId = sessionId;\n\n let _widgetId = uuid();\n\n let _connectionId = uuid();\n\n let _logging = logging;\n let _muteOnEntry = false;\n const _subscribersQueue = [];\n let _subscribersQueueInterval = null;\n let disconnectComponents;\n let reset;\n let destroyPublishers;\n let destroySubscribers;\n const setState = OTHelpers.statable(this, ['disconnected', 'connecting', 'connected', 'disconnecting'], 'disconnected');\n this.connection = null;\n this.connections = new OTHelpers.Collection();\n this.streams = new OTHelpers.Collection();\n this.archives = new OTHelpers.Collection(); //--------------------------------------\n // MESSAGE HANDLERS\n //--------------------------------------\n\n /*\n * The sessionConnectFailed event handler\n * @param {Error}\n */\n\n const sessionConnectFailed = function sessionConnectFailed(error) {\n setState('disconnected');\n\n if (!error.code) {\n error.code = ExceptionCodes.CONNECT_FAILED;\n }\n\n _logging.error(`${error.name || 'Unknown Error'}: ${error.message}`);\n\n OTErrorClass.handleJsException({\n error,\n target: this,\n analytics\n });\n this.trigger('sessionConnectFailed', error);\n };\n\n const sessionDisconnectedHandler = function sessionDisconnectedHandler(event) {\n _isSocketReconnecting = false;\n const reason = event.reason;\n this.logEvent('Connect', 'Disconnected', {\n reason: event.reason\n });\n const publicEvent = new Events.SessionDisconnectEvent('sessionDisconnected', reason.replace('networkTimedout', 'networkDisconnected'));\n\n if (this.isConnected()) {\n this.disconnect();\n }\n\n reset();\n disconnectComponents.call(this, reason);\n setTimeout(() => {\n this.dispatchEvent(publicEvent); // Although part of the defaultAction for sessionDisconnected we have\n // chosen to still destroy Publishers within the session as there is\n // another mechanism to stop a Publisher from being destroyed.\n // Publishers use preventDefault on the Publisher streamDestroyed event\n\n destroyPublishers.call(this, publicEvent.reason);\n\n if (!publicEvent.isDefaultPrevented()) {\n destroySubscribers.call(this, publicEvent.reason);\n }\n });\n };\n\n const connectionCreatedHandler = function connectionCreatedHandler(connection) {\n // With connectionEventsSuppressed, connections objects are still added internally, but they\n // don't come from rumor messages, and can't have corresponding delete events, so we don't\n // emit created events.\n if (connectionEventsSuppressed) {\n return;\n } // We don't broadcast events for the symphony connection\n\n\n if (connection.id.match(/^symphony\\./)) {\n return;\n }\n\n this.dispatchEvent(new Events.ConnectionEvent(eventNames.CONNECTION_CREATED, connection));\n };\n\n const connectionDestroyedHandler = function connectionDestroyedHandler(connection, reason) {\n // We don't broadcast events for the symphony connection\n if (connection.id.match(/^symphony\\./)) {\n return;\n } // Don't delete the connection if it's ours. This only happens when\n // we're about to receive a session disconnected and session disconnected\n // will also clean up our connection.\n\n\n if (_socket && connection.id === _socket.id()) {\n return;\n }\n\n this.dispatchEvent(new Events.ConnectionEvent(eventNames.CONNECTION_DESTROYED, connection, reason));\n };\n\n const streamCreatedHandler = function streamCreatedHandler(stream) {\n if (stream && stream.connection && (!this.connection || stream.connection.id !== this.connection.id)) {\n this.dispatchEvent(new Events.StreamEvent(eventNames.STREAM_CREATED, stream, null, false));\n }\n };\n\n const streamPropertyModifiedHandler = function streamPropertyModifiedHandler(event) {\n const stream = event.target;\n const propertyName = event.changedProperty;\n let newValue = event.newValue;\n\n if (propertyName === 'videoDisableWarning' || propertyName === 'audioDisableWarning') {\n return; // These are not public properties, skip top level event for them.\n }\n\n if (propertyName === 'videoDimensions') {\n newValue = {\n width: newValue.width,\n height: newValue.height\n };\n }\n\n this.dispatchEvent(new Events.StreamPropertyChangedEvent(eventNames.STREAM_PROPERTY_CHANGED, stream, propertyName, event.oldValue, newValue));\n };\n\n const streamDestroyedHandler = function streamDestroyedHandler(stream, reason) {\n if (reason === void 0) {\n reason = 'clientDisconnected';\n }\n\n const event = new Events.StreamEvent('streamDestroyed', stream, reason, true);\n\n const disconnectAndDestroySubscribers = () => {\n // If we are subscribed to any of the streams we should unsubscribe\n sessionObjects.subscribers.where({\n streamId: stream.id\n }).filter(subscriber => subscriber.session.id === this.id && subscriber.stream).forEach(subscriber => {\n subscriber._disconnect({\n reason\n });\n\n if (!event.isDefaultPrevented()) {\n subscriber._destroy({\n reason,\n noStateTransition: true\n });\n }\n });\n }; // if the stream is one of ours we delegate handling to the publisher itself.\n\n\n if (stream.connection.id === this.connection.id) {\n sessionObjects.publishers.where({\n streamId: stream.id\n }).forEach(function (publisher) {\n publisher._.unpublishStreamFromSession(stream, this, reason);\n }, this);\n } else {\n // The streamDestroyed event is only dispatched by the session when the stream is not one of ours.\n // In the case the stream is ours, the streamDestroyed is dispatched by the publisher.\n this.dispatchEvent(event);\n }\n\n disconnectAndDestroySubscribers(); // @TODO Add a else with a one time warning that this no longer cleans up the publisher\n };\n\n const archiveCreatedHandler = function archiveCreatedHandler(archive) {\n this.dispatchEvent(new Events.ArchiveEvent('archiveStarted', archive));\n };\n\n const archiveDestroyedHandler = function archiveDestroyedHandler(archive) {\n this.dispatchEvent(new Events.ArchiveEvent('archiveDestroyed', archive));\n };\n\n const archiveUpdatedHandler = function archiveUpdatedHandler(event) {\n const archive = event.target;\n const propertyName = event.changedProperty;\n const newValue = event.newValue;\n\n if (propertyName === 'status' && newValue === 'stopped') {\n this.dispatchEvent(new Events.ArchiveEvent('archiveStopped', archive));\n } else {\n this.dispatchEvent(new Events.ArchiveEvent('archiveUpdated', archive));\n }\n }; // OPENTOK-42152: When a GSM call is ended, the subscribers might have an issue\n // in which a black frame is displayed instead of video.\n // A workaround is to pause and play the subscriber's video element.\n\n\n const gsmCallEndedHandler = () => sessionObjects.subscribers.forEach(subscriber => subscriber._.pauseAndPlayVideoElement());\n\n const init = function init() {\n _session.token = null;\n _token = null;\n setState('disconnected');\n _socket = null;\n\n if (_connectivityAttemptPinger) {\n _connectivityAttemptPinger.stop();\n\n _connectivityAttemptPinger = null;\n }\n\n _session.connection = null;\n _session.capabilities = new Capabilities([]);\n\n _session.connections.destroy();\n\n _session.streams.destroy();\n\n _session.archives.destroy();\n }; // Put ourselves into a pristine state\n\n\n reset = function reset() {\n // reset connection id now so that following calls to testNetwork and connect will share\n // the same new session id. We need to reset here because testNetwork might be call after\n // and it is always called before the session is connected\n // on initial connection we don't reset\n _connectionId = uuid();\n init();\n };\n\n disconnectComponents = function disconnectComponents(reason) {\n sessionObjects.publishers.where({\n session: this\n }).forEach(publisher => {\n publisher.disconnect(reason);\n });\n sessionObjects.subscribers.where({\n session: this\n }).forEach(subscriber => {\n subscriber._disconnect();\n });\n };\n\n destroyPublishers = function destroyPublishers(reason) {\n sessionObjects.publishers.where({\n session: this\n }).forEach(publisher => {\n publisher._.streamDestroyed(reason);\n });\n };\n\n destroySubscribers = function destroySubscribers(reason) {\n sessionObjects.subscribers.where({\n session: this\n }).forEach(subscriber => {\n subscriber._destroy({\n reason\n });\n });\n };\n\n const connectMessenger = function connectMessenger() {\n _logging.debug('OT.Session: connecting to Raptor');\n\n const messagingUrl = prependProxyToUrlIfNeeded(this.sessionInfo.messagingURL, proxyUrl); // capabilities supported by default.\n\n const capabilities = ['forceMute', 'adaptive'];\n _socket = new RaptorSocket(_connectionId, _widgetId, messagingUrl, this.sessionInfo.symphonyAddress, SessionDispatcher(this, {\n connectionEventsSuppressed\n }), analytics, capabilities);\n /**\n * Maps an error from RaptorSocket.connect to its corresponding name\n * @param {string} reason - Failure reason\n * @param {number} code - Error code\n * @return {string|undefined} Error name\n */\n\n function getErrorNameFromCode(reason, code) {\n let name;\n\n switch (reason) {\n case 'WebSocketConnection':\n name = findKey(socketCloseCodes.codes, x => x === code);\n\n if (name) {\n return errors[`SOCKET_${name}`];\n }\n\n break;\n\n case 'ConnectToSession':\n case 'GetSessionState':\n switch (code) {\n case ExceptionCodes.CONNECT_FAILED:\n return errors.CONNECT_FAILED;\n\n case ExceptionCodes.UNEXPECTED_SERVER_RESPONSE:\n return errors.UNEXPECTED_SERVER_RESPONSE;\n\n case ExceptionCodes.CONNECTION_LIMIT_EXCEEDED:\n return errors.CONNECTION_LIMIT_EXCEEDED;\n\n default:\n break;\n }\n\n break;\n\n default:\n break;\n }\n\n return undefined;\n }\n\n _socket.connect(_token, this.sessionInfo, {\n connectionEventsSuppressed\n }, (error, sessionState) => {\n if (error) {\n const payload = {};\n let options;\n\n if (error.reason === 'ConnectToSession' || error.reason === 'GetSessionState') {\n const converted = convertRumorError(error);\n assign(payload, {\n originalMessage: error.message,\n originalCode: error.code\n });\n error.code = converted.code;\n error.message = converted.message;\n }\n\n if (error.code || error.message || error.reason) {\n options = {\n failureCode: error.code,\n failureMessage: error.message,\n failureReason: error.reason,\n socketId: _socket.socketId\n };\n }\n\n _socket = null;\n this.logConnectivityEvent('Failure', payload, options);\n const errorName = getErrorNameFromCode(error.reason, error.code);\n\n if (errorName) {\n error = otError(errorName, new Error(error.message), error.code);\n }\n\n sessionConnectFailed.call(this, error);\n return;\n }\n\n _logging.debug('OT.Session: Received session state from Raptor', sessionState);\n\n this.connection = this.connections.get(_socket.id());\n\n if (this.connection) {\n this.capabilities = this.connection.permissions;\n }\n\n setState('connected');\n this.logConnectivityEvent('Success', {\n connectionId: this.connection.id\n }); // Listen for our own connection's destroyed event so we know when we've been disconnected.\n\n this.connection.on('destroyed', sessionDisconnectedHandler, this);\n this.dispatchEvent(new Events.SessionConnectEvent(eventNames.SESSION_CONNECTED)); // Listen for connection updates\n\n this.connections.on({\n add: connectionCreatedHandler,\n remove: connectionDestroyedHandler\n }, this); // Listen for stream updates\n\n this.streams.on({\n add: streamCreatedHandler,\n remove: streamDestroyedHandler,\n update: streamPropertyModifiedHandler\n }, this);\n this.archives.on({\n add: archiveCreatedHandler,\n remove: archiveDestroyedHandler,\n update: archiveUpdatedHandler\n }, this);\n\n this.connections._triggerAddEvents(); // { id: this.connection.id }\n\n\n this.streams._triggerAddEvents(); // { id: this.stream.id }\n\n\n this.archives._triggerAddEvents(); // Listen for the gsmCallEnded event triggered by the publisher when a GSM call ends.\n\n\n const isBuggediOS = OTHelpers.env.isiOS && OTHelpers.env.iOSVersion >= 13.3;\n\n if (isBuggediOS) {\n this.on('gsmCallEnded', gsmCallEndedHandler);\n }\n });\n }; // Check whether we have permissions to perform the action.\n\n\n const permittedTo = action => this.capabilities.permittedTo(action);\n\n const dispatchOTError = (error, completionHandler) => {\n logging.error(`${error.name}: ${error.message}`);\n\n if (typeof completionHandler === 'function') {\n completionHandler(error);\n }\n\n OTErrorClass.handleJsException({\n error,\n target: this,\n analytics\n });\n };\n\n const dispatchMuteError = err => {\n const error = otError(err.code, new Error(err.message), err.exceptionCode);\n dispatchOTError(error);\n return error;\n };\n\n const checkMuteCapabilities = () => {\n if (this.isNot('connected')) {\n return dispatchMuteError(forceMuteErrors.NOT_CONNECTED);\n }\n\n if (!permittedTo('forceMute')) {\n // if this throws an error the handleJsException won't occur\n return dispatchMuteError(forceMuteErrors.PERMISSION_DENIED);\n }\n\n return null;\n };\n\n const handleMuteServerError = err => {\n if (err.code === '404') {\n return dispatchMuteError(forceMuteErrors.NOT_FOUND);\n } else if (err.code === '403') {\n return dispatchMuteError(forceMuteErrors.PERMISSION_DENIED);\n }\n\n return dispatchMuteError(forceMuteErrors.UNEXPECTED_SERVER_RESPONSE);\n };\n\n this.reportIssue = (_ref2) => {\n let id = _ref2.id;\n return promisify(analytics.logEvent.bind(analytics))({\n action: 'ReportIssue',\n variation: 'Event',\n connectionId: _connectionId,\n payload: {\n reportIssueId: id\n }\n }, null);\n };\n\n this.logEvent = function (action, variation, payload, options) {\n let event = {\n action,\n variation,\n payload,\n sessionId: _sessionId,\n messagingServer: _messagingServer,\n p2p: _p2p,\n partnerId: _apiKey,\n connectionId: _connectionId\n };\n\n if (options) {\n event = assign(options, event);\n }\n\n analytics.logEvent(event);\n };\n\n this.logConfigurationFileEvent = function (variation, payload, options) {\n if (payload === void 0) {\n payload = null;\n }\n\n if (options === void 0) {\n options = {};\n }\n\n if (variation === 'Attempt') {\n _configurationAttemptStartTime = new Date().getTime();\n } else if (variation === 'Failure' || variation === 'Success') {\n const attemptDuration = new Date().getTime() - _configurationAttemptStartTime;\n\n assign(options, {\n attemptDuration\n });\n }\n\n if (proxyUrl) {\n options.proxyUrl = proxyUrl;\n }\n\n this.logEvent('ConfigurationFile', variation, payload, (0, _extends2.default)({}, options));\n };\n\n this.logConnectivityEvent = function (variation, payload, options) {\n if (payload === void 0) {\n payload = null;\n }\n\n if (options === void 0) {\n options = {};\n }\n\n if (proxyUrl) {\n options.proxyUrl = proxyUrl;\n }\n\n if (variation === 'Attempt') {\n if (_connectivityAttemptPinger) {\n _connectivityAttemptPinger.stop();\n\n logging.error('_connectivityAttemptPinger should have been cleaned up');\n }\n\n _attemptStartTime = new Date().getTime();\n _connectivityAttemptPinger = new IntervalRunner(() => {\n this.logEvent('Connect', 'Attempting', payload, (0, _extends2.default)({}, options));\n }, 1 / 5, 6);\n\n _connectivityAttemptPinger.start();\n }\n\n if (variation === 'Failure' || variation === 'Success' || variation === 'Cancel') {\n const logConnect = _iceConfig => {\n if (_connectivityAttemptPinger) {\n _connectivityAttemptPinger.stop();\n\n _connectivityAttemptPinger = undefined;\n }\n\n this.logEvent('Connect', variation, payload, (0, _extends2.default)({}, options, {\n attemptDuration: new Date().getTime() - _attemptStartTime,\n iceConfig: _iceConfig,\n ipWhitelist\n }));\n };\n\n if (variation === 'Success') {\n this._.getIceConfig().then(config => {\n const _iceConfig = {\n includeServers: iceConfig && iceConfig.includeServers || 'all',\n transportPolicy: config.transportPolicy\n };\n _iceConfig.servers = config.servers ? config.servers.map(server => ({\n url: server.urls\n })) : [];\n logConnect(_iceConfig);\n });\n } else {\n logConnect();\n }\n } else {\n this.logEvent('Connect', variation, payload, options);\n }\n };\n /**\n * Connects to an OpenTok session.\n * \n * Upon a successful connection, the completion handler (the second parameter of the method) is\n * invoked without an error object passed in. (If there is an error connecting, the completion\n * handler is invoked with an error object.) Make sure that you have successfully connected to the\n * session before calling other methods of the Session object.\n *
\n *\n * The Session object dispatches a connectionCreated
event when any client\n * (including your own) connects to the session.\n *
\n * The following code initializes a session and sets up an event listener for when the session\n * connects:\n *
\n *\n * var apiKey = \"\"; // Replace with your API key. See https://tokbox.com/account\n * var sessionID = \"\"; // Replace with your own session ID.\n * // See https://tokbox.com/developer/guides/create-session/.\n * var token = \"\"; // Replace with a generated token.\n * // See https://tokbox.com/developer/guides/create-token/.\n *\n * var session = OT.initSession(apiKey, sessionID);\n * session.connect(token, function(error) {\n * if (error) {\n * console.log(error.message);\n * } else {\n * // You have connected to the session. You could publish a stream now.\n * }\n * });\n *\n *
\n *\n *
\n * exception
(ExceptionEvent) Dispatched\n * by the OT class locally in the event of an error.\n *
\n * connectionCreated
(ConnectionEvent) \n * Dispatched by the Session object on all clients connected to the session.\n *
\n * sessionConnected
(SessionConnectEvent)\n * Dispatched locally by the Session object when the connection is established. However,\n * you can pass a completion handler function in as the second parameter of the\n * connect()
and use this function instead of a listener for the\n * sessionConnected
event.\n *
connect()
method succeeds or fails. This function takes one parameter —\n * error
(see the Error object).\n * On success, the completionHandler
function is not passed any\n * arguments. On error, the function is passed an error
object parameter\n * (see the Error object). The\n * error
object has two properties: code
(an integer) and\n * message
(a string), which identify the cause of the failure. The following\n * code adds a completionHandler
when calling the connect()
method:\n * \n * session.connect(token, function (error) {\n * if (error) {\n * console.log(error.message);\n * } else {\n * console.log(\"Connected to session.\");\n * }\n * });\n *\n *
\n * Note that upon connecting to the session, the Session object dispatches a\n * sessionConnected
event in addition to calling the completionHandler
.\n * The SessionConnectEvent object, which defines the sessionConnected
event,\n * includes connections
and streams
properties, which\n * list the connections and streams in the session when you connect.\n *
\n * Calling the disconnect()
method ends your connection with the session. In the\n * course of terminating your connection, it also ceases publishing any stream(s) you were\n * publishing.\n *
\n * Session objects on remote clients dispatch streamDestroyed
events for any\n * stream you were publishing. The Session object dispatches a sessionDisconnected
\n * event locally. The Session objects on remote clients dispatch connectionDestroyed
\n * events, letting other connections know you have left the session. The\n * {@link SessionDisconnectEvent} and {@link StreamEvent} objects that define the\n * sessionDisconnect
and connectionDestroyed
events each have a\n * reason
property. The reason
property lets the developer determine\n * whether the connection is being terminated voluntarily and whether any streams are being\n * destroyed as a byproduct of the underlying connection's voluntary destruction.\n *
\n * If the session is not currently connected, calling this method causes a warning to be logged.\n * See OT.setLogLevel().\n *
\n *\n *\n * Note: If you intend to reuse a Publisher object created using\n * OT.initPublisher()
to publish to different sessions sequentially, call either\n * Session.disconnect()
or Session.unpublish()
. Do not call both.\n * Then call the preventDefault()
method of the Publisher's streamDestroyed
\n * event object to prevent the Publisher object from being removed from the page. Be sure to\n * call preventDefault()
only if the connection.connectionId
property\n * of the Stream object in the event matches the connection.connectionId
property of\n * your Session object (to ensure that you are preventing the default behavior for your published\n * streams, not for other streams that you subscribe to).\n *
\n * sessionDisconnected
\n * (SessionDisconnectEvent)\n * Dispatched locally when the connection is disconnected.\n *
\n * connectionDestroyed
(ConnectionEvent) \n * Dispatched on other clients, along with the streamDestroyed
event (as warranted).\n *
\n * streamDestroyed
(StreamEvent) \n * Dispatched on other clients if streams are lost as a result of the session disconnecting.\n *
publish()
method starts publishing an audio-video stream to the session.\n * The audio-video stream is captured from a local microphone and webcam. Upon successful\n * publishing, the Session objects on all connected clients dispatch the\n * streamCreated
event.\n * \n *\n * \n * You pass a Publisher object as the one parameter of the method. You can initialize a\n * Publisher object by calling the OT.initPublisher()\n * method. Before calling Session.publish()
.\n *
This method takes an alternate form: publish(targetElement: String | HTMLElement,\n * properties: Object, completionHandler: Function): Publisher
In this form, you do\n not pass a Publisher object into the function. Instead, you pass in a targetElement
\n (the target HTML element or the ID of the target HTML element for the Publisher), an optional\n properties
object that defines options for the Publisher (see\n OT.initPublisher()), and an optional completion handler function.\n * The method returns a new Publisher object, which starts sending an audio-video stream to the\n * session. The remainder of this documentation describes the form that takes a single Publisher\n * object as a parameter.\n *\n *
\n * A local display of the published stream is created on the web page by replacing\n * the specified element in the DOM with a streaming video display. The video stream\n * is automatically mirrored horizontally so that users see themselves and movement\n * in their stream in a natural way. If the width and height of the display do not match\n * the 4:3 aspect ratio of the video signal, the video stream is cropped to fit the\n * display.\n *
\n *\n *\n * If calling this method creates a new Publisher object and the OpenTok library does not\n * have access to the camera or microphone, the web page alerts the user to grant access\n * to the camera and microphone.\n *
\n *\n *\n * The OT object dispatches an exception
event if the user's role does not\n * include permissions required to publish. For example, if the user's role is set to subscriber,\n * then they cannot publish. You define a user's role when you create the user token\n * (see Token creation overview).\n * You pass the token string as a parameter of the connect()
method of the Session\n * object. See ExceptionEvent and\n * OT.on().\n *
\n * The application throws an error if the session is not connected.\n *
\n *\n *\n * exception
(ExceptionEvent) Dispatched\n * by the OT object. This can occur when user's role does not allow publishing (the\n * code
property of event object is set to 1500); it can also occur if the\n * connection fails to connect (the code
property of event object is set to 1013).\n * WebRTC is a peer-to-peer protocol, and it is possible that connections will fail to connect.\n * The most common cause for failure is a firewall that the protocol cannot traverse.\n *
\n * streamCreated
(StreamEvent) \n * The stream has been published. The Session object dispatches this on all clients\n * subscribed to the stream, as well as on the publisher's client.\n *
\n * The following example publishes a video once the session connects:\n *
\n *\n * var apiKey = \"\"; // Replace with your API key. See https://tokbox.com/account\n * var sessionId = \"\"; // Replace with your own session ID.\n * // https://tokbox.com/developer/guides/create-session/.\n * var token = \"\"; // Replace with a generated token that has been assigned the publish role.\n * // See https://tokbox.com/developer/guides/create-token/.\n * var session = OT.initSession(apiKey, sessionID);\n * session.connect(token, function(error) {\n * if (error) {\n * console.log(error.message);\n * } else {\n * var publisherOptions = {width: 400, height:300, name:\"Bob's stream\"};\n * // This assumes that there is a DOM element with the ID 'publisher':\n * publisher = OT.initPublisher('publisher', publisherOptions);\n * session.publish(publisher);\n * }\n * });\n *\n *\n * @param {Publisher} publisher A Publisher object, which you initialize by calling the\n * OT.initPublisher() method.\n *\n * @param {Function} completionHandler (Optional) A function to be called when the call to the\n *
publish()
method succeeds or fails. This function takes one parameter —\n * error
. On success, the completionHandler
function is not passed any\n * arguments. On error, the function is passed an error
object parameter\n * (see the Error object). The\n * error
object has two properties: code
(an integer) and\n * message
(a string), which identify the cause of the failure. Calling\n * publish()
fails if the role assigned to your token is not \"publisher\" or\n * \"moderator\"; in this case the error.name
property is set to\n * \"OT_PERMISSION_DENIED\"
. Calling publish()
also fails if the\n * client fails to connect; in this case the error.name
property is set to\n * \"OT_NOT_CONNECTED\"
. The following code adds a completion handler when\n * calling the publish()
method:\n * \n * session.publish(publisher, null, function (error) {\n * if (error) {\n * console.log(error.message);\n * } else {\n * console.log(\"Publishing a stream.\");\n * }\n * });\n *\n *\n * @returns The Publisher object for this stream.\n *\n * @method #publish\n * @memberOf Session\n */\n\n\n this.publish = function (publisher, properties, completionHandler) {\n if (typeof publisher === 'function') {\n completionHandler = publisher;\n publisher = undefined;\n }\n\n if (typeof properties === 'function') {\n completionHandler = properties;\n properties = undefined;\n }\n\n completionHandler = completionHandler || function () {};\n\n if (this.isNot('connected')) {\n analytics.logError(1010, 'OT.exception', 'We need to be connected before you can publish', null, {\n action: 'Publish',\n variation: 'Failure',\n failureReason: 'unconnected',\n failureCode: ExceptionCodes.NOT_CONNECTED,\n failureMessage: 'We need to be connected before you can publish',\n sessionId: _sessionId,\n streamId: publisher && publisher.stream ? publisher.stream.id : null,\n p2p: this.sessionInfo ? this.sessionInfo.p2pEnabled : undefined,\n messagingServer: this.sessionInfo ? this.sessionInfo.messagingServer : null,\n partnerId: _apiKey\n });\n dispatchOTError(otError(errors.NOT_CONNECTED, new Error('We need to be connected before you can publish'), ExceptionCodes.NOT_CONNECTED), completionHandler);\n return null;\n }\n\n if (!permittedTo('publish')) {\n const errorMessage = 'This token does not allow publishing. The role must be at least ' + '`publisher` to enable this functionality';\n const options = {\n failureReason: 'Permission',\n failureCode: ExceptionCodes.UNABLE_TO_PUBLISH,\n failureMessage: errorMessage\n };\n this.logEvent('Publish', 'Failure', null, options);\n dispatchOTError(otError(errors.PERMISSION_DENIED, new Error(errorMessage), ExceptionCodes.UNABLE_TO_PUBLISH), completionHandler);\n return null;\n } // If the user has passed in an ID of a element then we create a new publisher.\n\n\n if (!publisher || typeof publisher === 'string' || OTHelpers.isElementNode(publisher)) {\n // Initiate a new Publisher with the new session credentials\n publisher = initPublisher(publisher, properties);\n } else if (publisher instanceof Publisher) {\n // If the publisher already has a session attached to it we can\n if ('session' in publisher && publisher.session && 'sessionId' in publisher.session) {\n // send a warning message that we can't publish again.\n if (publisher.session.sessionId === this.sessionId) {\n _logging.warn(`Cannot publish ${publisher.guid()} again to ${this.sessionId}. Please call session.unpublish(publisher) first.`);\n } else {\n _logging.warn(`Cannot publish ${publisher.guid()} publisher already attached to ${publisher.session.sessionId}. Please call session.unpublish(publisher) first.`);\n }\n }\n } else {\n dispatchOTError(otError(errors.INVALID_PARAMETER, new Error('Session.publish :: First parameter passed in is neither a ' + 'string nor an instance of the Publisher'), ExceptionCodes.UNABLE_TO_PUBLISH), completionHandler);\n return undefined;\n }\n\n if (_muteOnEntry) {\n publisher._.forceMuteAudio();\n } // Add publisher reference to the session\n\n\n publisher._.publishToSession(this, analytics).catch(err => {\n err.message = `Session.publish :: ${err.message}`;\n\n _logging.error(err.code, err.message);\n\n throw err;\n }).then(() => publisher).then(function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return completionHandler(null, ...args);\n }, err => completionHandler(err)); // return the embed publisher\n\n\n return publisher;\n };\n /**\n * Ceases publishing the specified publisher's audio-video stream\n * to the session. By default, the local representation of the audio-video stream is\n * removed from the web page. Upon successful termination, the Session object on every\n * connected web page dispatches\n * a
streamDestroyed
event.\n * \n *\n * \n * To prevent the Publisher from being removed from the DOM, add an event listener for the\n * streamDestroyed
event dispatched by the Publisher object and call the\n * preventDefault()
method of the event object.\n *
\n * Note: If you intend to reuse a Publisher object created using\n * OT.initPublisher()
to publish to different sessions sequentially, call\n * either Session.disconnect()
or Session.unpublish()
. Do not call\n * both. Then call the preventDefault()
method of the streamDestroyed
\n * or sessionDisconnected
event object to prevent the Publisher object from being\n * removed from the page. Be sure to call preventDefault()
only if the\n * connection.connectionId
property of the Stream object in the event matches the\n * connection.connectionId
property of your Session object (to ensure that you are\n * preventing the default behavior for your published streams, not for other streams that you\n * subscribe to).\n *
\n * streamDestroyed
(StreamEvent) \n * The stream associated with the Publisher has been destroyed. Dispatched on by the\n * Publisher on on the Publisher's browser. Dispatched by the Session object on\n * all other connections subscribing to the publisher's stream.\n *
\n * <script>\n * var apiKey = \"\"; // Replace with your API key. See https://tokbox.com/account\n * var sessionID = \"\"; // Replace with your own session ID.\n * // See https://tokbox.com/developer/guides/create-session/.\n * var token = \"\"; // Replace with a generated token.\n * // See https://tokbox.com/developer/guides/create-token/.\n * var publisher;\n * var session = OT.initSession(apiKey, sessionID);\n * session.connect(token, function(error) {\n * if (error) {\n * console.log(error.message);\n * } else {\n * // This assumes that there is a DOM element with the ID 'publisher':\n * publisher = OT.initPublisher('publisher');\n * session.publish(publisher);\n * }\n * });\n *\n * function unpublish() {\n * session.unpublish(publisher);\n * }\n * </script>\n *\n * <body>\n *\n * <div id=\"publisherContainer/>\n * <br/>\n *\n * <a href=\"javascript:unpublish()\">Stop Publishing</a>\n *\n * </body>\n *\n *\n *\n * @see publish()\n *\n * @see streamDestroyed event\n *\n * @param {Publisher} publisher The Publisher object to stop streaming.\n *\n * @method #unpublish\n * @memberOf Session\n */\n\n\n this.unpublish = function (publisher) {\n if (!publisher) {\n _logging.error('OT.Session.unpublish: publisher parameter missing.');\n\n return;\n } // Unpublish the localMedia publisher\n\n\n publisher._.unpublishFromSession(this, 'unpublished');\n };\n /**\n * Subscribes to a stream that is available to the session. You can get an array of\n * available streams from the
streams
property of the sessionConnected
\n * and streamCreated
events (see\n * SessionConnectEvent and\n * StreamEvent).\n * \n * \n * The subscribed stream is displayed on the local web page by replacing the specified element\n * in the DOM with a streaming video display. If the width and height of the display do not\n * match the 4:3 aspect ratio of the video signal, the video stream is cropped to fit\n * the display. If the stream lacks a video component, a blank screen with an audio indicator\n * is displayed in place of the video stream.\n *
\n *\n *\n * The application throws an error if the session is not connected or if the\n * targetElement
does not exist in the HTML DOM.\n *
\n * var apiKey = \"\"; // Replace with your API key. See https://tokbox.com/account\n * var sessionID = \"\"; // Replace with your own session ID.\n * // See https://tokbox.com/developer/guides/create-session/.\n * var token = \"\"; // Replace with a generated token.\n * // See https://tokbox.com/developer/guides/create-token/.\n *\n * var session = OT.initSession(apiKey, sessionID);\n * session.on(\"streamCreated\", function(event) {\n * subscriber = session.subscribe(event.stream, targetElement);\n * });\n * session.connect(token);\n *\n *\n * @param {Stream} stream The Stream object representing the stream to which we are trying to\n * subscribe.\n *\n * @param {Object} targetElement (Optional) The DOM element or the
id
attribute of\n * the existing DOM element used to determine the location of the Subscriber video in the HTML\n * DOM. See the insertMode
property of the properties
parameter. If\n * you do not specify a targetElement
, the application appends a new DOM element\n * to the HTML body
.\n *\n * @param {Object} properties This is an object that contains the following properties:\n * audioVolume
(Number) The desired audio volume, between 0 and\n * 100, when the Subscriber is first opened (default: 50). After you subscribe to the\n * stream, you can adjust the volume by calling the\n * setAudioVolume()
method of the\n * Subscriber object. This volume setting affects local playback only; it does not affect\n * the stream's volume on other clients.fitMode
(String) Determines how the video is displayed if the its\n * dimensions do not match those of the DOM element. You can set this property to one of\n * the following values:\n * \n *
\"cover\"
— The video is cropped if its dimensions do not match\n * those of the DOM element. This is the default setting for videos that have a\n * camera as the source (for Stream objects with the videoType
property\n * set to \"camera\"
).\n * \"contain\"
— The video is letterboxed if its dimensions do not\n * match those of the DOM element. This is the default setting for screen-sharing\n * videos (for Stream objects with the videoType
property set to\n * \"screen\"
).\n * height
(Number or String) The desired initial height of the displayed\n * video in the HTML page (default: 198 pixels). You can specify the number of pixels as\n * either a number (such as 300) or a string ending in \"px\" (such as \"300px\"). Or you can\n * specify a percentage of the size of the parent element, with a string ending in \"%\"\n * (such as \"100%\"). Note: To resize the video, adjust the CSS of the subscriber's\n * DOM element (the element
property of the Subscriber object) or (if the\n * height is specified as a percentage) its parent DOM element (see\n * \n * Resizing or repositioning a video).\n * true
, the default) or not (false
). The default UI element\n * contains user interface controls, a video loading indicator, and automatic video cropping\n * or letterboxing, in addition to the video. (If you leave insertDefaultUI
\n * set to true
, you can control individual UI settings using the\n * fitMode
, showControls
, and style
options.)\n * \n * If you set this option to false
, OpenTok.js does not insert a default UI\n * element in the HTML DOM, and the element
property of the Subscriber object is\n * undefined. The Subscriber object dispatches a\n * videoElementCreated event when\n * the video
element (or in Internet Explorer the object
element\n * containing the video) is created. The element
property of the event object\n * is a reference to the Subscriber's video
(or object
) element.\n * Add it to the HTML DOM to display the video.\n *
\n * Set this option to false
if you want to move the Publisher's\n * video
element (or its object
element in Internet Explorer) in\n * the HTML DOM.\n *
\n * If you set this to false
, do not set the targetElement
\n * parameter. (This results in an error passed into to the OT.initPublisher()
\n * callback function.) To add the video to the HTML DOM, add an event listener for the\n * videoElementCreated
event, and then add the element
property of\n * the event object into the HTML DOM.\n *
insertMode
(String) Specifies how the Subscriber object will\n * be inserted in the HTML DOM. See the targetElement
parameter. This\n * string can have the following values:\n * \n *
\"replace\"
The Subscriber object replaces contents of the\n * targetElement. This is the default.\"after\"
The Subscriber object is a new element inserted\n * after the targetElement in the HTML DOM. (Both the Subscriber and targetElement\n * have the same parent element.)\"before\"
The Subscriber object is a new element inserted\n * before the targetElement in the HTML DOM. (Both the Subscriber and targetElement\n * have the same parent element.)\"append\"
The Subscriber object is a new element added as a\n * child of the targetElement. If there are other child elements, the Subscriber is\n * appended as the last child element of the targetElement.preferredFrameRate
(Number) The preferred frame rate of the subscriber's\n * video. Lowering the preferred frame rate lowers video quality on the subscribing client,\n * but it also reduces network and CPU usage. You may want to use a lower frame rate for\n * subscribers to a stream that is less important than other streams.\n * \n * This property only applies when subscribing to a stream that uses the\n * \n * scalable video feature. Scalable video is available:\n *
\n * In streams that do not use scalable video, setting this property has no effect.\n *
\n * Note: The frame rate for scalable video streams automatically adjusts for each\n * subscriber, based on network conditions and CPU usage, even if you do not call this method.\n * Call this method if you want to set a maximum frame rate for this subscriber.\n *
\n *
\n * Not every frame rate is available to a subscriber. When you set the preferred frame rate for\n * the subscriber, OpenTok.js picks the best frame rate available that matches your setting.\n * The frame rates available are based on the value of the Subscriber object's\n * stream.frameRate
property, which represents the maximum value available for the\n * stream. The actual frame rates available depend, dynamically, on network and CPU resources\n * available to the publisher and subscriber.\n *
\n * You can dynamically change the preferred frame rate used by calling the\n * setPreferredFrameRate()
method of the Subscriber object.\n *
preferredResolution
(Object) The preferred resolution of the subscriber's\n * video. Set this to an object with two properties: width
and height
\n * (both numbers), such as {width: 320, height: 240}
. Lowering the preferred video\n * resolution lowers video quality on the subscribing client, but it also reduces network and CPU\n * usage. You may want to use a lower resolution based on the dimensions of subscriber's video on\n * the web page. You may want to use a resolution for subscribers to a stream that is less\n * important (and smaller) than other streams.\n * \n * This property only applies when subscribing to a stream that uses the\n * \n * scalable video feature. Scalable video is available:\n *
\n * In streams that do not use scalable video, setting this property has no effect.\n *
\n * Not every resolution is available to a subscriber. When you set the preferred resolution,\n * OpenTok.js and the video encoder pick the best resolution available that matches your\n * setting. The resolutions available depend on the resolution of the published stream.\n * The Subscriber object's stream.resolution
property represents the highest\n * resolution available for the stream. Each of the resolutions available for a stream will use\n * the same aspect ratio. The actual resolutions available depend, dynamically, on network\n * and CPU resources available to the publisher and subscriber.\n *
\n * You can dynamically change the preferred video resolution used by calling the\n * setPreferredResolution()
method of the Subscriber object.\n *
showControls
(Boolean) Whether to display the built-in user interface\n * controls for the Subscriber (default: true
). These controls include the name\n * display, the audio level indicator, the speaker control button, the video disabled indicator,\n * and the video disabled warning icon. You can turn off all user interface controls by setting\n * this property to false
. You can control the display of individual user interface\n * controls by leaving this property set to true
(the default) and setting\n * individual properties of the style
property.\n * style
(Object) An object containing properties that define the initial\n * appearance of user interface controls of the Subscriber. The style
object\n * includes the following properties:\n * audioBlockedDisplayMode
(String) — Whether to display\n * the default audio blocked icon in Subscribers (in browsers where audio\n * autoplay is blocked). Possible values are: \"auto\"
(the default,\n * icon is displayed when the audio is disabled) and \"off\"
(the icon\n * is not displayed). Set this to \"off\"
if you want to display\n * your own UI element showing that the audio is blocked. In response to an\n * HTML element dispatching a click
event, you can call the\n * OT.unblockAudio() method to start audio\n * playback in this and all other blocked subscribers.audioLevelDisplayMode
(String) — How to display the audio level\n * indicator. Possible values are: \"auto\"
(the indicator is displayed when the\n * video is disabled), \"off\"
(the indicator is not displayed), and\n * \"on\"
(the indicator is always displayed).backgroundImageURI
(String) — A URI for an image to display as\n * the background image when a video is not displayed. (A video may not be displayed if\n * you call subscribeToVideo(false)
on the Subscriber object). You can pass an\n * http or https URI to a PNG, JPEG, or non-animated GIF file location. You can also use the\n * data
URI scheme (instead of http or https) and pass in base-64-encrypted\n * PNG data, such as that obtained from the\n * Subscriber.getImgData() method. (For example,\n * you could set the property to a value returned by calling getImgData()
on\n * a previous Subscriber object.) If the URL or the image data is invalid, the\n * property is ignored (the attempt to set the image fails silently).buttonDisplayMode
(String) — How to display the speaker controls\n * Possible values are: \"auto\"
(controls are displayed when the stream is first\n * displayed and when the user mouses over the display), \"off\"
(controls are not\n * displayed), and \"on\"
(controls are always displayed).nameDisplayMode
(String) Whether to display the stream name.\n * Possible values are: \"auto\"
(the name is displayed when the stream is first\n * displayed and when the user mouses over the display), \"off\"
(the name is not\n * displayed), and \"on\"
(the name is always displayed).videoDisabledDisplayMode
(String) Whether to display the video\n * disabled indicator and video disabled warning icons for a Subscriber. These icons\n * indicate that the video has been disabled (or is in risk of being disabled for\n * the warning icon) due to poor stream quality. This style only applies to the Subscriber\n * object. Possible values are: \"auto\"
(the icons are automatically when the\n * displayed video is disabled or in risk of being disabled due to poor stream quality),\n * \"off\"
(do not display the icons), and \"on\"
(display the\n * icons). The default setting is \"auto\"
subscribeToAudio
(Boolean) Whether to initially subscribe to audio\n * (if available) for the stream (default: true
).subscribeToVideo
(Boolean) Whether to initially subscribe to video\n * (if available) for the stream (default: true
).testNetwork
(Boolean) Whether, when subscribing to a stream\n * published by the local client, you want to have the stream come from the OpenTok Media\n * Router (true
) or if you want the DOM to simply to display the local camera's\n * video (false
). Set this to true
when you want to use the\n * Subscriber.getStats() method to check statistics\n * for a stream you publish. This setting only applies to streams published by the local\n * client in a session that uses the OpenTok Media Router (sessions with the\n * media mode\n * set to routed), not in sessions with the media mode set to relayed. The default value is\n * false
.width
(Number or String) The desired initial width of the displayed\n * video in the HTML page (default: 264 pixels). You can specify the number of pixels as\n * either a number (such as 400) or a string ending in \"px\" (such as \"400px\"). Or you can\n * specify a percentage of the size of the parent element, with a string ending in \"%\"\n * (such as \"100%\"). Note: To resize the video, adjust the CSS of the subscriber's\n * DOM element (the element
property of the Subscriber object) or (if the\n * width is specified as a percentage) its parent DOM element (see\n * \n * Resizing or repositioning a video).\n * subscribe()
method succeeds or fails. This function takes one parameter —\n * error
. On success, the completionHandler
function is not passed any\n * arguments. On error, the function is passed an error
object, defined by the\n * Error class, has two properties: code
(an integer) and\n * message
(a string), which identify the cause of the failure. The following\n * code adds a completionHandler
when calling the subscribe()
method:\n * \n * session.subscribe(stream, \"subscriber\", null, function (error) {\n * if (error) {\n * console.log(error.message);\n * } else {\n * console.log(\"Subscribed to stream: \" + stream.id);\n * }\n * });\n *\n *\n * @signature subscribe(stream, targetElement, properties, completionHandler)\n * @returns {Subscriber} The Subscriber object for this stream. Stream control functions\n * are exposed through the Subscriber object.\n * @method #subscribe\n * @memberOf Session\n */\n\n\n this.subscribe = function (stream, targetElement, properties, completionHandler) {\n if (typeof targetElement === 'function') {\n completionHandler = targetElement;\n targetElement = undefined;\n properties = undefined;\n }\n\n if (typeof properties === 'function') {\n completionHandler = properties;\n properties = undefined;\n }\n\n completionHandler = completionHandler || function () {};\n\n if (!this.connection || !this.connection.connectionId) {\n dispatchOTError(otError(errors.NOT_CONNECTED, new Error('Session.subscribe :: Connection required to subscribe'), ExceptionCodes.UNABLE_TO_SUBSCRIBE), completionHandler);\n return undefined;\n }\n\n if (!stream) {\n dispatchOTError(otError(errors.INVALID_PARAMETER, new Error('Session.subscribe :: stream cannot be null'), ExceptionCodes.UNABLE_TO_SUBSCRIBE), completionHandler);\n return undefined;\n }\n\n if (!Object.prototype.hasOwnProperty.call(stream, 'streamId')) {\n dispatchOTError(otError(errors.INVALID_PARAMETER, new Error('Session.subscribe :: invalid stream object'), ExceptionCodes.UNABLE_TO_SUBSCRIBE), completionHandler);\n return undefined;\n }\n\n if (properties && properties.insertDefaultUI === false && targetElement) {\n dispatchOTError(otError(errors.INVALID_PARAMETER, new Error('You cannot specify a target element if insertDefaultUI is false'), ExceptionCodes.INVALID_PARAMETER), completionHandler);\n return undefined;\n }\n\n if (targetElement && targetElement.insertDefaultUI === false) {\n // You can omit the targetElement property if you set insertDefaultUI to false\n properties = targetElement;\n targetElement = undefined;\n }\n\n const subscriber = new Subscriber(targetElement, assign(properties || {}, {\n stream,\n session: this,\n // @todo this needs to go.\n analytics\n }), err => {\n if (err) {\n dispatchOTError(err, completionHandler);\n return;\n }\n\n completionHandler(null, subscriber);\n });\n sessionObjects.subscribers.add(subscriber);\n return subscriber;\n };\n /**\n * Stops subscribing to a stream in the session. the display of the audio-video stream is\n * removed from the local web page.\n *\n *
\n * The following code subscribes to other clients' streams. For each stream, the code also\n * adds an Unsubscribe link.\n *
\n *\n * var apiKey = \"\"; // Replace with your API key. See See https://tokbox.com/account\n * var sessionID = \"\"; // Replace with your own session ID.\n * // See https://tokbox.com/developer/guides/create-session/.\n * var token = \"\"; // Replace with a generated token.\n * // See https://tokbox.com/developer/guides/create-token/.\n * var streams = [];\n *\n * var session = OT.initSession(apiKey, sessionID);\n * session.on(\"streamCreated\", function(event) {\n * var stream = event.stream;\n * displayStream(stream);\n * });\n * session.connect(token);\n *\n * function displayStream(stream) {\n * var div = document.createElement('div');\n * div.setAttribute('id', 'stream' + stream.streamId);\n *\n * var subscriber = session.subscribe(stream, div);\n * subscribers.push(subscriber);\n *\n * var aLink = document.createElement('a');\n * aLink.setAttribute('href', 'javascript: unsubscribe(\"' + subscriber.id + '\")');\n * aLink.innerHTML = \"Unsubscribe\";\n *\n * var streamsContainer = document.getElementById('streamsContainer');\n * streamsContainer.appendChild(div);\n * streamsContainer.appendChild(aLink);\n *\n * streams = event.streams;\n * }\n *\n * function unsubscribe(subscriberId) {\n * console.log(\"unsubscribe called\");\n * for (var i = 0; i < subscribers.length; i++) {\n * var subscriber = subscribers[i];\n * if (subscriber.id == subscriberId) {\n * session.unsubscribe(subscriber);\n * }\n * }\n * }\n *\n *\n * @param {Subscriber} subscriber The Subscriber object to unsubcribe.\n *\n * @see subscribe()\n *\n * @method #unsubscribe\n * @memberOf Session\n */\n\n\n this.unsubscribe = function (subscriber) {\n if (!subscriber) {\n const errorMsg = 'OT.Session.unsubscribe: subscriber cannot be null';\n\n _logging.error(errorMsg);\n\n throw new Error(errorMsg);\n }\n\n if (!subscriber.stream) {\n _logging.warn('OT.Session.unsubscribe:: tried to unsubscribe a subscriber that had no stream');\n\n return false;\n }\n\n _logging.debug(`OT.Session.unsubscribe: subscriber ${subscriber.id}`);\n\n subscriber._destroy({\n reason: 'Unsubscribe'\n });\n\n return true;\n };\n /**\n * Returns an array of local Subscriber objects for a given stream.\n *\n * @param {Stream} stream The stream for which you want to find subscribers.\n *\n * @returns {Array} An array of {@link Subscriber} objects for the specified stream.\n *\n * @see unsubscribe()\n * @see Subscriber\n * @see StreamEvent\n * @method #getSubscribersForStream\n * @memberOf Session\n */\n\n\n this.getSubscribersForStream = function (stream) {\n return sessionObjects.subscribers.where({\n streamId: stream.id\n });\n };\n /**\n * Returns the local Publisher object for a given stream.\n *\n * @param { Stream } stream The stream for which you want to find the Publisher.\n *\n * @returns { Publisher } A Publisher object for the specified stream. Returns\n *
null
if there is no local Publisher object\n * for the specified stream.\n *\n * @see forceUnpublish()\n * @see Subscriber\n * @see StreamEvent\n *\n * @method #getPublisherForStream\n * @memberOf Session\n */\n\n\n this.getPublisherForStream = function (stream) {\n let streamId;\n let errorMsg;\n\n if (typeof stream === 'string') {\n streamId = stream;\n } else if (typeof stream === 'object' && stream && Object.hasOwnProperty.call(stream, 'id')) {\n streamId = stream.id;\n } else {\n errorMsg = 'Session.getPublisherForStream :: Invalid stream type';\n\n _logging.error(errorMsg);\n\n throw new Error(errorMsg);\n }\n\n return sessionObjects.publishers.where({\n streamId\n })[0];\n }; // Private Session API: for internal OT use only\n\n\n this._ = {\n getProxyUrl() {\n return proxyUrl;\n },\n\n isSocketReconnecting() {\n return _isSocketReconnecting;\n },\n\n getSocket() {\n return _socket;\n },\n\n reconnecting: function () {\n _isSocketReconnecting = true;\n this.dispatchEvent(new Events.SessionReconnectingEvent());\n }.bind(this),\n reconnected: function () {\n _isSocketReconnecting = false;\n this.dispatchEvent(new Events.SessionReconnectedEvent());\n\n if (this.sessionInfo.reconnection) {\n sessionObjects.publishers.where({\n session: this\n }).forEach(publisher => {\n publisher._.iceRestart();\n });\n\n if (!this.sessionInfo.p2pEnabled) {\n sessionObjects.subscribers.where({\n session: this\n }).forEach(subscriber => {\n subscriber._.iceRestart('socket reconnected');\n });\n }\n }\n }.bind(this),\n // session.on(\"signal\", function(SignalEvent))\n // session.on(\"signal:{type}\", function(SignalEvent))\n dispatchSignal: function (fromConnection, type, data) {\n const event = new Events.SignalEvent(type, data, fromConnection);\n event.target = this; // signal a \"signal\" event\n // NOTE: trigger doesn't support defaultAction, and therefore preventDefault.\n\n this.trigger(eventNames.SIGNAL, event); // signal an \"signal:{type}\" event\" if there was a custom type\n\n if (type) {\n this.dispatchEvent(event);\n }\n }.bind(this),\n\n subscriberChannelUpdate(stream, subscriber, channel, attributes) {\n if (!_socket) {\n _logging.warn('You are disconnected, cannot update subscriber properties ', attributes);\n\n return null;\n }\n\n return _socket.subscriberChannelUpdate(stream.id, subscriber.widgetId, channel.id, attributes);\n },\n\n streamCreate(name, streamId, audioFallbackEnabled, channels, minBitrate, sourceStreamId, completion) {\n if (!_socket) {\n _logging.warn('You are disconnected, cannot create stream ', streamId);\n\n return;\n }\n\n _socket.streamCreate(name, streamId, audioFallbackEnabled, channels, minBitrate, undefined, // Do not expose maxBitrate to the end user,\n sourceStreamId, completion);\n },\n\n streamDestroy(streamId, sourceStreamId) {\n if (!_socket) {\n _logging.warn('You are disconnected, cannot destroy stream ', streamId);\n\n return;\n }\n\n _socket.streamDestroy(streamId, sourceStreamId);\n },\n\n streamChannelUpdate(stream, channel, attributes) {\n if (!_socket) {\n _logging.warn('You are disconnected, cannot update stream properties ', attributes);\n\n return;\n }\n\n _socket.streamChannelUpdate(stream.id, channel.id, attributes);\n },\n\n // allow these variables to be overridden in unit tests\n // it's dirty, but I figure it can be cleaned up when we implement proper DI for our unit tests\n setSocket(newSocket) {\n _socket = newSocket;\n },\n\n setLogging(newLogging) {\n _logging = newLogging;\n },\n\n setState,\n\n setIceServers(iceServers) {\n if (!iceServers) {\n return;\n }\n\n _iceServerDetails = {\n iceServers: adaptIceServers(iceServers),\n timestamp: Date.now()\n };\n },\n\n getOtIceServerInfo() {\n const timeElapsed = !_iceServerDetails ? Infinity : Date.now() - _iceServerDetails.timestamp;\n const validDuration = 24 * 60 * 60 * 1000; // 24 hours\n\n const validTimeRemaining = validDuration - timeElapsed;\n const fiveMinutes = 5 * 60 * 1000;\n\n if (validTimeRemaining > fiveMinutes) {\n return Promise.resolve({\n transportPolicy: _session && _session.sessionInfo && _session.sessionInfo.clientCandidates,\n servers: _iceServerDetails && _iceServerDetails.iceServers\n });\n }\n\n if (!_token) {\n // @todo why would this happen before connect() where a token is set?\n // Need a token for getting ice servers from gsi\n return Promise.resolve({\n transportPolicy: _session && _session.sessionInfo && _session.sessionInfo.clientCandidates,\n servers: [],\n needRumorIceServersFallback: true\n });\n }\n\n const clientVersion = localStaticConfig.clientVersion;\n return getSessionInfo({\n anvilUrl: (this.staticConfig || localStaticConfig).apiUrl,\n sessionId,\n token: _token,\n connectionId: _connectionId,\n clientVersion\n }).then(sessionInfo => {\n _session._.setIceServers(sessionInfo.iceServers);\n\n if (!_iceServerDetails) {\n // No ice servers provided by gsi\n return {\n transportPolicy: _session.sessionInfo.clientCandidates,\n servers: [],\n needRumorIceServersFallback: true\n };\n }\n\n return {\n transportPolicy: _session && _session.sessionInfo && _session.sessionInfo.clientCandidates,\n servers: _iceServerDetails && _iceServerDetails.iceServers\n };\n });\n },\n\n getCodecFlags: () => ({\n h264: _session.sessionInfo.h264,\n vp9: _session.sessionInfo.vp9,\n vp8: _session.sessionInfo.vp8\n }),\n getVideoCodecsCompatible: webRTCStream => testRemovingVideoCodecs({\n RTCPeerConnection: windowMock.RTCPeerConnection,\n env: OTHelpers.env,\n stream: webRTCStream,\n codecFlags: _session._.getCodecFlags()\n }),\n getIceConfig: () => {\n if (!iceConfig) {\n return _session._.getOtIceServerInfo();\n }\n\n const transportPolicy = (() => {\n if (iceConfig && iceConfig.transportPolicy === 'relay') {\n return 'relay';\n }\n\n return _session.sessionInfo.clientCandidates;\n })();\n\n const otIceServersInfoPromise = iceConfig.includeServers === 'custom' ? Promise.resolve({\n servers: []\n }) : _session._.getOtIceServerInfo();\n return otIceServersInfoPromise.then(otIceServerInfo => assign(otIceServerInfo, {\n transportPolicy,\n servers: [...otIceServerInfo.servers, ...iceConfig.customServers]\n }));\n },\n forceMute: function (muteForcedInfo) {\n this.dispatchEvent(new Events.MuteForcedEvent(muteForcedInfo));\n }.bind(this),\n enableMuteOnEntry: () => {\n _muteOnEntry = true;\n },\n addSubscriberToPeerConnectionsQueue: (pc, message) => {\n _subscribersQueue.push({\n pc,\n message\n });\n\n if (!_subscribersQueueInterval) {\n _subscribersQueueInterval = setInterval(() => {\n const offer = _subscribersQueue.pop();\n\n if (offer) {\n offer.pc.processMessage('offer', offer.message);\n } else {\n clearInterval(_subscribersQueueInterval);\n _subscribersQueueInterval = null;\n }\n }, 100);\n }\n },\n disableMuteOnEntry: () => {\n _muteOnEntry = false;\n },\n privateEvents: new EventEmitter()\n };\n /**\n * Sends a signal to each client or a specified client in the session. Specify a\n * to
property of the signal
parameter to limit the signal to\n * be sent to a specific client; otherwise the signal is sent to each client connected to\n * the session.\n * \n * The following example sends a signal of type \"foo\" with a specified data payload (\"hello\")\n * to all clients connected to the session:\n *
\n * session.signal({\n * type: \"foo\",\n * data: \"hello\"\n * },\n * function(error) {\n * if (error) {\n * console.log(\"signal error: \" + error.message);\n * } else {\n * console.log(\"signal sent\");\n * }\n * }\n * );\n *\n *
\n * Calling this method without specifying a recipient client (by setting the to
\n * property of the signal
parameter) results in multiple signals sent (one to each\n * client in the session). For information on charges for signaling, see the\n * OpenTok pricing page.\n *
\n * The following example sends a signal of type \"foo\" with a data payload (\"hello\") to a\n * specific client connected to the session:\n *
\n * session.signal({\n * type: \"foo\",\n * to: recipientConnection; // a Connection object\n * data: \"hello\"\n * },\n * function(error) {\n * if (error) {\n * console.log(\"signal error: \" + error.message);\n * } else {\n * console.log(\"signal sent\");\n * }\n * }\n * );\n *\n *
\n * Add an event handler for the signal
event to listen for all signals sent in\n * the session. Add an event handler for the signal:type
event to listen for\n * signals of a specified type only (replace type
, in signal:type
,\n * with the type of signal to listen for). The Session object dispatches these events. (See\n * events.)\n *\n * @param {Object} signal An object that contains the following properties defining the signal:\n *
data
— (String) The data to send. The limit to the length of data\n * string is 8kB. Do not set the data string to null
or\n * undefined
.retryAfterReconnect
— (Boolean) Upon reconnecting to the session,\n * whether to send any signals that were initiated while disconnected. If your client loses its\n * connection to the OpenTok session, due to a drop in network connectivity, the client\n * attempts to reconnect to the session, and the Session object dispatches a\n * reconnecting
event. By default, signals initiated while disconnected are\n * sent when (and if) the client reconnects to the OpenTok session. You can prevent this by\n * setting the retryAfterReconnect
property to false
. (The default\n * value is true
.)\n * to
— (Connection) A Connection\n * object corresponding to the client that the message is to be sent to. If you do not\n * specify this property, the signal is sent to all clients connected to the session.type
— (String) The type of the signal. You can use the type to\n * filter signals when setting an event handler for the signal:type
event\n * (where you replace type
with the type string). The maximum length of the\n * type
string is 128 characters, and it must contain only letters (A-Z and a-z),\n * numbers (0-9), '-', '_', and '~'.Each property is optional. If you set none of the properties, you will send a signal\n * with no data or type to each client connected to the session.
\n *\n * @param {Function} completionHandler (Optional) A function that is called when sending the signal\n * succeeds or fails. This function takes one parameter —error
.\n * On success, the completionHandler
function is not passed any\n * arguments. On error, the function is passed an error
object, defined by the\n * Error class. The error
object has the following\n * properties:\n *\n * code
— (Number) An error code, which can be one of the following:\n * 400 | One of the signal properties is invalid. | \n *
404 | The client specified by the to property is not connected\n * to the session. | \n *
413 | The type string exceeds the maximum length (128 bytes),\n * or the data string exceeds the maximum size (8 kB). | \n *
500 | You are not connected to the OpenTok session. | \n *
message
— (String) A description of the error.Note that the completionHandler
success result (error == null
)\n * indicates that the options passed into the Session.signal()
method are valid\n * and the signal was sent. It does not indicate that the signal was successfully\n * received by any of the intended recipients.\n *\n * @method #signal\n * @memberOf Session\n * @see signal and signal:type events\n */\n\n this.signal = function (options, completion) {\n let _options = options;\n\n let _completion = completion || function () {};\n\n if (isFunction(_options)) {\n _completion = _options;\n _options = null;\n }\n\n if (this.isNot('connected')) {\n const notConnectedErrorMsg = 'Unable to send signal - you are not connected to the session.';\n dispatchOTError(otError(errors.NOT_CONNECTED, new Error(notConnectedErrorMsg), 500), _completion);\n return;\n }\n\n function getErrorNameFromCode(code) {\n switch (code) {\n case 400:\n case 413:\n return errors.INVALID_PARAMETER;\n\n case 429:\n return errors.RATE_LIMIT_EXCEEDED;\n\n case 404:\n return errors.NOT_FOUND;\n\n case 500:\n return errors.NOT_CONNECTED;\n\n case 403:\n return errors.PERMISSION_DENIED;\n\n case 2001:\n return errors.UNEXPECTED_SERVER_RESPONSE;\n\n default:\n return undefined;\n }\n }\n\n _socket.signal(_options, function (error) {\n if (error) {\n const errorName = getErrorNameFromCode(error.code);\n\n if (errorName) {\n error = otError(errorName, new Error(error.message), error.code);\n }\n\n _completion(error);\n\n return;\n }\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n _completion(error, ...args);\n }, this.logEvent);\n\n if (options && options.data && typeof options.data !== 'string') {\n _logging.warn('Signaling of anything other than Strings is deprecated. ' + 'Please update the data property to be a string.');\n }\n };\n /**\n * Forces a remote connection to leave the session.\n *\n *
\n * The forceDisconnect()
method is normally used as a moderation tool\n * to remove users from an ongoing session.\n *
\n * When a connection is terminated using the forceDisconnect()
,\n * sessionDisconnected
, connectionDestroyed
and\n * streamDestroyed
events are dispatched in the same way as they\n * would be if the connection had terminated itself using the disconnect()
\n * method. However, the reason
property of a {@link ConnectionEvent} or\n * {@link StreamEvent} object specifies \"forceDisconnected\"
as the reason\n * for the destruction of the connection and stream(s).\n *
\n * While you can use the forceDisconnect()
method to terminate your own connection,\n * calling the disconnect()
method is simpler.\n *
\n * The OT object dispatches an exception
event if the user's role\n * does not include permissions required to force other users to disconnect.\n * You define a user's role when you create the user token (see the\n * Token creation overview).\n * See ExceptionEvent and OT.on().\n *
\n * The application throws an error if the session is not connected.\n *
\n *\n *\n * connectionDestroyed
(ConnectionEvent) \n * On clients other than which had the connection terminated.\n *
\n * exception
(ExceptionEvent) \n * The user's role does not allow forcing other user's to disconnect (event.code =\n * 1530
),\n * or the specified stream is not publishing to the session (event.code = 1535
).\n *
\n * sessionDisconnected
\n * (SessionDisconnectEvent) \n * On the client which has the connection terminated.\n *
\n * streamDestroyed
(StreamEvent) \n * If streams are stopped as a result of the connection ending.\n *
connectionId
property of the Connection object).\n *\n * @param {Function} completionHandler (Optional) A function to be called when the call to the\n * forceDiscononnect()
method succeeds or fails. This function takes one parameter\n * — error
. On success, the completionHandler
function is\n * not passed any arguments. On error, the function is passed an error
object\n * parameter. The error
object, defined by the Error\n * class, has two properties: code
(an integer)\n * and message
(a string), which identify the cause of the failure.\n * Calling forceDisconnect()
fails if the role assigned to your\n * token is not \"moderator\"; in this case the error.name
property is set to\n * \"OT_PERMISSION_DENIED\"
. The following code adds a completionHandler
\n * when calling the forceDisconnect()
method:\n * \n * session.forceDisconnect(connection, function (error) {\n * if (error) {\n * console.log(error);\n * } else {\n * console.log(\"Connection forced to disconnect: \" + connection.id);\n * }\n * });\n *\n *\n * @method #forceDisconnect\n * @memberOf Session\n */\n\n\n this.forceDisconnect = function (connectionOrConnectionId, completionHandler) {\n if (this.isNot('connected')) {\n const notConnectedErrorMsg = 'Cannot call forceDisconnect(). You are not ' + 'connected to the session.';\n dispatchOTError(otError(errors.NOT_CONNECTED, new Error(notConnectedErrorMsg), ExceptionCodes.NOT_CONNECTED), completionHandler);\n return;\n }\n\n const connectionId = typeof connectionOrConnectionId === 'string' ? connectionOrConnectionId : connectionOrConnectionId.id;\n const invalidParameterErrorMsg = 'Invalid Parameter. Check that you have passed valid parameter values into the method call.';\n\n if (!connectionId) {\n dispatchOTError(otError(errors.INVALID_PARAMETER, new Error(invalidParameterErrorMsg), ExceptionCodes.INVALID_PARAMETER), completionHandler);\n return;\n }\n\n const notPermittedErrorMsg = 'This token does not allow forceDisconnect. ' + 'The role must be at least `moderator` to enable this functionality';\n\n if (!permittedTo('forceDisconnect')) {\n dispatchOTError(otError(errors.PERMISSION_DENIED, new Error(notPermittedErrorMsg), ExceptionCodes.UNABLE_TO_FORCE_DISCONNECT), completionHandler);\n return;\n }\n\n _socket.forceDisconnect(connectionId, function (err) {\n if (err) {\n dispatchOTError(otError(errors.INVALID_PARAMETER, new Error(invalidParameterErrorMsg), ExceptionCodes.INVALID_PARAMETER), completionHandler);\n } else if (completionHandler && isFunction(completionHandler)) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n completionHandler(err, ...args);\n }\n });\n };\n /**\n * Forces the publisher of the specified stream to stop publishing the stream.\n *\n *
\n * Calling this method causes the Session object to dispatch a streamDestroyed
\n * event on all clients that are subscribed to the stream (including the client that is\n * publishing the stream). The reason
property of the StreamEvent object is\n * set to \"forceUnpublished\"
.\n *
\n * The OT object dispatches an exception
event if the user's role\n * does not include permissions required to force other users to unpublish.\n * You define a user's role when you create the user token (see the\n * Token creation overview).\n * You pass the token string as a parameter of the connect()
method of the Session\n * object. See ExceptionEvent and\n * OT.on().\n *
\n * exception
(ExceptionEvent) \n * The user's role does not allow forcing other users to unpublish.\n *
\n * streamDestroyed
(StreamEvent) \n * The stream has been unpublished. The Session object dispatches this on all clients\n * subscribed to the stream, as well as on the publisher's client.\n *
forceUnpublish()
method succeeds or fails. This function takes one parameter\n * — error
. On success, the completionHandler
function is\n * not passed any arguments. On error, the function is passed an error
object\n * parameter. The error
object, defined by the Error\n * class, has two properties: code
(an integer)\n * and message
(a string), which identify the cause of the failure. Calling\n * forceUnpublish()
fails if the role assigned to your token is not \"moderator\";\n * in this case the error.name
property is set to \"OT_PERMISSION_DENIED\"
.\n * The following code adds a completion handler when calling the forceUnpublish()
\n * method:\n * \n * session.forceUnpublish(stream, function (error) {\n * if (error) {\n * console.log(error);\n * } else {\n * console.log(\"Connection forced to disconnect: \" + connection.id);\n * }\n * });\n *\n *\n * @method #forceUnpublish\n * @memberOf Session\n */\n\n\n this.forceUnpublish = function (streamOrStreamId, completionHandler) {\n if (completionHandler === void 0) {\n completionHandler = () => {};\n }\n\n const dispatchError = err => dispatchOTError(otError(err.name, new Error(err.msg), err.code), completionHandler);\n\n const invalidParameterError = {\n msg: 'Invalid Parameter. Check that you have passed valid parameter values into the method call.',\n code: ExceptionCodes.INVALID_PARAMETER,\n name: errors.INVALID_PARAMETER\n };\n const notConnectedError = {\n msg: 'Cannot call forceUnpublish(). You are not connected to the session.',\n code: ExceptionCodes.NOT_CONNECTED,\n name: errors.NOT_CONNECTED\n };\n const notPermittedError = {\n msg: 'This token does not allow forceUnpublish. The role must be at least `moderator` to enable this ' + 'functionality',\n code: ExceptionCodes.UNABLE_TO_FORCE_UNPUBLISH,\n name: errors.PERMISSION_DENIED\n };\n const notFoundError = {\n msg: 'The stream does not exist.',\n name: errors.NOT_FOUND\n };\n const unexpectedError = {\n msg: 'An unexpected error occurred.',\n name: errors.UNEXPECTED_SERVER_RESPONSE,\n code: ExceptionCodes.UNEXPECTED_SERVER_RESPONSE\n };\n\n if (!streamOrStreamId) {\n dispatchError(invalidParameterError);\n return;\n }\n\n if (_this.isNot('connected')) {\n dispatchError(notConnectedError);\n return;\n }\n\n const stream = getStream(streamOrStreamId);\n\n if (!permittedTo('forceUnpublish')) {\n // if this throws an error the handleJsException won't occur\n dispatchError(notPermittedError);\n return;\n }\n\n _socket.forceUnpublish(stream.id, err => {\n if (!err) {\n completionHandler(null);\n return;\n }\n\n if (err.code === '404') {\n dispatchError(notFoundError);\n } else if (err.code === '403') {\n dispatchError(notPermittedError);\n } else {\n dispatchError(unexpectedError);\n }\n });\n };\n /**\n * Forces a the publisher of a specified stream to mute its audio.\n *\n *
\n * Calling this method causes the Publisher object in the client publishing the\n * stream to dispatch a muteForced
event.\n *
\n * Check the capabilities.canForceMute
property of the Session object to see if\n * you can call this function successfully. This is reserved for clients that have connected\n * with a token that has been assigned the moderator role (see the\n * Token Creation\n * documentation).\n *\n * @param { Stream } stream The stream to be muted.\n *\n * @method #forceMuteStream\n * @memberOf Session\n * @see Session.capabilities\n *\n * @return {Promise} A promise that resolves with no value when the operation\n * completes successfully. The promise is rejected if there is an error. The\n * name
property of the Error object is set to one of the following\n * values, depending the type of error:\n *\n *
\n *
'OT_NOT_CONNECTED'
— The client is not connect to the session.'OT_INVALID_PARAMETER'
— if one or more of the passed parameters are invalid.'OT_PERMISSION_DENIED'
— The user's role does not\n * include permissions required to force other users to mute.\n * You define a user's role when you create the user token (see the\n * Token creation overview).\n * You pass the token string as a parameter of the connect()
method of the Session\n * object.\n * 'OT_NOT_FOUND'
— The stream wasn't found in this session.'OT_UNEXPECTED_SERVER_RESPONSE'
— in case of an internal server error.\n * Calling this method causes the Publisher objects in the clients publishing\n * the streams to dispatch a muteForced
events. The Session object\n * in each client connected to the session dispatches the muteForced
\n * event.\n *
\n * Check the capabilities.canForceMute
property of the Session object to see if\n * you can call this function successfully. This is reserved for clients that have connected\n * with a token that has been assigned the moderator role (see the\n * Token Creation\n * documentation).\n *\n * @param {Array} excludedStreams An array of Stream objects to be excluded from\n * being muted. Note that if you want to prevent the local client's published\n * streams from being muted, pass in the Stream object(s) for those stream(s).\n *\n * @method #forceMuteAll\n * @memberOf Session\n *\n * @return {Promise} A promise that resolves with no value when the operation\n * completes successfully. The promise is rejected if there is an error. The\n * name
property of the Error object is set to one of the following\n * values, depending the type of error:\n *\n *
\n *
'OT_NOT_CONNECTED'
— The client is not connect to the session.'INVALID_PARAMETER'
— if one or more of the passed parameters are invalid.'OT_PERMISSION_DENIED'
— The user's role does not\n * include permissions required to force other users to mute.\n * You define a user's role when you create the user token (see the\n * Token creation overview).\n * You pass the token string as a parameter of the connect()
method of the Session\n * object.\n * 'OT_UNEXPECTED_SERVER_RESPONSE'
— in case of an internal server error.\n * Calling this method causes the Session objects in the clients to dispatch a muteForced
event.\n * The Session object will contain an active
flag set to false.\n *
\n * Check the capabilities.canForceMute
property of the Session object to see if\n * you can call this function successfully. This is reserved for clients that have connected\n * with a token that has been assigned the moderator role (see the\n * Token Creation\n * documentation).\n *\n * @method #disableForceMute\n * @memberOf Session\n *\n * @return {Promise} A promise that resolves with no value when the operation\n * completes successfully. The promise is rejected if there is an error. The\n * name
property of the Error object is set to one of the following\n * values, depending the type of error:\n *\n *
\n *
'OT_NOT_CONNECTED'
— The client is not connect to the session.'OT_PERMISSION_DENIED'
— The user's role does not\n * include permissions required to force other users to mute.\n * You define a user's role when you create the user token (see the\n * Token creation overview).\n * You pass the token string as a parameter of the connect()
method of the Session\n * object.\n * 'OT_UNEXPECTED_SERVER_RESPONSE'
— in case of an internal server error.sessionConnected
event when your local client connects.)\n *\n * @name connectionCreated\n * @event\n * @memberof Session\n * @see ConnectionEvent\n * @see OT.initSession()\n */\n\n /**\n * A client, other than your own, has disconnected from the session.\n * @name connectionDestroyed\n * @event\n * @memberof Session\n * @see ConnectionEvent\n */\n\n /**\n * A moderator has forced clients publishing streams to the session to mute audio.\n *\n * @name muteForced\n * @event\n * @memberof Session\n * @see Event\n */\n\n /**\n * The client has connected to an OpenTok session. This event is dispatched asynchronously\n * in response to a successful call to the connect()
method of a Session\n * object. Before calling the connect()
method, initialize the session by\n * calling the OT.initSession()
method. For a code example and more details,\n * see Session.connect().\n * @name sessionConnected\n * @event\n * @memberof Session\n * @see SessionConnectEvent\n * @see Session.connect()\n * @see OT.initSession()\n */\n\n /**\n * The client has disconnected from the session. This event may be dispatched asynchronously\n * in response to a successful call to the disconnect()
method of the Session object.\n * The event may also be disptached if a session connection is lost inadvertantly, as in the case\n * of a lost network connection.\n * \n * The default behavior is that all Subscriber objects are unsubscribed and removed from the\n * HTML DOM. Each Subscriber object dispatches a destroyed
event when the element is\n * removed from the HTML DOM. If you call the preventDefault()
method in the event\n * listener for the sessionDisconnect
event, the default behavior is prevented, and\n * you can, optionally, clean up Subscriber objects using your own code.\n *
The reason
property of the event object indicates the reason for the client\n * being disconnected.\n * @name sessionDisconnected\n * @event\n * @memberof Session\n * @see Session.disconnect()\n * @see Session.forceDisconnect()\n * @see SessionDisconnectEvent\n */\n\n /**\n * The local client has lost its connection to an OpenTok session and is trying to reconnect.\n * This results from a loss in network connectivity. If the client can reconnect to the session,\n * the Session object dispatches a sessionReconnected
event. Otherwise, if the client\n * cannot reconnect, the Session object dispatches a sessionDisconnected
event.\n *
\n * In response to this event, you may want to provide a user interface notification, to let\n * the user know that the app is trying to reconnect to the session and that audio-video streams\n * are temporarily disconnected.\n *\n * @name sessionReconnecting\n * @event\n * @memberof Session\n * @see Event\n * @see sessionReconnected event\n * @see sessionDisconnected event\n */\n\n /**\n * The local client has reconnected to the OpenTok session after its connection was lost\n * temporarily. When the connection is lost, the Session object dispatches a\n * sessionReconnecting
event, prior to the sessionReconnected
\n * event. If the client cannot reconnect to the session, the Session object dispatches a\n * sessionDisconnected
event instead of this event.\n *
\n * Any existing publishers and subscribers are automatically reconnected when client reconnects\n * and the Session object dispatches this event.\n *
\n * Any signals sent by other clients while your client was disconnected are received upon\n * reconnecting. By default, signals initiated by the local client while disconnected\n * (by calling the Session.signal()
method) are sent when the client reconnects\n * to the OpenTok session. You can prevent this by setting the retryAfterReconnect
\n * property to false
in the signal
object you pass into the\n * Session.signal() method.\n *\n * @name sessionReconnected\n * @event\n * @memberof Session\n * @see Event\n * @see sessionReconnecting event\n * @see sessionDisconnected event\n */\n\n /**\n * A new stream, published by another client, has been created on this session. For streams\n * published by your own client, the Publisher object dispatches a streamCreated
\n * event. For a code example and more details, see {@link StreamEvent}.\n * @name streamCreated\n * @event\n * @memberof Session\n * @see StreamEvent\n * @see Session.publish()\n */\n\n /**\n * A stream from another client has stopped publishing to the session.\n *
\n * The default behavior is that all Subscriber objects that are subscribed to the stream are\n * unsubscribed and removed from the HTML DOM. Each Subscriber object dispatches a\n * destroyed
event when the element is removed from the HTML DOM. If you call the\n * preventDefault()
method in the event listener for the\n * streamDestroyed
event, the default behavior is prevented and you can clean up\n * a Subscriber object for the stream by calling its destroy()
method. See\n * Session.getSubscribersForStream().\n *
\n * For streams published by your own client, the Publisher object dispatches a\n * streamDestroyed
event.\n *
\n * For a code example and more details, see {@link StreamEvent}.\n * @name streamDestroyed\n * @event\n * @memberof Session\n * @see StreamEvent\n */\n\n /**\n * Defines an event dispatched when property of a stream has changed. This can happen in\n * in the following conditions:\n *
\n *
videoDisabled
and videoEnabled
events in all\n * conditions that cause the subscriber's stream to be disabled or enabled.\n * videoDimensions
property of the Stream object has\n * changed (see Stream.videoDimensions).\n * videoType
property of the Stream object has changed.\n * This can happen in a stream published by a mobile device. (See\n * Stream.videoType.)\n * data
— (String) The data string sent with the signal (if there\n * is one).from
— (Connection) The Connection\n * corresponding to the client that sent the signal.type
— (String) The type assigned to the signal (if there is\n * one).\n * You can register to receive all signals sent in the session, by adding an event handler\n * for the signal
event. For example, the following code adds an event handler\n * to process all signals sent in the session:\n *
\n * session.on(\"signal\", function(event) {\n * console.log(\"Signal sent from connection: \" + event.from.id);\n * console.log(\"Signal data: \" + event.data);\n * });\n *\n *
You can register for signals of a specfied type by adding an event handler for the\n * signal:type
event (replacing type
with the actual type string\n * to filter on).\n *\n * @name signal\n * @event\n * @memberof Session\n * @see Session.signal()\n * @see SignalEvent\n * @see signal:type event\n */\n\n /**\n * A signal of the specified type was received from the session. The\n * SignalEvent class defines this event object.\n * It includes the following properties:\n *
data
— (String) The data string sent with the signal.from
— (Connection) The Connection\n * corresponding to the client that sent the signal.type
— (String) The type assigned to the signal (if there is one).\n * \n * You can register for signals of a specfied type by adding an event handler for the\n * signal:type
event (replacing type
with the actual type string\n * to filter on). For example, the following code adds an event handler for signals of\n * type \"foo\":\n *
\n * session.on(\"signal:foo\", function(event) {\n * console.log(\"foo signal sent from connection \" + event.from.id);\n * console.log(\"Signal data: \" + event.data);\n * });\n *\n *
\n * You can register to receive all signals sent in the session, by adding an event\n * handler for the signal
event.\n *\n * @name signal:type\n * @event\n * @memberof Session\n * @see Session.signal()\n * @see SignalEvent\n * @see signal event\n */\n\n\n return Session;\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 310 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst ExceptionCodes = __webpack_require__(8);\n\nconst OTErrorClass = __webpack_require__(21);\n\nconst knownErrorCodes = [400, 403, 409, ExceptionCodes.CONNECTION_LIMIT_EXCEEDED];\nconst reasons = {\n CONNECT: 'ConnectToSession',\n SESSION_STATE: 'GetSessionState'\n};\n/*\n * Converts an error from RumorSocket to use generic exception codes\n * @param {Error} error - Error object with reason property\n * @return {Object} The converted error code and message\n * @property {number} code\n * @property {string} message\n */\n\nmodule.exports = function convertRumorError(error) {\n let code;\n let message;\n\n if (error.reason === reasons.CONNECT && error.code === ExceptionCodes.CONNECT_FAILED) {\n code = error.code;\n message = OTErrorClass.getTitleByCode(error.code);\n } else if (error.code && knownErrorCodes.indexOf(Number(error.code)) > -1) {\n code = ExceptionCodes.CONNECT_FAILED;\n\n switch (error.reason) {\n case reasons.CONNECT:\n switch (error.code) {\n case ExceptionCodes.CONNECTION_LIMIT_EXCEEDED:\n code = error.code;\n message = 'Cannot connect -- the limit for concurrent connections to the session ' + 'has been reached';\n break;\n\n default:\n message = 'Received error response to connection create message.';\n break;\n }\n\n break;\n\n case reasons.SESSION_STATE:\n message = 'Received error response to session read';\n break;\n\n default:\n message = '';\n break;\n }\n } else {\n code = ExceptionCodes.UNEXPECTED_SERVER_RESPONSE;\n message = 'Unexpected server response. Try this operation again later.';\n }\n\n return {\n code,\n message\n };\n};\n\n/***/ }),\n/* 311 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst env = __webpack_require__(2);\n\nconst hasOpenTokSupport = __webpack_require__(60).once;\n\nmodule.exports = () => hasOpenTokSupport() && (env.isChromiumEdge || ['Chrome', 'Safari', 'Firefox', 'Opera'].includes(env.name));\n\n/***/ }),\n/* 312 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function serializeMessage(message) {\n return JSON.stringify(message);\n};\n\n/***/ }),\n/* 313 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = (_ref) => {\n let logger = _ref.logger,\n obj = _ref.obj,\n eventNames = _ref.eventNames;\n eventNames.forEach(eventName => {\n obj.on(eventName, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return logger.spam('emitted', eventName, args);\n });\n });\n};\n\nexports.default = _default;\n\n/***/ }),\n/* 314 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable prefer-rest-params */\nconst isFunction = __webpack_require__(15);\n\nconst OTErrorClass = __webpack_require__(21);\n\nconst eventing = __webpack_require__(6);\n\nconst logging = __webpack_require__(1)('Dispatcher');\n\nconst RumorMessageTypes = __webpack_require__(171);\n\nconst unboxFromRumorMessage = __webpack_require__(705);\n\nconst Dispatcher = function Dispatcher() {\n eventing(this);\n this.callbacks = {};\n};\n\nmodule.exports = Dispatcher;\n\nDispatcher.prototype.registerCallback = function (transactionId, completion) {\n this.callbacks[transactionId] = completion;\n};\n\nDispatcher.prototype.triggerCallback = function (transactionId) {\n /* , arg1, arg2, argN-1, argN */\n if (!transactionId) {\n return;\n }\n\n const completion = this.callbacks[transactionId];\n\n if (completion && isFunction(completion)) {\n const args = Array.prototype.slice.call(arguments);\n args.shift();\n completion(...args);\n }\n\n delete this.callbacks[transactionId];\n};\n\nDispatcher.prototype.onClose = function (reason) {\n this.emit('close', reason);\n};\n\nDispatcher.prototype.onReconnected = function () {\n this.emit('reconnected');\n};\n\nDispatcher.prototype.onReconnecting = function () {\n this.emit('reconnecting');\n};\n\nDispatcher.prototype.dispatch = function (rumorMessage) {\n // The special casing of STATUS messages is ugly. Need to think about\n // how to better integrate this.\n if (rumorMessage.type === RumorMessageTypes.STATUS) {\n var _data$mute;\n\n logging.debug(rumorMessage);\n let error;\n\n if (rumorMessage.isError) {\n let message;\n\n if (typeof rumorMessage.data === 'string') {\n try {\n const data = JSON.parse(rumorMessage.data);\n\n if (data && typeof data === 'object') {\n message = data.reason;\n }\n } catch (e) {\n logging.warn('Failed to parse rumorMessage.data', e);\n }\n }\n\n error = new OTErrorClass(rumorMessage.status, message);\n }\n\n const data = rumorMessage.data ? JSON.parse(rumorMessage.data) : '';\n\n if (data == null ? void 0 : (_data$mute = data.mute) == null ? void 0 : _data$mute.active) {\n this.dispatchMuteOnEntry();\n }\n\n this.triggerCallback(rumorMessage.transactionId, error, rumorMessage);\n return;\n }\n\n const message = unboxFromRumorMessage(rumorMessage);\n logging.debug(`${message.signature}:`, message);\n\n switch (message.resource) {\n case 'session':\n this.dispatchSession(message);\n break;\n\n case 'connection':\n this.dispatchConnection(message);\n break;\n\n case 'stream':\n this.dispatchStream(message);\n break;\n\n case 'stream_channel':\n this.dispatchStreamChannel(message);\n break;\n\n case 'subscriber':\n this.dispatchSubscriber(message);\n break;\n\n case 'subscriber_channel':\n this.dispatchSubscriberChannel(message);\n break;\n\n case 'signal':\n this.dispatchSignal(message);\n break;\n\n case 'archive':\n this.dispatchArchive(message);\n break;\n\n case 'source':\n this.dispatchSource(message);\n break;\n\n default:\n logging.debug(`Type ${message.resource} is not currently implemented`);\n }\n};\n\nDispatcher.prototype.dispatchSession = function (message) {\n switch (message.method) {\n case 'read':\n this.emit('session#read', message.content, message.transactionId);\n break;\n\n case 'update':\n this.emit('session#update', message.content);\n break;\n\n default:\n logging.debug(`${message.signature} is not currently implemented`);\n }\n};\n\nDispatcher.prototype.dispatchMuteOnEntry = function () {\n this.emit('session#muted');\n};\n\nDispatcher.prototype.dispatchConnection = function (message) {\n switch (message.method) {\n case 'created':\n this.emit('connection#created', message.content);\n break;\n\n case 'deleted':\n this.emit('connection#deleted', message.params.connection, message.reason);\n break;\n\n default:\n logging.debug(`${message.signature} is not currently implemented`);\n }\n};\n\nDispatcher.prototype.dispatchStream = function (message) {\n switch (message.method) {\n case 'created':\n this.emit('stream#created', message.content, message.transactionId);\n break;\n\n case 'deleted':\n this.emit('stream#deleted', message.params.stream, message.reason, message.content);\n break;\n\n case 'updated':\n this.emit('stream#updated', message.params.stream, message.content);\n break;\n\n case 'update':\n this.emit('stream#update', message.params.stream, message.content);\n break;\n // The JSEP process\n\n case 'generateoffer':\n case 'answer':\n case 'pranswer':\n case 'offer':\n case 'candidate':\n this.dispatchJsep(message.method, message);\n break;\n\n default:\n logging.debug(`${message.signature} is not currently implemented`);\n }\n};\n\nDispatcher.prototype.dispatchStreamChannel = function (message) {\n switch (message.method) {\n case 'updated':\n this.emit('streamChannel#updated', message.params.stream, message.params.channel, message.content);\n break;\n\n default:\n logging.debug(`${message.signature} is not currently implemented`);\n }\n}; // Dispatch JSEP messages\n//\n// generateoffer:\n// Request to generate a offer for another Peer (or Prism). This kicks\n// off the JSEP process.\n//\n// answer:\n// generate a response to another peers offer, this contains our constraints\n// and requirements.\n//\n// pranswer:\n// a provisional answer, i.e. not the final one.\n//\n// candidate\n//\n//\n\n\nDispatcher.prototype.dispatchJsep = function (method, message) {\n this.emit(`jsep#${method}`, message.params.stream, message.fromAddress, message);\n};\n\nDispatcher.prototype.dispatchSubscriberChannel = function (message) {\n switch (message.method) {\n case 'updated':\n this.emit('subscriberChannel#updated', message.params.stream, message.params.channel, message.content);\n break;\n\n case 'update':\n // subscriberId, streamId, content\n this.emit('subscriberChannel#update', message.params.subscriber, message.params.stream, message.content);\n break;\n\n default:\n logging.debug(`${message.signature} is not currently implemented`);\n }\n};\n\nDispatcher.prototype.dispatchSubscriber = function (message) {\n switch (message.method) {\n case 'created':\n this.emit('subscriber#created', message.params.stream, message.fromAddress, message.content.id);\n break;\n\n case 'deleted':\n this.dispatchJsep('unsubscribe', message);\n this.emit('subscriber#deleted', message.params.stream, message.fromAddress);\n break;\n // The JSEP process\n\n case 'generateoffer':\n case 'answer':\n case 'pranswer':\n case 'offer':\n case 'candidate':\n this.dispatchJsep(message.method, message);\n break;\n\n default:\n logging.debug(`${message.signature} is not currently implemented`);\n }\n};\n\nDispatcher.prototype.dispatchSignal = function (message) {\n if (message.method !== 'signal') {\n logging.debug(`${message.signature} is not currently implemented`);\n return;\n }\n\n this.emit('signal', message.fromAddress, message.content);\n};\n\nDispatcher.prototype.dispatchArchive = function (message) {\n switch (message.method) {\n case 'created':\n this.emit('archive#created', message.content);\n break;\n\n case 'updated':\n this.emit('archive#updated', message.params.archive, message.content);\n break;\n\n default:\n }\n};\n\nDispatcher.prototype.dispatchSource = function (message) {\n switch (message.method) {\n case 'create':\n this.emit('source#create', message.params.source, message.params.stream, message.reason);\n break;\n\n case 'delete':\n this.emit('source#delete', message.params.source, message.params.stream, message.reason);\n break;\n\n default:\n logging.debug(`${message.signature} is not currently implemented`);\n }\n};\n\n/***/ }),\n/* 315 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-void */\nconst uuid = __webpack_require__(19);\n\nconst OTHelpers = __webpack_require__(5);\n\nconst hasBundleCapability = __webpack_require__(708);\n\nconst hasRTCPMuxCapability = __webpack_require__(709);\n\nconst serializeMessage = __webpack_require__(312);\n\nconst supportedCryptoScheme = __webpack_require__(710);\n\nconst staticConfig = __webpack_require__(44)().onlyLocal();\n\nconst Message = {};\nmodule.exports = Message;\nMessage.connections = {};\n\nMessage.connections.create = function (opt) {\n const apiKey = opt.apiKey;\n const sessionId = opt.sessionId;\n const connectionId = opt.connectionId;\n const connectionEventsSuppressed = opt.connectionEventsSuppressed;\n const capabilities = opt.capabilities;\n return serializeMessage({\n method: 'create',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/connection/${connectionId}`,\n content: {\n userAgent: OTHelpers.env.userAgent,\n clientVersion: staticConfig.clientVersion,\n capabilities: capabilities || [],\n connectionEventsSuppressed\n }\n });\n};\n\nMessage.connections.destroy = function (opt) {\n const apiKey = opt.apiKey;\n const sessionId = opt.sessionId;\n const connectionId = opt.connectionId;\n return serializeMessage({\n method: 'delete',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/connection/${connectionId}`,\n content: {}\n });\n};\n\nMessage.sessions = {};\n\nMessage.sessions.get = function (apiKey, sessionId) {\n return serializeMessage({\n method: 'read',\n uri: `/v2/partner/${apiKey}/session/${sessionId}`,\n content: {}\n });\n};\n\nMessage.streams = {};\n\nMessage.streams.get = function (apiKey, sessionId, streamId) {\n return serializeMessage({\n method: 'read',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/stream/${streamId}`,\n content: {}\n });\n};\n\nMessage.streams.channelFromOTChannel = function (channel) {\n const raptorChannel = {\n id: channel.id,\n type: channel.type,\n active: channel.active\n };\n\n if (channel.type === 'video') {\n raptorChannel.width = channel.width;\n raptorChannel.height = channel.height;\n raptorChannel.orientation = channel.orientation;\n raptorChannel.frameRate = channel.frameRate;\n\n if (channel.source !== 'default') {\n raptorChannel.source = channel.source;\n }\n\n raptorChannel.fitMode = channel.fitMode;\n }\n\n return raptorChannel;\n};\n\nMessage.streams.create = function (opt) {\n if (opt === void 0) {\n opt = {};\n }\n\n const _opt = opt,\n apiKey = _opt.apiKey,\n sessionId = _opt.sessionId,\n streamId = _opt.streamId,\n name = _opt.name,\n audioFallbackEnabled = _opt.audioFallbackEnabled,\n channels = _opt.channels,\n minBitrate = _opt.minBitrate,\n maxBitrate = _opt.maxBitrate,\n sourceStreamId = _opt.sourceStreamId;\n const messageContent = {\n id: streamId,\n name,\n audioFallbackEnabled,\n channel: channels.map(channel => Message.streams.channelFromOTChannel(channel))\n };\n\n if (minBitrate) {\n messageContent.minBitrate = Math.round(minBitrate);\n }\n\n if (maxBitrate) {\n messageContent.maxBitrate = Math.round(maxBitrate);\n }\n\n if (sourceStreamId) {\n messageContent.sourceStreamId = sourceStreamId;\n }\n\n return serializeMessage({\n method: 'create',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/stream/${streamId}`,\n content: messageContent\n });\n};\n\nMessage.streams.destroy = function (apiKey, sessionId, streamId, sourceStreamId) {\n const messageContent = {};\n\n if (sourceStreamId) {\n messageContent.sourceStreamId = sourceStreamId;\n }\n\n return serializeMessage({\n method: 'delete',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/stream/${streamId}`,\n content: messageContent\n });\n};\n\nMessage.streamChannels = {};\n\nMessage.streamChannels.update = function (apiKey, sessionId, streamId, channelId, attributes) {\n return serializeMessage({\n method: 'update',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/stream/${streamId}/channel/${channelId}`,\n content: attributes\n });\n};\n\nMessage.subscribers = {};\n\nMessage.subscribers.create = function (opt) {\n if (opt === void 0) {\n opt = {};\n }\n\n const _opt2 = opt,\n apiKey = _opt2.apiKey,\n sessionId = _opt2.sessionId,\n streamId = _opt2.streamId,\n subscriberId = _opt2.subscriberId,\n connectionId = _opt2.connectionId,\n channelsToSubscribeTo = _opt2.channelsToSubscribeTo,\n sourceStreamId = _opt2.sourceStreamId;\n const content = {\n id: subscriberId,\n connection: connectionId,\n keyManagementMethod: supportedCryptoScheme,\n bundleSupport: hasBundleCapability(),\n rtcpMuxSupport: hasRTCPMuxCapability()\n };\n\n if (channelsToSubscribeTo) {\n content.channel = channelsToSubscribeTo;\n }\n\n if (sourceStreamId) {\n content.sourceStreamId = sourceStreamId;\n }\n\n return serializeMessage({\n method: 'create',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/stream/${streamId}/subscriber/${subscriberId}`,\n content\n });\n};\n\nMessage.subscribers.destroy = function (apiKey, sessionId, streamId, subscriberId) {\n return serializeMessage({\n method: 'delete',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/stream/${streamId}/subscriber/${subscriberId}`,\n content: {}\n });\n};\n\nMessage.subscribers.update = function (apiKey, sessionId, streamId, subscriberId, attributes) {\n return serializeMessage({\n method: 'update',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/stream/${streamId}/subscriber/${subscriberId}`,\n content: attributes\n });\n};\n\nMessage.subscriberChannels = {};\n\nMessage.subscriberChannels.update = function (apiKey, sessionId, streamId, subscriberId, channelId, attributes) {\n return serializeMessage({\n method: 'update',\n uri: `/v2/partner/${apiKey}/session/${sessionId}/stream/${streamId}/subscriber/${subscriberId}/channel/${channelId}`,\n content: attributes\n });\n};\n\nMessage.signals = {};\n\nMessage.signals.create = function (apiKey, sessionId, toAddress, type, data) {\n const content = {};\n\n if (type !== void 0) {\n content.type = type;\n }\n\n if (data !== void 0) {\n content.data = data;\n }\n\n return serializeMessage({\n method: 'signal',\n uri: `/v2/partner/${apiKey}/session/${sessionId}${toAddress !== void 0 ? `/connection/${toAddress}` : ''}/signal/${uuid()}`,\n content\n });\n};\n\nMessage.forceMute = {};\n\nMessage.forceMute.update = options => {\n const apiKey = options.apiKey,\n sessionId = options.sessionId,\n streamId = options.streamId,\n active = options.active,\n excludedStreamIds = options.excludedStreamIds;\n const content = {\n reason: 'mute',\n channels: ['audio'],\n active,\n locked: false\n };\n\n if (excludedStreamIds) {\n content.exclusion = excludedStreamIds;\n }\n\n return serializeMessage({\n method: 'update',\n uri: `/v2/partner/${apiKey}/session/${sessionId}${streamId ? `/stream/${streamId}` : ''}`,\n content\n });\n};\n\n/***/ }),\n/* 316 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-useless-escape, no-underscore-dangle, no-void, no-prototype-builtins */\nconst clone = __webpack_require__(36);\n\nconst APIKEY = __webpack_require__(72);\n\nconst Connection = __webpack_require__(172);\n\nconst RaptorMessage = __webpack_require__(315);\n\nconst sessionTag = __webpack_require__(317);\n\nconst MAX_SIGNAL_DATA_LENGTH = 8192;\nconst MAX_SIGNAL_TYPE_LENGTH = 128; //\n// Error Codes:\n// 413 - Type too long\n// 400 - Type is invalid\n// 413 - Data too long\n// 400 - Data is invalid (can't be parsed as JSON)\n// 429 - Rate limit exceeded\n// 500 - Websocket connection is down\n// 404 - To connection does not exist\n// 400 - To is invalid\n//\n\nmodule.exports = function Signal(sessionId, fromConnectionId, options) {\n const isInvalidType = function isInvalidType(type) {\n // Our format matches the unreserved characters from the URI RFC:\n // http://www.ietf.org/rfc/rfc3986\n return !/^[a-zA-Z0-9\\-\\._~]+$/.exec(type);\n };\n\n const validateTo = function validateTo(toAddress) {\n if (!toAddress) {\n return {\n code: 400,\n reason: 'The signal to field was invalid. Either set it to a OT.Connection, ' + 'OT.Session, or omit it entirely'\n };\n }\n\n if (!(toAddress instanceof Connection || toAddress._tag === sessionTag)) {\n return {\n code: 400,\n reason: 'The To field was invalid'\n };\n }\n\n return null;\n };\n\n const validateType = function validateType(type) {\n let error = null;\n\n if (type === null || type === void 0) {\n error = {\n code: 400,\n reason: 'The signal type was null or undefined. Either set it to a String value or ' + 'omit it'\n };\n } else if (type.length > MAX_SIGNAL_TYPE_LENGTH) {\n error = {\n code: 413,\n reason: `The signal type was too long, the maximum length of it is ${MAX_SIGNAL_TYPE_LENGTH} characters`\n };\n } else if (isInvalidType(type)) {\n error = {\n code: 400,\n reason: 'The signal type was invalid, it can only contain letters, ' + 'numbers, \\'-\\', \\'_\\', and \\'~\\'.'\n };\n }\n\n return error;\n };\n\n const validateData = function validateData(data) {\n let error = null;\n\n if (data === null || data === void 0) {\n error = {\n code: 400,\n reason: 'The signal data was null or undefined. Either set it to a String value or ' + 'omit it'\n };\n } else {\n try {\n if (JSON.stringify(data).length > MAX_SIGNAL_DATA_LENGTH) {\n error = {\n code: 413,\n reason: `The data field was too long, the maximum size of it is ${MAX_SIGNAL_DATA_LENGTH} characters`\n };\n }\n } catch (e) {\n error = {\n code: 400,\n reason: 'The data field was not valid JSON'\n };\n }\n }\n\n return error;\n };\n\n const validateRetryAfterReconnect = function validateRetryAfterReconnect(retryAfterReconnect) {\n let error = null;\n\n if (!(retryAfterReconnect === true || retryAfterReconnect === false)) {\n error = {\n code: 400,\n reason: 'The signal retryAfterReconnect was not true or false. Either set it to a Boolean ' + 'value or omit it'\n };\n }\n\n return error;\n };\n\n this.toRaptorMessage = function () {\n let to = this.to;\n\n if (to && typeof to !== 'string') {\n to = to.id;\n }\n\n return RaptorMessage.signals.create(APIKEY.value, sessionId, to, this.type, this.data);\n };\n\n this.toHash = function () {\n return options;\n };\n\n this.error = null;\n this.retryAfterReconnect = true;\n\n if (options) {\n if (options.hasOwnProperty('data')) {\n this.data = clone(options.data);\n this.error = validateData(this.data);\n }\n\n if (options.hasOwnProperty('to')) {\n this.to = options.to;\n\n if (!this.error) {\n this.error = validateTo(this.to);\n }\n }\n\n if (options.hasOwnProperty('type')) {\n if (!this.error) {\n this.error = validateType(options.type);\n }\n\n this.type = options.type;\n }\n\n if (options.hasOwnProperty('retryAfterReconnect')) {\n if (!this.error) {\n this.error = validateRetryAfterReconnect(options.retryAfterReconnect);\n }\n\n this.retryAfterReconnect = options.retryAfterReconnect;\n }\n }\n\n this.valid = this.error === null;\n};\n\n/***/ }),\n/* 317 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// This is used to break the dependency Raptor had on Session. It only needs to be able to know\n// whether an object is an instanceof a Session. The dependency was an issue for node because\n// Session depends on get_user_media.js which doesn't work in node.\nmodule.exports = {};\n\n/***/ }),\n/* 318 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(12));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(13));\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable no-shadow, prefer-rest-params, prefer-spread, no-param-reassign */\n\n/* eslint-disable no-mixed-operators, no-cond-assign, one-var */\nconst Archive = __webpack_require__(319);\n\nconst now = __webpack_require__(48);\n\nconst Connection = __webpack_require__(172);\n\nconst DelayedEventQueue = __webpack_require__(713);\n\nconst Dispatcher = __webpack_require__(314);\n\nconst logging = __webpack_require__(1)('SessionDispatcher');\n\nconst sessionObjects = __webpack_require__(20);\n\nconst Stream = __webpack_require__(170);\n\nconst StreamChannel = __webpack_require__(149);\n\nconst getMediaModeBySourceStreamId = __webpack_require__(167);\n\nfunction constructBareConnection(fromAddress) {\n return {\n id: fromAddress,\n creationTime: new Date().getTime(),\n data: {},\n capablities: {},\n permissions: []\n };\n}\n\nfunction parseStream(dict, session) {\n const channel = dict.channel.map(channel => new StreamChannel(channel));\n const connectionId = dict.connectionId ? dict.connectionId : dict.connection.id;\n return new Stream(dict.id, dict.name, dict.creationTime, session.connections.get(connectionId), session, channel);\n}\n\nfunction parseAndAddStreamToSession(streamParams, session) {\n if (session.streams.has(streamParams.id)) {\n return undefined;\n }\n\n const stream = parseStream(streamParams, session);\n session.streams.add(stream);\n return stream;\n}\n\nfunction parseArchive(archiveParams) {\n return new Archive(archiveParams.id, archiveParams.name, archiveParams.status);\n}\n\nfunction parseAndAddArchiveToSession(archiveParams, session) {\n if (session.archives.has(archiveParams.id)) {\n return undefined;\n }\n\n const archive = parseArchive(archiveParams);\n session.archives.add(archive);\n return archive;\n}\n\nconst DelayedSessionEvents = function DelayedSessionEvents(dispatcher) {\n const eventQueues = {};\n\n this.enqueue = function enqueue()\n /* key, arg1, arg2, ..., argN */\n {\n const key = arguments[0];\n const eventArgs = Array.prototype.slice.call(arguments, 1);\n\n if (!eventQueues[key]) {\n eventQueues[key] = new DelayedEventQueue(dispatcher);\n }\n\n eventQueues[key].enqueue.apply(eventQueues[key], eventArgs);\n };\n\n this.triggerConnectionCreated = function triggerConnectionCreated(connection) {\n if (eventQueues[`connectionCreated${connection.id}`]) {\n eventQueues[`connectionCreated${connection.id}`].triggerAll();\n }\n };\n\n this.triggerSessionConnected = function triggerSessionConnected(connections) {\n if (eventQueues.sessionConnected) {\n eventQueues.sessionConnected.triggerAll();\n }\n\n connections.forEach(function (connection) {\n this.triggerConnectionCreated(connection);\n }, this);\n };\n};\n\nconst unconnectedStreams = {};\n\nmodule.exports = function SessionDispatcher(session, _temp) {\n let _ref = _temp === void 0 ? {} : _temp,\n connectionEventsSuppressed = _ref.connectionEventsSuppressed;\n\n const dispatcher = new Dispatcher();\n let sessionStateReceived = false;\n const delayedSessionEvents = new DelayedSessionEvents(dispatcher);\n dispatcher.on('reconnecting', () => {\n session._.reconnecting();\n });\n dispatcher.on('reconnected', () => {\n session._.reconnected();\n });\n dispatcher.on('close', reason => {\n const connection = session.connection;\n\n if (!connection) {\n return;\n }\n\n if (connection.destroyedReason()) {\n logging.debug(`${'Socket was closed but the connection had already ' + 'been destroyed. Reason: '}${connection.destroyedReason()}`);\n return;\n }\n\n connection.destroy(reason);\n }); // This method adds connections to the session both on a connection#created and\n // on a session#read. In the case of session#read sessionRead is set to true and\n // we include our own connection.\n\n const addConnection = function addConnection(connection, sessionRead) {\n if (session.connections.has(connection.id)) {\n // Don't add a duplicate connection, since we add them not only on connection#created, but\n // also when stream#created or signal has an associated connection.\n return session.connections.get(connection.id);\n }\n\n connection = Connection.fromHash(connection);\n\n if (sessionRead || session.connection && connection.id !== session.connection.id) {\n session.connections.add(connection);\n delayedSessionEvents.triggerConnectionCreated(connection);\n }\n\n Object.keys(unconnectedStreams).forEach(streamId => {\n const stream = unconnectedStreams[streamId];\n\n if (stream && connection.id === stream.connection.id) {\n // dispatch streamCreated event now that the connectionCreated has been dispatched\n parseAndAddStreamToSession(stream, session);\n delete unconnectedStreams[stream.id];\n const payload = {\n debug: sessionRead ? 'connection came in session#read' : 'connection came in connection#created',\n streamId: stream.id,\n connectionId: connection.id\n };\n session.logEvent('streamCreated', 'warning', payload);\n }\n });\n return connection;\n };\n\n dispatcher.on('session#read', (content, transactionId) => {\n let connection;\n const state = {};\n state.streams = [];\n state.connections = [];\n state.archives = [];\n content.connection.forEach(connectionParams => {\n connection = addConnection(connectionParams, true);\n state.connections.push(connection);\n });\n content.stream.forEach(streamParams => {\n state.streams.push(parseAndAddStreamToSession(streamParams, session));\n });\n (content.archive || content.archives).forEach(archiveParams => {\n state.archives.push(parseAndAddArchiveToSession(archiveParams, session));\n });\n dispatcher.triggerCallback(transactionId, null, state);\n sessionStateReceived = true;\n delayedSessionEvents.triggerSessionConnected(session.connections);\n });\n dispatcher.on('session#update', content => {\n if (content.reason !== 'mute') {\n logging.debug('session#update that handle this reason is not currently implemented');\n return;\n }\n\n const active = content.active === true;\n\n session._.forceMute({\n active\n });\n\n if (active) {\n session._.enableMuteOnEntry();\n } else {\n session._.disableMuteOnEntry();\n }\n });\n dispatcher.on('session#muted', () => {\n session._.enableMuteOnEntry();\n\n session._.forceMute({\n active: true\n });\n });\n dispatcher.on('connection#created', connection => {\n addConnection(connection);\n });\n dispatcher.on('connection#deleted', (connection, reason) => {\n connection = session.connections.get(connection);\n\n if (!connection) {\n logging.warn('A connection was deleted that we do not know about');\n return;\n }\n\n connection.destroy(reason);\n });\n dispatcher.on('stream#created', (content, transactionId) => {\n const streamId = content.id,\n sourceStreamId = content.sourceStreamId,\n connection = content.connection;\n let stream;\n\n if (connectionEventsSuppressed) {\n if (connection == null || connection.id == null) {\n session.logEvent('SessionDispatcher:stream#created', 'Event', {\n connection,\n info: 'Stream did not contain a connection object. Event ignored'\n });\n return;\n }\n\n addConnection(connection);\n }\n\n const connectionId = content.connectionId || connection.id;\n\n if (session.connections.has(connectionId)) {\n stream = parseAndAddStreamToSession(content, session);\n } else {\n unconnectedStreams[streamId] = content;\n const payload = {\n debug: 'eventOrderError -- streamCreated event before connectionCreated',\n streamId,\n sourceStreamId: getMediaModeBySourceStreamId(sourceStreamId)\n };\n session.logEvent('streamCreated', 'warning', payload);\n }\n\n if (stream) {\n if (stream.publisher) {\n stream.publisher.setStream(stream);\n }\n\n dispatcher.triggerCallback(transactionId, null, stream);\n } else if (session.sessionInfo.isAdaptiveEnabled && sourceStreamId === 'P2P') {\n // A P2P stream was created in an adaptive session, so let's request a new subscriber for it\n sessionObjects.subscribers.where({\n streamId\n }).forEach(subscriber => {\n subscriber._.startRoutedToRelayedTransition();\n });\n }\n });\n dispatcher.on('stream#deleted', (streamId, reason, content) => {\n const stream = session.streams.get(streamId);\n const sourceStreamId = content.sourceStreamId;\n const subscribers = sessionObjects.subscribers;\n const isAdaptiveEnabled = session.sessionInfo.isAdaptiveEnabled;\n const isAdaptiveP2pStream = isAdaptiveEnabled && sourceStreamId === 'P2P';\n\n if (!stream && !isAdaptiveP2pStream) {\n // Stream has been previously deleted\n return;\n }\n\n if (isAdaptiveP2pStream) {\n // In adaptive sessions, when the P2P stream is destroyed we need to start the transition\n // from relayed to routed.\n subscribers.where({\n streamId\n }).forEach(subscriber => {\n subscriber._.startRelayedToRoutedTransition();\n });\n } else {\n stream.destroy(reason);\n }\n });\n dispatcher.on('stream#updated', (streamId, content) => {\n const stream = session.streams.get(streamId);\n\n if (!stream) {\n logging.error(`A stream does not exist with the id of ${streamId}, for stream#updated message!`); // @todo error\n\n return;\n }\n\n stream._.update(content);\n });\n dispatcher.on('stream#update', (streamId, content) => {\n const stream = session.streams.get(streamId);\n const reason = content.reason,\n active = content.active;\n\n if (!stream) {\n logging.error(`A stream does not exist with the id of ${streamId}, for stream#updated message!`); // @todo error\n\n return;\n }\n\n if (reason !== 'mute') {\n logging.debug('stream#update that handle this reason is not currently implemented');\n return;\n }\n\n if (active) {\n stream._.forceMute(content);\n }\n });\n dispatcher.on('streamChannel#updated', (streamId, channelId, content) => {\n let stream;\n\n if (!(streamId && (stream = session.streams.get(streamId)))) {\n logging.error('Unable to determine streamId, or the stream does not ' + 'exist, for streamChannel message!'); // @todo error\n\n return;\n }\n\n stream._.updateChannel(channelId, content);\n }); // Dispatch JSEP messages\n //\n // generateoffer:\n // Request to generate a offer for another Peer (or Prism). This kicks\n // off the JSEP process.\n //\n // answer:\n // generate a response to another peers offer, this contains our constraints\n // and requirements.\n //\n // pranswer:\n // a provisional answer, i.e. not the final one.\n //\n // candidate\n //\n //\n\n const jsepHandler = (method, streamId, fromAddress, message) => {\n let subscriberFilter;\n let actors;\n const hasStreamId = {\n streamId\n };\n const subscribers = sessionObjects.subscribers;\n const publishers = sessionObjects.publishers;\n\n if (message.params.subscriber) {\n subscriberFilter = {\n widgetId: message.params.subscriber\n };\n } else {\n // if we don't know the subscriber, we will just match the stream id\n subscriberFilter = hasStreamId;\n } // Determine which subscriber/publisher objects should receive this message.\n\n\n switch (method) {\n case 'offer':\n actors = [].concat(subscribers.where(subscriberFilter), publishers.where(hasStreamId)).slice(0, 1);\n break;\n\n case 'answer':\n case 'pranswer':\n actors = [].concat(publishers.where(hasStreamId), subscribers.where(subscriberFilter)).slice(0, 1);\n break;\n\n case 'generateoffer':\n case 'unsubscribe':\n actors = publishers.where(hasStreamId);\n break;\n\n case 'candidate':\n actors = [].concat(subscribers.where(subscriberFilter), publishers.where(hasStreamId));\n break;\n\n default:\n logging.debug(`jsep#${method} is not currently implemented`);\n return;\n }\n\n if (actors.length === 0) {\n return;\n }\n\n let fromConnection = session.connections.get(fromAddress);\n\n if (!fromConnection && fromAddress.match(/^symphony\\./)) {\n fromConnection = Connection.fromHash({\n id: fromAddress,\n creationTime: Math.floor(now())\n });\n session.connections.add(fromConnection);\n }\n\n actors.forEach( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(actor) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n _context.next = 3;\n return actor.processMessage(method, fromAddress, message);\n\n case 3:\n _context.next = 8;\n break;\n\n case 5:\n _context.prev = 5;\n _context.t0 = _context[\"catch\"](0);\n logging.error('Error occurred during processMessage', _context.t0);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[0, 5]]);\n }));\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n }());\n };\n\n dispatcher.on('jsep#offer', jsepHandler.bind(null, 'offer'));\n dispatcher.on('jsep#answer', jsepHandler.bind(null, 'answer'));\n dispatcher.on('jsep#pranswer', jsepHandler.bind(null, 'pranswer'));\n dispatcher.on('jsep#generateoffer', jsepHandler.bind(null, 'generateoffer'));\n dispatcher.on('jsep#unsubscribe', jsepHandler.bind(null, 'unsubscribe'));\n dispatcher.on('jsep#candidate', jsepHandler.bind(null, 'candidate'));\n dispatcher.on('subscriberChannel#updated', (streamId, channelId, content) => {\n if (!streamId || !session.streams.has(streamId)) {\n logging.error('Unable to determine streamId, or the stream does not ' + 'exist, for subscriberChannel#updated message!'); // @todo error\n\n return;\n }\n\n session.streams.get(streamId)._.updateChannel(channelId, content);\n });\n dispatcher.on('subscriberChannel#update', (subscriberId, streamId, content) => {\n if (!streamId || !session.streams.has(streamId)) {\n logging.error('Unable to determine streamId, or the stream does not ' + 'exist, for subscriberChannel#update message!'); // @todo error\n\n return;\n } // Hint to update for congestion control from the Media Server\n\n\n if (!sessionObjects.subscribers.has(subscriberId)) {\n logging.error('Unable to determine subscriberId, or the subscriber ' + 'does not exist, for subscriberChannel#update message!'); // @todo error\n\n return;\n } // We assume that an update on a Subscriber channel is to disableVideo\n // we may need to be more specific in the future\n\n\n sessionObjects.subscribers.get(subscriberId).disableVideo(content.active);\n }); // Note: subscriber#created and subscriber#deleted messages are available but we currently\n // don't have a use for them.\n\n dispatcher.on('signal', (fromAddress, content) => {\n if (connectionEventsSuppressed) {\n let connection = content.connection || content.fromConnection;\n\n if (connection == null || connection.id == null) {\n connection = constructBareConnection(fromAddress);\n session.logEvent('SessionDispatcher:Signal', 'Event', {\n fromAddress,\n connection: content.connection,\n fromConnection: content.fromConnection,\n info: 'Signal did not contain a connection object. One has been constructed',\n constructedConnection: connection\n });\n }\n\n addConnection(connection);\n }\n\n const signalType = content.type;\n const data = content.data;\n const fromConnection = session.connections.get(fromAddress);\n\n if (session.connection && fromAddress === session.connection.connectionId) {\n if (sessionStateReceived) {\n session._.dispatchSignal(fromConnection, signalType, data);\n } else {\n delayedSessionEvents.enqueue('sessionConnected', 'signal', fromAddress, signalType, data);\n }\n } else if (session.connections.get(fromAddress)) {\n session._.dispatchSignal(fromConnection, signalType, data);\n } else if (fromAddress === '') {\n // Server originated signal\n session._.dispatchSignal(null, signalType, data);\n } else {\n delayedSessionEvents.enqueue(`connectionCreated${fromAddress}`, 'signal', fromAddress, signalType, data);\n }\n });\n dispatcher.on('archive#created', archive => {\n parseAndAddArchiveToSession(archive, session);\n });\n dispatcher.on('archive#updated', (archiveId, update) => {\n const archive = session.archives.get(archiveId);\n\n if (!archive) {\n logging.error(`An archive does not exist with the id of ${archiveId}, for archive#updated message!`); // @todo error\n\n return;\n }\n\n archive._.update(update);\n });\n dispatcher.on('source#create', (sourceStreamId, streamId, reason) => {\n const mediaMode = getMediaModeBySourceStreamId(sourceStreamId);\n session.logEvent('SessionDispatcher:source#create', 'Event', {\n sourceStreamId: mediaMode,\n streamId,\n reason\n });\n logging.debug('Received a request from RUMOR to start a transition to ' + `${sourceStreamId} for the stream ID ${streamId} with the reason: ${reason}`);\n sessionObjects.publishers.where({\n streamId\n }).forEach(publisher => {\n publisher._.startRoutedToRelayedTransition();\n });\n });\n dispatcher.on('source#delete', (sourceStreamId, streamId, reason) => {\n session.logEvent('SessionDispatcher:source#delete', 'Event', {\n sourceStreamId: getMediaModeBySourceStreamId(sourceStreamId),\n streamId,\n reason\n });\n logging.debug('Received a request from RUMOR to start a transition from P2P ' + `to MANTIS for the stream ID ${streamId} with the reason: ${reason}`);\n sessionObjects.publishers.where({\n streamId\n }).forEach(publisher => {\n publisher._.startRelayedToRoutedTransition();\n });\n });\n return dispatcher;\n};\n\n/***/ }),\n/* 319 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst Events = __webpack_require__(22)();\n\nconst eventing = __webpack_require__(6);\n\nmodule.exports = function Archive(id, name, status) {\n this.id = id;\n this.name = name;\n this.status = status;\n this._ = {};\n eventing(this); // Mass update, called by Raptor.Dispatcher\n\n this._.update = attributes => {\n Object.keys(attributes).forEach(key => {\n const oldValue = this[key];\n this[key] = attributes[key];\n const event = new Events.ArchiveUpdatedEvent(this, key, oldValue, this[key]);\n this.dispatchEvent(event);\n });\n };\n\n this.destroy = () => {};\n};\n\n/***/ }),\n/* 320 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst _require = __webpack_require__(23)(),\n getAudioOutputMediaDevices = _require.getAudioOutputMediaDevices;\n/**\n * Enumerates the audio output devices (such as speakers) available to the browser.\n *
\n * The method returns a Promise which resolves an array of objects corresponding to\n * available audio output devices. Each object has two properties: deviceId
\n * and label
, each of which are strings.\n *
\n * The deviceId
property is a unique ID for the device. You can pass\n * the deviceId
as the parameter of the \n * OT.setAudioOutputDevice() method. The deviceId
\n * property is set to undefined if the user has not previously granted access to\n * a camera and microphone. In the case there are no audio output devices available, the property\n * is set to `null`.\n *
\n *
\n * Thelabel
property identifies the device. The label
\n * property is set to an empty string if the user has not previously granted access to\n * a camera and microphone.\n * \n * Note: The browser may limit the number of returned audio output devices\n * to one before the user has granted access to a camera or microphone.\n *\n * @see OT.setAudioOutputDevice()\n * @see OT.getActiveAudioOutputDevice()\n * @method OT.getAudioOutputDevices\n * @memberof OT\n */\n\n\nmodule.exports = () => getAudioOutputMediaDevices();\n\n/***/ }),\n/* 321 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst _require = __webpack_require__(23)(),\n getActiveAudioOutputDevice = _require.getActiveAudioOutputDevice;\n/**\n * Returns a Promise that resolves the current audio output device.\n * \n * The method returns a Promise which resolves an object that has two properties:\n * deviceId
and label
, each of which are strings.\n *
\n * The deviceId
property is a unique ID for the device. You can pass\n * the deviceId
as the parameter of the \n * OT.setAudioOutputDevice() method. The deviceId
\n * property is set to undefined if the user has not previously granted access to\n * a camera and microphone.\n *
\n *
\n * Thelabel
property identifies the device. The label
\n * property is set to an empty string if the user has not previously granted access to\n * a camera and microphone.\n * \n *\n * @see OT.getAudioOutputDevices()\n * @see OT.setAudioOutputDevice()\n * @method OT.getActiveAudioOutputDevice\n * @memberof OT\n */\n\n\nmodule.exports = () => getActiveAudioOutputDevice();\n\n/***/ }),\n/* 322 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(Promise) {\n\nvar _interopRequireDefault = __webpack_require__(3);\n\nvar _regenerator = _interopRequireDefault(__webpack_require__(12));\n\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(13));\n\nconst sessionObjects = __webpack_require__(20);\n\nconst _require = __webpack_require__(105),\n setCurrentAudioOutputDeviceId = _require.setCurrentAudioOutputDeviceId;\n\nconst getActiveAudioOutputDevice = __webpack_require__(321);\n\nconst _require2 = __webpack_require__(23)(),\n getDefaultAudioOutputDeviceId = _require2.getDefaultAudioOutputDeviceId,\n getAudioOutputMediaDevices = _require2.getAudioOutputMediaDevices;\n\nconst noop = __webpack_require__(294);\n\nconst AnalyticsHelper = __webpack_require__(27);\n\nconst analytics = new AnalyticsHelper();\n\nconst logUpdateSubscriberSinkId = (variation, payload) => {\n analytics.logEvent({\n action: 'updateSubscribersSinkId',\n variation,\n payload\n });\n};\n\nconst updateSinkId = newDeviceId => {\n const updateSubscribersSinkId = sessionObjects.subscribers.map(subscriber => subscriber._.setSinkId(newDeviceId));\n return Promise.all(updateSubscribersSinkId);\n};\n\nconst rollbackToDevice = /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(rollbackDeviceId) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return noop();\n\n case 2:\n _context.prev = 2;\n logUpdateSubscriberSinkId('Attempt', {\n deviceId: rollbackDeviceId\n });\n _context.next = 6;\n return updateSinkId(rollbackDeviceId);\n\n case 6:\n logUpdateSubscriberSinkId('Success', {\n deviceId: rollbackDeviceId\n });\n _context.next = 13;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](2);\n logUpdateSubscriberSinkId('Failure', {\n deviceId: rollbackDeviceId,\n error: _context.t0 == null ? void 0 : _context.t0.message\n });\n throw _context.t0;\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee, null, [[2, 9]]);\n }));\n\n return function rollbackToDevice(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\nconst rollbackToDefaultDevice = /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var devices, defaultDeviceId;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return getAudioOutputMediaDevices();\n\n case 2:\n devices = _context2.sent;\n defaultDeviceId = getDefaultAudioOutputDeviceId(devices);\n _context2.prev = 4;\n _context2.next = 7;\n return rollbackToDevice(defaultDeviceId);\n\n case 7:\n setCurrentAudioOutputDeviceId(defaultDeviceId);\n _context2.next = 12;\n break;\n\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](4);\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, null, [[4, 10]]);\n }));\n\n return function rollbackToDefaultDevice() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nconst onUpdateSubscriberSinkIdError = /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var currentDevice;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return getActiveAudioOutputDevice();\n\n case 2:\n currentDevice = _context3.sent;\n _context3.prev = 3;\n _context3.next = 6;\n return rollbackToDevice(currentDevice.deviceId);\n\n case 6:\n _context3.next = 12;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3[\"catch\"](3);\n _context3.next = 12;\n return rollbackToDefaultDevice();\n\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3, null, [[3, 8]]);\n }));\n\n return function onUpdateSubscriberSinkIdError() {\n return _ref3.apply(this, arguments);\n };\n}();\n\nmodule.exports = /*#__PURE__*/function () {\n var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(deviceId) {\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n logUpdateSubscriberSinkId('Attempt', {\n deviceId\n });\n _context4.next = 4;\n return updateSinkId(deviceId);\n\n case 4:\n logUpdateSubscriberSinkId('Success', {\n deviceId\n });\n setCurrentAudioOutputDeviceId(deviceId);\n _context4.next = 14;\n break;\n\n case 8:\n _context4.prev = 8;\n _context4.t0 = _context4[\"catch\"](0);\n logUpdateSubscriberSinkId('Failure', {\n deviceId,\n error: _context4.t0 == null ? void 0 : _context4.t0.message\n });\n _context4.next = 13;\n return onUpdateSubscriberSinkIdError();\n\n case 13:\n throw _context4.t0;\n\n case 14:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4, null, [[0, 8]]);\n }));\n\n return function (_x2) {\n return _ref4.apply(this, arguments);\n };\n}();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(0)))\n\n/***/ }),\n/* 323 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// @todo enable the following disabled rules see OPENTOK-31136 for more info\n\n/* eslint-disable import/newline-after-import, no-param-reassign */\n__webpack_require__(324);\n\nconst clone = __webpack_require__(36);\n\nconst eventNames = __webpack_require__(26);\n\nconst eventing = __webpack_require__(6);\n\nconst Event = __webpack_require__(126);\n\nconst StaticConfig = __webpack_require__(44)();\n\nconst AnalyticsHelper = __webpack_require__(27);\n\nconst setDeprecatedProperty = __webpack_require__(249);\n\nconst runtimeProperties = __webpack_require__(543);\n\nconst mutableRuntimeProperties = __webpack_require__(544);\n\nconst staticConfig = StaticConfig.onlyLocal(); // We need to do this first because of circular dependency issues with otplugin.js. @TODO: fix this.\n\nconst OT = {}; // noConflict is constructed before we override global.OT so we keep the original value\n\nOT.noConflict = __webpack_require__(545)();\n(typeof window !== undefined ? window : global).OT = OT;\nmodule.exports = OT;\n\n(() => {\n let TB = OT;\n Object.defineProperty((typeof window !== undefined ? window : global), 'TB', {\n get: () => {\n if (TB === OT) {\n // eslint-disable-next-line no-console\n console.warn('window.TB is deprecated, and will be removed in the future. Please access via window.OT');\n }\n\n return TB;\n },\n set: _TB => {\n TB = _TB;\n },\n // We provide a setter so noConflict works\n configurable: true\n });\n})();\n\nconst windowMock = __webpack_require__(142)((typeof window !== undefined ? window : global));\n\nconst OTHelpers = __webpack_require__(5);\n\nconst APIKEY = __webpack_require__(72);\n\nconst AudioLevelTransformer = __webpack_require__(143);\n\nconst calculateCapableSimulcastStreams = __webpack_require__(252);\n\nconst Chrome = __webpack_require__(144);\n\nconst WebAudioAudioLevelSampler = __webpack_require__(145);\n\nconst GetAudioLevelSampler = __webpack_require__(253);\n\nconst EnvironmentLoader = __webpack_require__(146);\n\nconst Errors = __webpack_require__(4);\n\nconst ExceptionCodes = __webpack_require__(8);\n\nconst generateConstraintInfo = __webpack_require__(254);\n\nconst guidStorage = __webpack_require__(240);\n\nconst logging = __webpack_require__(1)('OT');\n\nconst logLevels = __webpack_require__(119);\n\nconst setLogLevel = __webpack_require__(572);\n\nconst OTErrorClass = __webpack_require__(21);\n\nconst _require = __webpack_require__(100),\n parseIceServers = _require.parseIceServers;\n\nconst PUBLISH_MAX_DELAY = __webpack_require__(267);\n\nconst sessionObjects = __webpack_require__(20);\n\nconst StreamChannel = __webpack_require__(149);\n\nconst StylableComponent = __webpack_require__(151);\n\nconst systemRequirements = __webpack_require__(152);\n\nconst PeerConnection = __webpack_require__(101)({\n global: windowMock\n});\n\nconst otError = __webpack_require__(11)({});\n\nconst audioContext = __webpack_require__(158)();\n\nconst chromeExtensionHelper = __webpack_require__(280)({\n otError\n});\n\nconst createChromeMixin = __webpack_require__(281)();\n\nconst getNativeEnumerateDevices = __webpack_require__(286)({\n global: windowMock\n});\n\nconst deviceHelpers = __webpack_require__(23)({\n getNativeEnumerateDevices\n});\n\nconst Events = __webpack_require__(22)();\n\nconst generateSimpleStateMachine = __webpack_require__(160)();\n\nconst getUserMediaHelper = __webpack_require__(626)({\n otError,\n global: windowMock\n});\n\nconst screenSharing = __webpack_require__(161)({\n chromeExtensionHelper,\n otError\n});\n\nconst processPubOptions = __webpack_require__(631)({\n deviceHelpers,\n generateConstraintInfo,\n getUserMediaHelper,\n global: windowMock,\n OTHelpers,\n screenSharing\n});\n\nconst getUserMedia = __webpack_require__(634)({\n otError,\n processPubOptions\n});\n\nconst interpretPeerConnectionError = __webpack_require__(162)({\n otError\n});\n\nconst IntervalRunner = __webpack_require__(74);\n\nconst Microphone = __webpack_require__(291)();\n\nconst videoElementErrorMap = __webpack_require__(292)({\n otError\n});\n\nconst NativeVideoElementWrapper = __webpack_require__(293)({\n global: windowMock,\n videoElementErrorMap\n});\n\nconst setCertificates = __webpack_require__(163)({\n global: windowMock\n});\n\nconst PublisherPeerConnection = __webpack_require__(295)({\n PeerConnection,\n setCertificates\n});\n\nconst SubscriberPeerConnection = __webpack_require__(296)({\n PeerConnection,\n setCertificates\n});\n\nconst PublishingState = __webpack_require__(297)();\n\nconst reportIssue = __webpack_require__(643)({\n otError\n});\n\nconst VideoElementFacade = __webpack_require__(107)({\n NativeVideoElementWrapper\n});\n\nconst VideoOrientation = __webpack_require__(150)();\n\nconst WidgetView = __webpack_require__(164)({\n VideoElementFacade\n});\n\nconst Subscriber = __webpack_require__(300)({\n interpretPeerConnectionError,\n otError,\n SubscriberPeerConnection,\n WidgetView\n});\n\nconst Publisher = __webpack_require__(168)({\n APIKEY,\n createChromeMixin,\n deviceHelpers,\n EnvironmentLoader,\n Errors,\n Events,\n ExceptionCodes,\n calculateCapableSimulcastStreams,\n global: windowMock,\n interpretPeerConnectionError,\n IntervalRunner,\n Microphone,\n otError,\n OTErrorClass,\n OTHelpers,\n parseIceServers,\n processPubOptions,\n PUBLISH_MAX_DELAY,\n PublisherPeerConnection,\n PublishingState,\n StreamChannel,\n systemRequirements,\n VideoOrientation,\n WidgetView\n});\n\nconst initPublisher = __webpack_require__(308)({\n otError,\n Publisher\n});\n\nconst Session = __webpack_require__(309)({\n global: windowMock,\n initPublisher,\n otError,\n Publisher,\n Subscriber\n});\n\nconst initSession = __webpack_require__(717)({\n Session\n}); // Allow events to be bound on OT\n\n\neventing(OT);\n\nconst getSupportedCodecs = __webpack_require__(718);\n\nsetDeprecatedProperty(OT, '$', {\n name: 'OT.$',\n getMessage: 'Please use an external library like jQuery to select elements from the page.',\n value: OTHelpers\n}); // Define the APIKEY this is a global parameter which should not change\n\nOT.APIKEY = APIKEY.value;\nOT.AnalyserAudioLevelSampler = WebAudioAudioLevelSampler;\nOT.Archive = __webpack_require__(319);\nOT.ArchiveEvent = Events.ArchiveEvent;\nOT.ArchiveUpdatedEvent = Events.ArchiveUpdatedEvent;\nOT.AudioLevelTransformer = AudioLevelTransformer;\nOT.AudioLevelUpdatedEvent = Events.AudioLevelUpdatedEvent;\nOT.Capabilities = __webpack_require__(169);\nOT.Chrome = Chrome;\nOT.Connection = __webpack_require__(172);\nOT.ConnectionCapabilities = OT.Connection.Capabilities;\nOT.ConnectionEvent = Events.ConnectionEvent;\nObject.keys(logLevels).forEach(name => {\n OT[name.toUpperCase()] = logLevels[name].priority;\n});\nOT.NONE = 0;\nOT.debug = logging.debug;\nOT.error = logging.error;\nOT.info = logging.info;\nOT.log = logging.log;\nOT.warn = logging.warn;\nOT.DestroyedEvent = Events.DestroyedEvent;\nOT.EnvLoadedEvent = Events.EnvLoadedEvent; // TODO: re-expose old screenSharing api\n\nOT.Error = OTErrorClass;\nOT.Error.on(eventNames.EXCEPTION, exceptionEvent => {\n if (exceptionEvent.target === OT.Error) {\n // Rebind target to OT if it's set to OT.Error to preserve old behaviour.\n const exceptionEventClone = clone(exceptionEvent);\n exceptionEventClone.target = OT;\n OT.dispatchEvent(exceptionEventClone);\n } else {\n OT.dispatchEvent(exceptionEvent);\n }\n});\nOT.Event = Event;\nOT.ExceptionCodes = ExceptionCodes;\nOT.ExceptionEvent = Events.ExceptionEvent;\nOT.getDevices = __webpack_require__(721);\nOT.getAudioOutputDevices = __webpack_require__(320);\nOT.getActiveAudioOutputDevice = __webpack_require__(321);\nOT.setAudioOutputDevice = __webpack_require__(722)();\nOT.GetAudioLevelSampler = GetAudioLevelSampler;\nOT.HAS_REQUIREMENTS = 1;\nOT.IntervalRunner = IntervalRunner;\nOT.IssueReportedEvent = Events.IssueReportedEvent;\nOT.MediaStoppedEvent = Events.MediaStoppedEvent;\nOT.Microphone = Microphone;\nOT.NOT_HAS_REQUIREMENTS = 0;\nOT.PeerConnection = PeerConnection; // TODO: this is here for repel, but it doesn't belong here\n\nOT.PeerConnection.QOS = __webpack_require__(278).default;\nOT.Publisher = Publisher;\nOT.PublisherPeerConnection = PublisherPeerConnection;\nOT.PublishingState = PublishingState;\nOT.MuteForcedEvent = Events.MuteForcedEvent;\nOT.Session = Session;\nOT.SessionConnectEvent = Events.SessionConnectEvent;\nOT.SessionDisconnectEvent = Events.SessionDisconnectEvent;\nOT.SessionDispatcher = __webpack_require__(318);\nOT.Signal = __webpack_require__(316);\nOT.SignalEvent = Events.SignalEvent;\nOT.Stream = __webpack_require__(170);\nOT.StreamChannel = StreamChannel;\nOT.StreamEvent = Events.StreamEvent;\nOT.StreamPropertyChangedEvent = Events.StreamPropertyChangedEvent;\nOT.StreamUpdatedEvent = Events.StreamUpdatedEvent;\nOT.StylableComponent = StylableComponent;\nOT.Subscriber = Subscriber;\nOT.SubscriberPeerConnection = SubscriberPeerConnection;\nOT.SubscribingState = __webpack_require__(303);\nOT.VideoDimensionsChangedEvent = Events.VideoDimensionsChangedEvent;\nOT.VideoDisableWarningEvent = Events.VideoDisableWarningEvent;\nOT.VideoElement = VideoElementFacade;\nOT.VideoEnabledChangedEvent = Events.VideoEnabledChangedEvent;\nOT.VideoOrientation = VideoOrientation;\nOT.WidgetView = WidgetView;\nOT.getSupportedCodecs = getSupportedCodecs;\nOT._ = {\n AnalyticsHelper,\n getClientGuid: guidStorage.get,\n StaticConfig\n};\n/**\n *\n * The currently loaded version of OpenTok.js.\n *\n * @property {string} version\n * @readonly\n * @memberof OT\n */\n\nObject.defineProperty(OT, 'version', {\n value: staticConfig.version\n});\nconst properties = {};\n\nconst canPropertyBeMutated = property => mutableRuntimeProperties.includes(property);\n\nsetDeprecatedProperty(properties, 'version', {\n value: staticConfig.version,\n name: 'OT.properties.version',\n getWarning: 'Please use OT.version instead',\n warnOnSet: true,\n setWarning: 'Mutating version has no effect'\n});\nruntimeProperties.forEach(keyMap => {\n let value;\n let key;\n\n if (Array.isArray(keyMap)) {\n const propKey = keyMap[0],\n staticConfigKey = keyMap[1];\n key = propKey;\n value = staticConfig[staticConfigKey] || staticConfigKey;\n } else {\n value = staticConfig[keyMap];\n key = keyMap;\n }\n\n const isPropertyMutable = canPropertyBeMutated(key);\n setDeprecatedProperty(properties, key, {\n value,\n name: `OT.properties.${key}`,\n warnOnSet: true,\n canSet: isPropertyMutable,\n setWarning: isPropertyMutable ? `Mutating ${key} can cause side effects` : `Mutating ${key} has no effect`\n });\n});\nOT.properties = properties; // OT.addEventListener comes from eventing(OT)\n\nOT.audioContext = audioContext;\nOT.checkScreenSharingCapability = screenSharing.checkCapability;\nOT.checkSystemRequirements = systemRequirements.check;\nOT.components = {}; // OT.dispatchEvent comes from eventing(OT)\n// OT.emit comes from eventing(OT)\n\nOT.generateSimpleStateMachine = generateSimpleStateMachine;\nOT.getErrorTitleByCode = OTErrorClass.getTitleByCode;\nOT.getLogs = logging.getLogs; // This is misspelled in production too, being compatible here.\n\nOT.getStatsAdpater = __webpack_require__(274);\nOT.getStatsHelpers = __webpack_require__(75);\nOT.getUserMedia = getUserMedia;\nOT.handleJsException = OTErrorClass.handleJsException;\nOT.initPublisher = initPublisher;\nOT.setProxyUrl = __webpack_require__(139).setProxyUrl;\n\nOT.initSession = function (apiKey, sessionId, opt) {\n if (sessionId == null) {\n sessionId = apiKey;\n apiKey = null;\n } // Ugly hack, make sure OT.APIKEY is set\n // TODO: Yep, sure is ugly. It appears to be needed by raptor. We should fix this situation.\n // UPDATE: This hack is the only reason why we need to wrap the actual initSession.\n\n\n if (APIKEY.value.length === 0 && apiKey) {\n APIKEY.value = apiKey;\n OT.APIKEY = apiKey;\n }\n\n return initSession(apiKey, sessionId, opt);\n};\n\nconst deprecatedMessage = key => `${key} is deprecated and will be removed in a future version of OpenTok`;\n\nconst warnAndReturn = (name, value) => () => {\n // eslint-disable-next-line no-console\n console.warn(deprecatedMessage(name));\n return value;\n}; // discourage us and others from using these OT methods\n\n\nObject.defineProperties(OT, {\n isUnloaded: {\n get: warnAndReturn('OT.isUnloaded', EnvironmentLoader.isUnloaded)\n },\n onLoad: {\n get: warnAndReturn('OT.onLoad', EnvironmentLoader.onLoad)\n },\n onUnload: {\n get: warnAndReturn('OT.onUnload', EnvironmentLoader.onUnload)\n },\n overrideGuidStorage: {\n get: warnAndReturn('OT.overrideGuidStorage', guidStorage.override)\n }\n}); // OT.off comes from eventing(OT)\n// OT.on comes from eventing(OT)\n// OT.once comes from eventing(OT)\n// OT.removeEventListener comes from eventing(OT)\n// OT.trigger comes from eventing(OT)\n// Exposed here for partner usage.\n\nOT.pickScreenSharingHelper = screenSharing.pickHelper;\nOT.publishers = sessionObjects.publishers;\nOT.registerScreenSharingExtension = screenSharing.registerExtension;\nOT.registerScreenSharingExtensionHelper = screenSharing.registerExtensionHelper;\nOT.reportIssue = reportIssue;\nOT.sessions = sessionObjects.sessions;\nOT.setLogLevel = setLogLevel;\nOT.shouldLog = logging.shouldLog;\nOT.subscribers = sessionObjects.subscribers;\nOT.unblockAudio = __webpack_require__(166);\nOT.upgradeSystemRequirements = systemRequirements.upgrade; // Tidy up everything on unload\n\nEnvironmentLoader.onUnload(() => {\n sessionObjects.publishers.destroy();\n sessionObjects.subscribers.destroy();\n sessionObjects.sessions.destroy('unloaded');\n});\n\n__webpack_require__(723)();\n/**\n * This method is deprecated. Use on() or once() instead.\n *\n * \n * Registers a method as an event listener for a specific event.\n *
\n *\n *\n * The OT object dispatches one type of event an exception
event. The\n * following code adds an event listener for the exception
event:\n *
\n * OT.addEventListener(\"exception\", exceptionHandler);\n *\n * function exceptionHandler(event) {\n * alert(\"exception event. \\n code == \" + event.code + \"\\n message == \" + event.message);\n * }\n *\n *\n *
\n * If a handler is not registered for an event, the event is ignored locally. If the event\n * listener function does not exist, the event is ignored locally.\n *
\n *\n * Throws an exception if the listener
name is invalid.\n *
\n * Removes an event listener for a specific event.\n *
\n *\n *\n * Throws an exception if the listener
name is invalid.\n *
\n* The OT object dispatches one type of event an exception
event. The following\n* code adds an event\n* listener for the exception
event:\n*
\n* OT.on(\"exception\", function (event) {\n* // This is the event handler.\n* });\n*\n*\n*
You can also pass in a third context
parameter (which is optional) to define the\n* value of\n* this
in the handler method:
\n* OT.on(\"exception\",\n* function (event) {\n* // This is the event handler.\n* }),\n* session\n* );\n*\n*\n*
\n* If you do not add a handler for an event, the event is ignored locally.\n*
\n*\n* @param {String} type The string identifying the type of event.\n* @param {Function} handler The handler function to process the event. This function takes the event\n* object as a parameter.\n* @param {Object} context (Optional) Defines the value ofthis
in the event handler\n* function.\n*\n* @memberof OT\n* @method on\n* @see off()\n* @see once()\n* @see Events\n*/\n\n/**\n* Adds an event handler function for an event. Once the handler is called, the specified handler\n* method is\n* removed as a handler for this event. (When you use the OT.on()
method to add an event\n* handler, the handler\n* is not removed when it is called.) The OT.once()
method is the equivilent of\n* calling the OT.on()
\n* method and calling OT.off()
the first time the handler is invoked.\n*\n* \n* The following code adds a one-time event handler for the exception
event:\n*
\n* OT.once(\"exception\", function (event) {\n* console.log(event);\n* }\n*\n*\n*
You can also pass in a third context
parameter (which is optional) to define the\n* value of\n* this
in the handler method:
\n* OT.once(\"exception\",\n* function (event) {\n* // This is the event handler.\n* },\n* session\n* );\n*\n*\n*
\n* The method also supports an alternate syntax, in which the first parameter is an object that is a\n* hash map of\n* event names and handler functions and the second parameter (optional) is the context for this in\n* each handler:\n*
\n*\n* OT.once(\n* {exeption: function (event) {\n* // This is the event handler.\n* }\n* },\n* session\n* );\n*\n*\n* @param {String} type The string identifying the type of event. You can specify multiple event\n* names in this string,\n* separating them with a space. The event handler will process the first occurence of the events.\n* After the first event,\n* the handler is removed (for all specified events).\n* @param {Function} handler The handler function to process the event. This function takes the event\n* object as a parameter.\n* @param {Object} context (Optional) Defines the value of
this
in the event handler\n* function.\n*\n* @memberof OT\n* @method once\n* @see on()\n* @see once()\n* @see Events\n*/\n\n/**\n * Removes an event handler.\n *\n * Pass in an event name and a handler method, the handler is removed for that event:
\n *\n *OT.off(\"exceptionEvent\", exceptionEventHandler);\n *\n *
If you pass in an event name and no handler method, all handlers are removed for that\n * events:
\n *\n *OT.off(\"exceptionEvent\");\n *\n *
\n * The method also supports an alternate syntax, in which the first parameter is an object that is a\n * hash map of\n * event names and handler functions and the second parameter (optional) is the context for matching\n * handlers:\n *
\n *\n * OT.off(\n * {\n * exceptionEvent: exceptionEventHandler\n * },\n * this\n * );\n *\n *\n * @param {String} type (Optional) The string identifying the type of event. You can use a space to\n * specify multiple events, as in \"eventName1 eventName2 eventName3\". If you pass in no\n *
type
value (or other arguments), all event handlers are removed for the object.\n * @param {Function} handler (Optional) The event handler function to remove. If you pass in no\n * handler
, all event handlers are removed for the specified event type
.\n * @param {Object} context (Optional) If you specify a context
, the event handler is\n * removed for all specified events and handlers that use the specified context.\n *\n * @memberof OT\n * @method off\n * @see on()\n * @see once()\n * @see Events\n */\n\n/**\n * Dispatched by the OT class when the app encounters an exception.\n * Note that you set up an event handler for the exception
event by calling the\n * OT.on()
method.\n *\n * @name exception\n * @event\n * @borrows ExceptionEvent#message as this.message\n * @memberof OT\n * @see ExceptionEvent\n */\n\n/***/ }),\n/* 324 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar content = __webpack_require__(325);\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(339)(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {}\n\n/***/ }),\n/* 325 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(326)(false);\n// Imports\nvar urlEscape = __webpack_require__(327);\nvar ___CSS_LOADER_URL___0___ = urlEscape(__webpack_require__(328));\nvar ___CSS_LOADER_URL___1___ = urlEscape(__webpack_require__(329));\nvar ___CSS_LOADER_URL___2___ = urlEscape(__webpack_require__(330));\nvar ___CSS_LOADER_URL___3___ = urlEscape(__webpack_require__(331));\nvar ___CSS_LOADER_URL___4___ = urlEscape(__webpack_require__(332));\nvar ___CSS_LOADER_URL___5___ = urlEscape(__webpack_require__(333));\nvar ___CSS_LOADER_URL___6___ = urlEscape(__webpack_require__(334));\nvar ___CSS_LOADER_URL___7___ = urlEscape(__webpack_require__(335));\nvar ___CSS_LOADER_URL___8___ = urlEscape(__webpack_require__(336));\nvar ___CSS_LOADER_URL___9___ = urlEscape(__webpack_require__(337));\nvar ___CSS_LOADER_URL___10___ = urlEscape(__webpack_require__(338));\n\n// Module\nexports.push([module.i, \"/*!\\n * Copyright (c) 2017 TokBox, Inc.\\n * Released under the MIT license\\n * http://opensource.org/licenses/MIT\\n */\\n\\n/**\\n * OT Base styles\\n */\\n\\n/* Root OT object, this is where our CSS reset happens */\\n.OT_root,\\n.OT_root * {\\n color: #ffffff;\\n margin: 0;\\n padding: 0;\\n border: 0;\\n font-size: 100%;\\n font-family: Arial, Helvetica, sans-serif;\\n vertical-align: baseline;\\n}\\n\\n/**\\n * Specific Element Reset\\n */\\n\\n.OT_root h1,\\n.OT_root h2,\\n.OT_root h3,\\n.OT_root h4,\\n.OT_root h5,\\n.OT_root h6 {\\n color: #ffffff;\\n font-family: Arial, Helvetica, sans-serif;\\n font-size: 100%;\\n font-weight: bold;\\n}\\n\\n.OT_root header {\\n\\n}\\n\\n.OT_root footer {\\n\\n}\\n\\n.OT_root div {\\n\\n}\\n\\n.OT_root section {\\n\\n}\\n\\n.OT_root video {\\n\\n}\\n\\n.OT_root button {\\n\\n}\\n\\n.OT_root strong {\\n font-weight: bold;\\n}\\n\\n.OT_root em {\\n font-style: italic;\\n}\\n\\n.OT_root a,\\n.OT_root a:link,\\n.OT_root a:visited,\\n.OT_root a:hover,\\n.OT_root a:active {\\n font-family: Arial, Helvetica, sans-serif;\\n}\\n\\n.OT_root ul, .OT_root ol {\\n margin: 1em 1em 1em 2em;\\n}\\n\\n.OT_root ol {\\n list-style: decimal outside;\\n}\\n\\n.OT_root ul {\\n list-style: disc outside;\\n}\\n\\n.OT_root dl {\\n margin: 4px;\\n}\\n\\n.OT_root dl dt,\\n.OT_root dl dd {\\n float: left;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.OT_root dl dt {\\n clear: left;\\n text-align: right;\\n width: 50px;\\n}\\n\\n.OT_root dl dd {\\n margin-left: 10px;\\n}\\n\\n.OT_root img {\\n border: 0 none;\\n}\\n\\n/* Modal dialog styles */\\n\\n/* Modal dialog styles */\\n\\n.OT_dialog-centering {\\n display: table;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.OT_dialog-centering-child {\\n display: table-cell;\\n vertical-align: middle;\\n}\\n\\n.OT_dialog {\\n position: relative;\\n\\n box-sizing: border-box;\\n max-width: 576px;\\n margin-right: auto;\\n margin-left: auto;\\n padding: 36px;\\n text-align: center; /* centers all the inline content */\\n\\n background-color: #363636;\\n color: #fff;\\n box-shadow: 2px 4px 6px #999;\\n font-family: 'Didact Gothic', sans-serif;\\n font-size: 13px;\\n line-height: 1.4;\\n}\\n\\n.OT_dialog * {\\n font-family: inherit;\\n box-sizing: inherit;\\n}\\n\\n.OT_closeButton {\\n color: #999999;\\n cursor: pointer;\\n font-size: 32px;\\n line-height: 36px;\\n position: absolute;\\n right: 18px;\\n top: 0;\\n}\\n\\n.OT_dialog-messages {\\n text-align: center;\\n}\\n\\n.OT_dialog-messages-main {\\n margin-bottom: 36px;\\n line-height: 36px;\\n\\n font-weight: 300;\\n font-size: 24px;\\n}\\n\\n.OT_dialog-messages-minor {\\n margin-bottom: 18px;\\n\\n font-size: 13px;\\n line-height: 18px;\\n color: #A4A4A4;\\n}\\n\\n.OT_dialog-messages-minor strong {\\n color: #ffffff;\\n}\\n\\n.OT_dialog-actions-card {\\n display: inline-block;\\n}\\n\\n.OT_dialog-button-title {\\n margin-bottom: 18px;\\n line-height: 18px;\\n\\n font-weight: 300;\\n text-align: center;\\n font-size: 14px;\\n color: #999999;\\n}\\n.OT_dialog-button-title label {\\n color: #999999;\\n}\\n\\n.OT_dialog-button-title a,\\n.OT_dialog-button-title a:link,\\n.OT_dialog-button-title a:active {\\n color: #02A1DE;\\n}\\n\\n.OT_dialog-button-title strong {\\n color: #ffffff;\\n font-weight: 100;\\n display: block;\\n}\\n\\n.OT_dialog-button {\\n display: inline-block;\\n\\n margin-bottom: 18px;\\n padding: 0 1em;\\n\\n background-color: #1CA3DC;\\n text-align: center;\\n cursor: pointer;\\n}\\n\\n.OT_dialog-button:disabled {\\n cursor: not-allowed;\\n opacity: 0.5;\\n}\\n\\n.OT_dialog-button-large {\\n line-height: 36px;\\n padding-top: 9px;\\n padding-bottom: 9px;\\n\\n font-weight: 100;\\n font-size: 24px;\\n}\\n\\n.OT_dialog-button-small {\\n line-height: 18px;\\n padding-top: 9px;\\n padding-bottom: 9px;\\n\\n background-color: #444444;\\n color: #999999;\\n font-size: 16px;\\n}\\n\\n.OT_dialog-progress-bar {\\n display: inline-block; /* prevents margin collapse */\\n width: 100%;\\n margin-top: 5px;\\n margin-bottom: 41px;\\n\\n border: 1px solid #4E4E4E;\\n height: 8px;\\n}\\n\\n.OT_dialog-progress-bar-fill {\\n height: 100%;\\n\\n background-color: #29A4DA;\\n}\\n\\n/* Helpers */\\n\\n.OT_centered {\\n position: fixed;\\n left: 50%;\\n top: 50%;\\n margin: 0;\\n}\\n\\n.OT_dialog-hidden {\\n display: none;\\n}\\n\\n.OT_dialog-button-block {\\n display: block;\\n}\\n\\n.OT_dialog-no-natural-margin {\\n margin-bottom: 0;\\n}\\n\\n/* Publisher and Subscriber styles */\\n\\n.OT_publisher, .OT_subscriber {\\n position: relative;\\n min-width: 48px;\\n min-height: 48px;\\n}\\n\\n.OT_publisher .OT_video-element,\\n.OT_subscriber .OT_video-element {\\n display: block;\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n\\n transform-origin: 0 0;\\n}\\n\\n/* Styles that are applied when the video element should be mirrored */\\n.OT_publisher.OT_mirrored .OT_video-element {\\n transform: scale(-1, 1);\\n transform-origin: 50% 50%;\\n}\\n\\n.OT_subscriber_error {\\n background-color: #000;\\n color: #fff;\\n text-align: center;\\n}\\n\\n.OT_subscriber_error > p {\\n padding: 20px;\\n}\\n\\n/* The publisher/subscriber name/mute background */\\n.OT_publisher .OT_bar,\\n.OT_subscriber .OT_bar,\\n.OT_publisher .OT_name,\\n.OT_subscriber .OT_name,\\n.OT_publisher .OT_archiving,\\n.OT_subscriber .OT_archiving,\\n.OT_publisher .OT_archiving-status,\\n.OT_subscriber .OT_archiving-status,\\n.OT_publisher .OT_archiving-light-box,\\n.OT_subscriber .OT_archiving-light-box {\\n -ms-box-sizing: border-box;\\n box-sizing: border-box;\\n top: 0;\\n left: 0;\\n right: 0;\\n display: block;\\n height: 34px;\\n position: absolute;\\n}\\n\\n.OT_publisher .OT_bar,\\n.OT_subscriber .OT_bar {\\n background: rgba(0, 0, 0, 0.4);\\n}\\n\\n.OT_publisher .OT_edge-bar-item,\\n.OT_subscriber .OT_edge-bar-item {\\n z-index: 1; /* required to get audio level meter underneath */\\n}\\n\\n/* The publisher/subscriber name panel/archiving status bar */\\n.OT_publisher .OT_name,\\n.OT_subscriber .OT_name {\\n background-color: transparent;\\n color: #ffffff;\\n font-size: 15px;\\n line-height: 34px;\\n font-weight: normal;\\n padding: 0 4px 0 36px;\\n letter-spacing: normal;\\n}\\n\\n.OT_publisher .OT_archiving-status,\\n.OT_subscriber .OT_archiving-status {\\n background: rgba(0, 0, 0, 0.4);\\n top: auto;\\n bottom: 0;\\n left: 34px;\\n padding: 0 4px;\\n color: rgba(255, 255, 255, 0.8);\\n font-size: 15px;\\n line-height: 34px;\\n font-weight: normal;\\n letter-spacing: normal;\\n}\\n\\n.OT_micro .OT_archiving-status,\\n.OT_micro:hover .OT_archiving-status,\\n.OT_mini .OT_archiving-status,\\n.OT_mini:hover .OT_archiving-status {\\n display: none;\\n}\\n\\n.OT_publisher .OT_archiving-light-box,\\n.OT_subscriber .OT_archiving-light-box {\\n background: rgba(0, 0, 0, 0.4);\\n top: auto;\\n bottom: 0;\\n right: auto;\\n width: 34px;\\n height: 34px;\\n}\\n\\n.OT_archiving-light {\\n width: 7px;\\n height: 7px;\\n border-radius: 30px;\\n position: absolute;\\n top: 14px;\\n left: 14px;\\n background-color: #575757;\\n box-shadow: 0 0 5px 1px #575757;\\n}\\n\\n.OT_archiving-light.OT_active {\\n background-color: #970d13;\\n -webkit-animation: OT_pulse 1.3s ease-in;\\n -moz-animation: OT_pulse 1.3s ease-in;\\n -webkit-animation: OT_pulse 1.3s ease-in;\\n -webkit-animation-iteration-count: infinite;\\n -moz-animation-iteration-count: infinite;\\n -webkit-animation-iteration-count: infinite;\\n}\\n\\n.OT_mini .OT_bar,\\n.OT_bar.OT_mode-mini,\\n.OT_bar.OT_mode-mini-auto {\\n bottom: 0;\\n height: auto;\\n}\\n\\n.OT_mini .OT_name.OT_mode-off,\\n.OT_mini .OT_name.OT_mode-on,\\n.OT_mini .OT_name.OT_mode-auto,\\n.OT_mini:hover .OT_name.OT_mode-auto {\\n display: none;\\n}\\n\\n.OT_publisher .OT_name,\\n.OT_subscriber .OT_name {\\n left: 10px;\\n right: 37px;\\n height: 34px;\\n padding-left: 0;\\n}\\n\\n.OT_publisher .OT_mute,\\n.OT_subscriber .OT_mute {\\n border: none;\\n cursor: pointer;\\n display: block;\\n position: absolute;\\n text-align: center;\\n text-indent: -9999em;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n}\\n\\n.OT_publisher .OT_mute,\\n.OT_subscriber .OT_mute {\\n right: 0;\\n top: 0;\\n border-left: 1px solid rgba(255, 255, 255, 0.2);\\n height: 36px;\\n width: 37px;\\n}\\n\\n.OT_mini .OT_mute,\\n.OT_publisher.OT_mini .OT_mute.OT_mode-auto.OT_mode-on-hold,\\n.OT_subscriber.OT_mini .OT_mute.OT_mode-auto.OT_mode-on-hold {\\n top: 50%;\\n left: 50%;\\n right: auto;\\n margin-top: -18px;\\n margin-left: -18.5px;\\n border-left: none;\\n}\\n\\n.OT_publisher .OT_mute {\\n background-image: url(\" + ___CSS_LOADER_URL___0___ + \");\\n background-position: 9px 5px;\\n}\\n\\n.OT_publisher .OT_mute.OT_active {\\n background-image: url(\" + ___CSS_LOADER_URL___1___ + \");\\n background-position: 9px 4px;\\n}\\n\\n.OT_subscriber .OT_mute {\\n background-image: url(\" + ___CSS_LOADER_URL___2___ + \");\\n background-position: 8px 7px;\\n}\\n\\n.OT_subscriber .OT_mute.OT_active {\\n background-image: url(\" + ___CSS_LOADER_URL___3___ + \");\\n background-position: 7px 7px;\\n}\\n\\n/**\\n * Styles for display modes\\n *\\n * Note: It's important that these completely control the display and opacity\\n * attributes, no other selectors should atempt to change them.\\n */\\n\\n/* Default display mode transitions for various chrome elements */\\n.OT_publisher .OT_edge-bar-item,\\n.OT_subscriber .OT_edge-bar-item {\\n transition-property: top, bottom, opacity;\\n transition-duration: 0.5s;\\n transition-timing-function: ease-in;\\n}\\n\\n.OT_publisher .OT_edge-bar-item.OT_mode-off,\\n.OT_subscriber .OT_edge-bar-item.OT_mode-off,\\n.OT_publisher .OT_edge-bar-item.OT_mode-auto,\\n.OT_subscriber .OT_edge-bar-item.OT_mode-auto,\\n.OT_publisher .OT_edge-bar-item.OT_mode-mini-auto,\\n.OT_subscriber .OT_edge-bar-item.OT_mode-mini-auto {\\n top: -25px;\\n opacity: 0;\\n}\\n\\n.OT_publisher .OT_edge-bar-item.OT_mode-off,\\n.OT_subscriber .OT_edge-bar-item.OT_mode-off {\\n display: none;\\n}\\n\\n.OT_mini .OT_mute.OT_mode-auto,\\n.OT_publisher .OT_mute.OT_mode-mini-auto,\\n.OT_subscriber .OT_mute.OT_mode-mini-auto {\\n top: 50%;\\n}\\n\\n.OT_publisher .OT_edge-bar-item.OT_edge-bottom.OT_mode-off,\\n.OT_subscriber .OT_edge-bar-item.OT_edge-bottom.OT_mode-off,\\n.OT_publisher .OT_edge-bar-item.OT_edge-bottom.OT_mode-auto,\\n.OT_subscriber .OT_edge-bar-item.OT_edge-bottom.OT_mode-auto,\\n.OT_publisher .OT_edge-bar-item.OT_edge-bottom.OT_mode-mini-auto,\\n.OT_subscriber .OT_edge-bar-item.OT_edge-bottom.OT_mode-mini-auto {\\n top: auto;\\n bottom: -25px;\\n}\\n\\n.OT_publisher .OT_edge-bar-item.OT_mode-on,\\n.OT_subscriber .OT_edge-bar-item.OT_mode-on,\\n.OT_publisher .OT_edge-bar-item.OT_mode-auto.OT_mode-on-hold,\\n.OT_subscriber .OT_edge-bar-item.OT_mode-auto.OT_mode-on-hold,\\n.OT_publisher:hover .OT_edge-bar-item.OT_mode-auto,\\n.OT_subscriber:hover .OT_edge-bar-item.OT_mode-auto,\\n.OT_publisher:hover .OT_edge-bar-item.OT_mode-mini-auto,\\n.OT_subscriber:hover .OT_edge-bar-item.OT_mode-mini-auto {\\n top: 0;\\n opacity: 1;\\n}\\n\\n.OT_mini .OT_mute.OT_mode-on,\\n.OT_mini:hover .OT_mute.OT_mode-auto,\\n.OT_mute.OT_mode-mini,\\n.OT_root:hover .OT_mute.OT_mode-mini-auto {\\n top: 50%;\\n}\\n\\n.OT_publisher .OT_edge-bar-item.OT_edge-bottom.OT_mode-on,\\n.OT_subscriber .OT_edge-bar-item.OT_edge-bottom.OT_mode-on,\\n.OT_publisher:hover .OT_edge-bar-item.OT_edge-bottom.OT_mode-auto,\\n.OT_subscriber:hover .OT_edge-bar-item.OT_edge-bottom.OT_mode-auto {\\n top: auto;\\n bottom: 0;\\n opacity: 1;\\n}\\n\\n\\n/* Contains the video element, used to fix video letter-boxing */\\n.OT_widget-container {\\n position: absolute;\\n background-color: #000000;\\n overflow: hidden;\\n}\\n\\n.OT_hidden-audio {\\n position: absolute !important;\\n height: 1px !important;\\n width: 1px !important;\\n}\\n\\n/* Load animation */\\n.OT_root .OT_video-loading {\\n position: absolute;\\n z-index: 1;\\n width: 100%;\\n height: 100%;\\n display: none;\\n\\n background-color: rgba(0, 0, 0, .75);\\n}\\n\\n.OT_root .OT_video-loading .OT_video-loading-spinner {\\n background: url(\" + ___CSS_LOADER_URL___4___ + \") no-repeat;\\n position: absolute;\\n width: 32px;\\n height: 32px;\\n left: 50%;\\n top: 50%;\\n margin-left: -16px;\\n margin-top: -16px;\\n animation: OT_spin 2s linear infinite;\\n}\\n@keyframes OT_spin {\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n\\n.OT_publisher.OT_loading .OT_video-loading,\\n.OT_subscriber.OT_loading .OT_video-loading {\\n display: block;\\n}\\n\\n.OT_publisher.OT_loading .OT_video-element,\\n.OT_subscriber.OT_loading .OT_video-element {\\n /*display: none;*/\\n}\\n\\n.OT_video-centering {\\n display: table;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.OT_video-container {\\n display: table-cell;\\n vertical-align: middle;\\n}\\n\\n.OT_video-poster {\\n position: absolute;\\n z-index: 1;\\n width: 100%;\\n height: 100%;\\n display: none;\\n\\n opacity: .25;\\n\\n background-repeat: no-repeat;\\n background-image: url(\" + ___CSS_LOADER_URL___5___ + \");\\n background-size: auto 76%;\\n}\\n\\n.OT_fit-mode-cover .OT_video-element {\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\n\\n/* Workaround for iOS freezing issue when cropping videos */\\n/* https://bugs.webkit.org/show_bug.cgi?id=176439 */\\n@media only screen\\n and (orientation: portrait) {\\n .OT_subscriber.OT_ForceContain.OT_fit-mode-cover .OT_video-element {\\n -o-object-fit: contain !important;\\n object-fit: contain !important;\\n }\\n}\\n\\n.OT_fit-mode-contain .OT_video-element {\\n -o-object-fit: contain;\\n object-fit: contain;\\n}\\n\\n.OT_fit-mode-cover .OT_video-poster {\\n background-position: center bottom;\\n}\\n\\n.OT_fit-mode-contain .OT_video-poster {\\n background-position: center;\\n}\\n\\n.OT_audio-level-meter {\\n position: absolute;\\n width: 25%;\\n max-width: 224px;\\n min-width: 21px;\\n top: 0;\\n right: 0;\\n overflow: hidden;\\n}\\n\\n.OT_audio-level-meter:before {\\n /* makes the height of the container equals its width */\\n content: '';\\n display: block;\\n padding-top: 100%;\\n}\\n\\n.OT_audio-level-meter__audio-only-img {\\n position: absolute;\\n top: 22%;\\n right: 15%;\\n width: 40%;\\n\\n opacity: .7;\\n\\n background: url(\" + ___CSS_LOADER_URL___6___ + \") no-repeat center;\\n}\\n\\n.OT_audio-level-meter__audio-only-img:before {\\n /* makes the height of the container equals its width */\\n content: '';\\n display: block;\\n padding-top: 100%;\\n}\\n\\n.OT_audio-level-meter__value {\\n will-change: transform;\\n position: absolute;\\n top: -100%;\\n right: -100%;\\n width: 200%;\\n height: 200%;\\n transform: scale(0);\\n border-radius: 50%;\\n background-image: radial-gradient(circle, rgba(151, 206, 0, 1) 0%, rgba(151, 206, 0, 0) 100%);\\n}\\n\\n.OT_audio-level-meter.OT_mode-off {\\n display: none;\\n}\\n\\n.OT_audio-level-meter.OT_mode-on,\\n.OT_audio-only .OT_audio-level-meter.OT_mode-auto {\\n display: block;\\n}\\n\\n.OT_audio-only.OT_publisher .OT_video-element,\\n.OT_audio-only.OT_subscriber .OT_video-element {\\n display: none;\\n}\\n\\n\\n.OT_video-disabled-indicator {\\n opacity: 1;\\n border: none;\\n display: none;\\n position: absolute;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n background-position: bottom right;\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n bottom: 3px;\\n right: 3px;\\n}\\n\\n.OT_video-disabled {\\n background-image: url(\" + ___CSS_LOADER_URL___7___ + \");\\n background-size: 33px auto;\\n}\\n\\n.OT_video-disabled-warning {\\n background-image: url(\" + ___CSS_LOADER_URL___8___ + \");\\n background-size: 33px auto;\\n}\\n\\n.OT_video-disabled-indicator.OT_active {\\n display: block;\\n}\\n\\n.OT_audio-blocked-indicator {\\n opacity: 1;\\n border: none;\\n display: none;\\n position: absolute;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n background-position: center;\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n right: 0;\\n}\\n\\n.OT_audio-blocked {\\n background-image: url(\" + ___CSS_LOADER_URL___9___ + \");\\n background-size: 90px auto;\\n}\\n\\n.OT_container-audio-blocked {\\n cursor: pointer;\\n}\\n\\n.OT_container-audio-blocked.OT_mini .OT_edge-bar-item {\\n display: none;\\n}\\n\\n.OT_container-audio-blocked .OT_mute {\\n display: none;\\n}\\n\\n.OT_audio-blocked-indicator.OT_active {\\n display: block;\\n}\\n\\n.OT_video-unsupported {\\n opacity: 1;\\n border: none;\\n display: none;\\n position: absolute;\\n background-color: transparent;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-image: url(\" + ___CSS_LOADER_URL___10___ + \");\\n background-size: 58px auto;\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n right: 0;\\n margin-top: -30px;\\n}\\n\\n.OT_video-unsupported-bar {\\n display: none;\\n position: absolute;\\n width: 192%; /* copy the size of the audio meter bar for symmetry */\\n height: 192%;\\n top: -96% /* half of the size */;\\n left: -96%;\\n border-radius: 50%;\\n\\n background-color: rgba(0, 0, 0, .8);\\n}\\n\\n.OT_video-unsupported-img {\\n display: none;\\n position: absolute;\\n top: 11%;\\n left: 15%;\\n width: 70%;\\n opacity: .7;\\n background-image: url(\" + ___CSS_LOADER_URL___10___ + \");\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: 100% auto;\\n}\\n\\n.OT_video-unsupported-img:before {\\n /* makes the height of the container 93% of its width (90/97 px) */\\n content: '';\\n display: block;\\n padding-top: 93%;\\n}\\n\\n.OT_video-unsupported-text {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n text-align: center;\\n height: 100%;\\n margin-top: 40px;\\n}\\n\\n.OT_video-unsupported.OT_active {\\n display: block;\\n}\\n\\n.OT_mini .OT_video-unsupported,\\n.OT_micro .OT_video-unsupported {\\n position: absolute;\\n width: 25%;\\n max-width: 224px;\\n min-width: 21px;\\n top: 0;\\n left: 0;\\n overflow: hidden;\\n background: none;\\n bottom: auto;\\n right: auto;\\n margin: auto;\\n}\\n\\n.OT_mini .OT_video-unsupported:before,\\n.OT_micro .OT_video-unsupported:before {\\n /* makes the height of the container equals its width */\\n content: '';\\n display: block;\\n padding-top: 100%;\\n}\\n\\n.OT_mini .OT_video-unsupported-bar,\\n.OT_micro .OT_video-unsupported-bar,\\n.OT_mini .OT_video-unsupported-img,\\n.OT_micro .OT_video-unsupported-img {\\n display: block;\\n}\\n\\n.OT_mini .OT_video-unsupported-text,\\n.OT_micro .OT_video-unsupported-text {\\n display: none;\\n}\\n\\n.OT_hide-forced {\\n display: none;\\n}\\n\\n.OT_ModalDialog {\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n right: 0px;\\n bottom: 0px;\\n z-index: 1000;\\n background-color: rgba(0, 0, 0, 0.2);\\n}\\n\\n#tb_alert {\\n position: fixed;\\n width: 570px;\\n font-family: \\\"Lucida Grande\\\", Arial;\\n top: 50%;\\n left: 50%;\\n margin-top: -75px;\\n margin-left: -285px;\\n}\\n\\n#tb_alert * {\\n box-sizing: border-box;\\n}\\n\\n#tb_alert .OT_alert {\\n border-top-right-radius: 5px;\\n border-bottom-right-radius: 5px;\\n background-color: #333;\\n position: relative;\\n padding: 30px;\\n overflow: visible;\\n margin-left: 70px;\\n border-bottom-color: rgba(255, 255, 255, 0.1);\\n border-left-color: rgba(255, 255, 255, 0.1);\\n\\n background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.2) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.2) 75%, rgba(0, 0, 0, 0.2)), linear-gradient(45deg, rgba(0, 0, 0, 0.2) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.2) 75%, rgba(0, 0, 0, 0.2));\\n\\n background-image: -ms-linear-gradient(45deg, rgba(0, 0, 0, 0.2) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.2) 75%, rgba(0, 0, 0, 0.2)), -ms-linear-gradient(45deg, rgba(0, 0, 0, 0.2) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, 0.2) 75%, rgba(0, 0, 0, 0.2));\\n\\n background-size: 4px 4px;\\n background-position: 0 0, 2px 2px;\\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15);\\n border: 1px solid rgba(255, 255, 255, 0.3);\\n}\\n\\n#tb_alert .OT_alert-exclamation {\\n background-color: #9c1408;\\n background-image: linear-gradient(0deg, #dd0c0a 0%, #9c1408 100%);\\n box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15);\\n border: 1px solid rgba(255, 255, 255, 0.3);\\n\\n margin: -1px 0;\\n\\n font-family: MS Trebuchet;\\n font-weight: bold;\\n font-size: 60px;\\n text-shadow: -1px -1px 2px rgba(0, 0, 0, 0.5);\\n\\n color: white;\\n width: 65px;\\n position: absolute;\\n padding: 42px 0;\\n text-align: center;\\n left: -70px;\\n top: 0;\\n bottom: 0;\\n border-top-left-radius: 5px;\\n border-bottom-left-radius: 5px;\\n\\n border-bottom-color: transparent;\\n border-left: none;\\n border-right: none;\\n}\\n\\n#tb_alert .OT_alert-exclamation:after,\\n#tb_alert .OT_alert-exclamation:before {\\n content: \\\" \\\";\\n position: absolute;\\n right: -24px;\\n top: 40%;\\n border: 12px solid transparent;\\n border-left-color: #9c1408;\\n}\\n\\n#tb_alert .OT_alert-exclamation:before {\\n border-left-color: #bc3428;\\n top: 39%;\\n}\\n\\n#tb_alert .OT_alert-body {\\n color: #c8c5c5;\\n margin: 0;\\n text-shadow: 0 2px 0 rgba(0, 0, 0, 0.3);\\n font-size: 14px;\\n line-height: 1.3em;\\n}\\n\\n#tb_alert .continue-text {\\n margin-top: 12px\\n}\\n\\n#tb_alert > * a {\\n color: #a7d8df;\\n text-decoration: none;\\n}\\n\\n#tb_alert .OT_alert-header {\\n font-size: 24px;\\n padding-bottom: 5px;\\n color: #aaa;\\n font-weight: bold;\\n position: relative;\\n text-shadow: 0 2px 0 rgba(0, 0, 0, 0.3);\\n margin: 0;\\n}\\n\\n#tb_alert .OT_alert-header::before {\\n content: attr(data-text);\\n position: absolute;\\n left: 0;\\n color: white;\\n -webkit-mask-image: -webkit-gradient(\\n linear,\\n left top, left bottom,\\n from(rgba(0, 0, 0, 1)),\\n color-stop(60%, rgba(0, 0, 0, 0)),\\n to(rgba(0, 0, 0, 0))\\n );\\n}\\n\\n#tb_alert .OT_alert-close-button {\\n position: absolute;\\n right: 8px;\\n top: 5px;\\n background-color: #000;\\n color: #666;\\n border: none;\\n font-size: 20px;\\n /** Hack to bring it up to the proper line top */\\n line-height: 14px;\\n padding: 0;\\n padding-bottom: 3px;\\n cursor: pointer;\\n}\\n\\n#tb_alert #section-mobile-browser,\\n#tb_alert #section-supported-mobile-browser {\\n width: 200px;\\n top: 0px;\\n left: 25%;\\n margin-top: 0;\\n margin-left: 0;\\n}\\n\\n@media all and (max-height: 300px) {\\n #tb_alert {\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n margin-left: 0;\\n margin-top: 0;\\n }\\n #tb_alert #section-mobile-browser,\\n #tb_alert #section-supported-mobile-browser {\\n margin-left: 0;\\n margin-top: 10px;\\n left: 0;\\n }\\n}\\n\\n#tb_alert #section-normal-install,\\n#tb_alert #section-upgrade-install,\\n#tb_alert #section-mobile-browser,\\n#tb_alert #section-supported-mobile-browser {\\n display: none;\\n}\\n\", \"\"]);\n\n\n\n/***/ }),\n/* 326 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return '@media ' + item[2] + '{' + content + '}';\n } else {\n return content;\n }\n }).join('');\n }; // import a list of modules into the list\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (i = 0; i < modules.length; i++) {\n var item = modules[i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || '';\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n return '/*# ' + data + ' */';\n}\n\n/***/ }),\n/* 327 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function escape(url, needQuotes) {\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || needQuotes) {\n return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"';\n }\n\n return url;\n};\n\n/***/ }),\n/* 328 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAcCAMAAAC02HQrAAAA1VBMVEUAAAD3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pn3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pn3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj3+Pj39/j3+Pj3+Pn4+Pk/JRMlAAAAQ3RSTlMABAUHCQoLDhAQERwdHiAjLjAxOD9ASFBRVl1mbnZ6fH2LjI+QkaWqrrC1uLzAwcXJycrL1NXj5Ofo6u3w9fr7/P3+d4M3+QAAAQBJREFUGBlVwYdCglAABdCLlr5Unijm3hMUtBzlBLSr//9JgUToOQgVJgceJgU8aHgMeA38K50ZOpcQmTPwcyXn+JM8M3JJIqQypiIkeXelTyIkGZPwKS1NMia1lgKTVkaE3oQQGYsmHNqSMWnTgUFbMiZtGlD2dpaxrL1XgM0i4ZK8MeAmFhsAs29MGZniawagS63oMOQUNXYB5D0D1RMDpyoMLw/fiE2og/V+PVDR5AiBl0/2Uwik+vx4xV3a5G5Ye68Nd1czjUjZckm6VhmPciRzeCZICjwTJAViQq+3e+St167rAoHK8sLYZVkBYPCZAZ/eGa+2R5LH7Wrc0YFf/O9J3yBDFaoAAAAASUVORK5CYII=\"\n\n/***/ }),\n/* 329 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAdCAYAAABFRCf7AAADcElEQVRIiaWVXWhcRRTHf7NNd2aDtUKMIjTpg4ufFIuiUOmDEWm0Vi3VYhXRqIggQh4sWJFSig9+oOhTKSpIRUWMIBIr2kptoTbgU6ooxCiIjR+14kcJmf9sNceHnd3ebnc3Uv9wuXfOzPzmnDMz5zozGwdWAbc65w5RUJQ8cC2wDJgFJioh/MJCMrNxq2vOzK4HmIvRRemxKP0RJWt53o7S+d2Yzsx6gQ+AIUDAnUqpBLzXZd4RYFUlhB/bdZacc3PAOmAcCMC7wfvFwLNdoAPAyx09bXyYWRl4E7gDmAdGlNKFwLYu8GolhO9O87RJd64GbMrgEvB68P4osMWdXLtVV7czlooNpVRWSs8DO7NpR/B+3rBHsvetCgtCMTxwQCm9BbyQrc8F7/uBex3uRCeXO0PrUZ4NfKyUPgWeyj3bg/crDNsIRGwBaJQGorQ3Svdn2wHgc2BUKb0DPJHtjwfvbwRucc7tz+N+i9LFUdoXpfVN36I0CVwBTFI/q9e1LPxT8P4qYEdu70q12mYzWw1MYQzjeJF6zq+shHC4B7jklOBPP/TzSunh4P0DwKvAfb5c9krpe+CcwsEoZdbhEvBM9wxRAl5RShcA9wAngE3B+8tLpdLuwrhp4MNmK0pfRWkySr7NXS8+L5nZbWZWy/Vin1IaitJnUTqvwevJ71lgSSWEFKUfHG7Q2m/xqFJaGry/GXgfGPLl8mJgrXPur2JoUC8Qy3OpG+sAbGhEKT0ErAWOA6uBPWbW1wr9BOgFbgKezot0kAPYqJQA1gC/A9cA+82svzksSn1R+jNKX0SpnM/e1x3yqig92JhrZivM7FjO8bSZLSuCR/Ok16K0KMNHojQWpYko7Y7S1igN5PE3ROl4lNaZ2UVmNpPBU01orvZvZPCeKFXbBR+lEKVtUapFaSZKg9njqpl9aWYTrmXCImA7sCWb9lK/jj9TrwkrgA1AH3AQuKsSwkzbrLfxpgpsBtYDxf/R3xm2ExirhNCuHHZXTsmRwiat+S/zSt06eysVA/4pmGr/G3qm6ik28v29FKgCg8BS6pvS0KNRGgZ+Bb4FpsxsOkfUlMuwDcBWYOUZOHYM2AU8WQmhBifDv70O7PjX7KZ+4G7g3FM8zd6uBIaBy4AqxnIcZwFLCovPAhE4Sj38b4BDwEeVEFKD9S94Khjn486v3QAAAABJRU5ErkJggg==\"\n\n/***/ }),\n/* 330 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAATCAYAAAB7u5a2AAABx0lEQVQ4jaWUv48NURiGn3ONmCs32ZBd28ht1gqyZAkF21ylQkEiSp2ehpDlD1BoFGqqVdJohYKI7MaPxMoVNghCWMF+7ybLUewnOXfcMWO9yeQ857zne8+XmZOBGjJpr0kvTIomvTZpS526UCO4DUwD64FjwCFgqZnnR+oc8LfgzKQ73vGsr42ZtGjSQFV9o8KfBCacZwCaef4YmAf2rzjcpN3A2WSpm/AssKcqPDNpDBjs410CViXzTwk/A7b1C4wxDgOngAsZcAXY2buDfp/6S4F3lDS8DjgBzDWAjX/Y/e/QgYS/AhsKHa+OMQ6GEJ4Cj4BOAxgq6aCowyZtdf4OtAr+FHDO+R4wWnVbihr3cQnICt4boO38GWj9a/icjwOACt4m4K3zEPA+AxaAtTWCnwN3lzHkEL8V/OPAGud9wK2GF9XR1Wae/1zG2AI+pGYI4VUIoRtjHAc2A9cz4LRPevYCZ+i9/4sJt4GXJU10gaPAzdI2TTro/5Tfz8XEe2LSZGmxq/SDNvP8BnA5WRrx4BwYBe6vONx1EnjovGvBLAAd4Adwuyq8UiaNmDTvr+a8SQ9MuvbfwckBHZPe+QEfTdpep+4XZmPBHiHgz74AAAAASUVORK5CYII=\"\n\n/***/ }),\n/* 331 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAUCAYAAACXtf2DAAACtklEQVQ4jZ2VSYiURxTHf+/T9Nc9iRrBuYySmIsXUU9iFMEFERRBvAjJLUQi5ioiHvSScfTmgqC4XAT1ZIgLuJHkICaaQAgKI2hAUBT30bjUq7bbv4eukXK029F3+eqtv/fqK6qQdEnSNUmT6CDB/bvgfjO4N9zj2RD8007xg1IABkwEzkma0qb4PGAPMBZYLtSD8eNwAEjqTlNI0gNJM4YU7w7ut4O7gvuhZFsR3C8NC5BBLiTIY0mzM8AvqbiC++pk+zLpE95XuwAws3vAQuBPYDRwWtL84P4tsDSLv5oaug4EYOawAMF9jMdoLxqNZcDvQA04UVYqL4G/svj7AF21mhJscrvCksYBFO7xc2AAGGg2mrdjvf4rcAyomNn+slLZmUEGBgsYdh945xZJmgvckDSrEJpK6ySBgV6q12O8ABwGPjGzfWWlsjdN9rpjoSfA+DYDXARGAksK4Is3XC1Ub4z1f4CDQGFmu6tleQSYk0U+p7WVeefLJc00s4fAeWB6Qeunvj0m2ugx9gO7kmlrtSxvBfcy6fXUZS6rgG/S+jLQUwCVNmMC9HqM14EtSe+rluWazN8YEv8IqKZ1E1qnaIDO0ucx3gX6kv6TpM3AM+D/IbGjgP60/gq4WQA33gMA2OQxPgHWJX1ttSwL4FAeZGYLgB2SasBs4A8L7qOBf9M0uXQB3a+TMYSmVctyDrA9mfcBK82smSdKWgCcAaa1bTm4fxbc/8uuCQX3RanAD5Ka6Wo5IGnE0HxJPZ03pQX5Org3MsD3AO5xXLPZXJ9BjkrqdFg6QjZkgG3Jtsw93pG0VFI9QU5K6voYQBHcTydAfwheBI9HgvvPAJIWS3qeIL9JGvUxkO7gfi1BrqTvwkG/pPmSnibIqTzXPgAyEVgBjAEu1qrVPbk/PVTHgb/NbPGg/RVIzOQqzSTBaQAAAABJRU5ErkJggg==\"\n\n/***/ }),\n/* 332 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0yMCAtMjAgMjQwIDI0MCI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4Mj0iMCIgeTI9IjEiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZmIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjEiIHgyPSIwIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZmIiBzdG9wLW9wYWNpdHk9IjAiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiIHN0b3Atb3BhY2l0eT0iLjA4Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImMiIHgxPSIxIiB4Mj0iMCIgeTE9IjEiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIuMDgiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiIHN0b3Atb3BhY2l0eT0iLjE2Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9ImQiIHgyPSIwIiB5MT0iMSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZmIiBzdG9wLW9wYWNpdHk9Ii4xNiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIuMzMiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZSIgeDI9IjEiIHkxPSIxIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmYiIHN0b3Atb3BhY2l0eT0iLjMzIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZmIiBzdG9wLW9wYWNpdHk9Ii42NiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJmIiB4Mj0iMSIgeTI9IjEiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIuNjYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiLz48L2xpbmVhckdyYWRpZW50PjxtYXNrIGlkPSJnIj48ZyBmaWxsPSJub25lIiBzdHJva2Utd2lkdGg9IjQwIj48cGF0aCBzdHJva2U9InVybCgjYSkiIGQ9Ik04Ni42LTUwYTEwMCAxMDAgMCAwMTAgMTAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMDAgMTAwKSIvPjxwYXRoIHN0cm9rZT0idXJsKCNiKSIgZD0iTTg2LjYgNTBBMTAwIDEwMCAwIDAxMCAxMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMCAxMDApIi8+PHBhdGggc3Ryb2tlPSJ1cmwoI2MpIiBkPSJNMCAxMDBhMTAwIDEwMCAwIDAxLTg2LjYtNTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMCAxMDApIi8+PHBhdGggc3Ryb2tlPSJ1cmwoI2QpIiBkPSJNLTg2LjYgNTBhMTAwIDEwMCAwIDAxMC0xMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMCAxMDApIi8+PHBhdGggc3Ryb2tlPSJ1cmwoI2UpIiBkPSJNLTg2LjYtNTBBMTAwIDEwMCAwIDAxMC0xMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMCAxMDApIi8+PHBhdGggc3Ryb2tlPSJ1cmwoI2YpIiBkPSJNMC0xMDBhMTAwIDEwMCAwIDAxODYuNiA1MCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAwIDEwMCkiLz48L2c+PC9tYXNrPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB4PSItMjAiIHk9Ii0yMCIgbWFzaz0idXJsKCNnKSIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==\"\n\n/***/ }),\n/* 333 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNDcxIDQ2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIwIiB4Mj0iMCIgeTE9IjAiIHkyPSIxIj48c3RvcCBvZmZzZXQ9IjY2LjY2JSIgc3RvcC1jb2xvcj0iI2ZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI2EpIiBkPSJNNzkgMzA4YzE0LjI1LTYuNSA1NC4yNS0xOS43NSA3MS0yOSA5LTMuMjUgMjUtMjEgMjUtMjFzMy43NS0xMyAzLTIyYy0xLjc1LTYuNzUtMTUtNDMtMTUtNDMtMi41IDMtNC43NDEgMy4yNTktNyAxLTMuMjUtNy41LTIwLjUtNDQuNS0xNi01NyAxLjI1LTcuNSAxMC02IDEwLTYtMTEuMjUtMzMuNzUtOC02Ny04LTY3cy4wNzMtNy4zNDYgNi0xNWMtMy40OC42MzctOSA0LTkgNCAyLjU2My0xMS43MjcgMTUtMjEgMTUtMjEgLjE0OC0uMzEyLTEuMzIxLTEuNDU0LTEwIDEgMS41LTIuNzggMTYuNjc1LTguNjU0IDMwLTExIDMuNzg3LTkuMzYxIDEyLjc4Mi0xNy4zOTggMjItMjItMi4zNjUgMy4xMzMtMyA2LTMgNnMxNS42NDctOC4wODggNDEtNmMtMTkuNzUgMi0yNCA2LTI0IDZzNzQuNS0xMC43NSAxMDQgMzdjNy41IDkuNSAyNC43NSA1NS43NSAxMCA4OSAzLjc1LTEuNSA0LjUtNC41IDkgMSAuMjUgMTQuNzUtMTEuNSA2My0xOSA2Mi0yLjc1IDEtNC0zLTQtMy0xMC43NSAyOS41LTE0IDM4LTE0IDM4LTIgNC4yNS0zLjc1IDE4LjUtMSAyMiAxLjI1IDQuNSAyMyAyMyAyMyAyM2wxMjcgNTNjMzcgMzUgMjMgMTM1IDIzIDEzNUwwIDQ2NHMtMy05Ni43NSAxNC0xMjBjNS4yNS02LjI1IDIxLjc1LTE5Ljc1IDY1LTM2eiIvPjwvc3ZnPg==\"\n\n/***/ }),\n/* 334 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNzkgODYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTkuNzU3IDQwLjkyNGMzLjczOC01LjE5MSAxMi43MTEtNC4zMDggMTIuNzExLTQuMzA4IDIuMjIzIDMuMDE0IDUuMTI2IDI0LjU4NiAzLjYyNCAyOC43MTgtMS40MDEgMS4zMDEtMTEuNjExIDEuNjI5LTEzLjM4LTEuNDM2LTEuMjI2LTguODA0LTIuOTU1LTIyLjk3NS0yLjk1NS0yMi45NzV6bTU4Ljc4NSAwYy0zLjczNy01LjE5MS0xMi43MTEtNC4zMDgtMTIuNzExLTQuMzA4LTIuMjIzIDMuMDE0LTUuMTI2IDI0LjU4Ni0zLjYyNCAyOC43MTggMS40MDEgMS4zMDEgMTEuNjExIDEuNjI5IDEzLjM4LTEuNDM2IDEuMjI2LTguODA0IDIuOTU1LTIyLjk3NSAyLjk1NS0yMi45NzV6Ii8+PHBhdGggZD0iTTY4LjY0NyA1OC42Yy43MjktNC43NTMgMi4zOC05LjU2MSAyLjM4LTE0LjgwNCAwLTIxLjQxMi0xNC4xMTUtMzguNzctMzEuNTI4LTM4Ljc3LTE3LjQxMiAwLTMxLjUyNyAxNy4zNTgtMzEuNTI3IDM4Ljc3IDAgNC41NDEuNTE1IDguOTM2IDEuODAyIDEyLjk1IDEuNjk4IDUuMjk1LTUuNTQyIDYuOTkxLTYuNjE2IDIuMDczQzIuNDEgNTUuMzk0IDAgNTEuNzg3IDAgNDguMTAzIDAgMjEuNTM2IDE3LjY4NSAwIDM5LjUgMCA2MS4zMTYgMCA3OSAyMS41MzYgNzkgNDguMTAzYzAgLjcxOC0yLjg5OSA5LjY5My0zLjI5MiAxMS40MDgtLjc1NCAzLjI5My03Ljc1MSAzLjU4OS03LjA2MS0uOTEyeiIvPjxwYXRoIGQ9Ik01LjA4NCA1MS4zODVjLS44MDQtMy43ODIuNTY5LTcuMzM1IDMuMTM0LTcuOTIxIDIuNjM2LS42MDMgNS40ODUgMi4xNSA2LjI4OSA2LjEzMi43OTcgMy45NDgtLjc1MiA3LjQ1Ny0zLjM4OCA3Ljg1OS0yLjU2Ni4zOTEtNS4yMzctMi4zMTgtNi4wMzQtNi4wN3ptNjguODM0IDBjLjgwNC0zLjc4Mi0uNTY4LTcuMzM1LTMuMTMzLTcuOTIxLTIuNjM2LS42MDMtNS40ODUgMi4xNS02LjI4OSA2LjEzMi0uNzk3IDMuOTQ4Ljc1MiA3LjQ1NyAzLjM4OSA3Ljg1OSAyLjU2NS4zOTEgNS4yMzctMi4zMTggNi4wMzQtNi4wN3ptLTIuMDM4IDguMjg4Yy0uOTI2IDE5LjY1OS0xNS4xMTIgMjQuNzU5LTI1Ljg1OSAyMC40NzUtNS40MDUtLjYwNi0zLjAzNCAxLjI2Mi0zLjAzNCAxLjI2MiAxMy42NjEgMy41NjIgMjYuMTY4IDMuNDk3IDMxLjI3My0yMC41NDktLjU4NS00LjUxMS0yLjM3OS0xLjE4Ny0yLjM3OS0xLjE4N3oiLz48cGF0aCBkPSJNNDEuNjYyIDc4LjQyMmw3LjU1My41NWMxLjE5Mi4xMDcgMi4xMiAxLjE1MyAyLjA3MiAyLjMzNWwtLjEwOSAyLjczOGMtLjA0NyAxLjE4Mi0xLjA1MSAyLjA1NC0yLjI0MyAxLjk0NmwtNy41NTMtLjU1Yy0xLjE5MS0uMTA3LTIuMTE5LTEuMTUzLTIuMDcyLTIuMzM1bC4xMDktMi43MzdjLjA0Ny0xLjE4MiAxLjA1Mi0yLjA1NCAyLjI0My0xLjk0N3oiLz48L2c+PC9zdmc+\"\n\n/***/ }),\n/* 335 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAAoCAYAAABtla08AAAINUlEQVR42u2aaUxUVxTHcRBmAAEBRVTK4sKwDIsg+wCK7CqIw1CN1YobbbS2qYlJ06Qx1UpdqMbYWq2pSzWmH6ytNbXWJY1Lq7VuqBERtW64V0XFLYae0/xvcp3MMAMzDz6IyT/ge2ce5/7ucpY3Ts3NzZ1ygF57AJ0gO0G2jyZPmdbFyclJSAV1EeoEaUUSLGdSV5KLLFxzFmA7QVqGqDqjixhWkxCVeyRVl38wM6bwj6yYItYK47BAuu9B0gCqs6Ng2r494KQtkj/Dz2jHraw6qw2fdSE4rNmcCPCvZONP8iF1I6kdBdMaQJWZLeJqRWa2kPJAxXY+GxE+zxLI03GRh8lGSwoi9WCY8FWlCEh+8JOnT7MfPGjMuXX7Tt61hoaCi/9cKmKdv3BxeEtim/UbNpnbQiqF4MmT7kqrbr4lkMcTo46TTSpJB5g+8NHuVWnWuaampvhmO/7duHmrGluoO4C6OsJZGRrkDIld43ZqUOTnlkDSmXmabAoBU0vqBf+6KgFSxQ9++uzZ8rZApM81TJ8xM5me0Z/UF7PuBmdVdkGEb5gYDeQmyZNW3SJLIP9Kj64lGyMpmxRN6sOfIbkoAhKOdnv2/PmB1kB88eLFo+olyyrps3rSINIAzLonnqlqK8R9w+L86vtrt5L2nhug3Vc3ULu/Liz8AOuXESlZZONH6kmr7gtLIA9lRNeRzVukAvj3BslLnJNKgfScO69K+/Lly0ZbQW7e8tNK+pwBjqaSIjDrXgJkW1ciAZvbQjQ+RDahpBBKd5ZZsqN758hmImk4KQHnpDd8UwSkCyJarx07d4+3BeKJmlMHyX4qaRxpBCmNFE4KENvHDpAutVERn1kCVBMfeRRgYvZnx62wZPdnZkw92VQA5GClQXYRBze2S+iJmpPVVoJLA9l9QKokjcWKTCT1R5rhLg70NuSsziT16diIKkuAjibrTpJNDkn/e17CahtAjlAWJAYkb29Sb1LE9Rs391kILk8mVkyuIpuZcLKUlEmKkra1WuSTNuesEPzwoEploSVAh9Oiz+BIyd9dOHhtx4OEpFpVg6gbNK3yXX1j48N6U5Dz5i/gc/FDrMY3sTLiSMEkXxGxzUEUAGnbxlPaksMlHUXWAlHS8URCPseSohZbCSLjSSU7ixLXdzhIWVKq4Y7t2a/2bN0qGeKly1fYsVmk6RgIDz4J0bonyUOcjeYqm/8hRoYbWkigV2NH9CHAS60EkUkkw47hSRs6FqT1LR5AVcsrueXlK1d5AO+RpmBrZZEiefByytPCanRGNLZY0uF52gNDYr9sCRB8MHY0SJu2OJWKS2WQV65e4y31DmkCImEi0hBfufRime0RIhpbKen0/Ny9OYNW2ghyYytABjNIaxNuKttAWk6HPLn0k0FevdZwFinPWFIuKZbUV16NVko6jbWSDoPO3pOf8K0jQWLSQ0S9bdpkYck+m7vfWpAiHfKgBsZiGSSt0FqcTeU8WETqAHE2CgcAVd3Gkm4MD3xXYeI6B4NMItvKbcUpQ9gP+KMWnSsW+TaYJtoo+avBWLoKoK0CCSDud+7eXWQGZAXqV3YoQjQCfixJ8+fzj9ta3JHhlUeJ8wJOY2ws6eRKpPS3oqTvHAESEz9ya0naXL5WH6pt3FqSOhTHkTcKEXc6k1POh4Q9YJu/03TT4a8PoGMFI4i2EqSbOZAYaBkpCyD92RkG6KCSbjI/H0HEISBnlOZPFdcEzI2GTO4KBZICGKyAKLTEmJOB2txf5MbgohBINCl4FTqmpJMB2W+HiRn1Q2l6lXyPmiEP6VVE2TfGoaMYrHyPdtAnyI0jEOn9RLWmNEhvBBE7SjpFQZaShtLK+1S+T12lRwxUvrZlVPp8jE1PikeO7C/nyEqBDCB1t7+kUx4kKUWclea0yZC5BIGpiJSNSD9QgFR0RQKkL6KxHSWdsiARHJNYewoGrzG1/bk4dTPSunL2EyDjcbb7MQ+lQfZmkKiN7SjpFAM5CWAyGcwyY84YsZ1lUcbRNNtQMAdtQWGvQ0DyVjzYAKQfQFodeAeC1C8vzymXIZqD+ZEh/2OyLSalS/3VbnJZ+VqDXGjMrTCFuK4s66vVZUNfqaDolcbjOcb899sLpEE+I20GifywXe2QR3KElu99PzqjGufhREqB1pjCnG3IL3fY1v733r2FMsiGhutn0LAoJWWIGbPxjKwgjUbF0m52mPhigrpdXOecEq9pR6MkHbu2LOtrcZ9y3d0ODTb15y9MePz48aF79+8fvXnr9sljx2u2I7KNxDuaMPGVECoRs7mC4eT7SIruFNfNHK15MKuM2evwNq+4qjxvGnd5CHwNNynawW4cOlUZdG8b55IIJHmkItwrZHH6QxB3OSL9kTtAGpIvZiQB3Z4SKBfXQtEE9sashWAW87Bt3sYZNR6zn4uzJwWDKUKXfaKCdqUoBpLxSjYe9nqGiwWRBGipuGZ3Qm76itYLbbJI/PEhUApfw73uOIy9xfse3M9F9BuFJHcYrseSouGkHtCVtkuGTTikI8XgZzhg9SeF4VqcvSWiaSvNHQ8JwkNjIfEHemCmNLD1RaEfLs18mlgNuN6PFALHo7CyU5W2g00gFAQF4ozvibH04muwDbWraSFAyt/AAMzewgGR8uCeWn77xzBxPxgzPRCDDMZ14bQ/3jqGKGoHf2Hjgx3kw5LbaJDYWb52t9FMgw4AuWNWukNeuOYqOsmQi2jgws4PA/DD/z0B2x0/veCs4naw0cgybezid7X9jV3rX2RSs0wfLkll4pBGcgifg+NYxe1kJ2ycTaRq66uG/wBOl0vjcw70xwAAAABJRU5ErkJggg==\"\n\n/***/ }),\n/* 336 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/png;base64,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\"\n\n/***/ }),\n/* 337 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjkwIj48ZGVmcz48cGF0aCBkPSJNNjcgMTJMNi40NDggNzIuNTUyIDAgMzFWMThMMjYgMGw0MSAxMnptMyA3bDYgNDctMjkgMTgtMzUuNTAyLTYuNDk4TDcwIDE5eiIgaWQ9ImEiLz48L2RlZnM+PHJlY3Qgd2lkdGg9IjE1MCIgaGVpZ2h0PSI5MCIgcng9IjM1IiByeT0iNDUiIG9wYWNpdHk9Ii41Ii8+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNikiPjxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNhIi8+PC9tYXNrPjxwYXRoIGQ9Ik0zOS4yNDkgNTEuMzEyYy42OTcgMTAuMzcgMi43ODUgMTcuODk3IDUuMjUxIDE3Ljg5NyAzLjAzOCAwIDUuNS0xMS40MTcgNS41LTI1LjVzLTIuNDYyLTI1LjUtNS41LTI1LjVjLTIuNTEgMC00LjYyOCA3Ljc5Ny01LjI4NyAxOC40NTNBOC45ODkgOC45ODkgMCAwMTQzIDQ0YTguOTg4IDguOTg4IDAgMDEtMy43NTEgNy4zMTJ6TTIwLjk4NSAzMi4yMjRsMTUuNzQ2LTE2Ljg3N2E3LjM4NSA3LjM4NSAwIDAxMTAuMzc0LS40MkM1MS43MDIgMTkuMTE0IDU0IDI5LjIwOCA1NCA0NS4yMDhjMCAxNC41MjctMi4zNDMgMjMuODgtNy4wMyAyOC4wNThhNy4yOCA3LjI4IDAgMDEtMTAuMTY4LS40NjhMMjAuNDA1IDU1LjIyNEgxMmE1IDUgMCAwMS01LTV2LTEzYTUgNSAwIDAxNS01aDguOTg1eiIgZmlsbD0iI0ZGRiIgbWFzaz0idXJsKCNiKSIvPjwvZz48cGF0aCBkPSJNMTA2LjUgMTMuNUw0NC45OTggNzUuMDAyIiBzdHJva2U9IiNGRkYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9nPjwvc3ZnPg==\"\n\n/***/ }),\n/* 338 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTciIGhlaWdodD0iOTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik03MCAxMkw5LjQ0OCA3Mi41NTIgMCA2MmwzLTQ0TDI5IDBsNDEgMTJ6bTggMmwxIDUyLTI5IDE4LTM1LjUwMi02LjQ5OEw3OCAxNHoiIGlkPSJhIi8+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCAzKSI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PHBhdGggZD0iTTkuMTEgMjAuOTY4SDQ4LjFhNSA1IDAgMDE1IDVWNTguMThhNSA1IDAgMDEtNSA1SDkuMTFhNSA1IDAgMDEtNS01VjI1Ljk3YTUgNSAwIDAxNS01em00Ny4wOCAxMy4zOTRjMC0uMzQ1IDUuNDcyLTMuMTU5IDE2LjQxNS04LjQ0M2EzIDMgMCAwMTQuMzA0IDIuNzAydjI2LjgzNWEzIDMgMCAwMS00LjMwNSAyLjcwMWMtMTAuOTQyLTUuMjg2LTE2LjQxMy04LjEtMTYuNDEzLTguNDQ2VjM0LjM2MnoiIGZpbGw9IiNGRkYiIG1hc2s9InVybCgjYikiLz48L2c+PHBhdGggZD0iTTgxLjUgMTYuNUwxOS45OTggNzguMDAyIiBzdHJva2U9IiNGRkYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9nPjwvc3ZnPg==\"\n\n/***/ }),\n/* 339 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(340);\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of \r\n\n\n\n// WEBPACK FOOTER //\n// src/components/video-launcher/Test.vue","\r\n \r\n {{ title }}: {{ rating }} \r\n