{"version":3,"sources":["./node_modules/@ng-select/ng-select/esm5/ng-select.js","./node_modules/ngx-editor/esm5/ngx-editor.js","./node_modules/ngx-infinite-scroll/modules/ngx-infinite-scroll.es5.js","./node_modules/ngx-toastr/fesm5/ngx-toastr.js","./node_modules/rxjs/_esm5/observable/FromEventObservable.js","./node_modules/rxjs/_esm5/observable/FromEventPatternObservable.js","./node_modules/rxjs/_esm5/observable/fromEvent.js","./node_modules/rxjs/_esm5/observable/fromEventPattern.js","./src/app/model/base/baseRequest.ts","./src/app/model/base/baseResponse.ts","./src/app/model/criteria/customer.ts","./src/app/model/criteria/order.ts","./src/app/model/criteria/product.ts","./src/app/model/criteria/purchase.ts"],"names":[],"mappings":";;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACoR;AACnQ;AACkB;AAC/C;AACY;AACL;AACC;;AAE/C;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,8BAA8B,IAAI;AACjE;AACA,wDAAwD;AACxD,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,gCAAgC,IAAI;AACnE;AACA,0DAA0D;AAC1D,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,6BAA6B,IAAI;AAChE;AACA,uDAAuD;AACvD,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,mCAAmC,IAAI;AACtE;AACA,4DAA4D;AAC5D,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,8BAA8B,IAAI;AACjE;AACA,wDAAwD;AACxD,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,8BAA8B,IAAI;AACjE;AACA,wDAAwD;AACxD,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,gCAAgC,IAAI;AACnE;AACA,0DAA0D;AAC1D,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,oCAAoC,IAAI;AACvE;AACA,8DAA8D;AAC9D,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,mCAAmC,IAAI;AACtE;AACA,6DAA6D;AAC7D,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS,UAAU,2BAA2B,IAAI;AAC9D;AACA,qDAAqD;AACrD,KAAK,OAAO,0DAAW,GAAG;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,yDAAU,EAAE;AACxB;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,wDAAwD,mCAAmC,EAAE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,mBAAmB,EAAE;AAChG;AACA;AACA;AACA;AACA;AACA,qDAAqD,kGAAkG,EAAE;AACzJ;AACA,oDAAoD,0BAA0B,EAAE;AAChF;AACA,6BAA6B,uDAAuD,EAAE;AACtF,6BAA6B,gHAAgH;AAC7I,2DAA2D,qBAAqB,EAAE;AAClF;AACA;AACA,6DAA6D,mBAAmB,EAAE;AAClF;AACA;AACA;AACA,kCAAkC,+DAAQ,2CAA2C,4BAA4B,EAAE;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAQ,0CAA0C,UAAU;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,QAAQ,gBAAgB;AACnD;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD;AACA;AACA,yBAAyB,6DAAM;AAC/B;AACA,gEAAgE,4BAA4B,EAAE;AAC9F;AACA;AACA,4DAA4D,+DAAQ;AACpE;AACA;AACA;AACA;AACA;AACA,0BAA0B,+DAAQ,kDAAkD,UAAU;AAC9F;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,gBAAgB;AAC/C;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,0CAA0C,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,oBAAoB,EAAE;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;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,SAAS;AACT;AACA,0EAA0E,0CAA0C,EAAE;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,mBAAmB,EAAE;AAC7G;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,gCAAgC,+DAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,oCAAoC,+DAAQ;AAC5C;AACA;AACA;AACA;AACA,0BAA0B,+DAAQ,4CAA4C,UAAU;AACxF;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,gBAAgB;AAC/C;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA,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,CAAC;AACD;AACA,KAAK,OAAO,yDAAU,EAAE;AACxB;AACA,4CAA4C,WAAW;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,yDAAU,EAAE;AACxB;AACA,mDAAmD,WAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2DAAY;AACtC,+BAA+B,2DAAY;AAC3C,gCAAgC,2DAAY;AAC5C,6BAA6B,qDAAO;AACpC;AACA;AACA;AACA,mDAAmD;AACnD,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kGAAgB,qBAAqB,8DAA8D,EAAE;AAC7G,kBAAkB,yEAAS;AAC3B,0CAA0C,0CAA0C,EAAE;AACtF;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,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wGAAwG,2BAA2B,EAAE;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,qDAAM;AACd;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB,EAAE;AACjE,aAAa;AACb;AACA,+CAA+C,uBAAuB,EAAE;AACxE;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS;AACrB,iCAAiC,sEAAuB;AACxD,+BAA+B,gEAAiB;AAChD;AACA;AACA,6CAA6C,8BAA8B,sBAAsB,kBAAkB,UAAU,WAAW,aAAa,iCAAiC,4CAA4C,cAAc,YAAY,8BAA8B,sBAAsB,iBAAiB,gBAAgB,yDAAyD,mBAAmB,gBAAgB,uBAAuB,uDAAuD,8BAA8B,sBAAsB,eAAe,cAAc,mBAAmB,gBAAgB,uBAAuB,oEAAoE,gBAAgB,0BAA0B,gEAAgE,eAAe,gCAAgC,gBAAgB,gBAAgB,kBAAkB,cAAc,iCAAiC,uCAAuC,MAAM,OAAO,WAAW,YAAY,kBAAkB,kCAAkC,UAAU,UAAU;AACvlC,aAAa,IAAI;AACjB;AACA,uDAAuD;AACvD,KAAK,wCAAwC,OAAO,qDAAM,SAAS,iEAAU,cAAc,0BAA0B,EAAE,KAAK,IAAI;AAChI,KAAK,OAAO,wDAAS,GAAG;AACxB,KAAK,OAAO,yDAAU,GAAG;AACzB,KAAK,OAAO,qDAAM,GAAG;AACrB,KAAK,8BAA8B;AACnC,KAAK,uBAAuB;AAC5B,EAAE;AACF;AACA,eAAe,OAAO,oDAAK,EAAE;AAC7B,kBAAkB,OAAO,oDAAK,EAAE;AAChC,kBAAkB,OAAO,oDAAK,EAAE;AAChC,sBAAsB,OAAO,oDAAK,EAAE;AACpC,uBAAuB,OAAO,oDAAK,EAAE;AACrC,wBAAwB,OAAO,oDAAK,EAAE;AACtC,wBAAwB,OAAO,oDAAK,EAAE;AACtC,gBAAgB,OAAO,qDAAM,EAAE;AAC/B,qBAAqB,OAAO,qDAAM,EAAE;AACpC,sBAAsB,OAAO,qDAAM,EAAE;AACrC,2BAA2B,OAAO,wDAAS,qBAAqB,OAAO,yDAAU,EAAE,IAAI;AACvF,0BAA0B,OAAO,wDAAS,oBAAoB,OAAO,yDAAU,EAAE,IAAI;AACrF,2BAA2B,OAAO,wDAAS,qBAAqB,OAAO,yDAAU,EAAE,IAAI;AACvF,yBAAyB,OAAO,2DAAY,oCAAoC;AAChF;AACA;AACA;AACA;AACA,gCAAgC,qDAAO;AACvC;AACA;AACA;AACA,0BAA0B,uBAAuB,EAAE;AACnD,+BAA+B,0CAA0C,EAAE;AAC3E;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS;AACrB;AACA,iCAAiC,sEAAuB;AACxD;AACA,aAAa,IAAI;AACjB;AACA,gDAAgD;AAChD,KAAK,OAAO,yDAAU,GAAG;AACzB,EAAE;AACF;AACA,eAAe,OAAO,oDAAK,EAAE;AAC7B,kBAAkB,OAAO,oDAAK,EAAE;AAChC;AACA,mCAAmC,6DAAc;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,6BAA6B,2DAAY;AACzC,8BAA8B,2DAAY;AAC1C,+BAA+B,2DAAY;AAC3C,6BAA6B,2DAAY;AACzC,8BAA8B,2DAAY;AAC1C,+BAA+B,2DAAY;AAC3C,8BAA8B,2DAAY;AAC1C,4BAA4B,2DAAY;AACxC,+BAA+B,2DAAY;AAC3C,+BAA+B,2DAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qDAAO;AACpC,8BAA8B,qDAAO;AACrC,uCAAuC;AACvC,uCAAuC;AACvC;AACA,gEAAgE,yBAAyB,EAAE;AAC3F;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAA0B,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,0BAA0B,8CAA8C,EAAE;AAC1E;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,wDAAwD,gBAAgB,EAAE;AAC1E,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA,sCAAsC,oDAAoD,EAAE;AAC5F,oCAAoC,EAAE;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,kEAAkE,EAAE;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,aAAa,EAAE,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,4EAAK;AAC1C,YAAY,oEAAK,eAAe,+DAAQ,wCAAwC,4BAA4B,EAAE,SAAS,yEAAS;AAChI;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,kBAAkB,yEAAS,kBAAkB,yEAAS;AACtD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,8BAA8B,EAAE;AAChF;AACA;AACA;AACA;AACA;AACA;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,iDAAiD,qBAAqB,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yEAAS,kBAAkB,mEAAG,oBAAoB,wCAAwC,EAAE,GAAG,4EAAY,OAAO,sEAAM,cAAc,sCAAsC,EAAE,GAAG,mEAAG,cAAc,oCAAoC,EAAE;AAC1P;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0BAA0B,+DAAQ,qCAAqC,UAAU;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,gBAAgB;AAC/C;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA,uEAAuE,gBAAgB,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB;AACA,6CAA6C,WAAW;;AAE0gB;AAClkB;;;;;;;;;ACplFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA6I;AAChE;AACtC;AACR;AAC+E;AACjD;AACd;;AAE/C;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,EAAE;AAChD;AACA;AACA;AACA,gDAAgD,IAAI;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yEAAW;AACrC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA;AACA,qFAAqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,IAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,yDAAU,EAAE;AACxB;AACA,qDAAqD;AACrD,KAAK,OAAO,wEAAU,GAAG;AACzB,EAAE;AACF;AACA;AACA;AACA,2BAA2B,qDAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,yDAAU,EAAE;AACxB;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2DAAY;AACpC,yBAAyB,2DAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACD;AACA,KAAK,OAAO,wDAAS;AACrB;AACA,k1BAAk1B,wCAAwC;AAC13B,sCAAsC,kBAAkB,0DAA0D,0BAA0B,cAAc,cAAc,UAAU,yBAAyB,kBAAkB,8CAA8C,gBAAgB,yBAAyB,sBAAsB,6BAA6B,kBAAkB,gBAAgB,UAAU,kBAAkB,wGAAwG,UAAU,mEAAmE,iBAAiB,+BAA+B,mBAAmB,qCAAqC,gBAAgB,iDAAiD,aAAa,kBAAkB,MAAM,+BAA+B,UAAU,cAAc,UAAU,kEAAkE,cAAc;AACz7B;AACA;AACA,iCAAiC,yEAAiB;AAClD,qCAAqC,iEAAU,cAAc,2BAA2B,EAAE;AAC1F;AACA;AACA;AACA,aAAa,IAAI;AACjB;AACA,iDAAiD;AACjD,KAAK,wBAAwB;AAC7B,KAAK,gCAAgC;AACrC,KAAK,OAAO,wDAAS,GAAG;AACxB,EAAE;AACF;AACA,kBAAkB,OAAO,oDAAK,EAAE;AAChC,oBAAoB,OAAO,oDAAK,EAAE;AAClC,qBAAqB,OAAO,oDAAK,EAAE;AACnC,mBAAmB,OAAO,oDAAK,EAAE;AACjC,gBAAgB,OAAO,oDAAK,EAAE;AAC9B,mBAAmB,OAAO,oDAAK,EAAE;AACjC,eAAe,OAAO,oDAAK,EAAE;AAC7B,kBAAkB,OAAO,oDAAK,EAAE;AAChC,iBAAiB,OAAO,oDAAK,EAAE;AAC/B,iBAAiB,OAAO,oDAAK,EAAE;AAC/B,gBAAgB,OAAO,oDAAK,EAAE;AAC9B,qBAAqB,OAAO,oDAAK,EAAE;AACnC,uBAAuB,OAAO,oDAAK,EAAE;AACrC,uBAAuB,OAAO,oDAAK,EAAE;AACrC,cAAc,OAAO,qDAAM,EAAE;AAC7B,eAAe,OAAO,qDAAM,EAAE;AAC9B,kBAAkB,OAAO,wDAAS,0BAA0B;AAC5D,oBAAoB,OAAO,wDAAS,yBAAyB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS;AACrB;AACA;AACA,8CAA8C,WAAW,yBAAyB,kBAAkB,kBAAkB,gBAAgB,sBAAsB,uBAAuB,wBAAwB,kBAAkB,UAAU,UAAU,UAAU;AAC3P,aAAa,IAAI;AACjB;AACA,kDAAkD;AAClD,KAAK,4BAA4B;AACjC,EAAE;AACF;AACA,qBAAqB,OAAO,2DAAY,6CAA6C;AACrF,mBAAmB,OAAO,2DAAY,2CAA2C;AACjF,kBAAkB,OAAO,2DAAY,oCAAoC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,mCAAmC,EAAE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS;AACrB;AACA,sHAAsH,cAAc;AACpI,8CAA8C,cAAc,yBAAyB,sBAAsB,uBAAuB,sBAAsB,+BAA+B,uBAAuB;AAC9M,aAAa,IAAI;AACjB;AACA,wDAAwD;AACxD,KAAK,wBAAwB;AAC7B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2DAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kEAAU;AACrC,2BAA2B,kEAAU;AACrC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kEAAU;AACtC,SAAS;AACT;AACA;AACA;AACA;AACA,4BAA4B,kEAAU;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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AAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;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,GAAG;AAClB;AACA;AACA,kCAAkC,iBAAiB;AACnD;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,wCAAwC,uDAAuD;AAC/F;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA,2BAA2B,aAAa,uBAAuB;AAC/D;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE,yDAAyD,oEAAoE,EAAE;AACpJ;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB;AACA,YAAY;AACZ;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,YAAY;AACZ;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA,KAAK;AACL;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA,2CAA2C,wEAAQ,gBAAgB,QAAQ,sEAAE,qCAAqC,EAAE,GAAG,mEAAG,2BAA2B,wFAAwF,EAAE,GAAG,mEAAG;AACrP;AACA;AACA,KAAK,GAAG,sEAAM;AACd;AACA;AACA,KAAK,GAAG,mEAAG;AACX;AACA;AACA,KAAK,GAAG,mEAAG;AACX;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,mBAAmB,EAAE,UAAU,oFAAS;AACxC;AACA;AACA;AACA;AACA,uBAAuB,0EAAU;AACjC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA,4BAA4B,2DAAY;AACxC,8BAA8B,2DAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gCAAgC,oCAAoC,sCAAsC,EAAE,EAAE,EAAE;AACjI,aAAa;AACb;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,wDAAS;AACrB;AACA,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA,sDAAsD;AACtD,KAAK,OAAO,yDAAU,GAAG;AACzB,KAAK,OAAO,qDAAM,GAAG;AACrB,EAAE;AACF;AACA,kBAAkB,OAAO,qDAAM,EAAE;AACjC,oBAAoB,OAAO,qDAAM,EAAE;AACnC,gCAAgC,OAAO,oDAAK,EAAE;AAC9C,kCAAkC,OAAO,oDAAK,EAAE;AAChD,gCAAgC,OAAO,oDAAK,EAAE;AAC9C,gCAAgC,OAAO,oDAAK,EAAE;AAC9C,iCAAiC,OAAO,oDAAK,EAAE;AAC/C,sBAAsB,OAAO,oDAAK,EAAE;AACpC,wBAAwB,OAAO,oDAAK,EAAE;AACtC,oBAAoB,OAAO,oDAAK,EAAE;AAClC,wBAAwB,OAAO,oDAAK,EAAE;AACtC,kBAAkB,OAAO,oDAAK,EAAE;AAChC;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,KAAK,OAAO,uDAAQ;AACpB;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB;AACA;AACA;AACA;AACA,mDAAmD,WAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACyD;AACzD;;;;;;;;;AC9mBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2O;AAC5M;AACuB;AACG;AACwB;AAClC;;AAE/C;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,wDAAS;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,0DAA0D;AAC1D,SAAS,OAAO,yDAAU;AAC1B,MAAM;AACN;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,OAAO,uDAAQ;AACxB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAO;AACjC,6BAA6B,6CAAO;AACpC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gEAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,0BAA0B,EAAE,iBAAiB,EAAE;AAC/C;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,EAAE;AAClB;AACA;AACA;AACA,gBAAgB,EAAE;AAClB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,EAAE;AAClB;AACA;AACA;AACA;AACA;AACA,gBAAgB,EAAE;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB,EAAE;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB,EAAE;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB,EAAE;AAClB;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB,EAAE;AAClB;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB,EAAE;AAClB;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB,EAAE;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,yDAAU;AAC1B;AACA;AACA,0CAA0C;AAC1C,SAAS,yBAAyB;AAClC,SAAS,OAAO,uEAAwB,EAAE;AAC1C,SAAS,OAAO,6DAAc;AAC9B,MAAM;AACN;AACA,CAAC;AACD;AACA;AACA,SAAS,EAAE;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAO;AACvC;AACA;AACA;AACA,6BAA6B,6CAAO;AACpC;AACA;AACA;AACA,gCAAgC,6CAAO;AACvC;AACA;AACA;AACA,iCAAiC,6CAAO;AACxC;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA,WAAW,EAAE;AACb,uBAAuB,6DAAc;;AAErC;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,4BAA4B,+DAAQ,GAAG;AACvC,wCAAwC,+DAAQ,GAAG;AACnD;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,kCAAkC,eAAe;AACjD,8BAA8B,WAAW;AACzC;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,kCAAkC,eAAe;AACjD,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,kCAAkC,eAAe;AACjD,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,kCAAkC,eAAe;AACjD,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,kCAAkC,eAAe;AACjD,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,0BAA0B,+DAAQ,8BAA8B,UAAU;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,gBAAgB;AAC/C;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,kCAAkC,eAAe;AACjD,eAAe,+DAAQ,GAAG;AAC1B;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA,uDAAuD,8DAAe;AACtE;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA,iDAAiD,EAAE;AACnD,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,yDAAU;AAC1B;AACA;AACA,gDAAgD;AAChD,SAAS,gCAAgC,OAAO,qDAAM,yBAAyB,GAAG;AAClF,SAAS,gBAAgB;AACzB,SAAS,OAAO,uDAAQ,EAAE;AAC1B,SAAS,OAAO,+EAAY,EAAE;AAC9B,SAAS,OAAO,qDAAM;AACtB,MAAM;AACN;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,qBAAqB,+DAAQ,GAAG,eAAe,kBAAkB;AACjE;AACA,6CAA6C,uBAAuB,EAAE;AACtE;AACA;AACA,kDAAkD,+BAA+B,EAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAAQ,GAAG,eAAe,kBAAkB;AACjE,yCAAyC,uBAAuB,EAAE;AAClE;AACA;AACA;AACA;AACA,8CAA8C,+BAA+B,EAAE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAAQ,GAAG,eAAe,mBAAmB;AAClE,yCAAyC,+DAA+D,EAAE;AAC1G;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uBAAuB,EAAE;AAClE;AACA;AACA;AACA;AACA,8CAA8C,+BAA+B,EAAE;AAC/E;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gEAAgE,qCAAqC,EAAE;AACvG,aAAa;AACb;AACA;AACA,mDAAmD,eAAe,EAAE;AACpE;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,oEAAoE,qCAAqC,EAAE;AAC3G,aAAa;AACb;AACA;AACA,uDAAuD,eAAe,EAAE;AACxE;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA;AACA,yCAAyC,eAAe,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,wDAAS;AACzB;AACA,wLAAwL,gHAAgH,SAAS,qVAAqV,WAAW;AACjpB;AACA,wBAAwB,4EAAO;AAC/B,4BAA4B,0EAAK,aAAa,0EAAK;AACnD;AACA;AACA,6BAA6B;AAC7B,4BAA4B,0EAAK,WAAW,0EAAK,GAAG;AACpD,4BAA4B,0EAAK,YAAY,0EAAK,EAAE,aAAa;AACjE,4BAA4B,+EAAU,uBAAuB,4EAAO,IAAI,YAAY,KAAK,UAAU;AACnG,4BAA4B,+EAAU,sBAAsB,4EAAO,IAAI,YAAY,KAAK,UAAU;AAClG;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wCAAwC;AACxC,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,OAAO,qDAAM;AACtB,MAAM;AACN;AACA,wBAAwB,OAAO,0DAAW,oBAAoB;AAC9D,iBAAiB,OAAO,0DAAW,wBAAwB;AAC3D,oBAAoB,OAAO,2DAAY,oBAAoB;AAC3D,uBAAuB,OAAO,2DAAY,yBAAyB;AACnE,4BAA4B,OAAO,2DAAY,yBAAyB;AACxE;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,cAAc,oCAAoC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA,iBAAiB,mCAAmC,gDAAgD,EAAE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,uDAAQ;AACxB,8BAA8B,6DAAY;AAC1C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+CAA+C;AAC/C,SAAS,mCAAmC,OAAO,uDAAQ,EAAE,GAAG,OAAO,uDAAQ,EAAE;AACjF,MAAM;AACN;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;AACA;AACA;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,2DAA2D,+BAA+B,EAAE;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uBAAuB,EAAE;AACxE;AACA;AACA;AACA,uDAAuD,+BAA+B,EAAE;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uBAAuB,EAAE;AACxE;AACA;AACA;AACA;AACA,uDAAuD,+BAA+B,EAAE;AACxF;AACA;AACA;AACA,SAAS,OAAO,wDAAS;AACzB;AACA,wLAAwL,gHAAgH,SAAS,yUAAyU,WAAW;AACroB,iBAAiB;AACjB;AACA;AACA,mDAAmD;AACnD,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,OAAO,6DAAc;AAC9B,MAAM;AACN;AACA,wBAAwB,OAAO,0DAAW,oBAAoB;AAC9D,wBAAwB,OAAO,0DAAW,4BAA4B;AACtE,oBAAoB,OAAO,2DAAY,oBAAoB;AAC3D,uBAAuB,OAAO,2DAAY,yBAAyB;AACnE,4BAA4B,OAAO,2DAAY,yBAAyB;AACxE;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,OAAO,uDAAQ;AACxB,8BAA8B,6DAAY;AAC1C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,oCAAoC;AAClD;;AAEA;AACA;AACA,cAAc,oCAAoC;AAClD;;AAE4S;;AAE5S,2CAA2C,cAAc,uyvF;;;;;;;;AClvDzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AAC2C;AACC;AACI;AACE;AACH;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;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,mBAAmB,KAAK;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;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,aAAa;AACb,aAAa;AACb,aAAa;AACb;AACA,eAAe,gBAAgB;AAC/B;AACA,eAAe,OAAO;AACtB;AACA,eAAe,qBAAqB;AACpC,eAAe,2BAA2B;AAC1C;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,YAAY,4EAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,yDAAyD;AAChG;AACA;AACA;AACA;AACA,uCAAuC,yCAAyC;AAChF;AACA;AACA;AACA;AACA,uCAAuC,oDAAoD;AAC3F;AACA;AACA;AACA;AACA,2BAA2B,mEAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA,yBAAyB,wEAAQ;AACjC,2BAA2B,sEAAW;AACtC,iCAAiC,sEAAW;AAC5C;AACA;AACA;AACA;AACA,SAAS,iBAAiB,2BAA2B;AACrD;AACA;AACA;AACA,CAAC,CAAC,+DAAU;AACZ;;;;;;;;;ACxNA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACgD;AACL;AACI;AAC/C;AACA;AACA,aAAa;AACb;AACA;AACO;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;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,aAAa;AACb;AACA,eAAe,iCAAiC;AAChD;AACA;AACA,eAAe,gDAAgD;AAC/D;AACA;AACA;AACA,eAAe,0BAA0B;AACzC;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA,SAAS,iBAAiB,oBAAoB;AAC9C;AACA,aAAa,4EAAU;AACvB;AACA;AACA,2BAA2B,mEAAY;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,+DAAU;AACZ;;;;;;;;;ACjHA;AAAA;AAAA;AAC4D;AACrD,gBAAgB,iFAAmB;AAC1C;;;;;;;;;ACHA;AAAA;AAAA;AAC0E;AACnE,uBAAuB,+FAA0B;AACxD;;;;;;;;;ACHA;AAAA;IAGI;QACI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACxB,CAAC;IACL,kBAAC;AAAD,CAAC;;;;;;;;;;ACPD;AAAA;IAII;IAAgB,CAAC;IACrB,mBAAC;AAAD,CAA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","file":"common.chunk.js","sourcesContent":["import { __spread, __values, __read } from 'tslib';\nimport { Directive, TemplateRef, Injectable, Component, Renderer2, ElementRef, Input, EventEmitter, Output, ViewChild, NgZone, forwardRef, Inject, ViewEncapsulation, ChangeDetectionStrategy, HostListener, ChangeDetectorRef, ContentChild, HostBinding, ContentChildren, InjectionToken, Attribute, NgModule } from '@angular/core';\nimport { fromEventPattern } from 'rxjs/observable/fromEventPattern';\nimport { takeUntil, startWith, tap, debounceTime, map, filter } from 'rxjs/operators';\nimport { Subject } from 'rxjs/Subject';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { merge } from 'rxjs/observable/merge';\nimport { CommonModule } from '@angular/common';\n\nvar NgOptionTemplateDirective = /** @class */ (function () {\n function NgOptionTemplateDirective(template) {\n this.template = template;\n }\n return NgOptionTemplateDirective;\n}());\nNgOptionTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-option-tmp]' },] },\n];\nNgOptionTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar NgOptgroupTemplateDirective = /** @class */ (function () {\n function NgOptgroupTemplateDirective(template) {\n this.template = template;\n }\n return NgOptgroupTemplateDirective;\n}());\nNgOptgroupTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-optgroup-tmp]' },] },\n];\nNgOptgroupTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar NgLabelTemplateDirective = /** @class */ (function () {\n function NgLabelTemplateDirective(template) {\n this.template = template;\n }\n return NgLabelTemplateDirective;\n}());\nNgLabelTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-label-tmp]' },] },\n];\nNgLabelTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar NgMultiLabelTemplateDirective = /** @class */ (function () {\n function NgMultiLabelTemplateDirective(template) {\n this.template = template;\n }\n return NgMultiLabelTemplateDirective;\n}());\nNgMultiLabelTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-multi-label-tmp]' },] },\n];\nNgMultiLabelTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar NgHeaderTemplateDirective = /** @class */ (function () {\n function NgHeaderTemplateDirective(template) {\n this.template = template;\n }\n return NgHeaderTemplateDirective;\n}());\nNgHeaderTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-header-tmp]' },] },\n];\nNgHeaderTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar NgFooterTemplateDirective = /** @class */ (function () {\n function NgFooterTemplateDirective(template) {\n this.template = template;\n }\n return NgFooterTemplateDirective;\n}());\nNgFooterTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-footer-tmp]' },] },\n];\nNgFooterTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar NgNotFoundTemplateDirective = /** @class */ (function () {\n function NgNotFoundTemplateDirective(template) {\n this.template = template;\n }\n return NgNotFoundTemplateDirective;\n}());\nNgNotFoundTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-notfound-tmp]' },] },\n];\nNgNotFoundTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar NgTypeToSearchTemplateDirective = /** @class */ (function () {\n function NgTypeToSearchTemplateDirective(template) {\n this.template = template;\n }\n return NgTypeToSearchTemplateDirective;\n}());\nNgTypeToSearchTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-typetosearch-tmp]' },] },\n];\nNgTypeToSearchTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar NgLoadingTextTemplateDirective = /** @class */ (function () {\n function NgLoadingTextTemplateDirective(template) {\n this.template = template;\n }\n return NgLoadingTextTemplateDirective;\n}());\nNgLoadingTextTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-loadingtext-tmp]' },] },\n];\nNgLoadingTextTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar NgTagTemplateDirective = /** @class */ (function () {\n function NgTagTemplateDirective(template) {\n this.template = template;\n }\n return NgTagTemplateDirective;\n}());\nNgTagTemplateDirective.decorators = [\n { type: Directive, args: [{ selector: '[ng-tag-tmp]' },] },\n];\nNgTagTemplateDirective.ctorParameters = function () { return [\n { type: TemplateRef, },\n]; };\nvar ConsoleService = /** @class */ (function () {\n function ConsoleService() {\n }\n ConsoleService.prototype.warn = function (message) {\n console.warn(message);\n };\n return ConsoleService;\n}());\nConsoleService.decorators = [\n { type: Injectable },\n];\nConsoleService.ctorParameters = function () { return []; };\nfunction isDefined(value) {\n return value !== null && value !== undefined;\n}\nfunction isObject(value) {\n return isDefined(value) && typeof value === 'object';\n}\nfunction isPromise(value) {\n return value instanceof Promise;\n}\nfunction isFunction(value) {\n return value instanceof Function;\n}\nvar diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n};\nfunction stripSpecialChars(text) {\n var match = function (a) {\n return diacritics[a] || a;\n };\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n}\nfunction newId() {\n return 'axxxxxxxxxxx'.replace(/[x]/g, function (_) {\n var val = Math.random() * 16 | 0;\n return val.toString(16);\n });\n}\nvar ItemsList = /** @class */ (function () {\n function ItemsList(_ngSelect) {\n this._ngSelect = _ngSelect;\n this._items = [];\n this._filteredItems = [];\n this._markedIndex = -1;\n this._selected = [];\n }\n Object.defineProperty(ItemsList.prototype, \"items\", {\n get: function () {\n return this._items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ItemsList.prototype, \"filteredItems\", {\n get: function () {\n return this._filteredItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ItemsList.prototype, \"value\", {\n get: function () {\n return this._selected;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ItemsList.prototype, \"markedItem\", {\n get: function () {\n return this._filteredItems[this._markedIndex];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ItemsList.prototype, \"markedIndex\", {\n get: function () {\n return this._markedIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ItemsList.prototype, \"noItemsToSelect\", {\n get: function () {\n return this._ngSelect.hideSelected && this._items.length === this._selected.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ItemsList.prototype, \"maxItemsSelected\", {\n get: function () {\n return this._ngSelect.multiple && this._ngSelect.maxSelectedItems <= this._selected.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ItemsList.prototype, \"lastSelectedItem\", {\n get: function () {\n return this._selected[this._selected.length - 1];\n },\n enumerable: true,\n configurable: true\n });\n ItemsList.prototype.setItems = function (items) {\n var _this = this;\n this._items = items.map(function (item, index) { return _this.mapItem(item, index); });\n if (this._ngSelect.groupBy) {\n this._groups = this._groupBy(this._items, this._ngSelect.groupBy);\n this._items = this._flatten(this._groups);\n }\n else {\n this._groups = new Map();\n this._groups.set(undefined, this._items);\n }\n this._filteredItems = __spread(this._items);\n };\n ItemsList.prototype.select = function (item) {\n if (item.selected || this.maxItemsSelected) {\n return;\n }\n if (!this._ngSelect.multiple) {\n this.clearSelected();\n }\n this._selected.push(item);\n item.selected = true;\n if (this._ngSelect.hideSelected) {\n this._filteredItems = this._filteredItems.filter(function (x) { return x !== item; });\n }\n };\n ItemsList.prototype.findItem = function (value) {\n var _this = this;\n if (this._ngSelect.bindValue) {\n return this._items.find(function (item) { return !item.hasChildren && _this.resolveNested(item.value, _this._ngSelect.bindValue) === value; });\n }\n var option = this._items.find(function (x) { return x.value === value; });\n var findBy = this._ngSelect.compareWith ?\n function (item) { return _this._ngSelect.compareWith(item.value, value); } :\n function (item) { return !item.hasChildren && item.label && item.label === _this.resolveNested(value, _this._ngSelect.bindLabel); };\n return option || this._items.find(function (item) { return findBy(item); });\n };\n ItemsList.prototype.unselect = function (item) {\n this._selected = this._selected.filter(function (x) { return x !== item; });\n item.selected = false;\n if (this._ngSelect.hideSelected) {\n this._filteredItems.splice(item.index, 0, item);\n this._filteredItems = __spread(this._filteredItems.sort(function (a, b) { return (a.index - b.index); }));\n }\n };\n ItemsList.prototype.addItem = function (item) {\n var option = this.mapItem(item, this._items.length);\n this._items.push(option);\n this._filteredItems.push(option);\n return option;\n };\n ItemsList.prototype.clearSelected = function () {\n this._selected.forEach(function (item) {\n item.selected = false;\n item.marked = false;\n });\n this._selected = [];\n if (this._ngSelect.hideSelected) {\n this.resetItems();\n }\n };\n ItemsList.prototype.findByLabel = function (term) {\n term = stripSpecialChars(term).toLocaleLowerCase();\n return this.filteredItems.find(function (item) {\n var label = stripSpecialChars(item.label).toLocaleLowerCase();\n return label.substr(0, term.length) === term;\n });\n };\n ItemsList.prototype.filter = function (term) {\n if (!term) {\n this.resetItems();\n return;\n }\n this._filteredItems = [];\n term = this._ngSelect.searchFn ? term : stripSpecialChars(term).toLocaleLowerCase();\n var match = this._ngSelect.searchFn || this._defaultSearchFn;\n var _loop_1 = function (key) {\n var matchedItems = [];\n try {\n for (var _a = __values(this_1._groups.get(key)), _b = _a.next(); !_b.done; _b = _a.next()) {\n var item = _b.value;\n if (this_1._ngSelect.hideSelected && this_1._selected.indexOf(item) > -1) {\n continue;\n }\n var searchItem = this_1._ngSelect.searchFn ? item.value : item;\n if (match(term, searchItem)) {\n matchedItems.push(item);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (matchedItems.length > 0) {\n var _d = __read(matchedItems.slice(-1), 1), last_1 = _d[0];\n if (last_1.parent) {\n var head = this_1._items.find(function (x) { return x === last_1.parent; });\n this_1._filteredItems.push(head);\n }\n (_e = this_1._filteredItems).push.apply(_e, __spread(matchedItems));\n }\n var e_1, _c, _e;\n };\n var this_1 = this;\n try {\n for (var _a = __values(Array.from(this._groups.keys())), _b = _a.next(); !_b.done; _b = _a.next()) {\n var key = _b.value;\n _loop_1(key);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n }\n var e_2, _c;\n };\n ItemsList.prototype.resetItems = function () {\n var _this = this;\n if (this._filteredItems.length === this._items.length) {\n return;\n }\n this._filteredItems = this._ngSelect.hideSelected ?\n this._items.filter(function (x) { return _this._selected.indexOf(x) === -1; }) :\n this._items;\n };\n ItemsList.prototype.unmarkItem = function () {\n this._markedIndex = -1;\n };\n ItemsList.prototype.markNextItem = function () {\n this._stepToItem(+1);\n };\n ItemsList.prototype.markPreviousItem = function () {\n this._stepToItem(-1);\n };\n ItemsList.prototype.markItem = function (item) {\n this._markedIndex = this._filteredItems.indexOf(item);\n };\n ItemsList.prototype.markSelectedOrDefault = function (markDefault) {\n if (this._filteredItems.length === 0) {\n return;\n }\n var indexOfLastSelected = this._ngSelect.hideSelected ? -1 : this._filteredItems.indexOf(this.lastSelectedItem);\n if (this.lastSelectedItem && indexOfLastSelected > -1) {\n this._markedIndex = indexOfLastSelected;\n }\n else {\n this._markedIndex = markDefault ? this.filteredItems.findIndex(function (x) { return !x.disabled; }) : -1;\n }\n };\n ItemsList.prototype.resolveNested = function (option, key) {\n if (!isObject(option)) {\n return option;\n }\n if (key.indexOf('.') === -1) {\n return option[key];\n }\n else {\n var keys = key.split('.');\n var value = option;\n for (var i = 0, len = keys.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[keys[i]];\n }\n return value;\n }\n };\n ItemsList.prototype.mapItem = function (item, index) {\n var label = '';\n if (isDefined(item.label)) {\n label = item.label;\n }\n else {\n label = this.resolveNested(item, this._ngSelect.bindLabel);\n label = isDefined(label) ? label.toString() : '';\n }\n var value = isDefined(item.$ngOptionValue) ? item.$ngOptionValue : item;\n return {\n index: index,\n label: label,\n value: value,\n disabled: item.disabled,\n htmlId: newId()\n };\n };\n ItemsList.prototype.mapSelectedItems = function () {\n var _this = this;\n this._selected.forEach(function (selected, i) {\n var value = _this._ngSelect.bindValue ? selected.value[_this._ngSelect.bindValue] : selected.value;\n var item = _this.findItem(value);\n if (item && selected !== item) {\n item.selected = true;\n _this._selected[i] = item;\n }\n });\n if (this._ngSelect.hideSelected) {\n this._filteredItems = this.filteredItems.filter(function (x) { return _this._selected.indexOf(x) === -1; });\n }\n };\n ItemsList.prototype._defaultSearchFn = function (search, opt) {\n var label = stripSpecialChars(opt.label).toLocaleLowerCase();\n return label.indexOf(search) > -1;\n };\n ItemsList.prototype._getNextItemIndex = function (steps) {\n if (steps > 0) {\n return (this._markedIndex === this._filteredItems.length - 1) ? 0 : (this._markedIndex + 1);\n }\n return (this._markedIndex <= 0) ? (this._filteredItems.length - 1) : (this._markedIndex - 1);\n };\n ItemsList.prototype._stepToItem = function (steps) {\n if (this._filteredItems.length === 0 || this._filteredItems.every(function (x) { return x.disabled; })) {\n return;\n }\n this._markedIndex = this._getNextItemIndex(steps);\n if (this.markedItem.disabled) {\n this._stepToItem(steps);\n }\n };\n ItemsList.prototype._groupBy = function (items, prop) {\n var _this = this;\n var isFn = isFunction(this._ngSelect.groupBy);\n var groups = items.reduce(function (grouped, item) {\n var key = isFn ? ((prop)).apply(_this, [item.value]) : item.value[(prop)];\n key = key || undefined;\n var group = grouped.get(key);\n if (group) {\n group.push(item);\n }\n else {\n grouped.set(key, [item]);\n }\n return grouped;\n }, new Map());\n return groups;\n };\n ItemsList.prototype._flatten = function (groups) {\n var isFn = isFunction(this._ngSelect.groupBy);\n var items = [];\n var withoutGroup = groups.get(undefined) || [];\n items.push.apply(items, __spread(withoutGroup));\n var i = withoutGroup.length;\n var _loop_2 = function (key) {\n if (!key) {\n return \"continue\";\n }\n var parent = {\n label: key,\n hasChildren: true,\n index: i++,\n disabled: !this_2._ngSelect.selectableGroup,\n htmlId: newId()\n };\n var groupKey = isFn ? this_2._ngSelect.bindLabel : this_2._ngSelect.groupBy;\n parent.value = (_a = {}, _a[groupKey] = key, _a);\n items.push(parent);\n var children = groups.get(key).map(function (x) {\n x.parent = parent;\n x.hasChildren = false;\n x.index = i++;\n return x;\n });\n items.push.apply(items, __spread(children));\n var _a;\n };\n var this_2 = this;\n try {\n for (var _a = __values(Array.from(groups.keys())), _b = _a.next(); !_b.done; _b = _a.next()) {\n var key = _b.value;\n _loop_2(key);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return items;\n var e_3, _c;\n };\n return ItemsList;\n}());\nvar KeyCode = {\n Tab: 9,\n Enter: 13,\n Esc: 27,\n Space: 32,\n ArrowUp: 38,\n ArrowDown: 40,\n Backspace: 8,\n};\nKeyCode[KeyCode.Tab] = \"Tab\";\nKeyCode[KeyCode.Enter] = \"Enter\";\nKeyCode[KeyCode.Esc] = \"Esc\";\nKeyCode[KeyCode.Space] = \"Space\";\nKeyCode[KeyCode.ArrowUp] = \"ArrowUp\";\nKeyCode[KeyCode.ArrowDown] = \"ArrowDown\";\nKeyCode[KeyCode.Backspace] = \"Backspace\";\nvar WindowService = /** @class */ (function () {\n function WindowService() {\n }\n WindowService.prototype.requestAnimationFrame = function (fn) {\n return window.requestAnimationFrame(fn);\n };\n WindowService.prototype.setTimeout = function (handler, timeout) {\n return window.setTimeout(handler, timeout);\n };\n return WindowService;\n}());\nWindowService.decorators = [\n { type: Injectable },\n];\nWindowService.ctorParameters = function () { return []; };\nvar VirtualScrollService = /** @class */ (function () {\n function VirtualScrollService() {\n }\n VirtualScrollService.prototype.calculateItems = function (d, dropdownEl, bufferAmount) {\n var scrollHeight = d.childHeight * d.itemsLength;\n if (dropdownEl.scrollTop > scrollHeight) {\n dropdownEl.scrollTop = scrollHeight;\n }\n var scrollTop = Math.max(0, dropdownEl.scrollTop);\n var indexByScrollTop = scrollTop / scrollHeight * d.itemsLength;\n var end = Math.min(d.itemsLength, Math.ceil(indexByScrollTop) + (d.itemsPerCol + 1));\n var maxStartEnd = end;\n var maxStart = Math.max(0, maxStartEnd - d.itemsPerCol - 1);\n var start = Math.min(maxStart, Math.floor(indexByScrollTop));\n var topPadding = d.childHeight * Math.ceil(start) - (d.childHeight * Math.min(start, bufferAmount));\n topPadding = !isNaN(topPadding) ? topPadding : 0;\n start = !isNaN(start) ? start : -1;\n end = !isNaN(end) ? end : -1;\n start -= bufferAmount;\n start = Math.max(0, start);\n end += bufferAmount;\n end = Math.min(d.itemsLength, end);\n return {\n topPadding: topPadding,\n scrollHeight: scrollHeight,\n start: start,\n end: end\n };\n };\n VirtualScrollService.prototype.calculateDimensions = function (itemsLength, index, panelEl, contentEl) {\n var panelRect = panelEl.getBoundingClientRect();\n var itemRect = contentEl.children[index] ? contentEl.children[index].getBoundingClientRect() : {\n width: panelRect.width,\n height: panelRect.height,\n top: 0,\n };\n var itemsPerCol = Math.max(1, Math.floor(panelRect.height / itemRect.height));\n return {\n itemsLength: itemsLength,\n viewWidth: panelRect.width,\n viewHeight: panelRect.height,\n childWidth: itemRect.width,\n childHeight: itemRect.height,\n itemsPerCol: itemsPerCol,\n };\n };\n return VirtualScrollService;\n}());\nVirtualScrollService.decorators = [\n { type: Injectable },\n];\nVirtualScrollService.ctorParameters = function () { return []; };\nvar TOP_CSS_CLASS = 'ng-select-top';\nvar BOTTOM_CSS_CLASS = 'ng-select-bottom';\nvar NgDropdownPanelComponent = /** @class */ (function () {\n function NgDropdownPanelComponent(_ngSelect, _renderer, _elementRef, _zone, _virtualScrollService, _window) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._zone = _zone;\n this._virtualScrollService = _virtualScrollService;\n this._window = _window;\n this.items = [];\n this.position = 'auto';\n this.bufferAmount = 4;\n this.virtualScroll = false;\n this.update = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.outsideClick = new EventEmitter();\n this._destroy$ = new Subject();\n this._startupLoop = true;\n this._isScrolledToMarked = false;\n this._scrollToEndFired = false;\n this._disposeScrollListener = function () { };\n this._disposeDocumentResizeListener = function () { };\n this._selectElement = _ngSelect.elementRef.nativeElement;\n this._itemsList = _ngSelect.itemsList;\n }\n NgDropdownPanelComponent.prototype.handleMousedown = function ($event) {\n var target = ($event.target);\n if (target.tagName === 'INPUT') {\n return;\n }\n $event.preventDefault();\n $event.stopPropagation();\n };\n NgDropdownPanelComponent.prototype.ngOnInit = function () {\n var _this = this;\n this._handleScroll();\n fromEventPattern(function (handler) { return document.addEventListener('mousedown', handler, true); })\n .pipe(takeUntil(this._destroy$))\n .subscribe(function ($event) { return _this._handleOutsideClick($event); });\n };\n NgDropdownPanelComponent.prototype.ngOnChanges = function (changes) {\n if (changes[\"items\"]) {\n this._isScrolledToMarked = false;\n this._handleItemsChange(changes[\"items\"]);\n }\n };\n NgDropdownPanelComponent.prototype.ngOnDestroy = function () {\n this._disposeDocumentResizeListener();\n this._disposeScrollListener();\n this._destroy$.next();\n this._destroy$.complete();\n if (this.appendTo) {\n this._renderer.removeChild(this._elementRef.nativeElement.parentNode, this._elementRef.nativeElement);\n }\n };\n NgDropdownPanelComponent.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._whenContentReady().then(function () {\n if (_this.appendTo) {\n _this._appendDropdown();\n _this._handleDocumentResize();\n }\n _this.updateDropdownPosition();\n });\n };\n NgDropdownPanelComponent.prototype.refresh = function () {\n var _this = this;\n return new Promise(function (resolve) {\n _this._zone.runOutsideAngular(function () {\n _this._window.requestAnimationFrame(function () {\n _this._updateItems().then(resolve);\n });\n });\n });\n };\n NgDropdownPanelComponent.prototype.scrollInto = function (item) {\n if (!item) {\n return;\n }\n var index = this.items.indexOf(item);\n if (index < 0 || index >= this.items.length) {\n return;\n }\n var d = this._calculateDimensions(this.virtualScroll ? 0 : index);\n var scrollEl = this.scrollElementRef.nativeElement;\n var buffer = Math.floor(d.viewHeight / d.childHeight) - 1;\n if (this.virtualScroll) {\n scrollEl.scrollTop = (index * d.childHeight) - (d.childHeight * Math.min(index, buffer));\n }\n else {\n var contentEl = this.contentElementRef.nativeElement;\n var childrenHeight = Array.from(contentEl.children).slice(0, index).reduce(function (c, n) { return c + n.clientHeight; }, 0);\n scrollEl.scrollTop = childrenHeight - (d.childHeight * Math.min(index, buffer));\n }\n };\n NgDropdownPanelComponent.prototype.scrollIntoTag = function () {\n var el = this.scrollElementRef.nativeElement;\n var d = this._calculateDimensions();\n el.scrollTop = d.childHeight * (d.itemsLength + 1);\n };\n NgDropdownPanelComponent.prototype.updateDropdownPosition = function () {\n var dropdownEl = this._elementRef.nativeElement;\n this._currentPosition = this._calculateCurrentPosition(dropdownEl);\n var selectEl = this._selectElement;\n if (this._currentPosition === 'top') {\n this._renderer.addClass(dropdownEl, TOP_CSS_CLASS);\n this._renderer.removeClass(dropdownEl, BOTTOM_CSS_CLASS);\n this._renderer.addClass(selectEl, TOP_CSS_CLASS);\n this._renderer.removeClass(selectEl, BOTTOM_CSS_CLASS);\n }\n else {\n this._renderer.addClass(dropdownEl, BOTTOM_CSS_CLASS);\n this._renderer.removeClass(dropdownEl, TOP_CSS_CLASS);\n this._renderer.addClass(selectEl, BOTTOM_CSS_CLASS);\n this._renderer.removeClass(selectEl, TOP_CSS_CLASS);\n }\n if (this.appendTo) {\n this._updateAppendedDropdownPosition();\n }\n dropdownEl.style.opacity = '1';\n };\n NgDropdownPanelComponent.prototype._handleOutsideClick = function ($event) {\n if (this._selectElement.contains($event.target)) {\n return;\n }\n var dropdown = this._elementRef.nativeElement;\n if (dropdown.contains($event.target)) {\n return;\n }\n this.outsideClick.emit();\n };\n NgDropdownPanelComponent.prototype._handleScroll = function () {\n var _this = this;\n this._disposeScrollListener = this._renderer.listen(this.scrollElementRef.nativeElement, 'scroll', function () {\n _this.refresh();\n _this._fireScrollToEnd();\n });\n };\n NgDropdownPanelComponent.prototype._handleItemsChange = function (items) {\n var _this = this;\n this._scrollToEndFired = false;\n this._previousStart = undefined;\n this._previousEnd = undefined;\n if (items !== undefined && items.previousValue === undefined ||\n (items.previousValue !== undefined && items.previousValue.length === 0)) {\n this._startupLoop = true;\n }\n this.items = items.currentValue || [];\n this.refresh().then(function () {\n if (_this.appendTo && _this._currentPosition === 'top') {\n _this._updateAppendedDropdownPosition();\n }\n });\n };\n NgDropdownPanelComponent.prototype._updateItems = function () {\n var _this = this;\n NgZone.assertNotInAngularZone();\n if (!this.virtualScroll) {\n this._zone.run(function () {\n _this.update.emit(_this.items.slice());\n _this._scrollToMarked();\n });\n return Promise.resolve();\n }\n var loop = function (resolve) {\n var d = _this._calculateDimensions();\n var res = _this._virtualScrollService.calculateItems(d, _this.scrollElementRef.nativeElement, _this.bufferAmount || 0);\n ((_this.paddingElementRef.nativeElement)).style.height = res.scrollHeight + \"px\";\n var transform = 'translateY(' + res.topPadding + 'px)';\n ((_this.contentElementRef.nativeElement)).style.transform = transform;\n if (res.start !== _this._previousStart || res.end !== _this._previousEnd) {\n _this._zone.run(function () {\n _this.update.emit(_this.items.slice(res.start, res.end));\n });\n _this._previousStart = res.start;\n _this._previousEnd = res.end;\n if (_this._startupLoop === true) {\n loop(resolve);\n }\n }\n else if (_this._startupLoop === true) {\n _this._startupLoop = false;\n _this._scrollToMarked();\n resolve();\n }\n };\n return new Promise(function (resolve) { return loop(resolve); });\n };\n NgDropdownPanelComponent.prototype._fireScrollToEnd = function () {\n if (this._scrollToEndFired) {\n return;\n }\n var scroll = this.scrollElementRef.nativeElement;\n var panel = this._elementRef.nativeElement;\n var padding = this.virtualScroll ?\n this.paddingElementRef.nativeElement :\n this.contentElementRef.nativeElement;\n if (scroll.scrollTop + panel.clientHeight >= padding.clientHeight) {\n this.scrollToEnd.emit();\n this._scrollToEndFired = true;\n }\n };\n NgDropdownPanelComponent.prototype._calculateDimensions = function (index) {\n if (index === void 0) { index = 0; }\n return this._virtualScrollService.calculateDimensions(this.items.length, index, this.scrollElementRef.nativeElement, this.contentElementRef.nativeElement);\n };\n NgDropdownPanelComponent.prototype._handleDocumentResize = function () {\n var _this = this;\n if (!this.appendTo) {\n return;\n }\n this._disposeDocumentResizeListener = this._renderer.listen('window', 'resize', function () {\n _this._updateAppendedDropdownPosition();\n });\n };\n NgDropdownPanelComponent.prototype._scrollToMarked = function () {\n if (this._isScrolledToMarked) {\n return;\n }\n this._isScrolledToMarked = true;\n this.scrollInto(this._itemsList.markedItem);\n };\n NgDropdownPanelComponent.prototype._calculateCurrentPosition = function (dropdownEl) {\n if (this.position !== 'auto') {\n return this.position;\n }\n var selectRect = this._selectElement.getBoundingClientRect();\n var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n var offsetTop = selectRect.top + window.pageYOffset;\n var height = selectRect.height;\n var dropdownHeight = dropdownEl.getBoundingClientRect().height;\n if (offsetTop + height + dropdownHeight > scrollTop + document.documentElement.clientHeight) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n };\n NgDropdownPanelComponent.prototype._appendDropdown = function () {\n var parent = document.querySelector(this.appendTo);\n if (!parent) {\n throw new Error(\"appendTo selector \" + this.appendTo + \" did not found any parent element\");\n }\n parent.appendChild(this._elementRef.nativeElement);\n };\n NgDropdownPanelComponent.prototype._updateAppendedDropdownPosition = function () {\n var parent = document.querySelector(this.appendTo) || document.body;\n var selectRect = this._selectElement.getBoundingClientRect();\n var dropdownPanel = this._elementRef.nativeElement;\n var boundingRect = parent.getBoundingClientRect();\n var offsetTop = selectRect.top - boundingRect.top;\n var offsetLeft = selectRect.left - boundingRect.left;\n var topDelta = this._currentPosition === 'bottom' ? selectRect.height : -dropdownPanel.clientHeight;\n dropdownPanel.style.top = offsetTop + topDelta + 'px';\n dropdownPanel.style.bottom = 'auto';\n dropdownPanel.style.left = offsetLeft + 'px';\n dropdownPanel.style.width = selectRect.width + 'px';\n dropdownPanel.style.minWidth = selectRect.width + 'px';\n };\n NgDropdownPanelComponent.prototype._whenContentReady = function () {\n var _this = this;\n if (this.items.length === 0) {\n return Promise.resolve();\n }\n var dropdownEl = this._elementRef.nativeElement;\n var ready = function (resolve) {\n var ngOption = dropdownEl.querySelector('.ng-option');\n if (ngOption) {\n resolve();\n return;\n }\n _this._zone.runOutsideAngular(function () {\n setTimeout(function () { return ready(resolve); }, 5);\n });\n };\n return new Promise(function (resolve) { return ready(resolve); });\n };\n return NgDropdownPanelComponent;\n}());\nNgDropdownPanelComponent.decorators = [\n { type: Component, args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'ng-dropdown-panel',\n template: \"\\n
\\n \\n
\\n
\\n
\\n
0\\\">\\n \\n
\\n
\\n
\\n \\n
\\n \",\n styles: [\".ng-dropdown-panel{-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\"]\n },] },\n];\nNgDropdownPanelComponent.ctorParameters = function () { return [\n { type: NgSelectComponent, decorators: [{ type: Inject, args: [forwardRef(function () { return NgSelectComponent; }),] },] },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: NgZone, },\n { type: VirtualScrollService, },\n { type: WindowService, },\n]; };\nNgDropdownPanelComponent.propDecorators = {\n \"items\": [{ type: Input },],\n \"position\": [{ type: Input },],\n \"appendTo\": [{ type: Input },],\n \"bufferAmount\": [{ type: Input },],\n \"virtualScroll\": [{ type: Input },],\n \"headerTemplate\": [{ type: Input },],\n \"footerTemplate\": [{ type: Input },],\n \"update\": [{ type: Output },],\n \"scrollToEnd\": [{ type: Output },],\n \"outsideClick\": [{ type: Output },],\n \"contentElementRef\": [{ type: ViewChild, args: ['content', { read: ElementRef },] },],\n \"scrollElementRef\": [{ type: ViewChild, args: ['scroll', { read: ElementRef },] },],\n \"paddingElementRef\": [{ type: ViewChild, args: ['padding', { read: ElementRef },] },],\n \"handleMousedown\": [{ type: HostListener, args: ['mousedown', ['$event'],] },],\n};\nvar NgOptionComponent = /** @class */ (function () {\n function NgOptionComponent(elementRef) {\n this.elementRef = elementRef;\n this.stateChange$ = new Subject();\n this._disabled = false;\n }\n Object.defineProperty(NgOptionComponent.prototype, \"disabled\", {\n get: function () { return this._disabled; },\n set: function (value) { this._disabled = this._isDisabled(value); },\n enumerable: true,\n configurable: true\n });\n NgOptionComponent.prototype.ngOnChanges = function (changes) {\n if (changes[\"disabled\"]) {\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled\n });\n }\n };\n NgOptionComponent.prototype._isDisabled = function (value) {\n return value != null && \"\" + value !== 'false';\n };\n return NgOptionComponent;\n}());\nNgOptionComponent.decorators = [\n { type: Component, args: [{\n selector: 'ng-option',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: \"\"\n },] },\n];\nNgOptionComponent.ctorParameters = function () { return [\n { type: ElementRef, },\n]; };\nNgOptionComponent.propDecorators = {\n \"value\": [{ type: Input },],\n \"disabled\": [{ type: Input },],\n};\nvar NG_SELECT_DEFAULT_CONFIG = new InjectionToken('ng-select-default-options');\nvar NgSelectComponent = /** @class */ (function () {\n function NgSelectComponent(config, classes, _cd, _console, _zone, _window, elementRef) {\n var _this = this;\n this.classes = classes;\n this._cd = _cd;\n this._console = _console;\n this._zone = _zone;\n this._window = _window;\n this.elementRef = elementRef;\n this.items = [];\n this.clearable = true;\n this.markFirst = true;\n this.dropdownPosition = 'auto';\n this.loading = false;\n this.closeOnSelect = true;\n this.hideSelected = false;\n this.selectOnTab = false;\n this.bufferAmount = 4;\n this.virtualScroll = false;\n this.selectableGroup = false;\n this.searchFn = null;\n this.clearSearchOnAdd = true;\n this.labelForId = '';\n this.multiple = false;\n this.addTag = false;\n this.searchable = true;\n this.blurEvent = new EventEmitter();\n this.focusEvent = new EventEmitter();\n this.changeEvent = new EventEmitter();\n this.openEvent = new EventEmitter();\n this.closeEvent = new EventEmitter();\n this.searchEvent = new EventEmitter();\n this.clearEvent = new EventEmitter();\n this.addEvent = new EventEmitter();\n this.removeEvent = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.isOpen = false;\n this.isDisabled = false;\n this.itemsList = new ItemsList(this);\n this.viewPortItems = [];\n this.filterValue = null;\n this.dropdownId = newId();\n this.selectedItemId = 0;\n this._defaultLabel = 'label';\n this._pressedKeys = [];\n this._destroy$ = new Subject();\n this._keyPress$ = new Subject();\n this._onChange = function (_) { };\n this._onTouched = function () { };\n this.clearItem = function (item) {\n var option = _this.selectedItems.find(function (x) { return x.value === item; });\n _this.unselect(option);\n };\n this._mergeGlobalConfig(config);\n }\n Object.defineProperty(NgSelectComponent.prototype, \"compareWith\", {\n get: function () { return this._compareWith; },\n set: function (fn) {\n if (!isFunction(fn)) {\n throw Error('`compareWith` must be a function.');\n }\n this._compareWith = fn;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgSelectComponent.prototype, \"filtered\", {\n get: function () { return !!this.filterValue && this.searchable; },\n enumerable: true,\n configurable: true\n });\n \n Object.defineProperty(NgSelectComponent.prototype, \"selectedItems\", {\n get: function () {\n return this.itemsList.value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgSelectComponent.prototype, \"selectedValues\", {\n get: function () {\n return this.selectedItems.map(function (x) { return x.value; });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgSelectComponent.prototype, \"hasValue\", {\n get: function () {\n return this.selectedItems.length > 0;\n },\n enumerable: true,\n configurable: true\n });\n NgSelectComponent.prototype.ngOnInit = function () {\n this._handleKeyPresses();\n };\n NgSelectComponent.prototype.ngOnChanges = function (changes) {\n if (changes[\"multiple\"]) {\n this.itemsList.clearSelected();\n }\n if (changes[\"items\"]) {\n this._setItems(changes[\"items\"].currentValue || []);\n }\n };\n NgSelectComponent.prototype.ngAfterViewInit = function () {\n if (this.items && this.items.length === 0) {\n this._setItemsFromNgOptions();\n }\n };\n NgSelectComponent.prototype.ngOnDestroy = function () {\n this._destroy$.next();\n this._destroy$.complete();\n };\n NgSelectComponent.prototype.handleKeyDown = function ($event) {\n if (KeyCode[$event.which]) {\n switch ($event.which) {\n case KeyCode.ArrowDown:\n this._handleArrowDown($event);\n break;\n case KeyCode.ArrowUp:\n this._handleArrowUp($event);\n break;\n case KeyCode.Space:\n this._handleSpace($event);\n break;\n case KeyCode.Enter:\n this._handleEnter($event);\n break;\n case KeyCode.Tab:\n this._handleTab($event);\n break;\n case KeyCode.Esc:\n this.close();\n break;\n case KeyCode.Backspace:\n this._handleBackspace();\n break;\n }\n }\n else if ($event.key && $event.key.length === 1) {\n this._keyPress$.next($event.key.toLocaleLowerCase());\n }\n };\n NgSelectComponent.prototype.handleMousedown = function ($event) {\n $event.stopPropagation();\n $event.preventDefault();\n var target = ($event.target);\n if (target.className === 'ng-clear') {\n this.handleClearClick();\n return;\n }\n if (target.className === 'ng-arrow') {\n this.handleArrowClick();\n return;\n }\n if (!this._focused) {\n this.focus();\n }\n if (target.className.includes('ng-value-icon')) {\n return;\n }\n if (this.searchable) {\n this.open();\n }\n else {\n this.toggle();\n }\n };\n NgSelectComponent.prototype.handleArrowClick = function () {\n if (this.isOpen) {\n this.close();\n }\n else {\n this.open();\n }\n };\n NgSelectComponent.prototype.handleClearClick = function () {\n if (this.hasValue) {\n this.clearModel();\n }\n this._clearSearch();\n this.focus();\n if (this._isTypeahead) {\n this.typeahead.next(null);\n }\n this.clearEvent.emit();\n };\n NgSelectComponent.prototype.clearModel = function () {\n if (!this.clearable) {\n return;\n }\n this.itemsList.clearSelected();\n this._updateNgModel();\n };\n NgSelectComponent.prototype.writeValue = function (value) {\n this.itemsList.clearSelected();\n this._handleWriteValue(value);\n this._cd.markForCheck();\n };\n NgSelectComponent.prototype.registerOnChange = function (fn) {\n this._onChange = fn;\n };\n NgSelectComponent.prototype.registerOnTouched = function (fn) {\n this._onTouched = fn;\n };\n NgSelectComponent.prototype.setDisabledState = function (isDisabled) {\n this.isDisabled = isDisabled;\n this._cd.markForCheck();\n };\n NgSelectComponent.prototype.toggle = function () {\n if (!this.isOpen) {\n this.open();\n }\n else {\n this.close();\n }\n };\n NgSelectComponent.prototype.open = function () {\n if (this.isDisabled || this.isOpen || this.itemsList.maxItemsSelected) {\n return;\n }\n if (!this._isTypeahead && !this.addTag && this.itemsList.noItemsToSelect) {\n return;\n }\n this.isOpen = true;\n this.itemsList.markSelectedOrDefault(this.markFirst);\n this.openEvent.emit();\n if (!this.filterValue) {\n this.focus();\n }\n this.detectChanges();\n };\n NgSelectComponent.prototype.close = function () {\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n this._clearSearch();\n this._onTouched();\n this.closeEvent.emit();\n this._cd.markForCheck();\n };\n NgSelectComponent.prototype.toggleItem = function (item) {\n if (!item || item.disabled || this.isDisabled) {\n return;\n }\n if (this.multiple && item.selected) {\n this.unselect(item);\n }\n else {\n this.select(item);\n }\n };\n NgSelectComponent.prototype.select = function (item) {\n if (!item.selected) {\n this.itemsList.select(item);\n if (this.clearSearchOnAdd) {\n this._clearSearch();\n }\n if (this.multiple) {\n this.addEvent.emit(item.value);\n }\n this._updateNgModel();\n }\n if (this.closeOnSelect || this.itemsList.noItemsToSelect) {\n this.close();\n }\n };\n NgSelectComponent.prototype.focus = function () {\n var _this = this;\n if (!this.filterInput) {\n return;\n }\n this._zone.runOutsideAngular(function () {\n _this._window.setTimeout(function () {\n _this.filterInput.nativeElement.focus();\n }, 5);\n });\n };\n NgSelectComponent.prototype.unselect = function (item) {\n this.itemsList.unselect(item);\n this._updateNgModel();\n this.removeEvent.emit(item);\n };\n NgSelectComponent.prototype.selectTag = function () {\n var _this = this;\n var tag;\n if (isFunction(this.addTag)) {\n tag = ((this.addTag))(this.filterValue);\n }\n else {\n tag = this._primitive ? this.filterValue : (_a = {}, _a[this.bindLabel] = this.filterValue, _a);\n }\n if (isPromise(tag)) {\n tag.then(function (item) { return _this.select(_this.itemsList.addItem(item)); })\n .catch(function () { });\n }\n else if (tag) {\n this.select(this.itemsList.addItem(tag));\n }\n var _a;\n };\n NgSelectComponent.prototype.showClear = function () {\n return this.clearable && (this.hasValue || this.filterValue) && !this.isDisabled;\n };\n NgSelectComponent.prototype.showAddTag = function () {\n var _this = this;\n return this.addTag &&\n this.filterValue &&\n !this.selectedItems.some(function (x) { return x.label.toLowerCase() === _this.filterValue.toLowerCase(); }) &&\n !this.loading;\n };\n NgSelectComponent.prototype.showNoItemsFound = function () {\n var empty = this.itemsList.filteredItems.length === 0;\n return ((empty && !this._isTypeahead && !this.loading) ||\n (empty && this._isTypeahead && this.filterValue && !this.loading)) &&\n !this.showAddTag();\n };\n NgSelectComponent.prototype.showTypeToSearch = function () {\n var empty = this.itemsList.filteredItems.length === 0;\n return empty && this._isTypeahead && !this.filterValue && !this.loading;\n };\n NgSelectComponent.prototype.filter = function (term) {\n this.filterValue = term;\n this.open();\n if (this._isTypeahead) {\n this.typeahead.next(this.filterValue);\n }\n else {\n this.itemsList.filter(this.filterValue);\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n };\n NgSelectComponent.prototype.onInputFocus = function () {\n ((this.elementRef.nativeElement)).classList.add('ng-select-focused');\n this.focusEvent.emit(null);\n this._focused = true;\n };\n NgSelectComponent.prototype.onInputBlur = function () {\n ((this.elementRef.nativeElement)).classList.remove('ng-select-focused');\n this.blurEvent.emit(null);\n if (!this.isOpen && !this.isDisabled) {\n this._onTouched();\n }\n this._focused = false;\n };\n NgSelectComponent.prototype.onItemHover = function (item) {\n if (item.disabled) {\n return;\n }\n this.itemsList.markItem(item);\n };\n NgSelectComponent.prototype.detectChanges = function () {\n if (!((this._cd)).destroyed) {\n this._cd.detectChanges();\n }\n };\n NgSelectComponent.prototype.updateDropdownPosition = function () {\n if (this.dropdownPanel) {\n this.dropdownPanel.updateDropdownPosition();\n }\n };\n NgSelectComponent.prototype._setItems = function (items) {\n var firstItem = items[0];\n this.bindLabel = this.bindLabel || this._defaultLabel;\n this._primitive = !isObject(firstItem);\n this.itemsList.setItems(items);\n if (items.length > 0 && this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n if (this._isTypeahead || this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n };\n NgSelectComponent.prototype._setItemsFromNgOptions = function () {\n var _this = this;\n var handleNgOptions = function (options) {\n _this.items = options.map(function (option) { return ({\n $ngOptionValue: option.value,\n label: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled\n }); });\n _this.itemsList.setItems(_this.items);\n if (_this.hasValue) {\n _this.itemsList.mapSelectedItems();\n }\n _this.detectChanges();\n };\n var handleOptionChange = function () {\n var changedOrDestroyed = merge(_this.ngOptions.changes, _this._destroy$);\n merge.apply(void 0, __spread(_this.ngOptions.map(function (option) { return option.stateChange$; }))).pipe(takeUntil(changedOrDestroyed))\n .subscribe(function (option) {\n var item = _this.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n _this._cd.markForCheck();\n });\n };\n this.ngOptions.changes\n .pipe(startWith(this.ngOptions), takeUntil(this._destroy$))\n .subscribe(function (options) {\n handleNgOptions(options);\n handleOptionChange();\n });\n };\n NgSelectComponent.prototype._isValidWriteValue = function (value) {\n var _this = this;\n if (!isDefined(value) ||\n (this.multiple && value === '') ||\n Array.isArray(value) && value.length === 0) {\n return false;\n }\n var validateBinding = function (item) {\n if (isObject(item) && _this.bindValue) {\n _this._console.warn(\"Binding object(\" + JSON.stringify(item) + \") with bindValue is not allowed.\");\n return false;\n }\n return true;\n };\n if (this.multiple) {\n if (!Array.isArray(value)) {\n this._console.warn('Multiple select ngModel should be array.');\n return false;\n }\n return value.every(function (item) { return validateBinding(item); });\n }\n else {\n return validateBinding(value);\n }\n };\n NgSelectComponent.prototype._handleWriteValue = function (ngModel) {\n var _this = this;\n if (!this._isValidWriteValue(ngModel)) {\n return;\n }\n var select = function (val) {\n var item = _this.itemsList.findItem(val);\n if (item) {\n _this.itemsList.select(item);\n }\n else {\n var isValObject = isObject(val);\n var isPrimitive = !isValObject && !_this.bindValue;\n if ((isValObject || isPrimitive)) {\n _this.itemsList.select(_this.itemsList.mapItem(val, null));\n }\n else if (_this.bindValue) {\n item = (_a = {}, _a[_this.bindLabel] = null, _a[_this.bindValue] = val, _a);\n _this.itemsList.select(_this.itemsList.mapItem(item, null));\n }\n }\n var _a;\n };\n if (this.multiple) {\n ((ngModel)).forEach(function (item) { return select(item); });\n }\n else {\n select(ngModel);\n }\n };\n NgSelectComponent.prototype._handleKeyPresses = function () {\n var _this = this;\n if (this.searchable) {\n return;\n }\n this._keyPress$\n .pipe(takeUntil(this._destroy$), tap(function (letter) { return _this._pressedKeys.push(letter); }), debounceTime(200), filter(function () { return _this._pressedKeys.length > 0; }), map(function () { return _this._pressedKeys.join(''); }))\n .subscribe(function (term) {\n var item = _this.itemsList.findByLabel(term);\n if (item) {\n if (_this.isOpen) {\n _this.itemsList.markItem(item);\n _this._cd.markForCheck();\n }\n else {\n _this.select(item);\n }\n }\n _this._pressedKeys = [];\n });\n };\n NgSelectComponent.prototype._updateNgModel = function () {\n var model = [];\n try {\n for (var _a = __values(this.selectedItems), _b = _a.next(); !_b.done; _b = _a.next()) {\n var item = _b.value;\n if (this.bindValue) {\n var resolvedValue = null;\n if (item.hasChildren) {\n resolvedValue = item.value[this.groupBy];\n }\n else {\n resolvedValue = this.itemsList.resolveNested(item.value, this.bindValue);\n }\n model.push(resolvedValue);\n }\n else {\n model.push(item.value);\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_4) throw e_4.error; }\n }\n if (this.multiple) {\n this._onChange(model);\n this.changeEvent.emit(this.selectedItems.map(function (x) { return x.value; }));\n }\n else {\n this._onChange(isDefined(model[0]) ? model[0] : null);\n this.changeEvent.emit(this.selectedItems[0] && this.selectedItems[0].value);\n }\n this._cd.markForCheck();\n var e_4, _c;\n };\n NgSelectComponent.prototype._clearSearch = function () {\n if (!this.filterValue) {\n return;\n }\n this.filterValue = null;\n this.itemsList.resetItems();\n };\n NgSelectComponent.prototype._scrollToMarked = function () {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollInto(this.itemsList.markedItem);\n };\n NgSelectComponent.prototype._scrollToTag = function () {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollIntoTag();\n };\n NgSelectComponent.prototype._handleTab = function ($event) {\n if (!this.isOpen) {\n return;\n }\n if (this.selectOnTab) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n $event.preventDefault();\n }\n else if (this.showAddTag()) {\n this.selectTag();\n $event.preventDefault();\n }\n else {\n this.close();\n }\n }\n else {\n this.close();\n }\n };\n NgSelectComponent.prototype._handleEnter = function ($event) {\n if (this.isOpen) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n }\n else if (this.addTag) {\n this.selectTag();\n }\n }\n else {\n this.open();\n }\n $event.preventDefault();\n $event.stopPropagation();\n };\n NgSelectComponent.prototype._handleSpace = function ($event) {\n if (this.isOpen) {\n return;\n }\n this.open();\n $event.preventDefault();\n };\n NgSelectComponent.prototype._handleArrowDown = function ($event) {\n if (this.nextItemIsTag(+1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n }\n else {\n this.itemsList.markNextItem();\n this._scrollToMarked();\n }\n this.open();\n $event.preventDefault();\n };\n NgSelectComponent.prototype._handleArrowUp = function ($event) {\n if (!this.isOpen) {\n return;\n }\n if (this.nextItemIsTag(-1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n }\n else {\n this.itemsList.markPreviousItem();\n this._scrollToMarked();\n }\n $event.preventDefault();\n };\n NgSelectComponent.prototype.nextItemIsTag = function (nextStep) {\n var nextIndex = this.itemsList.markedIndex + nextStep;\n return this.addTag && this.filterValue\n && this.itemsList.markedItem\n && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);\n };\n NgSelectComponent.prototype._handleBackspace = function () {\n if (this.filterValue || !this.clearable || !this.hasValue) {\n return;\n }\n if (this.multiple) {\n this.unselect(this.itemsList.lastSelectedItem);\n }\n else {\n this.clearModel();\n }\n };\n Object.defineProperty(NgSelectComponent.prototype, \"_isTypeahead\", {\n get: function () {\n return this.typeahead && this.typeahead.observers.length > 0;\n },\n enumerable: true,\n configurable: true\n });\n NgSelectComponent.prototype._mergeGlobalConfig = function (config) {\n this.notFoundText = this.notFoundText || config.notFoundText;\n this.typeToSearchText = this.typeToSearchText || config.typeToSearchText;\n this.addTagText = this.addTagText || config.addTagText;\n this.loadingText = this.loadingText || config.loadingText;\n this.clearAllText = this.clearAllText || config.clearAllText;\n };\n return NgSelectComponent;\n}());\nNgSelectComponent.decorators = [\n { type: Component, args: [{\n selector: 'ng-select',\n template: \"
\\n
\\n
{{placeholder}}
\\n 0\\\">\\n
\\n \\n \\u00D7\\n {{item.label}}\\n \\n \\n \\n
\\n
\\n 0\\\"\\n [ngTemplateOutlet]=\\\"multiLabelTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ items: selectedValues, clear: clearItem }\\\">\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\u00D7\\n \\n \\n \\n \\n
\\n\\n \\n
\\n \\n {{item.label}}\\n \\n \\n \\n
\\n
\\n \\n {{addTagText}}\\\"{{filterValue}}\\\"\\n \\n \\n \\n
\\n
\\n \\n \\n
{{notFoundText}}
\\n
\\n \\n \\n
\\n \\n \\n
{{typeToSearchText}}
\\n
\\n \\n \\n
\\n \\n \\n
{{loadingText}}
\\n
\\n \\n \\n
\\n
\\n\",\n styles: [\".ng-select{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{color:#333;cursor:default;display:-webkit-box;display:-ms-flexbox;display:flex;outline:0;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{-webkit-box-sizing:content-box;box-sizing:content-box;background:none;border:0;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{-ms-flex-wrap:wrap;flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{-webkit-box-flex:1;-ms-flex:1;flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute;z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation:.8s linear infinite load8;animation:.8s linear infinite load8}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{display:inline-block;height:0;width:0;position:relative}\"],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return NgSelectComponent; }),\n multi: true\n }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'role': 'listbox',\n 'class': 'ng-select',\n '[class.ng-select-single]': '!multiple',\n }\n },] },\n];\nNgSelectComponent.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [NG_SELECT_DEFAULT_CONFIG,] },] },\n { type: undefined, decorators: [{ type: Attribute, args: ['class',] },] },\n { type: ChangeDetectorRef, },\n { type: ConsoleService, },\n { type: NgZone, },\n { type: WindowService, },\n { type: ElementRef, },\n]; };\nNgSelectComponent.propDecorators = {\n \"items\": [{ type: Input },],\n \"bindLabel\": [{ type: Input },],\n \"bindValue\": [{ type: Input },],\n \"clearable\": [{ type: Input },],\n \"markFirst\": [{ type: Input },],\n \"placeholder\": [{ type: Input },],\n \"notFoundText\": [{ type: Input },],\n \"typeToSearchText\": [{ type: Input },],\n \"addTagText\": [{ type: Input },],\n \"loadingText\": [{ type: Input },],\n \"clearAllText\": [{ type: Input },],\n \"dropdownPosition\": [{ type: Input },],\n \"appendTo\": [{ type: Input },],\n \"loading\": [{ type: Input },],\n \"closeOnSelect\": [{ type: Input },],\n \"hideSelected\": [{ type: Input },],\n \"selectOnTab\": [{ type: Input },],\n \"maxSelectedItems\": [{ type: Input },],\n \"groupBy\": [{ type: Input },],\n \"bufferAmount\": [{ type: Input },],\n \"virtualScroll\": [{ type: Input },],\n \"selectableGroup\": [{ type: Input },],\n \"searchFn\": [{ type: Input },],\n \"clearSearchOnAdd\": [{ type: Input },],\n \"labelForId\": [{ type: Input },],\n \"typeahead\": [{ type: Input }, { type: HostBinding, args: ['class.ng-select-typeahead',] },],\n \"multiple\": [{ type: Input }, { type: HostBinding, args: ['class.ng-select-multiple',] },],\n \"addTag\": [{ type: Input }, { type: HostBinding, args: ['class.ng-select-taggable',] },],\n \"searchable\": [{ type: Input }, { type: HostBinding, args: ['class.ng-select-searchable',] },],\n \"compareWith\": [{ type: Input },],\n \"blurEvent\": [{ type: Output, args: ['blur',] },],\n \"focusEvent\": [{ type: Output, args: ['focus',] },],\n \"changeEvent\": [{ type: Output, args: ['change',] },],\n \"openEvent\": [{ type: Output, args: ['open',] },],\n \"closeEvent\": [{ type: Output, args: ['close',] },],\n \"searchEvent\": [{ type: Output, args: ['search',] },],\n \"clearEvent\": [{ type: Output, args: ['clear',] },],\n \"addEvent\": [{ type: Output, args: ['add',] },],\n \"removeEvent\": [{ type: Output, args: ['remove',] },],\n \"scrollToEnd\": [{ type: Output, args: ['scrollToEnd',] },],\n \"optionTemplate\": [{ type: ContentChild, args: [NgOptionTemplateDirective, { read: TemplateRef },] },],\n \"optgroupTemplate\": [{ type: ContentChild, args: [NgOptgroupTemplateDirective, { read: TemplateRef },] },],\n \"labelTemplate\": [{ type: ContentChild, args: [NgLabelTemplateDirective, { read: TemplateRef },] },],\n \"multiLabelTemplate\": [{ type: ContentChild, args: [NgMultiLabelTemplateDirective, { read: TemplateRef },] },],\n \"headerTemplate\": [{ type: ContentChild, args: [NgHeaderTemplateDirective, { read: TemplateRef },] },],\n \"footerTemplate\": [{ type: ContentChild, args: [NgFooterTemplateDirective, { read: TemplateRef },] },],\n \"notFoundTemplate\": [{ type: ContentChild, args: [NgNotFoundTemplateDirective, { read: TemplateRef },] },],\n \"typeToSearchTemplate\": [{ type: ContentChild, args: [NgTypeToSearchTemplateDirective, { read: TemplateRef },] },],\n \"loadingTextTemplate\": [{ type: ContentChild, args: [NgLoadingTextTemplateDirective, { read: TemplateRef },] },],\n \"tagTemplate\": [{ type: ContentChild, args: [NgTagTemplateDirective, { read: TemplateRef },] },],\n \"dropdownPanel\": [{ type: ViewChild, args: [forwardRef(function () { return NgDropdownPanelComponent; }),] },],\n \"ngOptions\": [{ type: ContentChildren, args: [NgOptionComponent, { descendants: true },] },],\n \"filterInput\": [{ type: ViewChild, args: ['filterInput',] },],\n \"isOpen\": [{ type: HostBinding, args: ['class.ng-select-opened',] },],\n \"isDisabled\": [{ type: HostBinding, args: ['class.ng-select-disabled',] },],\n \"filtered\": [{ type: HostBinding, args: ['class.ng-select-filtered',] },],\n \"handleKeyDown\": [{ type: HostListener, args: ['keydown', ['$event'],] },],\n};\nvar NgOptionHighlightDirective = /** @class */ (function () {\n function NgOptionHighlightDirective(elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.element = this.elementRef.nativeElement;\n }\n NgOptionHighlightDirective.prototype.ngOnChanges = function () {\n if (this._canHighlight) {\n this._highlightLabel();\n }\n };\n NgOptionHighlightDirective.prototype.ngAfterViewInit = function () {\n this.label = this.element.innerHTML;\n if (this._canHighlight) {\n this._highlightLabel();\n }\n };\n NgOptionHighlightDirective.prototype._highlightLabel = function () {\n var label = this.label;\n if (!this.term) {\n this._setInnerHtml(label);\n return;\n }\n var indexOfTerm = stripSpecialChars(label)\n .toLowerCase()\n .indexOf(stripSpecialChars(this.term).toLowerCase());\n if (indexOfTerm > -1) {\n this._setInnerHtml(label.substring(0, indexOfTerm)\n + (\"\" + label.substr(indexOfTerm, this.term.length) + \"\")\n + label.substring(indexOfTerm + this.term.length, label.length));\n }\n else {\n this._setInnerHtml(label);\n }\n };\n Object.defineProperty(NgOptionHighlightDirective.prototype, \"_canHighlight\", {\n get: function () {\n return isDefined(this.term) && isDefined(this.label);\n },\n enumerable: true,\n configurable: true\n });\n NgOptionHighlightDirective.prototype._setInnerHtml = function (html) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', html);\n };\n return NgOptionHighlightDirective;\n}());\nNgOptionHighlightDirective.decorators = [\n { type: Directive, args: [{\n selector: '[ngOptionHighlight]'\n },] },\n];\nNgOptionHighlightDirective.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n]; };\nNgOptionHighlightDirective.propDecorators = {\n \"term\": [{ type: Input, args: ['ngOptionHighlight',] },],\n};\nvar ɵ0 = {\n notFoundText: 'No items found',\n typeToSearchText: 'Type to search',\n addTagText: 'Add item',\n loadingText: 'Loading...',\n clearAllText: 'Clear all',\n disableVirtualScroll: false\n};\nvar NgSelectModule = /** @class */ (function () {\n function NgSelectModule() {\n }\n return NgSelectModule;\n}());\nNgSelectModule.decorators = [\n { type: NgModule, args: [{\n declarations: [\n NgDropdownPanelComponent,\n NgOptionComponent,\n NgSelectComponent,\n NgOptionHighlightDirective,\n NgOptgroupTemplateDirective,\n NgOptionTemplateDirective,\n NgLabelTemplateDirective,\n NgMultiLabelTemplateDirective,\n NgHeaderTemplateDirective,\n NgFooterTemplateDirective,\n NgNotFoundTemplateDirective,\n NgTypeToSearchTemplateDirective,\n NgLoadingTextTemplateDirective,\n NgTagTemplateDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgSelectComponent,\n NgOptionComponent,\n NgOptionHighlightDirective,\n NgOptgroupTemplateDirective,\n NgOptionTemplateDirective,\n NgLabelTemplateDirective,\n NgMultiLabelTemplateDirective,\n NgHeaderTemplateDirective,\n NgFooterTemplateDirective,\n NgNotFoundTemplateDirective,\n NgTypeToSearchTemplateDirective,\n NgLoadingTextTemplateDirective,\n NgTagTemplateDirective\n ],\n providers: [\n ConsoleService,\n WindowService,\n VirtualScrollService,\n {\n provide: NG_SELECT_DEFAULT_CONFIG,\n useValue: ɵ0\n }\n ]\n },] },\n];\nNgSelectModule.ctorParameters = function () { return []; };\n\nexport { NgSelectComponent, NG_SELECT_DEFAULT_CONFIG, NgSelectModule, ConsoleService as ɵo, NgDropdownPanelComponent as ɵk, NgOptionHighlightDirective as ɵp, NgOptionComponent as ɵn, NgFooterTemplateDirective as ɵf, NgHeaderTemplateDirective as ɵe, NgLabelTemplateDirective as ɵc, NgLoadingTextTemplateDirective as ɵi, NgMultiLabelTemplateDirective as ɵd, NgNotFoundTemplateDirective as ɵg, NgOptgroupTemplateDirective as ɵb, NgOptionTemplateDirective as ɵa, NgTagTemplateDirective as ɵj, NgTypeToSearchTemplateDirective as ɵh, VirtualScrollService as ɵl, WindowService as ɵm };\n//# sourceMappingURL=ng-select.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@ng-select/ng-select/esm5/ng-select.js\n// module id = ./node_modules/@ng-select/ng-select/esm5/ng-select.js\n// module chunks = common","import { Injectable, Component, Input, Output, ViewChild, EventEmitter, Renderer2, forwardRef, HostListener, NgModule } from '@angular/core';\nimport { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Subject } from 'rxjs/Subject';\nimport 'rxjs/add/operator/map';\nimport { NG_VALUE_ACCESSOR, FormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PopoverConfig, PopoverModule } from 'ngx-bootstrap';\nimport { CommonModule } from '@angular/common';\n\nfunction canEnableToolbarOptions(value, toolbar) {\r\n if (value) {\r\n if (toolbar['length'] === 0) {\r\n return true;\r\n }\r\n else {\r\n var found = toolbar.filter(function (array) {\r\n return array.indexOf(value) !== -1;\r\n });\r\n return found.length ? true : false;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\nfunction getEditorConfiguration(value, ngxEditorConfig, input) {\r\n for (var i in ngxEditorConfig) {\r\n if (i) {\r\n if (input[i] !== undefined) {\r\n value[i] = input[i];\r\n }\r\n if (!value.hasOwnProperty(i)) {\r\n value[i] = ngxEditorConfig[i];\r\n }\r\n }\r\n }\r\n return value;\r\n}\r\nfunction canResize(resizer) {\r\n if (resizer === 'basic') {\r\n return 'vertical';\r\n }\r\n return false;\r\n}\r\nfunction saveSelection() {\r\n if (window.getSelection) {\r\n var sel = window.getSelection();\r\n if (sel.getRangeAt && sel.rangeCount) {\r\n return sel.getRangeAt(0);\r\n }\r\n }\r\n else if (document.getSelection && document.createRange) {\r\n return document.createRange();\r\n }\r\n return null;\r\n}\r\nfunction restoreSelection(range) {\r\n if (range) {\r\n if (window.getSelection) {\r\n var sel = window.getSelection();\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n return true;\r\n }\r\n else if (document.getSelection && range.select) {\r\n range.select();\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\nvar Utils = Object.freeze({\r\n canEnableToolbarOptions: canEnableToolbarOptions,\r\n getEditorConfiguration: getEditorConfiguration,\r\n canResize: canResize,\r\n saveSelection: saveSelection,\r\n restoreSelection: restoreSelection\r\n});\r\nvar CommandExecutorService = /** @class */ (function () {\r\n function CommandExecutorService(_http) {\r\n this._http = _http;\r\n this.savedSelection = undefined;\r\n }\r\n CommandExecutorService.prototype.execute = function (command) {\r\n if (!this.savedSelection && command !== 'enableObjectResizing') {\r\n throw new Error('Range out of Editor');\r\n }\r\n if (command === 'enableObjectResizing') {\r\n document.execCommand('enableObjectResizing', true, true);\r\n return;\r\n }\r\n if (command === 'blockquote') {\r\n document.execCommand('formatBlock', false, 'blockquote');\r\n return;\r\n }\r\n if (command === 'removeBlockquote') {\r\n document.execCommand('formatBlock', false, 'div');\r\n return;\r\n }\r\n document.execCommand(command, false, null);\r\n return;\r\n };\r\n CommandExecutorService.prototype.insertImage = function (imageURI) {\r\n if (this.savedSelection) {\r\n if (imageURI) {\r\n var restored = restoreSelection(this.savedSelection);\r\n if (restored) {\r\n var inserted = document.execCommand('insertImage', false, imageURI);\r\n if (!inserted) {\r\n throw new Error('Invalid URL');\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n throw new Error('Range out of the editor');\r\n }\r\n return;\r\n };\r\n CommandExecutorService.prototype.insertVideo = function (videParams) {\r\n if (this.savedSelection) {\r\n if (videParams) {\r\n var restored = restoreSelection(this.savedSelection);\r\n if (restored) {\r\n if (this.isYoutubeLink(videParams.videoUrl)) {\r\n var youtubeURL = '';\r\n this.insertHtml(youtubeURL);\r\n }\r\n else if (this.checkTagSupportInBrowser('video')) {\r\n if (this.isValidURL(videParams.videoUrl)) {\r\n var videoSrc = '';\r\n this.insertHtml(videoSrc);\r\n }\r\n else {\r\n throw new Error('Invalid video URL');\r\n }\r\n }\r\n else {\r\n throw new Error('Unable to insert video');\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n throw new Error('Range out of the editor');\r\n }\r\n return;\r\n };\r\n CommandExecutorService.prototype.isYoutubeLink = function (url) {\r\n var ytRegExp = /^(http(s)?:\\/\\/)?((w){3}.)?youtu(be|.be)?(\\.com)?\\/.+/;\r\n return ytRegExp.test(url);\r\n };\r\n CommandExecutorService.prototype.isValidURL = function (url) {\r\n var urlRegExp = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\r\n return urlRegExp.test(url);\r\n };\r\n CommandExecutorService.prototype.uploadImage = function (file, endPoint) {\r\n if (!endPoint) {\r\n throw new Error('Image Endpoint isn`t provided or invalid');\r\n }\r\n var formData = new FormData();\r\n if (file) {\r\n formData.append('file', file);\r\n var req = new HttpRequest('POST', endPoint, formData, {\r\n reportProgress: true\r\n });\r\n return this._http.request(req);\r\n }\r\n else {\r\n throw new Error('Invalid Image');\r\n }\r\n };\r\n CommandExecutorService.prototype.createLink = function (params) {\r\n if (this.savedSelection) {\r\n if (params.urlNewTab) {\r\n var newUrl = '' + params.urlText + '';\r\n if (document.getSelection().type !== 'Range') {\r\n var restored = restoreSelection(this.savedSelection);\r\n if (restored) {\r\n this.insertHtml(newUrl);\r\n }\r\n }\r\n else {\r\n throw new Error('Only new links can be inserted. You cannot edit URL`s');\r\n }\r\n }\r\n else {\r\n var restored = restoreSelection(this.savedSelection);\r\n if (restored) {\r\n document.execCommand('createLink', false, params.urlLink);\r\n }\r\n }\r\n }\r\n else {\r\n throw new Error('Range out of the editor');\r\n }\r\n return;\r\n };\r\n CommandExecutorService.prototype.insertColor = function (color, where) {\r\n if (this.savedSelection) {\r\n var restored = restoreSelection(this.savedSelection);\r\n if (restored && this.checkSelection()) {\r\n if (where === 'textColor') {\r\n document.execCommand('foreColor', false, color);\r\n }\r\n else {\r\n document.execCommand('hiliteColor', false, color);\r\n }\r\n }\r\n }\r\n else {\r\n throw new Error('Range out of the editor');\r\n }\r\n return;\r\n };\r\n CommandExecutorService.prototype.setFontSize = function (fontSize) {\r\n if (this.savedSelection && this.checkSelection()) {\r\n var deletedValue = this.deleteAndGetElement();\r\n if (deletedValue) {\r\n var restored = restoreSelection(this.savedSelection);\r\n if (restored) {\r\n if (this.isNumeric(fontSize)) {\r\n var fontPx = '' + deletedValue + '';\r\n this.insertHtml(fontPx);\r\n }\r\n else {\r\n var fontPx = '' + deletedValue + '';\r\n this.insertHtml(fontPx);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n throw new Error('Range out of the editor');\r\n }\r\n };\r\n CommandExecutorService.prototype.setFontName = function (fontName) {\r\n if (this.savedSelection && this.checkSelection()) {\r\n var deletedValue = this.deleteAndGetElement();\r\n if (deletedValue) {\r\n var restored = restoreSelection(this.savedSelection);\r\n if (restored) {\r\n if (this.isNumeric(fontName)) {\r\n var fontFamily = '' + deletedValue + '';\r\n this.insertHtml(fontFamily);\r\n }\r\n else {\r\n var fontFamily = '' + deletedValue + '';\r\n this.insertHtml(fontFamily);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n throw new Error('Range out of the editor');\r\n }\r\n };\r\n CommandExecutorService.prototype.insertHtml = function (html) {\r\n var isHTMLInserted = document.execCommand('insertHTML', false, html);\r\n if (!isHTMLInserted) {\r\n throw new Error('Unable to perform the operation');\r\n }\r\n return;\r\n };\r\n CommandExecutorService.prototype.isNumeric = function (value) {\r\n return /^-{0,1}\\d+$/.test(value);\r\n };\r\n CommandExecutorService.prototype.deleteAndGetElement = function () {\r\n var slectedText;\r\n if (this.savedSelection) {\r\n slectedText = this.savedSelection.toString();\r\n this.savedSelection.deleteContents();\r\n return slectedText;\r\n }\r\n return false;\r\n };\r\n CommandExecutorService.prototype.checkSelection = function () {\r\n var slectedText = this.savedSelection.toString();\r\n if (slectedText.length === 0) {\r\n throw new Error('No Selection Made');\r\n }\r\n return true;\r\n };\r\n CommandExecutorService.prototype.checkTagSupportInBrowser = function (tag) {\r\n return !(document.createElement(tag) instanceof HTMLUnknownElement);\r\n };\r\n return CommandExecutorService;\r\n}());\r\nCommandExecutorService.decorators = [\r\n { type: Injectable },\r\n];\r\nCommandExecutorService.ctorParameters = function () { return [\r\n { type: HttpClient, },\r\n]; };\r\nvar DURATION = 7000;\r\nvar MessageService = /** @class */ (function () {\r\n function MessageService() {\r\n this.message = new Subject();\r\n }\r\n MessageService.prototype.getMessage = function () {\r\n return this.message.asObservable();\r\n };\r\n MessageService.prototype.sendMessage = function (message) {\r\n this.message.next(message);\r\n this.clearMessageIn(DURATION);\r\n return;\r\n };\r\n MessageService.prototype.clearMessageIn = function (milliseconds) {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.message.next(undefined);\r\n }, milliseconds);\r\n return;\r\n };\r\n return MessageService;\r\n}());\r\nMessageService.decorators = [\r\n { type: Injectable },\r\n];\r\nMessageService.ctorParameters = function () { return []; };\r\nvar ngxEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n minHeight: '0',\r\n width: 'auto',\r\n minWidth: '0',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: 'Enter text here...',\r\n imageEndPoint: '',\r\n toolbar: [\r\n ['bold', 'italic', 'underline', 'strikeThrough', 'superscript', 'subscript'],\r\n ['fontName', 'fontSize', 'color'],\r\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\r\n ['cut', 'copy', 'delete', 'removeFormat', 'undo', 'redo'],\r\n ['paragraph', 'blockquote', 'removeBlockquote', 'horizontalLine', 'orderedList', 'unorderedList'],\r\n ['link', 'unlink', 'image', 'video']\r\n ]\r\n};\r\nvar NgxEditorComponent = /** @class */ (function () {\r\n function NgxEditorComponent(_messageService, _commandExecutor, _renderer) {\r\n this._messageService = _messageService;\r\n this._commandExecutor = _commandExecutor;\r\n this._renderer = _renderer;\r\n this.resizer = 'stack';\r\n this.config = ngxEditorConfig;\r\n this.blur = new EventEmitter();\r\n this.focus = new EventEmitter();\r\n this.Utils = Utils;\r\n }\r\n NgxEditorComponent.prototype.onTextAreaFocus = function () {\r\n this.focus.emit('focus');\r\n return;\r\n };\r\n NgxEditorComponent.prototype.onEditorFocus = function () {\r\n this.textArea.nativeElement.focus();\r\n };\r\n NgxEditorComponent.prototype.onContentChange = function (html) {\r\n if (typeof this.onChange === 'function') {\r\n this.onChange(html);\r\n this.togglePlaceholder(html);\r\n }\r\n return;\r\n };\r\n NgxEditorComponent.prototype.onTextAreaBlur = function () {\r\n this._commandExecutor.savedSelection = saveSelection();\r\n if (typeof this.onTouched === 'function') {\r\n this.onTouched();\r\n }\r\n this.blur.emit('blur');\r\n return;\r\n };\r\n NgxEditorComponent.prototype.resizeTextArea = function (offsetY) {\r\n var newHeight = parseInt(this.height, 10);\r\n newHeight += offsetY;\r\n this.height = newHeight + 'px';\r\n this.textArea.nativeElement.style.height = this.height;\r\n return;\r\n };\r\n NgxEditorComponent.prototype.executeCommand = function (commandName) {\r\n try {\r\n this._commandExecutor.execute(commandName);\r\n }\r\n catch (error) {\r\n this._messageService.sendMessage(error.message);\r\n }\r\n return;\r\n };\r\n NgxEditorComponent.prototype.writeValue = function (value) {\r\n this.togglePlaceholder(value);\r\n if (value === null || value === undefined || value === '' || value === '
') {\r\n value = null;\r\n }\r\n this.refreshView(value);\r\n };\r\n NgxEditorComponent.prototype.registerOnChange = function (fn) {\r\n this.onChange = fn;\r\n };\r\n NgxEditorComponent.prototype.registerOnTouched = function (fn) {\r\n this.onTouched = fn;\r\n };\r\n NgxEditorComponent.prototype.refreshView = function (value) {\r\n var normalizedValue = value === null ? '' : value;\r\n this._renderer.setProperty(this.textArea.nativeElement, 'innerHTML', normalizedValue);\r\n return;\r\n };\r\n NgxEditorComponent.prototype.togglePlaceholder = function (value) {\r\n if (!value || value === '
' || value === '') {\r\n this._renderer.addClass(this.ngxWrapper.nativeElement, 'show-placeholder');\r\n }\r\n else {\r\n this._renderer.removeClass(this.ngxWrapper.nativeElement, 'show-placeholder');\r\n }\r\n return;\r\n };\r\n NgxEditorComponent.prototype.getCollectiveParams = function () {\r\n return {\r\n editable: this.editable,\r\n spellcheck: this.spellcheck,\r\n placeholder: this.placeholder,\r\n translate: this.translate,\r\n height: this.height,\r\n minHeight: this.minHeight,\r\n width: this.width,\r\n minWidth: this.minWidth,\r\n enableToolbar: this.enableToolbar,\r\n showToolbar: this.showToolbar,\r\n imageEndPoint: this.imageEndPoint,\r\n toolbar: this.toolbar\r\n };\r\n };\r\n NgxEditorComponent.prototype.ngOnInit = function () {\r\n this.config = this.Utils.getEditorConfiguration(this.config, ngxEditorConfig, this.getCollectiveParams());\r\n this.height = this.height || this.textArea.nativeElement.offsetHeight;\r\n this.executeCommand('enableObjectResizing');\r\n };\r\n return NgxEditorComponent;\r\n}());\r\nNgxEditorComponent.decorators = [\r\n { type: Component, args: [{\r\n selector: 'app-ngx-editor',\r\n template: \"
\\n \\n \\n
\\n
\\n {{ placeholder || config['placeholder'] }}\\n
\\n \\n \\n
\\n\",\r\n styles: [\".ngx-editor{position:relative}.ngx-editor ::ng-deep [contenteditable=true]:empty:before{content:attr(placeholder);display:block;color:#868e96;opacity:1}.ngx-editor .ngx-wrapper{position:relative}.ngx-editor .ngx-wrapper .ngx-editor-textarea{min-height:5rem;padding:.5rem .8rem 1rem;border:1px solid #ddd;background-color:transparent;overflow-x:hidden;overflow-y:auto;z-index:2;position:relative}.ngx-editor .ngx-wrapper .ngx-editor-textarea.focus,.ngx-editor .ngx-wrapper .ngx-editor-textarea:focus{outline:0}.ngx-editor .ngx-wrapper .ngx-editor-textarea ::ng-deep blockquote{margin-left:1rem;border-left:.2em solid #dfe2e5;padding-left:.5rem}.ngx-editor .ngx-wrapper ::ng-deep p{margin-bottom:0}.ngx-editor .ngx-wrapper .ngx-editor-placeholder{display:none;position:absolute;top:0;padding:.5rem .8rem 1rem .9rem;z-index:1;color:#6c757d;opacity:1}.ngx-editor .ngx-wrapper.show-placeholder .ngx-editor-placeholder{display:block}\"],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(function () { return NgxEditorComponent; }),\r\n multi: true\r\n }\r\n ]\r\n },] },\r\n];\r\nNgxEditorComponent.ctorParameters = function () { return [\r\n { type: MessageService, },\r\n { type: CommandExecutorService, },\r\n { type: Renderer2, },\r\n]; };\r\nNgxEditorComponent.propDecorators = {\r\n \"editable\": [{ type: Input },],\r\n \"spellcheck\": [{ type: Input },],\r\n \"placeholder\": [{ type: Input },],\r\n \"translate\": [{ type: Input },],\r\n \"height\": [{ type: Input },],\r\n \"minHeight\": [{ type: Input },],\r\n \"width\": [{ type: Input },],\r\n \"minWidth\": [{ type: Input },],\r\n \"toolbar\": [{ type: Input },],\r\n \"resizer\": [{ type: Input },],\r\n \"config\": [{ type: Input },],\r\n \"showToolbar\": [{ type: Input },],\r\n \"enableToolbar\": [{ type: Input },],\r\n \"imageEndPoint\": [{ type: Input },],\r\n \"blur\": [{ type: Output },],\r\n \"focus\": [{ type: Output },],\r\n \"textArea\": [{ type: ViewChild, args: ['ngxTextArea',] },],\r\n \"ngxWrapper\": [{ type: ViewChild, args: ['ngxWrapper',] },],\r\n};\r\nvar NgxGrippieComponent = /** @class */ (function () {\r\n function NgxGrippieComponent(_editorComponent) {\r\n this._editorComponent = _editorComponent;\r\n this.oldY = 0;\r\n this.grabber = false;\r\n }\r\n NgxGrippieComponent.prototype.onMouseMove = function (event) {\r\n if (!this.grabber) {\r\n return;\r\n }\r\n this._editorComponent.resizeTextArea(event.clientY - this.oldY);\r\n this.oldY = event.clientY;\r\n };\r\n NgxGrippieComponent.prototype.onMouseUp = function (event) {\r\n this.grabber = false;\r\n };\r\n NgxGrippieComponent.prototype.onResize = function (event, resizer) {\r\n this.grabber = true;\r\n this.oldY = event.clientY;\r\n event.preventDefault();\r\n };\r\n return NgxGrippieComponent;\r\n}());\r\nNgxGrippieComponent.decorators = [\r\n { type: Component, args: [{\r\n selector: 'app-ngx-grippie',\r\n template: \"
\\n \\n \\n \\n \\n \\n
\\n\",\r\n styles: [\".ngx-editor-grippie{height:9px;background-color:#f1f1f1;position:relative;text-align:center;cursor:s-resize;border:1px solid #ddd;border-top:transparent}.ngx-editor-grippie svg{position:absolute;top:1.5px;width:50%;right:25%}\"]\r\n },] },\r\n];\r\nNgxGrippieComponent.ctorParameters = function () { return [\r\n { type: NgxEditorComponent, },\r\n]; };\r\nNgxGrippieComponent.propDecorators = {\r\n \"onMouseMove\": [{ type: HostListener, args: ['document:mousemove', ['$event'],] },],\r\n \"onMouseUp\": [{ type: HostListener, args: ['document:mouseup', ['$event'],] },],\r\n \"onResize\": [{ type: HostListener, args: ['mousedown', ['$event'],] },],\r\n};\r\nvar NgxEditorMessageComponent = /** @class */ (function () {\r\n function NgxEditorMessageComponent(_messageService) {\r\n var _this = this;\r\n this._messageService = _messageService;\r\n this.ngxMessage = undefined;\r\n this._messageService.getMessage().subscribe(function (message) { return _this.ngxMessage = message; });\r\n }\r\n NgxEditorMessageComponent.prototype.clearMessage = function () {\r\n this.ngxMessage = undefined;\r\n return;\r\n };\r\n return NgxEditorMessageComponent;\r\n}());\r\nNgxEditorMessageComponent.decorators = [\r\n { type: Component, args: [{\r\n selector: 'app-ngx-editor-message',\r\n template: \"
\\n {{ ngxMessage }}\\n
\\n\",\r\n styles: [\".ngx-editor-message{font-size:80%;background-color:#f1f1f1;border:1px solid #ddd;border-top:transparent;padding:0 .5rem .1rem;-webkit-transition:.5s ease-in;transition:.5s ease-in}\"]\r\n },] },\r\n];\r\nNgxEditorMessageComponent.ctorParameters = function () { return [\r\n { type: MessageService, },\r\n]; };\r\nvar NgxEditorToolbarComponent = /** @class */ (function () {\r\n function NgxEditorToolbarComponent(_popOverConfig, _formBuilder, _messageService, _commandExecutorService) {\r\n this._popOverConfig = _popOverConfig;\r\n this._formBuilder = _formBuilder;\r\n this._messageService = _messageService;\r\n this._commandExecutorService = _commandExecutorService;\r\n this.uploadComplete = true;\r\n this.updloadPercentage = 0;\r\n this.isUploading = false;\r\n this.selectedColorTab = 'textColor';\r\n this.fontName = '';\r\n this.fontSize = '';\r\n this.hexColor = '';\r\n this.isImageUploader = false;\r\n this.execute = new EventEmitter();\r\n this._popOverConfig.outsideClick = true;\r\n this._popOverConfig.placement = 'bottom';\r\n this._popOverConfig.container = 'body';\r\n }\r\n NgxEditorToolbarComponent.prototype.canEnableToolbarOptions = function (value) {\r\n return canEnableToolbarOptions(value, this.config['toolbar']);\r\n };\r\n NgxEditorToolbarComponent.prototype.triggerCommand = function (command) {\r\n this.execute.emit(command);\r\n };\r\n NgxEditorToolbarComponent.prototype.buildUrlForm = function () {\r\n this.urlForm = this._formBuilder.group({\r\n urlLink: ['', [Validators.required]],\r\n urlText: ['', [Validators.required]],\r\n urlNewTab: [true]\r\n });\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.insertLink = function () {\r\n try {\r\n this._commandExecutorService.createLink(this.urlForm.value);\r\n }\r\n catch (error) {\r\n this._messageService.sendMessage(error.message);\r\n }\r\n this.buildUrlForm();\r\n this.urlPopover.hide();\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.buildImageForm = function () {\r\n this.imageForm = this._formBuilder.group({\r\n imageUrl: ['', [Validators.required]]\r\n });\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.buildVideoForm = function () {\r\n this.videoForm = this._formBuilder.group({\r\n videoUrl: ['', [Validators.required]],\r\n height: [''],\r\n width: ['']\r\n });\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.onFileChange = function (e) {\r\n var _this = this;\r\n this.uploadComplete = false;\r\n this.isUploading = true;\r\n if (e.target.files.length > 0) {\r\n var file = e.target.files[0];\r\n try {\r\n this._commandExecutorService.uploadImage(file, this.config.imageEndPoint).subscribe(function (event) {\r\n if (event.type) {\r\n _this.updloadPercentage = Math.round(100 * event.loaded / event.total);\r\n }\r\n if (event instanceof HttpResponse) {\r\n try {\r\n _this._commandExecutorService.insertImage(event.body.url);\r\n }\r\n catch (error) {\r\n _this._messageService.sendMessage(error.message);\r\n }\r\n _this.uploadComplete = true;\r\n _this.isUploading = false;\r\n }\r\n });\r\n }\r\n catch (error) {\r\n this._messageService.sendMessage(error.message);\r\n this.uploadComplete = true;\r\n this.isUploading = false;\r\n }\r\n }\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.insertImage = function () {\r\n try {\r\n this._commandExecutorService.insertImage(this.imageForm.value.imageUrl);\r\n }\r\n catch (error) {\r\n this._messageService.sendMessage(error.message);\r\n }\r\n this.buildImageForm();\r\n this.imagePopover.hide();\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.insertVideo = function () {\r\n try {\r\n this._commandExecutorService.insertVideo(this.videoForm.value);\r\n }\r\n catch (error) {\r\n this._messageService.sendMessage(error.message);\r\n }\r\n this.buildVideoForm();\r\n this.videoPopover.hide();\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.insertColor = function (color, where) {\r\n try {\r\n this._commandExecutorService.insertColor(color, where);\r\n }\r\n catch (error) {\r\n this._messageService.sendMessage(error.message);\r\n }\r\n this.colorPopover.hide();\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.setFontSize = function (fontSize) {\r\n try {\r\n this._commandExecutorService.setFontSize(fontSize);\r\n }\r\n catch (error) {\r\n this._messageService.sendMessage(error.message);\r\n }\r\n this.fontSizePopover.hide();\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.setFontName = function (fontName) {\r\n try {\r\n this._commandExecutorService.setFontName(fontName);\r\n }\r\n catch (error) {\r\n this._messageService.sendMessage(error.message);\r\n }\r\n this.fontSizePopover.hide();\r\n return;\r\n };\r\n NgxEditorToolbarComponent.prototype.onlyNumbers = function (event) {\r\n return event.charCode >= 48 && event.charCode <= 57;\r\n };\r\n NgxEditorToolbarComponent.prototype.ngOnInit = function () {\r\n this.buildUrlForm();\r\n this.buildImageForm();\r\n this.buildVideoForm();\r\n };\r\n return NgxEditorToolbarComponent;\r\n}());\r\nNgxEditorToolbarComponent.decorators = [\r\n { type: Component, args: [{\r\n selector: 'app-ngx-editor-toolbar',\r\n template: \"
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n\\n\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n

Choose Image

\\n

\\n Uploading Image\\n
\\n {{ updloadPercentage }} %\\n

\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
=100}\\\"\\n [style.width.%]=\\\"updloadPercentage\\\">
\\n
\\n
\\n
\\n
\\n\\n\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n\\n\\n
\\n
\\n Text\\n Background\\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n\\n\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n\\n\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n\",\r\n styles: [\"::ng-deep .ngxePopover.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Roboto,\\\"Helvetica Neue\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}::ng-deep .ngxePopover.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}::ng-deep .ngxePopover.popover .arrow::after,::ng-deep .ngxePopover.popover .arrow::before{position:absolute;display:block;content:\\\"\\\";border-color:transparent;border-style:solid}::ng-deep .ngxePopover.popover .popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}::ng-deep .ngxePopover.popover .popover-header:empty{display:none}::ng-deep .ngxePopover.popover .popover-body{padding:.5rem .75rem;color:#212529}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=top],::ng-deep .ngxePopover.popover.bs-popover-top{margin-bottom:.5rem}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=top] .arrow,::ng-deep .ngxePopover.popover.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=top] .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=top] .arrow::before,::ng-deep .ngxePopover.popover.bs-popover-top .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=top] .arrow::before,::ng-deep .ngxePopover.popover.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=top] .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=right],::ng-deep .ngxePopover.popover.bs-popover-right{margin-left:.5rem}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=right] .arrow,::ng-deep .ngxePopover.popover.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=right] .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=right] .arrow::before,::ng-deep .ngxePopover.popover.bs-popover-right .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=right] .arrow::before,::ng-deep .ngxePopover.popover.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=right] .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=bottom],::ng-deep .ngxePopover.popover.bs-popover-bottom{margin-top:.5rem}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=bottom] .arrow,::ng-deep .ngxePopover.popover.bs-popover-bottom .arrow{left:45%!important;top:calc((.5rem + 1px) * -1)}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=bottom] .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=bottom] .arrow::before,::ng-deep .ngxePopover.popover.bs-popover-bottom .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=bottom] .arrow::before,::ng-deep .ngxePopover.popover.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=bottom] .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=bottom] .popover-header::before,::ng-deep .ngxePopover.popover.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\\\"\\\";border-bottom:1px solid #f7f7f7}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=left],::ng-deep .ngxePopover.popover.bs-popover-left{margin-right:.5rem}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=left] .arrow,::ng-deep .ngxePopover.popover.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=left] .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=left] .arrow::before,::ng-deep .ngxePopover.popover.bs-popover-left .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=left] .arrow::before,::ng-deep .ngxePopover.popover.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}::ng-deep .ngxePopover.popover.bs-popover-auto[x-placement^=left] .arrow::after,::ng-deep .ngxePopover.popover.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}::ng-deep .ngxePopover .btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}::ng-deep .ngxePopover .btn.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}::ng-deep .ngxePopover .btn:active,::ng-deep .ngxePopover .btn:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}::ng-deep .ngxePopover .btn.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}::ng-deep .ngxePopover .btn.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}::ng-deep .ngxePopover .btn:not(:disabled):not(.disabled){cursor:pointer}::ng-deep .ngxePopover form .form-group{margin-bottom:1rem}::ng-deep .ngxePopover form .form-group input{overflow:visible}::ng-deep .ngxePopover form .form-group .form-control-sm{width:100%;outline:0;border:none;border-bottom:1px solid #bdbdbd;border-radius:0;margin-bottom:1px;padding:.25rem .5rem;font-size:.875rem;line-height:1.5}::ng-deep .ngxePopover form .form-group.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:0;margin-right:0}::ng-deep .ngxePopover form .form-group.row .col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;padding:0}::ng-deep .ngxePopover form .form-group.row .col:first-child{padding-right:15px}::ng-deep .ngxePopover form .form-check{position:relative;display:block;padding-left:1.25rem}::ng-deep .ngxePopover form .form-check .form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.ngx-toolbar{background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd}.ngx-toolbar .ngx-toolbar-set{display:inline-block;border-radius:5px;background-color:#fff}.ngx-toolbar .ngx-toolbar-set .ngx-editor-button{background-color:transparent;padding:.4rem;min-width:2.5rem;float:left;border:1px solid #ddd;border-right:transparent}.ngx-toolbar .ngx-toolbar-set .ngx-editor-button:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s ease;transition:.2s ease}.ngx-toolbar .ngx-toolbar-set .ngx-editor-button.focus,.ngx-toolbar .ngx-toolbar-set .ngx-editor-button:focus{outline:0}.ngx-toolbar .ngx-toolbar-set .ngx-editor-button:last-child{border-right:1px solid #ddd;border-top-right-radius:5px;border-bottom-right-radius:5px}.ngx-toolbar .ngx-toolbar-set .ngx-editor-button:first-child{border-top-left-radius:5px;border-bottom-left-radius:5px}.ngx-toolbar .ngx-toolbar-set .ngx-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}::ng-deep .popover{border-top-right-radius:0;border-top-left-radius:0}::ng-deep .ngxe-popover{min-width:15rem;white-space:nowrap}::ng-deep .ngxe-popover .extra-gt,::ng-deep .ngxe-popover.extra-gt{padding-top:.5rem!important}::ng-deep .ngxe-popover .extra-gt1,::ng-deep .ngxe-popover.extra-gt1{padding-top:.75rem!important}::ng-deep .ngxe-popover .extra-gt2,::ng-deep .ngxe-popover.extra-gt2{padding-top:1rem!important}::ng-deep .ngxe-popover .form-group label{display:none;margin:0}::ng-deep .ngxe-popover .form-group .form-control-sm{width:100%;outline:0;border:none;border-bottom:1px solid #bdbdbd;border-radius:0;margin-bottom:1px;padding-left:0;padding-right:0}::ng-deep .ngxe-popover .form-group .form-control-sm:active,::ng-deep .ngxe-popover .form-group .form-control-sm:focus{border-bottom:2px solid #1e88e5;-webkit-box-shadow:none;box-shadow:none;margin-bottom:0}::ng-deep .ngxe-popover .form-group .form-control-sm.ng-dirty.ng-invalid:not(.ng-pristine){border-bottom:2px solid red}::ng-deep .ngxe-popover .form-check{margin-bottom:1rem}::ng-deep .ngxe-popover .btn:focus{-webkit-box-shadow:none!important;box-shadow:none!important}::ng-deep .ngxe-popover.imgc-ctnr{margin:-.5rem -.75rem}::ng-deep .ngxe-popover.imgc-ctnr .imgc-topbar{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);border-bottom:0}::ng-deep .ngxe-popover.imgc-ctnr .imgc-topbar.btn-ctnr button{background-color:transparent;border-radius:0}::ng-deep .ngxe-popover.imgc-ctnr .imgc-topbar.btn-ctnr button:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s ease;transition:.2s ease}::ng-deep .ngxe-popover.imgc-ctnr .imgc-topbar.btn-ctnr button.active{color:#007bff;-webkit-transition:.2s ease;transition:.2s ease}::ng-deep .ngxe-popover.imgc-ctnr .imgc-topbar.two-tabs span{width:50%;text-align:center;display:inline-block;padding:.4rem 0;margin:0 -1px 2px}::ng-deep .ngxe-popover.imgc-ctnr .imgc-topbar.two-tabs span:hover{cursor:pointer}::ng-deep .ngxe-popover.imgc-ctnr .imgc-topbar.two-tabs span.active{margin-bottom:-2px;border-bottom:2px solid #007bff;color:#007bff}::ng-deep .ngxe-popover.imgc-ctnr .imgc-ctnt{padding:.5rem}::ng-deep .ngxe-popover.imgc-ctnr .imgc-ctnt.is-image .progress{height:.5rem;margin:.5rem -.5rem -.6rem}::ng-deep .ngxe-popover.imgc-ctnr .imgc-ctnt.is-image p{margin:0}::ng-deep .ngxe-popover.imgc-ctnr .imgc-ctnt.is-image .ngx-insert-img-ph{border:2px dashed #bdbdbd;padding:1.8rem 0;position:relative;letter-spacing:1px;text-align:center}::ng-deep .ngxe-popover.imgc-ctnr .imgc-ctnt.is-image .ngx-insert-img-ph:hover{background:#ebebeb}::ng-deep .ngxe-popover.imgc-ctnr .imgc-ctnt.is-image .ngx-insert-img-ph .ngxe-img-upl-frm{opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;z-index:2147483640;overflow:hidden;margin:0;padding:0;width:100%}::ng-deep .ngxe-popover.imgc-ctnr .imgc-ctnt.is-image .ngx-insert-img-ph .ngxe-img-upl-frm input{cursor:pointer;position:absolute;right:0;top:0;bottom:0;margin:0}\"],\r\n providers: [PopoverConfig]\r\n },] },\r\n];\r\nNgxEditorToolbarComponent.ctorParameters = function () { return [\r\n { type: PopoverConfig, },\r\n { type: FormBuilder, },\r\n { type: MessageService, },\r\n { type: CommandExecutorService, },\r\n]; };\r\nNgxEditorToolbarComponent.propDecorators = {\r\n \"config\": [{ type: Input },],\r\n \"urlPopover\": [{ type: ViewChild, args: ['urlPopover',] },],\r\n \"imagePopover\": [{ type: ViewChild, args: ['imagePopover',] },],\r\n \"videoPopover\": [{ type: ViewChild, args: ['videoPopover',] },],\r\n \"fontSizePopover\": [{ type: ViewChild, args: ['fontSizePopover',] },],\r\n \"colorPopover\": [{ type: ViewChild, args: ['colorPopover',] },],\r\n \"execute\": [{ type: Output },],\r\n};\r\nvar NgxEditorModule = /** @class */ (function () {\r\n function NgxEditorModule() {\r\n }\r\n return NgxEditorModule;\r\n}());\r\nNgxEditorModule.decorators = [\r\n { type: NgModule, args: [{\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, PopoverModule.forRoot()],\r\n declarations: [NgxEditorComponent, NgxGrippieComponent, NgxEditorMessageComponent, NgxEditorToolbarComponent],\r\n exports: [NgxEditorComponent, PopoverModule],\r\n providers: [CommandExecutorService, MessageService]\r\n },] },\r\n];\r\nNgxEditorModule.ctorParameters = function () { return []; };\n\nexport { NgxEditorModule, CommandExecutorService as ɵc, MessageService as ɵb, NgxEditorMessageComponent as ɵe, NgxEditorToolbarComponent as ɵf, NgxEditorComponent as ɵa, NgxGrippieComponent as ɵd };\n//# sourceMappingURL=ngx-editor.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ngx-editor/esm5/ngx-editor.js\n// module id = ./node_modules/ngx-editor/esm5/ngx-editor.js\n// module chunks = common","import { Directive, ElementRef, EventEmitter, Input, NgModule, NgZone, Output } from '@angular/core';\nimport { of } from 'rxjs/observable/of';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { filter, map, mergeMap, sampleTime, tap } from 'rxjs/operators';\n/**\n * @param {?} selector\n * @param {?} scrollWindow\n * @param {?} defaultElement\n * @param {?} fromRoot\n * @return {?}\n */\nfunction resolveContainerElement(selector, scrollWindow, defaultElement, fromRoot) {\n var /** @type {?} */ hasWindow = window && !!window.document && window.document.documentElement;\n var /** @type {?} */ container = hasWindow && scrollWindow ? window : defaultElement;\n if (selector) {\n var /** @type {?} */ containerIsString = selector && hasWindow && typeof selector === 'string';\n container = containerIsString\n ? findElement(selector, defaultElement.nativeElement, fromRoot)\n : selector;\n if (!container) {\n throw new Error('ngx-infinite-scroll {resolveContainerElement()}: selector for');\n }\n }\n return container;\n}\n/**\n * @param {?} selector\n * @param {?} customRoot\n * @param {?} fromRoot\n * @return {?}\n */\nfunction findElement(selector, customRoot, fromRoot) {\n var /** @type {?} */ rootEl = fromRoot ? window.document : customRoot;\n return rootEl.querySelector(selector);\n}\n/**\n * @param {?} prop\n * @return {?}\n */\nfunction inputPropChanged(prop) {\n return prop && !prop.firstChange;\n}\n/**\n * @return {?}\n */\nfunction hasWindowDefined() {\n return typeof window !== 'undefined';\n}\nvar VerticalProps = {\n clientHeight: \"clientHeight\",\n offsetHeight: \"offsetHeight\",\n scrollHeight: \"scrollHeight\",\n pageYOffset: \"pageYOffset\",\n offsetTop: \"offsetTop\",\n scrollTop: \"scrollTop\",\n top: \"top\"\n};\nvar HorizontalProps = {\n clientHeight: \"clientWidth\",\n offsetHeight: \"offsetWidth\",\n scrollHeight: \"scrollWidth\",\n pageYOffset: \"pageXOffset\",\n offsetTop: \"offsetLeft\",\n scrollTop: \"scrollLeft\",\n top: \"left\"\n};\nvar AxisResolver = (function () {\n /**\n * @param {?=} vertical\n */\n function AxisResolver(vertical) {\n if (vertical === void 0) { vertical = true; }\n this.vertical = vertical;\n this.propsMap = vertical ? VerticalProps : HorizontalProps;\n }\n /**\n * @return {?}\n */\n AxisResolver.prototype.clientHeightKey = function () {\n return this.propsMap.clientHeight;\n };\n /**\n * @return {?}\n */\n AxisResolver.prototype.offsetHeightKey = function () {\n return this.propsMap.offsetHeight;\n };\n /**\n * @return {?}\n */\n AxisResolver.prototype.scrollHeightKey = function () {\n return this.propsMap.scrollHeight;\n };\n /**\n * @return {?}\n */\n AxisResolver.prototype.pageYOffsetKey = function () {\n return this.propsMap.pageYOffset;\n };\n /**\n * @return {?}\n */\n AxisResolver.prototype.offsetTopKey = function () {\n return this.propsMap.offsetTop;\n };\n /**\n * @return {?}\n */\n AxisResolver.prototype.scrollTopKey = function () {\n return this.propsMap.scrollTop;\n };\n /**\n * @return {?}\n */\n AxisResolver.prototype.topKey = function () {\n return this.propsMap.top;\n };\n return AxisResolver;\n}());\n/**\n * @param {?} alwaysCallback\n * @param {?} shouldFireScrollEvent\n * @param {?} isTriggeredCurrentTotal\n * @return {?}\n */\nfunction shouldTriggerEvents(alwaysCallback, shouldFireScrollEvent, isTriggeredCurrentTotal) {\n return (alwaysCallback || shouldFireScrollEvent) && !isTriggeredCurrentTotal;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction createResolver(_a) {\n var windowElement = _a.windowElement, axis = _a.axis;\n return createResolverWithContainer({ axis: axis, isWindow: isElementWindow(windowElement) }, windowElement);\n}\n/**\n * @param {?} resolver\n * @param {?} windowElement\n * @return {?}\n */\nfunction createResolverWithContainer(resolver, windowElement) {\n var /** @type {?} */ container = resolver.isWindow || (windowElement && !windowElement.nativeElement)\n ? windowElement\n : windowElement.nativeElement;\n return Object.assign({}, resolver, { container: container });\n}\n/**\n * @param {?} windowElement\n * @return {?}\n */\nfunction isElementWindow(windowElement) {\n var /** @type {?} */ isWindow = ['Window', 'global'].some(function (obj) { return Object.prototype.toString.call(windowElement).includes(obj); });\n return isWindow;\n}\n/**\n * @param {?} isContainerWindow\n * @param {?} windowElement\n * @return {?}\n */\nfunction getDocumentElement(isContainerWindow, windowElement) {\n return isContainerWindow ? windowElement.document.documentElement : null;\n}\n/**\n * @param {?} element\n * @param {?} resolver\n * @return {?}\n */\nfunction calculatePoints(element, resolver) {\n var /** @type {?} */ height = extractHeightForElement(resolver);\n return resolver.isWindow\n ? calculatePointsForWindow(height, element, resolver)\n : calculatePointsForElement(height, element, resolver);\n}\n/**\n * @param {?} height\n * @param {?} element\n * @param {?} resolver\n * @return {?}\n */\nfunction calculatePointsForWindow(height, element, resolver) {\n var axis = resolver.axis, container = resolver.container, isWindow = resolver.isWindow;\n var _a = extractHeightPropKeys(axis), offsetHeightKey = _a.offsetHeightKey, clientHeightKey = _a.clientHeightKey;\n // scrolled until now / current y point\n var /** @type {?} */ scrolled = height +\n getElementPageYOffset(getDocumentElement(isWindow, container), axis, isWindow);\n // total height / most bottom y point\n var /** @type {?} */ nativeElementHeight = getElementHeight(element.nativeElement, isWindow, offsetHeightKey, clientHeightKey);\n var /** @type {?} */ totalToScroll = getElementOffsetTop(element.nativeElement, axis, isWindow) +\n nativeElementHeight;\n return { height: height, scrolled: scrolled, totalToScroll: totalToScroll };\n}\n/**\n * @param {?} height\n * @param {?} element\n * @param {?} resolver\n * @return {?}\n */\nfunction calculatePointsForElement(height, element, resolver) {\n var axis = resolver.axis, container = resolver.container;\n // perhaps use container.offsetTop instead of 'scrollTop'\n var /** @type {?} */ scrolled = container[axis.scrollTopKey()];\n var /** @type {?} */ totalToScroll = container[axis.scrollHeightKey()];\n return { height: height, scrolled: scrolled, totalToScroll: totalToScroll };\n}\n/**\n * @param {?} axis\n * @return {?}\n */\nfunction extractHeightPropKeys(axis) {\n return {\n offsetHeightKey: axis.offsetHeightKey(),\n clientHeightKey: axis.clientHeightKey()\n };\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction extractHeightForElement(_a) {\n var container = _a.container, isWindow = _a.isWindow, axis = _a.axis;\n var _b = extractHeightPropKeys(axis), offsetHeightKey = _b.offsetHeightKey, clientHeightKey = _b.clientHeightKey;\n return getElementHeight(container, isWindow, offsetHeightKey, clientHeightKey);\n}\n/**\n * @param {?} elem\n * @param {?} isWindow\n * @param {?} offsetHeightKey\n * @param {?} clientHeightKey\n * @return {?}\n */\nfunction getElementHeight(elem, isWindow, offsetHeightKey, clientHeightKey) {\n if (isNaN(elem[offsetHeightKey])) {\n var /** @type {?} */ docElem = getDocumentElement(isWindow, elem);\n return docElem ? docElem[clientHeightKey] : 0;\n }\n else {\n return elem[offsetHeightKey];\n }\n}\n/**\n * @param {?} elem\n * @param {?} axis\n * @param {?} isWindow\n * @return {?}\n */\nfunction getElementOffsetTop(elem, axis, isWindow) {\n var /** @type {?} */ topKey = axis.topKey();\n // elem = elem.nativeElement;\n if (!elem.getBoundingClientRect) {\n // || elem.css('none')) {\n return;\n }\n return (elem.getBoundingClientRect()[topKey] +\n getElementPageYOffset(elem, axis, isWindow));\n}\n/**\n * @param {?} elem\n * @param {?} axis\n * @param {?} isWindow\n * @return {?}\n */\nfunction getElementPageYOffset(elem, axis, isWindow) {\n var /** @type {?} */ pageYOffset = axis.pageYOffsetKey();\n var /** @type {?} */ scrollTop = axis.scrollTopKey();\n var /** @type {?} */ offsetTop = axis.offsetTopKey();\n if (isNaN(window[pageYOffset])) {\n return getDocumentElement(isWindow, elem)[scrollTop];\n }\n else if (elem.ownerDocument) {\n return elem.ownerDocument.defaultView[pageYOffset];\n }\n else {\n return elem[offsetTop];\n }\n}\n/**\n * @param {?} container\n * @param {?} distance\n * @param {?} scrollingDown\n * @return {?}\n */\nfunction shouldFireScrollEvent(container, distance, scrollingDown) {\n var /** @type {?} */ remaining;\n var /** @type {?} */ containerBreakpoint;\n var /** @type {?} */ scrolledUntilNow = container.height + container.scrolled;\n if (scrollingDown) {\n remaining = (container.totalToScroll - scrolledUntilNow) / container.totalToScroll;\n containerBreakpoint = distance.down / 10;\n }\n else {\n remaining = scrolledUntilNow / container.totalToScroll;\n containerBreakpoint = distance.up / 10;\n }\n var /** @type {?} */ shouldFireEvent = remaining <= containerBreakpoint;\n return shouldFireEvent;\n}\n/**\n * @param {?} lastScrollPosition\n * @param {?} container\n * @return {?}\n */\nfunction isScrollingDownwards(lastScrollPosition, container) {\n return lastScrollPosition < container.scrolled;\n}\n/**\n * @param {?} lastScrollPosition\n * @param {?} container\n * @param {?} distance\n * @return {?}\n */\nfunction getScrollStats(lastScrollPosition, container, distance) {\n var /** @type {?} */ scrollDown = isScrollingDownwards(lastScrollPosition, container);\n return {\n fire: shouldFireScrollEvent(container, distance, scrollDown),\n scrollDown: scrollDown\n };\n}\n/**\n * @param {?} position\n * @param {?} scrollState\n * @return {?}\n */\nfunction updateScrollPosition(position, scrollState) {\n return (scrollState.lastScrollPosition = position);\n}\n/**\n * @param {?} totalToScroll\n * @param {?} scrollState\n * @return {?}\n */\nfunction updateTotalToScroll(totalToScroll, scrollState) {\n if (scrollState.lastTotalToScroll !== totalToScroll) {\n scrollState.lastTotalToScroll = scrollState.totalToScroll;\n scrollState.totalToScroll = totalToScroll;\n }\n}\n/**\n * @param {?} scrollState\n * @return {?}\n */\n/**\n * @param {?} scroll\n * @param {?} scrollState\n * @param {?} triggered\n * @param {?} isScrollingDown\n * @return {?}\n */\nfunction updateTriggeredFlag(scroll, scrollState, triggered, isScrollingDown) {\n if (isScrollingDown) {\n scrollState.triggered.down = scroll;\n }\n else {\n scrollState.triggered.up = scroll;\n }\n}\n/**\n * @param {?} totalToScroll\n * @param {?} scrollState\n * @param {?} isScrollingDown\n * @return {?}\n */\nfunction isTriggeredScroll(totalToScroll, scrollState, isScrollingDown) {\n return isScrollingDown\n ? scrollState.triggered.down === totalToScroll\n : scrollState.triggered.up === totalToScroll;\n}\n/**\n * @param {?} scrollState\n * @param {?} scrolledUntilNow\n * @param {?} totalToScroll\n * @return {?}\n */\nfunction updateScrollState(scrollState, scrolledUntilNow, totalToScroll) {\n updateScrollPosition(scrolledUntilNow, scrollState);\n updateTotalToScroll(totalToScroll, scrollState);\n // const isSameTotal = isSameTotalToScroll(scrollState);\n // if (!isSameTotal) {\n // updateTriggeredFlag(scrollState, false, isScrollingDown);\n // }\n}\n/**\n * @param {?} config\n * @return {?}\n */\nfunction createScroller(config) {\n var scrollContainer = config.scrollContainer, scrollWindow = config.scrollWindow, element = config.element, fromRoot = config.fromRoot;\n var /** @type {?} */ resolver = createResolver({\n axis: new AxisResolver(!config.horizontal),\n windowElement: resolveContainerElement(scrollContainer, scrollWindow, element, fromRoot)\n });\n var startWithTotal = calculatePoints(element, resolver).totalToScroll;\n var /** @type {?} */ scrollState = {\n lastScrollPosition: 0,\n lastTotalToScroll: 0,\n totalToScroll: startWithTotal,\n triggered: {\n down: 0,\n up: 0\n }\n };\n var /** @type {?} */ options = {\n container: resolver.container,\n throttle: config.throttle\n };\n var /** @type {?} */ distance = {\n up: config.upDistance,\n down: config.downDistance\n };\n return attachScrollEvent(options).pipe(mergeMap(function (ev) { return of(calculatePoints(element, resolver)); }), map(function (positionStats) { return toInfiniteScrollParams(scrollState.lastScrollPosition, positionStats, distance); }), tap(function (_a) {\n var stats = _a.stats, scrollDown = _a.scrollDown;\n return updateScrollState(scrollState, stats.scrolled, stats.totalToScroll);\n }), filter(function (_a) {\n var fire = _a.fire, scrollDown = _a.scrollDown, totalToScroll = _a.stats.totalToScroll;\n return shouldTriggerEvents(config.alwaysCallback, fire, isTriggeredScroll(totalToScroll, scrollState, scrollDown));\n }), tap(function (_a) {\n var scrollDown = _a.scrollDown, totalToScroll = _a.stats.totalToScroll;\n updateTriggeredFlag(totalToScroll, scrollState, true, scrollDown);\n }), map(toInfiniteScrollAction));\n}\n/**\n * @param {?} options\n * @return {?}\n */\nfunction attachScrollEvent(options) {\n var /** @type {?} */ obs = fromEvent(options.container, \"scroll\");\n // For an unknown reason calling `sampleTime()` causes trouble for many users, even with `options.throttle = 0`.\n // Let's avoid calling the function unless needed.\n // See https://github.com/orizens/ngx-infinite-scroll/issues/198\n if (options.throttle) {\n obs = obs.pipe(sampleTime(options.throttle));\n }\n return obs;\n}\n/**\n * @param {?} lastScrollPosition\n * @param {?} stats\n * @param {?} distance\n * @return {?}\n */\nfunction toInfiniteScrollParams(lastScrollPosition, stats, distance) {\n var _a = getScrollStats(lastScrollPosition, stats, distance), scrollDown = _a.scrollDown, fire = _a.fire;\n return {\n scrollDown: scrollDown,\n fire: fire,\n stats: stats\n };\n}\nvar InfiniteScrollActions = {\n DOWN: \"[NGX_ISE] DOWN\",\n UP: \"[NGX_ISE] UP\"\n};\n/**\n * @param {?} response\n * @return {?}\n */\nfunction toInfiniteScrollAction(response) {\n var scrollDown = response.scrollDown, currentScrollPosition = response.stats.scrolled;\n return {\n type: scrollDown ? InfiniteScrollActions.DOWN : InfiniteScrollActions.UP,\n payload: {\n currentScrollPosition: currentScrollPosition\n }\n };\n}\nvar InfiniteScrollDirective = (function () {\n /**\n * @param {?} element\n * @param {?} zone\n */\n function InfiniteScrollDirective(element, zone) {\n this.element = element;\n this.zone = zone;\n this.scrolled = new EventEmitter();\n this.scrolledUp = new EventEmitter();\n this.infiniteScrollDistance = 2;\n this.infiniteScrollUpDistance = 1.5;\n this.infiniteScrollThrottle = 150;\n this.infiniteScrollDisabled = false;\n this.infiniteScrollContainer = null;\n this.scrollWindow = true;\n this.immediateCheck = false;\n this.horizontal = false;\n this.alwaysCallback = false;\n this.fromRoot = false;\n }\n /**\n * @return {?}\n */\n InfiniteScrollDirective.prototype.ngAfterViewInit = function () {\n if (!this.infiniteScrollDisabled) {\n this.setup();\n }\n };\n /**\n * @param {?} __0\n * @return {?}\n */\n InfiniteScrollDirective.prototype.ngOnChanges = function (_a) {\n var infiniteScrollContainer = _a.infiniteScrollContainer, infiniteScrollDisabled = _a.infiniteScrollDisabled, infiniteScrollDistance = _a.infiniteScrollDistance;\n var /** @type {?} */ containerChanged = inputPropChanged(infiniteScrollContainer);\n var /** @type {?} */ disabledChanged = inputPropChanged(infiniteScrollDisabled);\n var /** @type {?} */ distanceChanged = inputPropChanged(infiniteScrollDistance);\n var /** @type {?} */ shouldSetup = (!disabledChanged && !this.infiniteScrollDisabled) ||\n (disabledChanged && !infiniteScrollDisabled.currentValue) || distanceChanged;\n if (containerChanged || disabledChanged || distanceChanged) {\n this.destroyScroller();\n if (shouldSetup) {\n this.setup();\n }\n }\n };\n /**\n * @return {?}\n */\n InfiniteScrollDirective.prototype.setup = function () {\n var _this = this;\n if (hasWindowDefined()) {\n this.zone.runOutsideAngular(function () {\n _this.disposeScroller = createScroller({\n fromRoot: _this.fromRoot,\n alwaysCallback: _this.alwaysCallback,\n disable: _this.infiniteScrollDisabled,\n downDistance: _this.infiniteScrollDistance,\n element: _this.element,\n horizontal: _this.horizontal,\n scrollContainer: _this.infiniteScrollContainer,\n scrollWindow: _this.scrollWindow,\n throttle: _this.infiniteScrollThrottle,\n upDistance: _this.infiniteScrollUpDistance\n }).subscribe(function (payload) { return _this.zone.run(function () { return _this.handleOnScroll(payload); }); });\n });\n }\n };\n /**\n * @param {?} __0\n * @return {?}\n */\n InfiniteScrollDirective.prototype.handleOnScroll = function (_a) {\n var type = _a.type, payload = _a.payload;\n switch (type) {\n case InfiniteScrollActions.DOWN:\n return this.scrolled.emit(payload);\n case InfiniteScrollActions.UP:\n return this.scrolledUp.emit(payload);\n default:\n return;\n }\n };\n /**\n * @return {?}\n */\n InfiniteScrollDirective.prototype.ngOnDestroy = function () {\n this.destroyScroller();\n };\n /**\n * @return {?}\n */\n InfiniteScrollDirective.prototype.destroyScroller = function () {\n if (this.disposeScroller) {\n this.disposeScroller.unsubscribe();\n }\n };\n return InfiniteScrollDirective;\n}());\nInfiniteScrollDirective.decorators = [\n { type: Directive, args: [{\n selector: '[infiniteScroll], [infinite-scroll], [data-infinite-scroll]'\n },] },\n];\n/**\n * @nocollapse\n */\nInfiniteScrollDirective.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: NgZone, },\n]; };\nInfiniteScrollDirective.propDecorators = {\n 'scrolled': [{ type: Output },],\n 'scrolledUp': [{ type: Output },],\n 'infiniteScrollDistance': [{ type: Input },],\n 'infiniteScrollUpDistance': [{ type: Input },],\n 'infiniteScrollThrottle': [{ type: Input },],\n 'infiniteScrollDisabled': [{ type: Input },],\n 'infiniteScrollContainer': [{ type: Input },],\n 'scrollWindow': [{ type: Input },],\n 'immediateCheck': [{ type: Input },],\n 'horizontal': [{ type: Input },],\n 'alwaysCallback': [{ type: Input },],\n 'fromRoot': [{ type: Input },],\n};\nvar InfiniteScrollModule = (function () {\n function InfiniteScrollModule() {\n }\n return InfiniteScrollModule;\n}());\nInfiniteScrollModule.decorators = [\n { type: NgModule, args: [{\n declarations: [InfiniteScrollDirective],\n exports: [InfiniteScrollDirective],\n imports: [],\n providers: []\n },] },\n];\n/**\n * @nocollapse\n */\nInfiniteScrollModule.ctorParameters = function () { return []; };\n/**\n * Angular library starter.\n * Build an Angular library compatible with AoT compilation & Tree shaking.\n * Written by Roberto Simonetti.\n * MIT license.\n * https://github.com/robisim74/angular-library-starter\n */\n/**\n * Entry point for all public APIs of the package.\n */\n/**\n * Generated bundle index. Do not edit.\n */\nexport { InfiniteScrollDirective, InfiniteScrollModule };\n//# sourceMappingURL=ngx-infinite-scroll.es5.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ngx-infinite-scroll/modules/ngx-infinite-scroll.es5.js\n// module id = ./node_modules/ngx-infinite-scroll/modules/ngx-infinite-scroll.es5.js\n// module chunks = common","import { Directive, ElementRef, NgModule, ApplicationRef, ComponentFactoryResolver, Injectable, InjectionToken, Inject, Injector, NgZone, SecurityContext, Component, HostBinding, HostListener, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { __assign, __values, __extends } from 'tslib';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar ToastContainerDirective = /** @class */ (function () {\n function ToastContainerDirective(el) {\n this.el = el;\n }\n /**\n * @return {?}\n */\n ToastContainerDirective.prototype.getContainerElement = /**\n * @return {?}\n */\n function () {\n return this.el.nativeElement;\n };\n ToastContainerDirective.decorators = [\n { type: Directive, args: [{\n selector: '[toastContainer]',\n exportAs: 'toastContainer',\n },] }\n ];\n /** @nocollapse */\n ToastContainerDirective.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n return ToastContainerDirective;\n}());\nvar ToastContainerModule = /** @class */ (function () {\n function ToastContainerModule() {\n }\n ToastContainerModule.decorators = [\n { type: NgModule, args: [{\n declarations: [ToastContainerDirective],\n exports: [ToastContainerDirective],\n },] }\n ];\n return ToastContainerModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Everything a toast needs to launch\n */\nvar /**\n * Everything a toast needs to launch\n */\nToastPackage = /** @class */ (function () {\n function ToastPackage(toastId, config, message, title, toastType, toastRef) {\n var _this = this;\n this.toastId = toastId;\n this.config = config;\n this.message = message;\n this.title = title;\n this.toastType = toastType;\n this.toastRef = toastRef;\n this._onTap = new Subject();\n this._onAction = new Subject();\n this.toastRef.afterClosed().subscribe(function () {\n _this._onAction.complete();\n _this._onTap.complete();\n });\n }\n /** Fired on click */\n /**\n * Fired on click\n * @return {?}\n */\n ToastPackage.prototype.triggerTap = /**\n * Fired on click\n * @return {?}\n */\n function () {\n this._onTap.next();\n if (this.config.tapToDismiss) {\n this._onTap.complete();\n }\n };\n /**\n * @return {?}\n */\n ToastPackage.prototype.onTap = /**\n * @return {?}\n */\n function () {\n return this._onTap.asObservable();\n };\n /** available for use in custom toast */\n /**\n * available for use in custom toast\n * @param {?=} action\n * @return {?}\n */\n ToastPackage.prototype.triggerAction = /**\n * available for use in custom toast\n * @param {?=} action\n * @return {?}\n */\n function (action) {\n this._onAction.next(action);\n };\n /**\n * @return {?}\n */\n ToastPackage.prototype.onAction = /**\n * @return {?}\n */\n function () {\n return this._onAction.asObservable();\n };\n return ToastPackage;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n * @template T\n */\nvar /**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n * @template T\n */\nComponentPortal = /** @class */ (function () {\n function ComponentPortal(component, injector) {\n this.component = component;\n this.injector = injector;\n }\n /** Attach this portal to a host. */\n /**\n * Attach this portal to a host.\n * @param {?} host\n * @param {?} newestOnTop\n * @return {?}\n */\n ComponentPortal.prototype.attach = /**\n * Attach this portal to a host.\n * @param {?} host\n * @param {?} newestOnTop\n * @return {?}\n */\n function (host, newestOnTop) {\n this._attachedHost = host;\n return host.attach(this, newestOnTop);\n };\n /** Detach this portal from its host */\n /**\n * Detach this portal from its host\n * @return {?}\n */\n ComponentPortal.prototype.detach = /**\n * Detach this portal from its host\n * @return {?}\n */\n function () {\n /** @type {?} */\n var host = this._attachedHost;\n if (host) {\n this._attachedHost = undefined;\n return host.detach();\n }\n };\n Object.defineProperty(ComponentPortal.prototype, \"isAttached\", {\n /** Whether this portal is attached to a host. */\n get: /**\n * Whether this portal is attached to a host.\n * @return {?}\n */\n function () {\n return this._attachedHost != null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n */\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n * @param {?=} host\n * @return {?}\n */\n ComponentPortal.prototype.setAttachedHost = /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n * @param {?=} host\n * @return {?}\n */\n function (host) {\n this._attachedHost = host;\n };\n return ComponentPortal;\n}());\n/**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n * @abstract\n */\nvar /**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n * @abstract\n */\nBasePortalHost = /** @class */ (function () {\n function BasePortalHost() {\n }\n /**\n * @param {?} portal\n * @param {?} newestOnTop\n * @return {?}\n */\n BasePortalHost.prototype.attach = /**\n * @param {?} portal\n * @param {?} newestOnTop\n * @return {?}\n */\n function (portal, newestOnTop) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal, newestOnTop);\n };\n /**\n * @return {?}\n */\n BasePortalHost.prototype.detach = /**\n * @return {?}\n */\n function () {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost();\n }\n this._attachedPortal = undefined;\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = undefined;\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n BasePortalHost.prototype.setDisposeFn = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) {\n this._disposeFn = fn;\n };\n return BasePortalHost;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nvar /**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nDomPortalHost = /** @class */ (function (_super) {\n __extends(DomPortalHost, _super);\n function DomPortalHost(_hostDomElement, _componentFactoryResolver, _appRef) {\n var _this = _super.call(this) || this;\n _this._hostDomElement = _hostDomElement;\n _this._componentFactoryResolver = _componentFactoryResolver;\n _this._appRef = _appRef;\n return _this;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n */\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @template T\n * @param {?} portal Portal to be attached\n * @param {?} newestOnTop\n * @return {?}\n */\n DomPortalHost.prototype.attachComponentPortal = /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @template T\n * @param {?} portal Portal to be attached\n * @param {?} newestOnTop\n * @return {?}\n */\n function (portal, newestOnTop) {\n var _this = this;\n /** @type {?} */\n var componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n /** @type {?} */\n var componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the ChangeDetector for that component to the application (which\n // happens automatically when using a ViewContainer).\n componentRef = componentFactory.create(portal.injector);\n // When creating a component outside of a ViewContainer, we need to manually register\n // its ChangeDetector with the application. This API is unfortunately not yet published\n // in Angular core. The change detector must also be deregistered when the component\n // is destroyed to prevent memory leaks.\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(function () {\n _this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n if (newestOnTop) {\n this._hostDomElement.insertBefore(this._getComponentRootNode(componentRef), this._hostDomElement.firstChild);\n }\n else {\n this._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n }\n return componentRef;\n };\n /**\n * Gets the root HTMLElement for an instantiated component.\n * @param {?} componentRef\n * @return {?}\n */\n DomPortalHost.prototype._getComponentRootNode = /**\n * Gets the root HTMLElement for an instantiated component.\n * @param {?} componentRef\n * @return {?}\n */\n function (componentRef) {\n return /** @type {?} */ ((/** @type {?} */ (componentRef.hostView)).rootNodes[0]);\n };\n return DomPortalHost;\n}(BasePortalHost));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nvar /**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nOverlayRef = /** @class */ (function () {\n function OverlayRef(_portalHost) {\n this._portalHost = _portalHost;\n }\n /**\n * @param {?} portal\n * @param {?=} newestOnTop\n * @return {?}\n */\n OverlayRef.prototype.attach = /**\n * @param {?} portal\n * @param {?=} newestOnTop\n * @return {?}\n */\n function (portal, newestOnTop) {\n if (newestOnTop === void 0) { newestOnTop = true; }\n return this._portalHost.attach(portal, newestOnTop);\n };\n /**\n * Detaches an overlay from a portal.\n * @returns Resolves when the overlay has been detached.\n */\n /**\n * Detaches an overlay from a portal.\n * @return {?} Resolves when the overlay has been detached.\n */\n OverlayRef.prototype.detach = /**\n * Detaches an overlay from a portal.\n * @return {?} Resolves when the overlay has been detached.\n */\n function () {\n return this._portalHost.detach();\n };\n return OverlayRef;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * The OverlayContainer is the container in which all overlays will load.\n * It should be provided in the root component to ensure it is properly shared.\n */\nvar /**\n * The OverlayContainer is the container in which all overlays will load.\n * It should be provided in the root component to ensure it is properly shared.\n */\nOverlayContainer = /** @class */ (function () {\n function OverlayContainer() {\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @return {?} the container element\n */\n OverlayContainer.prototype.getContainerElement = /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @return {?} the container element\n */\n function () {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n };\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n * @return {?}\n */\n OverlayContainer.prototype._createContainer = /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n * @return {?}\n */\n function () {\n /** @type {?} */\n var container = document.createElement('div');\n container.classList.add('overlay-container');\n document.body.appendChild(container);\n this._containerElement = container;\n };\n return OverlayContainer;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\nvar Overlay = /** @class */ (function () {\n function Overlay(_overlayContainer, _componentFactoryResolver, _appRef) {\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._paneElements = new Map();\n }\n /**\n * Creates an overlay.\n * @returns A reference to the created overlay.\n */\n /**\n * Creates an overlay.\n * @param {?=} positionClass\n * @param {?=} overlayContainer\n * @return {?} A reference to the created overlay.\n */\n Overlay.prototype.create = /**\n * Creates an overlay.\n * @param {?=} positionClass\n * @param {?=} overlayContainer\n * @return {?} A reference to the created overlay.\n */\n function (positionClass, overlayContainer) {\n // get existing pane if possible\n return this._createOverlayRef(this.getPaneElement(positionClass, overlayContainer));\n };\n /**\n * @param {?=} positionClass\n * @param {?=} overlayContainer\n * @return {?}\n */\n Overlay.prototype.getPaneElement = /**\n * @param {?=} positionClass\n * @param {?=} overlayContainer\n * @return {?}\n */\n function (positionClass, overlayContainer) {\n if (positionClass === void 0) { positionClass = ''; }\n if (!this._paneElements.get(overlayContainer)) {\n this._paneElements.set(overlayContainer, {});\n }\n if (!this._paneElements.get(overlayContainer)[positionClass]) {\n this._paneElements.get(overlayContainer)[positionClass] = this._createPaneElement(positionClass, overlayContainer);\n }\n return this._paneElements.get(overlayContainer)[positionClass];\n };\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @param {?} positionClass\n * @param {?=} overlayContainer\n * @return {?} Newly-created pane element\n */\n Overlay.prototype._createPaneElement = /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @param {?} positionClass\n * @param {?=} overlayContainer\n * @return {?} Newly-created pane element\n */\n function (positionClass, overlayContainer) {\n /** @type {?} */\n var pane = document.createElement('div');\n pane.id = 'toast-container';\n pane.classList.add(positionClass);\n pane.classList.add('toast-container');\n if (!overlayContainer) {\n this._overlayContainer.getContainerElement().appendChild(pane);\n }\n else {\n overlayContainer.getContainerElement().appendChild(pane);\n }\n return pane;\n };\n /**\n * Create a DomPortalHost into which the overlay content can be loaded.\n * @param {?} pane The DOM element to turn into a portal host.\n * @return {?} A portal host for the given DOM element.\n */\n Overlay.prototype._createPortalHost = /**\n * Create a DomPortalHost into which the overlay content can be loaded.\n * @param {?} pane The DOM element to turn into a portal host.\n * @return {?} A portal host for the given DOM element.\n */\n function (pane) {\n return new DomPortalHost(pane, this._componentFactoryResolver, this._appRef);\n };\n /**\n * Creates an OverlayRef for an overlay in the given DOM element.\n * @param {?} pane DOM element for the overlay\n * @return {?}\n */\n Overlay.prototype._createOverlayRef = /**\n * Creates an OverlayRef for an overlay in the given DOM element.\n * @param {?} pane DOM element for the overlay\n * @return {?}\n */\n function (pane) {\n return new OverlayRef(this._createPortalHost(pane));\n };\n Overlay.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n Overlay.ctorParameters = function () { return [\n { type: OverlayContainer },\n { type: ComponentFactoryResolver },\n { type: ApplicationRef }\n ]; };\n return Overlay;\n}());\n/** *\n * Providers for Overlay and its related injectables.\n @type {?} */\nvar OVERLAY_PROVIDERS = [\n Overlay,\n OverlayContainer,\n];\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/**\n * Reference to a toast opened via the Toastr service.\n * @template T\n */\nvar /**\n * Reference to a toast opened via the Toastr service.\n * @template T\n */\nToastRef = /** @class */ (function () {\n function ToastRef(_overlayRef) {\n this._overlayRef = _overlayRef;\n /**\n * Subject for notifying the user that the toast has finished closing.\n */\n this._afterClosed = new Subject();\n /**\n * triggered when toast is activated\n */\n this._activate = new Subject();\n /**\n * notifies the toast that it should close before the timeout\n */\n this._manualClose = new Subject();\n /**\n * notifies the toast that it should reset the timeouts\n */\n this._resetTimeout = new Subject();\n }\n /**\n * @return {?}\n */\n ToastRef.prototype.manualClose = /**\n * @return {?}\n */\n function () {\n this._manualClose.next();\n this._manualClose.complete();\n };\n /**\n * @return {?}\n */\n ToastRef.prototype.manualClosed = /**\n * @return {?}\n */\n function () {\n return this._manualClose.asObservable();\n };\n /**\n * @return {?}\n */\n ToastRef.prototype.timeoutReset = /**\n * @return {?}\n */\n function () {\n return this._resetTimeout.asObservable();\n };\n /**\n * Close the toast.\n */\n /**\n * Close the toast.\n * @return {?}\n */\n ToastRef.prototype.close = /**\n * Close the toast.\n * @return {?}\n */\n function () {\n this._overlayRef.detach();\n this._afterClosed.next();\n this._manualClose.next();\n this._afterClosed.complete();\n this._manualClose.complete();\n this._activate.complete();\n this._resetTimeout.complete();\n };\n /** Gets an observable that is notified when the toast is finished closing. */\n /**\n * Gets an observable that is notified when the toast is finished closing.\n * @return {?}\n */\n ToastRef.prototype.afterClosed = /**\n * Gets an observable that is notified when the toast is finished closing.\n * @return {?}\n */\n function () {\n return this._afterClosed.asObservable();\n };\n /**\n * @return {?}\n */\n ToastRef.prototype.isInactive = /**\n * @return {?}\n */\n function () {\n return this._activate.isStopped;\n };\n /**\n * @return {?}\n */\n ToastRef.prototype.activate = /**\n * @return {?}\n */\n function () {\n this._activate.next();\n this._activate.complete();\n };\n /** Gets an observable that is notified when the toast has started opening. */\n /**\n * Gets an observable that is notified when the toast has started opening.\n * @return {?}\n */\n ToastRef.prototype.afterActivate = /**\n * Gets an observable that is notified when the toast has started opening.\n * @return {?}\n */\n function () {\n return this._activate.asObservable();\n };\n /** Reset the toast timouts */\n /**\n * Reset the toast timouts\n * @return {?}\n */\n ToastRef.prototype.resetTimeout = /**\n * Reset the toast timouts\n * @return {?}\n */\n function () {\n this._resetTimeout.next();\n };\n return ToastRef;\n}());\n/**\n * Custom injector type specifically for instantiating components with a toast.\n */\nvar /**\n * Custom injector type specifically for instantiating components with a toast.\n */\nToastInjector = /** @class */ (function () {\n function ToastInjector(_toastPackage, _parentInjector) {\n this._toastPackage = _toastPackage;\n this._parentInjector = _parentInjector;\n }\n /* tslint:disable:deprecation */\n /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n ToastInjector.prototype.get = /**\n * @param {?} token\n * @param {?=} notFoundValue\n * @return {?}\n */\n function (token, notFoundValue) {\n if (token === ToastPackage && this._toastPackage) {\n return this._toastPackage;\n }\n return this._parentInjector.get(token, notFoundValue);\n };\n return ToastInjector;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar TOAST_CONFIG = new InjectionToken('ToastConfig');\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar ToastrService = /** @class */ (function () {\n function ToastrService(token, overlay, _injector, sanitizer, ngZone) {\n this.overlay = overlay;\n this._injector = _injector;\n this.sanitizer = sanitizer;\n this.ngZone = ngZone;\n this.currentlyActive = 0;\n this.toasts = [];\n this.index = 0;\n /** @type {?} */\n var defaultConfig = new token.defaults();\n this.toastrConfig = __assign({}, defaultConfig, token.config);\n this.toastrConfig.iconClasses = __assign({}, defaultConfig.iconClasses, token.config.iconClasses);\n }\n /** show toast */\n /**\n * show toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @param {?=} type\n * @return {?}\n */\n ToastrService.prototype.show = /**\n * show toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @param {?=} type\n * @return {?}\n */\n function (message, title, override, type) {\n if (override === void 0) { override = {}; }\n if (type === void 0) { type = ''; }\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n };\n /** show successful toast */\n /**\n * show successful toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @return {?}\n */\n ToastrService.prototype.success = /**\n * show successful toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @return {?}\n */\n function (message, title, override) {\n if (override === void 0) { override = {}; }\n /** @type {?} */\n var type = this.toastrConfig.iconClasses.success || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n };\n /** show error toast */\n /**\n * show error toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @return {?}\n */\n ToastrService.prototype.error = /**\n * show error toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @return {?}\n */\n function (message, title, override) {\n if (override === void 0) { override = {}; }\n /** @type {?} */\n var type = this.toastrConfig.iconClasses.error || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n };\n /** show info toast */\n /**\n * show info toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @return {?}\n */\n ToastrService.prototype.info = /**\n * show info toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @return {?}\n */\n function (message, title, override) {\n if (override === void 0) { override = {}; }\n /** @type {?} */\n var type = this.toastrConfig.iconClasses.info || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n };\n /** show warning toast */\n /**\n * show warning toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @return {?}\n */\n ToastrService.prototype.warning = /**\n * show warning toast\n * @param {?=} message\n * @param {?=} title\n * @param {?=} override\n * @return {?}\n */\n function (message, title, override) {\n if (override === void 0) { override = {}; }\n /** @type {?} */\n var type = this.toastrConfig.iconClasses.warning || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n };\n /**\n * Remove all or a single toast by id\n */\n /**\n * Remove all or a single toast by id\n * @param {?=} toastId\n * @return {?}\n */\n ToastrService.prototype.clear = /**\n * Remove all or a single toast by id\n * @param {?=} toastId\n * @return {?}\n */\n function (toastId) {\n var e_1, _a;\n try {\n // Call every toastRef manualClose function\n for (var _b = __values(this.toasts), _c = _b.next(); !_c.done; _c = _b.next()) {\n var toast = _c.value;\n if (toastId !== undefined) {\n if (toast.toastId === toastId) {\n toast.toastRef.manualClose();\n return;\n }\n }\n else {\n toast.toastRef.manualClose();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n /**\n * Remove and destroy a single toast by id\n */\n /**\n * Remove and destroy a single toast by id\n * @param {?} toastId\n * @return {?}\n */\n ToastrService.prototype.remove = /**\n * Remove and destroy a single toast by id\n * @param {?} toastId\n * @return {?}\n */\n function (toastId) {\n /** @type {?} */\n var found = this._findToast(toastId);\n if (!found) {\n return false;\n }\n found.activeToast.toastRef.close();\n this.toasts.splice(found.index, 1);\n this.currentlyActive = this.currentlyActive - 1;\n if (!this.toastrConfig.maxOpened || !this.toasts.length) {\n return false;\n }\n if (this.currentlyActive < this.toastrConfig.maxOpened &&\n this.toasts[this.currentlyActive]) {\n /** @type {?} */\n var p = this.toasts[this.currentlyActive].toastRef;\n if (!p.isInactive()) {\n this.currentlyActive = this.currentlyActive + 1;\n p.activate();\n }\n }\n return true;\n };\n /**\n * Determines if toast message is already shown\n */\n /**\n * Determines if toast message is already shown\n * @param {?} message\n * @param {?} resetOnDuplicate\n * @return {?}\n */\n ToastrService.prototype.isDuplicate = /**\n * Determines if toast message is already shown\n * @param {?} message\n * @param {?} resetOnDuplicate\n * @return {?}\n */\n function (message, resetOnDuplicate) {\n for (var i = 0; i < this.toasts.length; i++) {\n if (this.toasts[i].message === message) {\n if (resetOnDuplicate &&\n this.toasts[i].toastRef.componentInstance.resetTimeout) {\n this.toasts[i].toastRef.resetTimeout();\n }\n return true;\n }\n }\n return false;\n };\n /**\n * create a clone of global config and apply individual settings\n * @param {?=} override\n * @return {?}\n */\n ToastrService.prototype.applyConfig = /**\n * create a clone of global config and apply individual settings\n * @param {?=} override\n * @return {?}\n */\n function (override) {\n if (override === void 0) { override = {}; }\n return __assign({}, this.toastrConfig, override);\n };\n /**\n * Find toast object by id\n * @param {?} toastId\n * @return {?}\n */\n ToastrService.prototype._findToast = /**\n * Find toast object by id\n * @param {?} toastId\n * @return {?}\n */\n function (toastId) {\n for (var i = 0; i < this.toasts.length; i++) {\n if (this.toasts[i].toastId === toastId) {\n return { index: i, activeToast: this.toasts[i] };\n }\n }\n return null;\n };\n /**\n * Determines the need to run inside angular's zone then builds the toast\n * @param {?} toastType\n * @param {?} message\n * @param {?} title\n * @param {?} config\n * @return {?}\n */\n ToastrService.prototype._preBuildNotification = /**\n * Determines the need to run inside angular's zone then builds the toast\n * @param {?} toastType\n * @param {?} message\n * @param {?} title\n * @param {?} config\n * @return {?}\n */\n function (toastType, message, title, config) {\n var _this = this;\n if (config.onActivateTick) {\n return this.ngZone.run(function () {\n return _this._buildNotification(toastType, message, title, config);\n });\n }\n return this._buildNotification(toastType, message, title, config);\n };\n /**\n * Creates and attaches toast data to component\n * returns null if toast is duplicate and preventDuplicates == True\n * @param {?} toastType\n * @param {?} message\n * @param {?} title\n * @param {?} config\n * @return {?}\n */\n ToastrService.prototype._buildNotification = /**\n * Creates and attaches toast data to component\n * returns null if toast is duplicate and preventDuplicates == True\n * @param {?} toastType\n * @param {?} message\n * @param {?} title\n * @param {?} config\n * @return {?}\n */\n function (toastType, message, title, config) {\n var _this = this;\n if (!config.toastComponent) {\n throw new Error('toastComponent required');\n }\n // max opened and auto dismiss = true\n if (message &&\n this.toastrConfig.preventDuplicates &&\n this.isDuplicate(message, this.toastrConfig.resetTimeoutOnDuplicate)) {\n return null;\n }\n this.previousToastMessage = message;\n /** @type {?} */\n var keepInactive = false;\n if (this.toastrConfig.maxOpened &&\n this.currentlyActive >= this.toastrConfig.maxOpened) {\n keepInactive = true;\n if (this.toastrConfig.autoDismiss) {\n this.clear(this.toasts[0].toastId);\n }\n }\n /** @type {?} */\n var overlayRef = this.overlay.create(config.positionClass, this.overlayContainer);\n this.index = this.index + 1;\n /** @type {?} */\n var sanitizedMessage = message;\n if (message && config.enableHtml) {\n sanitizedMessage = this.sanitizer.sanitize(SecurityContext.HTML, message);\n }\n /** @type {?} */\n var toastRef = new ToastRef(overlayRef);\n /** @type {?} */\n var toastPackage = new ToastPackage(this.index, config, sanitizedMessage, title, toastType, toastRef);\n /** @type {?} */\n var toastInjector = new ToastInjector(toastPackage, this._injector);\n /** @type {?} */\n var component = new ComponentPortal(config.toastComponent, toastInjector);\n /** @type {?} */\n var portal = overlayRef.attach(component, this.toastrConfig.newestOnTop);\n toastRef.componentInstance = (/** @type {?} */ (portal))._component;\n /** @type {?} */\n var ins = {\n toastId: this.index,\n message: message || '',\n toastRef: toastRef,\n onShown: toastRef.afterActivate(),\n onHidden: toastRef.afterClosed(),\n onTap: toastPackage.onTap(),\n onAction: toastPackage.onAction(),\n portal: portal\n };\n if (!keepInactive) {\n setTimeout(function () {\n ins.toastRef.activate();\n _this.currentlyActive = _this.currentlyActive + 1;\n });\n }\n this.toasts.push(ins);\n return ins;\n };\n ToastrService.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n ToastrService.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [TOAST_CONFIG,] }] },\n { type: Overlay },\n { type: Injector },\n { type: DomSanitizer },\n { type: NgZone }\n ]; };\n return ToastrService;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar Toast = /** @class */ (function () {\n function Toast(toastrService, toastPackage, ngZone) {\n var _this = this;\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.ngZone = ngZone;\n /**\n * width of progress bar\n */\n this.width = -1;\n /**\n * a combination of toast type and options.toastClass\n */\n this.toastClasses = '';\n /**\n * controls animation\n */\n this.state = {\n value: 'inactive',\n params: {\n easeTime: this.toastPackage.config.easeTime,\n easing: 'ease-in'\n }\n };\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = toastPackage.toastType + \" \" + toastPackage.config.toastClass;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(function () {\n _this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(function () {\n _this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(function () {\n _this.resetTimeout();\n });\n }\n /**\n * @return {?}\n */\n Toast.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n };\n /**\n * activates toast and sets timeout\n */\n /**\n * activates toast and sets timeout\n * @return {?}\n */\n Toast.prototype.activateToast = /**\n * activates toast and sets timeout\n * @return {?}\n */\n function () {\n var _this = this;\n this.state = __assign({}, this.state, { value: 'active' });\n if (!this.options.disableTimeOut && this.options.timeOut) {\n this.outsideTimeout(function () { return _this.remove(); }, this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.outsideInterval(function () { return _this.updateProgress(); }, 10);\n }\n }\n };\n /**\n * updates progress bar width\n */\n /**\n * updates progress bar width\n * @return {?}\n */\n Toast.prototype.updateProgress = /**\n * updates progress bar width\n * @return {?}\n */\n function () {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n /** @type {?} */\n var now = new Date().getTime();\n /** @type {?} */\n var remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n };\n /**\n * @return {?}\n */\n Toast.prototype.resetTimeout = /**\n * @return {?}\n */\n function () {\n var _this = this;\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = __assign({}, this.state, { value: 'active' });\n this.outsideTimeout(function () { return _this.remove(); }, this.originalTimeout);\n this.options.timeOut = this.originalTimeout;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(function () { return _this.updateProgress(); }, 10);\n }\n };\n /**\n * tells toastrService to remove this toast after animation time\n */\n /**\n * tells toastrService to remove this toast after animation time\n * @return {?}\n */\n Toast.prototype.remove = /**\n * tells toastrService to remove this toast after animation time\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = __assign({}, this.state, { value: 'removed' });\n this.outsideTimeout(function () { return _this.toastrService.remove(_this.toastPackage.toastId); }, +this.toastPackage.config.easeTime);\n };\n /**\n * @return {?}\n */\n Toast.prototype.tapToast = /**\n * @return {?}\n */\n function () {\n if (this.state.value === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n };\n /**\n * @return {?}\n */\n Toast.prototype.stickAround = /**\n * @return {?}\n */\n function () {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n };\n /**\n * @return {?}\n */\n Toast.prototype.delayedHideToast = /**\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.options.disableTimeOut ||\n this.options.extendedTimeOut === 0 ||\n this.state.value === 'removed') {\n return;\n }\n this.outsideTimeout(function () { return _this.remove(); }, this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(function () { return _this.updateProgress(); }, 10);\n }\n };\n /**\n * @param {?} func\n * @param {?} timeout\n * @return {?}\n */\n Toast.prototype.outsideTimeout = /**\n * @param {?} func\n * @param {?} timeout\n * @return {?}\n */\n function (func, timeout) {\n var _this = this;\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(function () {\n return (_this.timeout = setTimeout(function () { return _this.runInsideAngular(func); }, timeout));\n });\n }\n else {\n this.timeout = setTimeout(function () { return func(); }, timeout);\n }\n };\n /**\n * @param {?} func\n * @param {?} timeout\n * @return {?}\n */\n Toast.prototype.outsideInterval = /**\n * @param {?} func\n * @param {?} timeout\n * @return {?}\n */\n function (func, timeout) {\n var _this = this;\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(function () {\n return (_this.intervalId = setInterval(function () { return _this.runInsideAngular(func); }, timeout));\n });\n }\n else {\n this.intervalId = setInterval(function () { return func(); }, timeout);\n }\n };\n /**\n * @param {?} func\n * @return {?}\n */\n Toast.prototype.runInsideAngular = /**\n * @param {?} func\n * @return {?}\n */\n function (func) {\n if (this.ngZone) {\n this.ngZone.run(function () { return func(); });\n }\n else {\n func();\n }\n };\n Toast.decorators = [\n { type: Component, args: [{\n selector: '[toast-component]',\n template: \"\\n \\n
\\n {{ title }}\\n
\\n
\\n
\\n
\\n {{ message }}\\n
\\n
\\n
\\n
\\n \",\n animations: [\n trigger('flyInOut', [\n state('inactive', style({\n display: 'none',\n opacity: 0\n })),\n state('active', style({})),\n state('removed', style({ opacity: 0 })),\n transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')),\n transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))\n ])\n ],\n preserveWhitespaces: false\n }] }\n ];\n /** @nocollapse */\n Toast.ctorParameters = function () { return [\n { type: ToastrService },\n { type: ToastPackage },\n { type: NgZone }\n ]; };\n Toast.propDecorators = {\n toastClasses: [{ type: HostBinding, args: ['class',] }],\n state: [{ type: HostBinding, args: ['@flyInOut',] }],\n tapToast: [{ type: HostListener, args: ['click',] }],\n stickAround: [{ type: HostListener, args: ['mouseenter',] }],\n delayedHideToast: [{ type: HostListener, args: ['mouseleave',] }]\n };\n return Toast;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar DefaultGlobalConfig = /** @class */ (function () {\n function DefaultGlobalConfig() {\n // Global\n this.maxOpened = 0;\n this.autoDismiss = false;\n this.newestOnTop = true;\n this.preventDuplicates = false;\n this.resetTimeoutOnDuplicate = false;\n this.iconClasses = {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n };\n // Individual\n this.toastComponent = Toast;\n this.closeButton = false;\n this.timeOut = 5000;\n this.extendedTimeOut = 1000;\n this.enableHtml = false;\n this.progressBar = false;\n this.toastClass = 'toast';\n this.positionClass = 'toast-top-right';\n this.titleClass = 'toast-title';\n this.messageClass = 'toast-message';\n this.easing = 'ease-in';\n this.easeTime = 300;\n this.tapToDismiss = true;\n this.onActivateTick = false;\n this.progressAnimation = 'decreasing';\n }\n return DefaultGlobalConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar ToastrModule = /** @class */ (function () {\n function ToastrModule(parentModule) {\n if (parentModule) {\n throw new Error('ToastrModule is already loaded. It should only be imported in your application\\'s main module.');\n }\n }\n /**\n * @param {?=} config\n * @return {?}\n */\n ToastrModule.forRoot = /**\n * @param {?=} config\n * @return {?}\n */\n function (config) {\n if (config === void 0) { config = {}; }\n return {\n ngModule: ToastrModule,\n providers: [\n { provide: TOAST_CONFIG, useValue: { config: config, defaults: DefaultGlobalConfig } },\n OverlayContainer,\n Overlay,\n ToastrService,\n ],\n };\n };\n ToastrModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n exports: [Toast],\n declarations: [Toast],\n entryComponents: [Toast],\n },] }\n ];\n /** @nocollapse */\n ToastrModule.ctorParameters = function () { return [\n { type: ToastrModule, decorators: [{ type: Optional }, { type: SkipSelf }] }\n ]; };\n return ToastrModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\nvar ToastNoAnimation = /** @class */ (function () {\n function ToastNoAnimation(toastrService, toastPackage, appRef) {\n var _this = this;\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.appRef = appRef;\n /**\n * width of progress bar\n */\n this.width = -1;\n /**\n * a combination of toast type and options.toastClass\n */\n this.toastClasses = '';\n /**\n * controls animation\n */\n this.state = 'inactive';\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = toastPackage.toastType + \" \" + toastPackage.config.toastClass;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(function () {\n _this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(function () {\n _this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(function () {\n _this.resetTimeout();\n });\n }\n Object.defineProperty(ToastNoAnimation.prototype, \"displayStyle\", {\n get: /**\n * @return {?}\n */\n function () {\n if (this.state === 'inactive') {\n return 'none';\n }\n return 'inherit';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n ToastNoAnimation.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n };\n /**\n * activates toast and sets timeout\n */\n /**\n * activates toast and sets timeout\n * @return {?}\n */\n ToastNoAnimation.prototype.activateToast = /**\n * activates toast and sets timeout\n * @return {?}\n */\n function () {\n var _this = this;\n this.state = 'active';\n if (!this.options.disableTimeOut && this.options.timeOut) {\n this.timeout = setTimeout(function () {\n _this.remove();\n }, this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.intervalId = setInterval(function () { return _this.updateProgress(); }, 10);\n }\n }\n if (this.options.onActivateTick) {\n this.appRef.tick();\n }\n };\n /**\n * updates progress bar width\n */\n /**\n * updates progress bar width\n * @return {?}\n */\n ToastNoAnimation.prototype.updateProgress = /**\n * updates progress bar width\n * @return {?}\n */\n function () {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n /** @type {?} */\n var now = new Date().getTime();\n /** @type {?} */\n var remaining = this.hideTime - now;\n this.width = (remaining / this.options.timeOut) * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n };\n /**\n * @return {?}\n */\n ToastNoAnimation.prototype.resetTimeout = /**\n * @return {?}\n */\n function () {\n var _this = this;\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = 'active';\n this.options.timeOut = this.originalTimeout;\n this.timeout = setTimeout(function () { return _this.remove(); }, this.originalTimeout);\n this.hideTime = new Date().getTime() + (this.originalTimeout || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(function () { return _this.updateProgress(); }, 10);\n }\n };\n /**\n * tells toastrService to remove this toast after animation time\n */\n /**\n * tells toastrService to remove this toast after animation time\n * @return {?}\n */\n ToastNoAnimation.prototype.remove = /**\n * tells toastrService to remove this toast after animation time\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = 'removed';\n this.timeout = setTimeout(function () {\n return _this.toastrService.remove(_this.toastPackage.toastId);\n });\n };\n /**\n * @return {?}\n */\n ToastNoAnimation.prototype.tapToast = /**\n * @return {?}\n */\n function () {\n if (this.state === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n };\n /**\n * @return {?}\n */\n ToastNoAnimation.prototype.stickAround = /**\n * @return {?}\n */\n function () {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n };\n /**\n * @return {?}\n */\n ToastNoAnimation.prototype.delayedHideToast = /**\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.options.disableTimeOut ||\n this.options.extendedTimeOut === 0 ||\n this.state === 'removed') {\n return;\n }\n this.timeout = setTimeout(function () { return _this.remove(); }, this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(function () { return _this.updateProgress(); }, 10);\n }\n };\n ToastNoAnimation.decorators = [\n { type: Component, args: [{\n selector: '[toast-component]',\n template: \"\\n \\n
\\n {{ title }}\\n
\\n
\\n
\\n
\\n {{ message }}\\n
\\n
\\n
\\n
\\n \"\n }] }\n ];\n /** @nocollapse */\n ToastNoAnimation.ctorParameters = function () { return [\n { type: ToastrService },\n { type: ToastPackage },\n { type: ApplicationRef }\n ]; };\n ToastNoAnimation.propDecorators = {\n toastClasses: [{ type: HostBinding, args: ['class',] }],\n displayStyle: [{ type: HostBinding, args: ['style.display',] }],\n tapToast: [{ type: HostListener, args: ['click',] }],\n stickAround: [{ type: HostListener, args: ['mouseenter',] }],\n delayedHideToast: [{ type: HostListener, args: ['mouseleave',] }]\n };\n return ToastNoAnimation;\n}());\nvar ToastNoAnimationModule = /** @class */ (function () {\n function ToastNoAnimationModule() {\n }\n ToastNoAnimationModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [ToastNoAnimation],\n exports: [ToastNoAnimation],\n entryComponents: [ToastNoAnimation]\n },] }\n ];\n return ToastNoAnimationModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\n */\n\nexport { ToastContainerDirective, ToastContainerModule, Toast, ToastrService, ToastPackage, DefaultGlobalConfig, ToastrModule, ToastRef, ToastInjector, TOAST_CONFIG, ToastNoAnimation, ToastNoAnimationModule, ComponentPortal, BasePortalHost, Overlay, OVERLAY_PROVIDERS, OverlayContainer, OverlayRef };\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRvYXN0ci5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vbmd4LXRvYXN0ci90b2FzdHIvdG9hc3QuZGlyZWN0aXZlLnRzIiwibmc6Ly9uZ3gtdG9hc3RyL3RvYXN0ci90b2FzdHItY29uZmlnLnRzIiwibmc6Ly9uZ3gtdG9hc3RyL3BvcnRhbC9wb3J0YWwudHMiLCJuZzovL25neC10b2FzdHIvcG9ydGFsL2RvbS1wb3J0YWwtaG9zdC50cyIsIm5nOi8vbmd4LXRvYXN0ci9vdmVybGF5L292ZXJsYXktcmVmLnRzIiwibmc6Ly9uZ3gtdG9hc3RyL292ZXJsYXkvb3ZlcmxheS1jb250YWluZXIudHMiLCJuZzovL25neC10b2FzdHIvb3ZlcmxheS9vdmVybGF5LnRzIiwibmc6Ly9uZ3gtdG9hc3RyL3RvYXN0ci90b2FzdC1pbmplY3Rvci50cyIsIm5nOi8vbmd4LXRvYXN0ci90b2FzdHIvdG9hc3QtdG9rZW4udHMiLCJuZzovL25neC10b2FzdHIvdG9hc3RyL3RvYXN0ci5zZXJ2aWNlLnRzIiwibmc6Ly9uZ3gtdG9hc3RyL3RvYXN0ci90b2FzdC5jb21wb25lbnQudHMiLCJuZzovL25neC10b2FzdHIvdG9hc3RyL2RlZmF1bHQtY29uZmlnLnRzIiwibmc6Ly9uZ3gtdG9hc3RyL3RvYXN0ci90b2FzdHIubW9kdWxlLnRzIiwibmc6Ly9uZ3gtdG9hc3RyL3RvYXN0ci90b2FzdC1ub2FuaW1hdGlvbi5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBOZ01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0b2FzdENvbnRhaW5lcl0nLFxuICBleHBvcnRBczogJ3RvYXN0Q29udGFpbmVyJyxcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RDb250YWluZXJEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cbiAgZ2V0Q29udGFpbmVyRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtUb2FzdENvbnRhaW5lckRpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtUb2FzdENvbnRhaW5lckRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0Q29udGFpbmVyTW9kdWxlIHt9XG4iLCJpbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJy4uL3BvcnRhbC9wb3J0YWwnO1xuaW1wb3J0IHsgVG9hc3RSZWYgfSBmcm9tICcuL3RvYXN0LWluamVjdG9yJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhbiBpbmRpdmlkdWFsIHRvYXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZGl2aWR1YWxDb25maWcge1xuICAvKipcbiAgICogZGlzYWJsZSBib3RoIHRpbWVPdXQgYW5kIGV4dGVuZGVkVGltZU91dFxuICAgKiBkZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVRpbWVPdXQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiB0b2FzdCB0aW1lIHRvIGxpdmUgaW4gbWlsbGlzZWNvbmRzXG4gICAqIGRlZmF1bHQ6IDUwMDBcbiAgICovXG4gIHRpbWVPdXQ6IG51bWJlcjtcbiAgLyoqXG4gICAqIHRvYXN0IHNob3cgY2xvc2UgYnV0dG9uXG4gICAqIGRlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICBjbG9zZUJ1dHRvbjogYm9vbGVhbjtcbiAgLyoqXG4gICAqIHRpbWUgdG8gY2xvc2UgYWZ0ZXIgYSB1c2VyIGhvdmVycyBvdmVyIHRvYXN0XG4gICAqIGRlZmF1bHQ6IDEwMDBcbiAgICovXG4gIGV4dGVuZGVkVGltZU91dDogbnVtYmVyO1xuICAvKipcbiAgICogc2hvdyB0b2FzdCBwcm9ncmVzcyBiYXJcbiAgICogZGVmYXVsdDogZmFsc2VcbiAgICovXG4gIHByb2dyZXNzQmFyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBjaGFuZ2VzIHRvYXN0IHByb2dyZXNzIGJhciBhbmltYXRpb25cbiAgICogZGVmYXVsdDogZGVjcmVhc2luZ1xuICAgKi9cbiAgcHJvZ3Jlc3NBbmltYXRpb24/OiAnaW5jcmVhc2luZycgfCAnZGVjcmVhc2luZyc7XG4gIC8qKlxuICAgKiByZW5kZXIgaHRtbCBpbiB0b2FzdCBtZXNzYWdlIChwb3NzaWJseSB1bnNhZmUpXG4gICAqIGRlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICBlbmFibGVIdG1sOiBib29sZWFuO1xuICAvKipcbiAgICogY3NzIGNsYXNzIG9uIHRvYXN0IGNvbXBvbmVudFxuICAgKiBkZWZhdWx0OiB0b2FzdFxuICAgKi9cbiAgdG9hc3RDbGFzczogc3RyaW5nO1xuICAvKipcbiAgICogY3NzIGNsYXNzIG9uIHRvYXN0IGNvbnRhaW5lclxuICAgKiBkZWZhdWx0OiB0b2FzdC10b3AtcmlnaHRcbiAgICovXG4gIHBvc2l0aW9uQ2xhc3M6IHN0cmluZztcbiAgLyoqXG4gICAqIGNzcyBjbGFzcyBvbiB0b2FzdCB0aXRsZVxuICAgKiBkZWZhdWx0OiB0b2FzdC10aXRsZVxuICAgKi9cbiAgdGl0bGVDbGFzczogc3RyaW5nO1xuICAvKipcbiAgICogY3NzIGNsYXNzIG9uIHRvYXN0IG1lc3NhZ2VcbiAgICogZGVmYXVsdDogdG9hc3QtbWVzc2FnZVxuICAgKi9cbiAgbWVzc2FnZUNsYXNzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBhbmltYXRpb24gZWFzaW5nIG9uIHRvYXN0XG4gICAqIGRlZmF1bHQ6IGVhc2UtaW5cbiAgICovXG4gIGVhc2luZzogc3RyaW5nO1xuICAvKipcbiAgICogYW5pbWF0aW9uIGVhc2UgdGltZSBvbiB0b2FzdFxuICAgKiBkZWZhdWx0OiAzMDBcbiAgICovXG4gIGVhc2VUaW1lOiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKlxuICAgKiBjbGlja2luZyBvbiB0b2FzdCBkaXNtaXNzZXMgaXRcbiAgICogZGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgdGFwVG9EaXNtaXNzOiBib29sZWFuO1xuICAvKipcbiAgICogQW5ndWxhciB0b2FzdCBjb21wb25lbnQgdG8gYmUgc2hvd25cbiAgICogZGVmYXVsdDogVG9hc3RcbiAgICovXG4gIHRvYXN0Q29tcG9uZW50OiBDb21wb25lbnRUeXBlPGFueT47XG4gIC8qKlxuICAgKiBIZWxwcyBzaG93IHRvYXN0IGZyb20gYSB3ZWJzb2NrZXQgb3IgZnJvbSBldmVudCBvdXRzaWRlIEFuZ3VsYXJcbiAgICogZGVmYXVsdDogZmFsc2VcbiAgICovXG4gIG9uQWN0aXZhdGVUaWNrOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvYXN0ckljb25DbGFzc2VzIHtcbiAgZXJyb3I6IHN0cmluZztcbiAgaW5mbzogc3RyaW5nO1xuICBzdWNjZXNzOiBzdHJpbmc7XG4gIHdhcm5pbmc6IHN0cmluZztcbn1cblxuLyoqXG4gKiBHbG9iYWwgVG9hc3QgY29uZmlndXJhdGlvblxuICogSW5jbHVkZXMgYWxsIEluZGl2aWR1YWxDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxDb25maWcgZXh0ZW5kcyBJbmRpdmlkdWFsQ29uZmlnIHtcbiAgLyoqXG4gICAqIG1heCB0b2FzdHMgb3BlbmVkLiBUb2FzdHMgd2lsbCBiZSBxdWV1ZWRcbiAgICogWmVybyBpcyB1bmxpbWl0ZWRcbiAgICogZGVmYXVsdDogMFxuICAgKi9cbiAgbWF4T3BlbmVkOiBudW1iZXI7XG4gIC8qKlxuICAgKiBkaXNtaXNzIGN1cnJlbnQgdG9hc3Qgd2hlbiBtYXggaXMgcmVhY2hlZFxuICAgKiBkZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgYXV0b0Rpc21pc3M6IGJvb2xlYW47XG4gIGljb25DbGFzc2VzOiBQYXJ0aWFsPFRvYXN0ckljb25DbGFzc2VzPjtcbiAgLyoqXG4gICAqIE5ldyB0b2FzdCBwbGFjZW1lbnRcbiAgICogZGVmYXVsdDogdHJ1ZVxuICAgKi9cbiAgbmV3ZXN0T25Ub3A6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBibG9jayBkdXBsaWNhdGUgbWVzc2FnZXNcbiAgICogZGVmYXVsdDogZmFsc2VcbiAgICovXG4gIHByZXZlbnREdXBsaWNhdGVzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXNldCB0b2FzdCB0aW1lb3V0IHdoZW4gdGhlcmUncyBhIGR1cGxpY2F0ZSAocHJldmVudER1cGxpY2F0ZXMgbmVlZHMgdG8gYmUgc2V0IHRvIHRydWUpXG4gICAqIGRlZmF1bHQ6IGZhbHNlXG4gICAqL1xuICByZXNldFRpbWVvdXRPbkR1cGxpY2F0ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFdmVyeXRoaW5nIGEgdG9hc3QgbmVlZHMgdG8gbGF1bmNoXG4gKi9cbmV4cG9ydCBjbGFzcyBUb2FzdFBhY2thZ2Uge1xuICBwcml2YXRlIF9vblRhcCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBfb25BY3Rpb24gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRvYXN0SWQ6IG51bWJlcixcbiAgICBwdWJsaWMgY29uZmlnOiBJbmRpdmlkdWFsQ29uZmlnLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcgfCBTYWZlSHRtbCB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcHVibGljIHRvYXN0VHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyB0b2FzdFJlZjogVG9hc3RSZWY8YW55PlxuICApIHtcbiAgICB0aGlzLnRvYXN0UmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX29uQWN0aW9uLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLl9vblRhcC5jb21wbGV0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEZpcmVkIG9uIGNsaWNrICovXG4gIHRyaWdnZXJUYXAoKSB7XG4gICAgdGhpcy5fb25UYXAubmV4dCgpO1xuICAgIGlmICh0aGlzLmNvbmZpZy50YXBUb0Rpc21pc3MpIHtcbiAgICAgIHRoaXMuX29uVGFwLmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgb25UYXAoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fb25UYXAuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKiogYXZhaWxhYmxlIGZvciB1c2UgaW4gY3VzdG9tIHRvYXN0ICovXG4gIHRyaWdnZXJBY3Rpb24oYWN0aW9uPzogYW55KSB7XG4gICAgdGhpcy5fb25BY3Rpb24ubmV4dChhY3Rpb24pO1xuICB9XG5cbiAgb25BY3Rpb24oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fb25BY3Rpb24uYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn1cblxuLyogdHNsaW50OmRpc2FibGU6bm8tZW1wdHktaW50ZXJmYWNlICovXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbFRvYXN0ckNvbmZpZyBleHRlbmRzIEdsb2JhbENvbmZpZyB7fVxuZXhwb3J0IGludGVyZmFjZSBJbmRpdmlkdWFsVG9hc3RyQ29uZmlnIGV4dGVuZHMgSW5kaXZpZHVhbENvbmZpZyB7fVxuZXhwb3J0IGludGVyZmFjZSBUb2FzdHJDb25maWcgZXh0ZW5kcyBJbmRpdmlkdWFsQ29uZmlnIHt9XG4iLCJpbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIEluamVjdG9yLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFR5cGU8VD4ge1xuICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cblxuXG4vKipcbiAqIEEgYENvbXBvbmVudFBvcnRhbGAgaXMgYSBwb3J0YWwgdGhhdCBpbnN0YW50aWF0ZXMgc29tZSBDb21wb25lbnQgdXBvbiBhdHRhY2htZW50LlxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50UG9ydGFsPFQ+IHtcbiAgcHJpdmF0ZSBfYXR0YWNoZWRIb3N0PzogQmFzZVBvcnRhbEhvc3Q7XG4gIC8qKiBUaGUgdHlwZSBvZiB0aGUgY29tcG9uZW50IHRoYXQgd2lsbCBiZSBpbnN0YW50aWF0ZWQgZm9yIGF0dGFjaG1lbnQuICovXG4gIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPjtcblxuICAvKipcbiAgICogW09wdGlvbmFsXSBXaGVyZSB0aGUgYXR0YWNoZWQgY29tcG9uZW50IHNob3VsZCBsaXZlIGluIEFuZ3VsYXIncyAqbG9naWNhbCogY29tcG9uZW50IHRyZWUuXG4gICAqIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gd2hlcmUgdGhlIGNvbXBvbmVudCAqcmVuZGVycyosIHdoaWNoIGlzIGRldGVybWluZWQgYnkgdGhlIFBvcnRhbEhvc3QuXG4gICAqIFRoZSBvcmlnaW4gbmVjZXNzYXJ5IHdoZW4gdGhlIGhvc3QgaXMgb3V0c2lkZSBvZiB0aGUgQW5ndWxhciBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAvKiogSW5qZWN0b3IgdXNlZCBmb3IgdGhlIGluc3RhbnRpYXRpb24gb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgaW5qZWN0b3I6IEluamVjdG9yO1xuXG4gIGNvbnN0cnVjdG9yKGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdGhpcy5pbmplY3RvciA9IGluamVjdG9yO1xuICB9XG5cbiAgLyoqIEF0dGFjaCB0aGlzIHBvcnRhbCB0byBhIGhvc3QuICovXG4gIGF0dGFjaChob3N0OiBCYXNlUG9ydGFsSG9zdCwgbmV3ZXN0T25Ub3A6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hdHRhY2hlZEhvc3QgPSBob3N0O1xuICAgIHJldHVybiBob3N0LmF0dGFjaCh0aGlzLCBuZXdlc3RPblRvcCk7XG4gIH1cblxuICAvKiogRGV0YWNoIHRoaXMgcG9ydGFsIGZyb20gaXRzIGhvc3QgKi9cbiAgZGV0YWNoKCkge1xuICAgIGNvbnN0IGhvc3QgPSB0aGlzLl9hdHRhY2hlZEhvc3Q7XG4gICAgaWYgKGhvc3QpIHtcbiAgICAgIHRoaXMuX2F0dGFjaGVkSG9zdCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBob3N0LmRldGFjaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoaXMgcG9ydGFsIGlzIGF0dGFjaGVkIHRvIGEgaG9zdC4gKi9cbiAgZ2V0IGlzQXR0YWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F0dGFjaGVkSG9zdCAhPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIFBvcnRhbEhvc3QgcmVmZXJlbmNlIHdpdGhvdXQgcGVyZm9ybWluZyBgYXR0YWNoKClgLiBUaGlzIGlzIHVzZWQgZGlyZWN0bHkgYnlcbiAgICogdGhlIFBvcnRhbEhvc3Qgd2hlbiBpdCBpcyBwZXJmb3JtaW5nIGFuIGBhdHRhY2goKWAgb3IgYGRldGFjaCgpYC5cbiAgICovXG4gIHNldEF0dGFjaGVkSG9zdChob3N0PzogQmFzZVBvcnRhbEhvc3QpIHtcbiAgICB0aGlzLl9hdHRhY2hlZEhvc3QgPSBob3N0O1xuICB9XG59XG5cbi8qKlxuICogUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBQb3J0YWxIb3N0IHRoYXQgb25seSBkZWFscyB3aXRoIGF0dGFjaGluZyBhXG4gKiBDb21wb25lbnRQb3J0YWxcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VQb3J0YWxIb3N0IHtcbiAgLyoqIFRoZSBwb3J0YWwgY3VycmVudGx5IGF0dGFjaGVkIHRvIHRoZSBob3N0LiAqL1xuICBwcml2YXRlIF9hdHRhY2hlZFBvcnRhbD86IENvbXBvbmVudFBvcnRhbDxhbnk+O1xuXG4gIC8qKiBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBwZXJtYW5lbnRseSBkaXNwb3NlIHRoaXMgaG9zdC4gKi9cbiAgcHJpdmF0ZSBfZGlzcG9zZUZuPzogKCkgPT4gdm9pZDtcblxuICBhdHRhY2gocG9ydGFsOiBDb21wb25lbnRQb3J0YWw8YW55PiwgbmV3ZXN0T25Ub3A6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hdHRhY2hlZFBvcnRhbCA9IHBvcnRhbDtcbiAgICByZXR1cm4gdGhpcy5hdHRhY2hDb21wb25lbnRQb3J0YWwocG9ydGFsLCBuZXdlc3RPblRvcCk7XG4gIH1cblxuICBhYnN0cmFjdCBhdHRhY2hDb21wb25lbnRQb3J0YWw8VD4ocG9ydGFsOiBDb21wb25lbnRQb3J0YWw8VD4sIG5ld2VzdE9uVG9wOiBib29sZWFuKTogQ29tcG9uZW50UmVmPFQ+O1xuXG4gIGRldGFjaCgpIHtcbiAgICBpZiAodGhpcy5fYXR0YWNoZWRQb3J0YWwpIHtcbiAgICAgIHRoaXMuX2F0dGFjaGVkUG9ydGFsLnNldEF0dGFjaGVkSG9zdCgpO1xuICAgIH1cblxuICAgIHRoaXMuX2F0dGFjaGVkUG9ydGFsID0gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLl9kaXNwb3NlRm4pIHtcbiAgICAgIHRoaXMuX2Rpc3Bvc2VGbigpO1xuICAgICAgdGhpcy5fZGlzcG9zZUZuID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHNldERpc3Bvc2VGbihmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX2Rpc3Bvc2VGbiA9IGZuO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlUG9ydGFsSG9zdCwgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnLi9wb3J0YWwnO1xuXG4vKipcbiAqIEEgUG9ydGFsSG9zdCBmb3IgYXR0YWNoaW5nIHBvcnRhbHMgdG8gYW4gYXJiaXRyYXJ5IERPTSBlbGVtZW50IG91dHNpZGUgb2YgdGhlIEFuZ3VsYXJcbiAqIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gKlxuICogVGhpcyBpcyB0aGUgb25seSBwYXJ0IG9mIHRoZSBwb3J0YWwgY29yZSB0aGF0IGRpcmVjdGx5IHRvdWNoZXMgdGhlIERPTS5cbiAqL1xuZXhwb3J0IGNsYXNzIERvbVBvcnRhbEhvc3QgZXh0ZW5kcyBCYXNlUG9ydGFsSG9zdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3REb21FbGVtZW50OiBFbGVtZW50LFxuICAgIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgX2FwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIHRoZSBnaXZlbiBDb21wb25lbnRQb3J0YWwgdG8gRE9NIGVsZW1lbnQgdXNpbmcgdGhlIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5cbiAgICogQHBhcmFtIHBvcnRhbCBQb3J0YWwgdG8gYmUgYXR0YWNoZWRcbiAgICovXG4gIGF0dGFjaENvbXBvbmVudFBvcnRhbDxUPihcbiAgICBwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxUPixcbiAgICBuZXdlc3RPblRvcDogYm9vbGVhbixcbiAgKTogQ29tcG9uZW50UmVmPFQ+IHtcbiAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxuICAgICAgcG9ydGFsLmNvbXBvbmVudCxcbiAgICApO1xuICAgIGxldCBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPjtcblxuICAgIC8vIElmIHRoZSBwb3J0YWwgc3BlY2lmaWVzIGEgVmlld0NvbnRhaW5lclJlZiwgd2Ugd2lsbCB1c2UgdGhhdCBhcyB0aGUgYXR0YWNobWVudCBwb2ludFxuICAgIC8vIGZvciB0aGUgY29tcG9uZW50IChpbiB0ZXJtcyBvZiBBbmd1bGFyJ3MgY29tcG9uZW50IHRyZWUsIG5vdCByZW5kZXJpbmcpLlxuICAgIC8vIFdoZW4gdGhlIFZpZXdDb250YWluZXJSZWYgaXMgbWlzc2luZywgd2UgdXNlIHRoZSBmYWN0b3J5IHRvIGNyZWF0ZSB0aGUgY29tcG9uZW50IGRpcmVjdGx5XG4gICAgLy8gYW5kIHRoZW4gbWFudWFsbHkgYXR0YWNoIHRoZSBDaGFuZ2VEZXRlY3RvciBmb3IgdGhhdCBjb21wb25lbnQgdG8gdGhlIGFwcGxpY2F0aW9uICh3aGljaFxuICAgIC8vIGhhcHBlbnMgYXV0b21hdGljYWxseSB3aGVuIHVzaW5nIGEgVmlld0NvbnRhaW5lcikuXG4gICAgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeS5jcmVhdGUocG9ydGFsLmluamVjdG9yKTtcblxuICAgIC8vIFdoZW4gY3JlYXRpbmcgYSBjb21wb25lbnQgb3V0c2lkZSBvZiBhIFZpZXdDb250YWluZXIsIHdlIG5lZWQgdG8gbWFudWFsbHkgcmVnaXN0ZXJcbiAgICAvLyBpdHMgQ2hhbmdlRGV0ZWN0b3Igd2l0aCB0aGUgYXBwbGljYXRpb24uIFRoaXMgQVBJIGlzIHVuZm9ydHVuYXRlbHkgbm90IHlldCBwdWJsaXNoZWRcbiAgICAvLyBpbiBBbmd1bGFyIGNvcmUuIFRoZSBjaGFuZ2UgZGV0ZWN0b3IgbXVzdCBhbHNvIGJlIGRlcmVnaXN0ZXJlZCB3aGVuIHRoZSBjb21wb25lbnRcbiAgICAvLyBpcyBkZXN0cm95ZWQgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuXG4gICAgdGhpcy5fYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcblxuICAgIHRoaXMuc2V0RGlzcG9zZUZuKCgpID0+IHtcbiAgICAgIHRoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgY29tcG9uZW50IGhhcyBiZWVuIGluc3RhbnRpYXRlZCwgc28gd2UgbW92ZSBpdCB0byB0aGUgbG9jYXRpb24gaW4gdGhlIERPTVxuICAgIC8vIHdoZXJlIHdlIHdhbnQgaXQgdG8gYmUgcmVuZGVyZWQuXG4gICAgaWYgKG5ld2VzdE9uVG9wKSB7XG4gICAgICB0aGlzLl9ob3N0RG9tRWxlbWVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgIHRoaXMuX2dldENvbXBvbmVudFJvb3ROb2RlKGNvbXBvbmVudFJlZiksXG4gICAgICAgIHRoaXMuX2hvc3REb21FbGVtZW50LmZpcnN0Q2hpbGQsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ob3N0RG9tRWxlbWVudC5hcHBlbmRDaGlsZChcbiAgICAgICAgdGhpcy5fZ2V0Q29tcG9uZW50Um9vdE5vZGUoY29tcG9uZW50UmVmKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSByb290IEhUTUxFbGVtZW50IGZvciBhbiBpbnN0YW50aWF0ZWQgY29tcG9uZW50LiAqL1xuICBwcml2YXRlIF9nZXRDb21wb25lbnRSb290Tm9kZShjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+KTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gIH1cbn1cbiIsImltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZVBvcnRhbEhvc3QsIENvbXBvbmVudFBvcnRhbCB9IGZyb20gJy4uL3BvcnRhbC9wb3J0YWwnO1xuXG4vKipcbiAqIFJlZmVyZW5jZSB0byBhbiBvdmVybGF5IHRoYXQgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHRoZSBPdmVybGF5IHNlcnZpY2UuXG4gKiBVc2VkIHRvIG1hbmlwdWxhdGUgb3IgZGlzcG9zZSBvZiBzYWlkIG92ZXJsYXkuXG4gKi9cbmV4cG9ydCBjbGFzcyBPdmVybGF5UmVmIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcG9ydGFsSG9zdDogQmFzZVBvcnRhbEhvc3QpIHt9XG5cbiAgYXR0YWNoKFxuICAgIHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPGFueT4sXG4gICAgbmV3ZXN0T25Ub3A6IGJvb2xlYW4gPSB0cnVlLFxuICApOiBDb21wb25lbnRSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcnRhbEhvc3QuYXR0YWNoKHBvcnRhbCwgbmV3ZXN0T25Ub3ApO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGFjaGVzIGFuIG92ZXJsYXkgZnJvbSBhIHBvcnRhbC5cbiAgICogQHJldHVybnMgUmVzb2x2ZXMgd2hlbiB0aGUgb3ZlcmxheSBoYXMgYmVlbiBkZXRhY2hlZC5cbiAgICovXG4gIGRldGFjaCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcG9ydGFsSG9zdC5kZXRhY2goKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBUaGUgT3ZlcmxheUNvbnRhaW5lciBpcyB0aGUgY29udGFpbmVyIGluIHdoaWNoIGFsbCBvdmVybGF5cyB3aWxsIGxvYWQuXG4gKiBJdCBzaG91bGQgYmUgcHJvdmlkZWQgaW4gdGhlIHJvb3QgY29tcG9uZW50IHRvIGVuc3VyZSBpdCBpcyBwcm9wZXJseSBzaGFyZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBPdmVybGF5Q29udGFpbmVyIHtcbiAgcHJpdmF0ZSBfY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG92ZXJsYXkgY29udGFpbmVyIGVsZW1lbnQuICBJdCB3aWxsIGxhemlseVxuICAgKiBjcmVhdGUgdGhlIGVsZW1lbnQgdGhlIGZpcnN0IHRpbWUgIGl0IGlzIGNhbGxlZCB0byBmYWNpbGl0YXRlIHVzaW5nXG4gICAqIHRoZSBjb250YWluZXIgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRzLlxuICAgKiBAcmV0dXJucyB0aGUgY29udGFpbmVyIGVsZW1lbnRcbiAgICovXG4gIGdldENvbnRhaW5lckVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIGlmICghdGhpcy5fY29udGFpbmVyRWxlbWVudCkgeyB0aGlzLl9jcmVhdGVDb250YWluZXIoKTsgfVxuICAgIHJldHVybiB0aGlzLl9jb250YWluZXJFbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgb3ZlcmxheSBjb250YWluZXIgZWxlbWVudCwgd2hpY2ggaXMgc2ltcGx5IGEgZGl2XG4gICAqIHdpdGggdGhlICdjZGstb3ZlcmxheS1jb250YWluZXInIGNsYXNzIG9uIHRoZSBkb2N1bWVudCBib2R5LlxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlQ29udGFpbmVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdvdmVybGF5LWNvbnRhaW5lcicpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICB0aGlzLl9jb250YWluZXJFbGVtZW50ID0gY29udGFpbmVyO1xuICB9XG59XG4iLCJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21Qb3J0YWxIb3N0IH0gZnJvbSAnLi4vcG9ydGFsL2RvbS1wb3J0YWwtaG9zdCc7XG5pbXBvcnQgeyBPdmVybGF5UmVmIH0gZnJvbSAnLi9vdmVybGF5LXJlZic7XG5cbmltcG9ydCB7IFRvYXN0Q29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vdG9hc3RyL3RvYXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyIH0gZnJvbSAnLi9vdmVybGF5LWNvbnRhaW5lcic7XG5cbi8qKlxuICogU2VydmljZSB0byBjcmVhdGUgT3ZlcmxheXMuIE92ZXJsYXlzIGFyZSBkeW5hbWljYWxseSBhZGRlZCBwaWVjZXMgb2YgZmxvYXRpbmcgVUksIG1lYW50IHRvIGJlXG4gKiB1c2VkIGFzIGEgbG93LWxldmVsIGJ1aWxkaW5nIGJ1aWxkaW5nIGJsb2NrIGZvciBvdGhlciBjb21wb25lbnRzLiBEaWFsb2dzLCB0b29sdGlwcywgbWVudXMsXG4gKiBzZWxlY3RzLCBldGMuIGNhbiBhbGwgYmUgYnVpbHQgdXNpbmcgb3ZlcmxheXMuIFRoZSBzZXJ2aWNlIHNob3VsZCBwcmltYXJpbHkgYmUgdXNlZCBieSBhdXRob3JzXG4gKiBvZiByZS11c2FibGUgY29tcG9uZW50cyByYXRoZXIgdGhhbiBkZXZlbG9wZXJzIGJ1aWxkaW5nIGVuZC11c2VyIGFwcGxpY2F0aW9ucy5cbiAqXG4gKiBBbiBvdmVybGF5ICppcyogYSBQb3J0YWxIb3N0LCBzbyBhbnkga2luZCBvZiBQb3J0YWwgY2FuIGJlIGxvYWRlZCBpbnRvIG9uZS5cbiAqL1xuIEBJbmplY3RhYmxlKClcbiAgZXhwb3J0IGNsYXNzIE92ZXJsYXkge1xuICAgIC8vIE5hbWVzcGFjZSBwYW5lcyBieSBvdmVybGF5IGNvbnRhaW5lclxuICAgIHByaXZhdGUgX3BhbmVFbGVtZW50czogTWFwPFRvYXN0Q29udGFpbmVyRGlyZWN0aXZlLCB7c3RyaW5nPzogSFRNTEVsZW1lbnR9PiA9IG5ldyBNYXAoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX292ZXJsYXlDb250YWluZXI6IE92ZXJsYXlDb250YWluZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfYXBwUmVmOiBBcHBsaWNhdGlvblJlZikge31cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gb3ZlcmxheS5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGNyZWF0ZWQgb3ZlcmxheS5cbiAgICovXG4gIGNyZWF0ZShwb3NpdGlvbkNsYXNzPzogc3RyaW5nLCBvdmVybGF5Q29udGFpbmVyPzogVG9hc3RDb250YWluZXJEaXJlY3RpdmUpOiBPdmVybGF5UmVmIHtcbiAgICAvLyBnZXQgZXhpc3RpbmcgcGFuZSBpZiBwb3NzaWJsZVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVPdmVybGF5UmVmKHRoaXMuZ2V0UGFuZUVsZW1lbnQocG9zaXRpb25DbGFzcywgb3ZlcmxheUNvbnRhaW5lcikpO1xuICB9XG5cbiAgZ2V0UGFuZUVsZW1lbnQocG9zaXRpb25DbGFzczogc3RyaW5nID0gJycsIG92ZXJsYXlDb250YWluZXI/OiBUb2FzdENvbnRhaW5lckRpcmVjdGl2ZSk6IEhUTUxFbGVtZW50IHtcbiAgICBpZiAoIXRoaXMuX3BhbmVFbGVtZW50cy5nZXQob3ZlcmxheUNvbnRhaW5lcikpIHtcbiAgICAgIHRoaXMuX3BhbmVFbGVtZW50cy5zZXQob3ZlcmxheUNvbnRhaW5lciwge30pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcGFuZUVsZW1lbnRzLmdldChvdmVybGF5Q29udGFpbmVyKVtwb3NpdGlvbkNsYXNzXSkge1xuICAgICAgdGhpcy5fcGFuZUVsZW1lbnRzLmdldChvdmVybGF5Q29udGFpbmVyKVtwb3NpdGlvbkNsYXNzXSA9IHRoaXMuX2NyZWF0ZVBhbmVFbGVtZW50KHBvc2l0aW9uQ2xhc3MsIG92ZXJsYXlDb250YWluZXIpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wYW5lRWxlbWVudHMuZ2V0KG92ZXJsYXlDb250YWluZXIpW3Bvc2l0aW9uQ2xhc3NdO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIERPTSBlbGVtZW50IGZvciBhbiBvdmVybGF5IGFuZCBhcHBlbmRzIGl0IHRvIHRoZSBvdmVybGF5IGNvbnRhaW5lci5cbiAgICogQHJldHVybnMgTmV3bHktY3JlYXRlZCBwYW5lIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZVBhbmVFbGVtZW50KHBvc2l0aW9uQ2xhc3M6IHN0cmluZywgb3ZlcmxheUNvbnRhaW5lcj86IFRvYXN0Q29udGFpbmVyRGlyZWN0aXZlKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IHBhbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBwYW5lLmlkID0gJ3RvYXN0LWNvbnRhaW5lcic7XG4gICAgcGFuZS5jbGFzc0xpc3QuYWRkKHBvc2l0aW9uQ2xhc3MpO1xuICAgIHBhbmUuY2xhc3NMaXN0LmFkZCgndG9hc3QtY29udGFpbmVyJyk7XG5cbiAgICBpZiAoIW92ZXJsYXlDb250YWluZXIpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpLmFwcGVuZENoaWxkKHBhbmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKS5hcHBlbmRDaGlsZChwYW5lKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhbmU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRG9tUG9ydGFsSG9zdCBpbnRvIHdoaWNoIHRoZSBvdmVybGF5IGNvbnRlbnQgY2FuIGJlIGxvYWRlZC5cbiAgICogQHBhcmFtIHBhbmUgVGhlIERPTSBlbGVtZW50IHRvIHR1cm4gaW50byBhIHBvcnRhbCBob3N0LlxuICAgKiBAcmV0dXJucyBBIHBvcnRhbCBob3N0IGZvciB0aGUgZ2l2ZW4gRE9NIGVsZW1lbnQuXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVQb3J0YWxIb3N0KHBhbmU6IEhUTUxFbGVtZW50KTogRG9tUG9ydGFsSG9zdCB7XG4gICAgcmV0dXJuIG5ldyBEb21Qb3J0YWxIb3N0KHBhbmUsIHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgdGhpcy5fYXBwUmVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIE92ZXJsYXlSZWYgZm9yIGFuIG92ZXJsYXkgaW4gdGhlIGdpdmVuIERPTSBlbGVtZW50LlxuICAgKiBAcGFyYW0gcGFuZSBET00gZWxlbWVudCBmb3IgdGhlIG92ZXJsYXlcbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXlSZWYocGFuZTogSFRNTEVsZW1lbnQpOiBPdmVybGF5UmVmIHtcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlSZWYodGhpcy5fY3JlYXRlUG9ydGFsSG9zdChwYW5lKSk7XG4gIH1cbn1cblxuXG4vKiogUHJvdmlkZXJzIGZvciBPdmVybGF5IGFuZCBpdHMgcmVsYXRlZCBpbmplY3RhYmxlcy4gKi9cbmV4cG9ydCBjb25zdCBPVkVSTEFZX1BST1ZJREVSUyA9IFtcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbnRhaW5lcixcbl07XG4iLCJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJy4uL292ZXJsYXkvb3ZlcmxheS1yZWYnO1xuaW1wb3J0IHsgVG9hc3RQYWNrYWdlIH0gZnJvbSAnLi90b2FzdHItY29uZmlnJztcblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gYSB0b2FzdCBvcGVuZWQgdmlhIHRoZSBUb2FzdHIgc2VydmljZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFRvYXN0UmVmPFQ+IHtcbiAgLyoqIFRoZSBpbnN0YW5jZSBvZiBjb21wb25lbnQgb3BlbmVkIGludG8gdGhlIHRvYXN0LiAqL1xuICBjb21wb25lbnRJbnN0YW5jZTogVDtcblxuICAvKiogU3ViamVjdCBmb3Igbm90aWZ5aW5nIHRoZSB1c2VyIHRoYXQgdGhlIHRvYXN0IGhhcyBmaW5pc2hlZCBjbG9zaW5nLiAqL1xuICBwcml2YXRlIF9hZnRlckNsb3NlZCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgLyoqIHRyaWdnZXJlZCB3aGVuIHRvYXN0IGlzIGFjdGl2YXRlZCAqL1xuICBwcml2YXRlIF9hY3RpdmF0ZSA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgLyoqIG5vdGlmaWVzIHRoZSB0b2FzdCB0aGF0IGl0IHNob3VsZCBjbG9zZSBiZWZvcmUgdGhlIHRpbWVvdXQgKi9cbiAgcHJpdmF0ZSBfbWFudWFsQ2xvc2UgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIC8qKiBub3RpZmllcyB0aGUgdG9hc3QgdGhhdCBpdCBzaG91bGQgcmVzZXQgdGhlIHRpbWVvdXRzICovXG4gIHByaXZhdGUgX3Jlc2V0VGltZW91dCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmKSB7fVxuXG4gIG1hbnVhbENsb3NlKCkge1xuICAgIHRoaXMuX21hbnVhbENsb3NlLm5leHQoKTtcbiAgICB0aGlzLl9tYW51YWxDbG9zZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbWFudWFsQ2xvc2VkKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX21hbnVhbENsb3NlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgdGltZW91dFJlc2V0KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc2V0VGltZW91dC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgdG9hc3QuXG4gICAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgIHRoaXMuX2FmdGVyQ2xvc2VkLm5leHQoKTtcbiAgICB0aGlzLl9tYW51YWxDbG9zZS5uZXh0KCk7XG4gICAgdGhpcy5fYWZ0ZXJDbG9zZWQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9tYW51YWxDbG9zZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2FjdGl2YXRlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcmVzZXRUaW1lb3V0LmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogR2V0cyBhbiBvYnNlcnZhYmxlIHRoYXQgaXMgbm90aWZpZWQgd2hlbiB0aGUgdG9hc3QgaXMgZmluaXNoZWQgY2xvc2luZy4gKi9cbiAgYWZ0ZXJDbG9zZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWZ0ZXJDbG9zZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBpc0luYWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmF0ZS5pc1N0b3BwZWQ7XG4gIH1cblxuICBhY3RpdmF0ZSgpIHtcbiAgICB0aGlzLl9hY3RpdmF0ZS5uZXh0KCk7XG4gICAgdGhpcy5fYWN0aXZhdGUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCBpcyBub3RpZmllZCB3aGVuIHRoZSB0b2FzdCBoYXMgc3RhcnRlZCBvcGVuaW5nLiAqL1xuICBhZnRlckFjdGl2YXRlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqIFJlc2V0IHRoZSB0b2FzdCB0aW1vdXRzICovXG4gIHJlc2V0VGltZW91dCgpIHtcbiAgICB0aGlzLl9yZXNldFRpbWVvdXQubmV4dCgpO1xuICB9XG59XG5cbi8qKiBDdXN0b20gaW5qZWN0b3IgdHlwZSBzcGVjaWZpY2FsbHkgZm9yIGluc3RhbnRpYXRpbmcgY29tcG9uZW50cyB3aXRoIGEgdG9hc3QuICovXG5leHBvcnQgY2xhc3MgVG9hc3RJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfdG9hc3RQYWNrYWdlOiBUb2FzdFBhY2thZ2UsXG4gICAgcHJpdmF0ZSBfcGFyZW50SW5qZWN0b3I6IEluamVjdG9yXG4gICkge31cblxuICAvKiB0c2xpbnQ6ZGlzYWJsZTpkZXByZWNhdGlvbiAqL1xuICBnZXQodG9rZW46IGFueSwgbm90Rm91bmRWYWx1ZT86IGFueSk6IGFueSB7XG4gICAgaWYgKHRva2VuID09PSBUb2FzdFBhY2thZ2UgJiYgdGhpcy5fdG9hc3RQYWNrYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdG9hc3RQYWNrYWdlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcGFyZW50SW5qZWN0b3IuZ2V0KHRva2VuLCBub3RGb3VuZFZhbHVlKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi90b2FzdHItY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBUb2FzdFRva2VuIHtcbiAgY29uZmlnOiBHbG9iYWxDb25maWc7XG4gIGRlZmF1bHRzOiBhbnk7XG59XG5cbmV4cG9ydCBjb25zdCBUT0FTVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48VG9hc3RUb2tlbj4oJ1RvYXN0Q29uZmlnJyk7XG4iLCJpbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIE5nWm9uZSxcbiAgU2VjdXJpdHlDb250ZXh0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uL292ZXJsYXkvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICcuLi9wb3J0YWwvcG9ydGFsJztcbmltcG9ydCB7IFRvYXN0SW5qZWN0b3IsIFRvYXN0UmVmIH0gZnJvbSAnLi90b2FzdC1pbmplY3Rvcic7XG5pbXBvcnQgeyBUb2FzdFRva2VuLCBUT0FTVF9DT05GSUcgfSBmcm9tICcuL3RvYXN0LXRva2VuJztcbmltcG9ydCB7IFRvYXN0Q29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi90b2FzdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgR2xvYmFsQ29uZmlnLCBJbmRpdmlkdWFsQ29uZmlnLCBUb2FzdFBhY2thZ2UgfSBmcm9tICcuL3RvYXN0ci1jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2ZVRvYXN0PEM+IHtcbiAgLyoqIFlvdXIgVG9hc3QgSUQuIFVzZSB0aGlzIHRvIGNsb3NlIGl0IGluZGl2aWR1YWxseSAqL1xuICB0b2FzdElkOiBudW1iZXI7XG4gIC8qKiB0aGUgbWVzc2FnZSBvZiB5b3VyIHRvYXN0LiBTdG9yZWQgdG8gcHJldmVudCBkdXBsaWNhdGVzICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIGEgcmVmZXJlbmNlIHRvIHRoZSBjb21wb25lbnQgc2VlIHBvcnRhbC50cyAqL1xuICBwb3J0YWw6IENvbXBvbmVudFJlZjxDPjtcbiAgLyoqIGEgcmVmZXJlbmNlIHRvIHlvdXIgdG9hc3QgKi9cbiAgdG9hc3RSZWY6IFRvYXN0UmVmPEM+O1xuICAvKiogdHJpZ2dlcmVkIHdoZW4gdG9hc3QgaXMgYWN0aXZlICovXG4gIG9uU2hvd246IE9ic2VydmFibGU8YW55PjtcbiAgLyoqIHRyaWdnZXJlZCB3aGVuIHRvYXN0IGlzIGRlc3Ryb3llZCAqL1xuICBvbkhpZGRlbjogT2JzZXJ2YWJsZTxhbnk+O1xuICAvKiogdHJpZ2dlcmVkIG9uIHRvYXN0IGNsaWNrICovXG4gIG9uVGFwOiBPYnNlcnZhYmxlPGFueT47XG4gIC8qKiBhdmFpbGFibGUgZm9yIHlvdXIgdXNlIGluIGN1c3RvbSB0b2FzdCAqL1xuICBvbkFjdGlvbjogT2JzZXJ2YWJsZTxhbnk+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVG9hc3RyU2VydmljZSB7XG4gIHRvYXN0ckNvbmZpZzogR2xvYmFsQ29uZmlnO1xuICBjdXJyZW50bHlBY3RpdmUgPSAwO1xuICB0b2FzdHM6IEFjdGl2ZVRvYXN0PGFueT5bXSA9IFtdO1xuICBvdmVybGF5Q29udGFpbmVyOiBUb2FzdENvbnRhaW5lckRpcmVjdGl2ZTtcbiAgcHJldmlvdXNUb2FzdE1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpbmRleCA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUT0FTVF9DT05GSUcpIHRva2VuOiBUb2FzdFRva2VuLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXG4gICkge1xuICAgIGNvbnN0IGRlZmF1bHRDb25maWcgPSBuZXcgdG9rZW4uZGVmYXVsdHMoKTtcbiAgICB0aGlzLnRvYXN0ckNvbmZpZyA9IHsgLi4uZGVmYXVsdENvbmZpZywgLi4udG9rZW4uY29uZmlnIH07XG4gICAgdGhpcy50b2FzdHJDb25maWcuaWNvbkNsYXNzZXMgPSB7XG4gICAgICAuLi5kZWZhdWx0Q29uZmlnLmljb25DbGFzc2VzLFxuICAgICAgLi4udG9rZW4uY29uZmlnLmljb25DbGFzc2VzXG4gICAgfTtcbiAgfVxuICAvKiogc2hvdyB0b2FzdCAqL1xuICBzaG93KFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcsXG4gICAgdGl0bGU/OiBzdHJpbmcsXG4gICAgb3ZlcnJpZGU6IFBhcnRpYWw8SW5kaXZpZHVhbENvbmZpZz4gPSB7fSxcbiAgICB0eXBlID0gJydcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZUJ1aWxkTm90aWZpY2F0aW9uKFxuICAgICAgdHlwZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICB0aXRsZSxcbiAgICAgIHRoaXMuYXBwbHlDb25maWcob3ZlcnJpZGUpXG4gICAgKTtcbiAgfVxuICAvKiogc2hvdyBzdWNjZXNzZnVsIHRvYXN0ICovXG4gIHN1Y2Nlc3MoXG4gICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICB0aXRsZT86IHN0cmluZyxcbiAgICBvdmVycmlkZTogUGFydGlhbDxJbmRpdmlkdWFsQ29uZmlnPiA9IHt9XG4gICkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnRvYXN0ckNvbmZpZy5pY29uQ2xhc3Nlcy5zdWNjZXNzIHx8ICcnO1xuICAgIHJldHVybiB0aGlzLl9wcmVCdWlsZE5vdGlmaWNhdGlvbihcbiAgICAgIHR5cGUsXG4gICAgICBtZXNzYWdlLFxuICAgICAgdGl0bGUsXG4gICAgICB0aGlzLmFwcGx5Q29uZmlnKG92ZXJyaWRlKVxuICAgICk7XG4gIH1cbiAgLyoqIHNob3cgZXJyb3IgdG9hc3QgKi9cbiAgZXJyb3IoXG4gICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICB0aXRsZT86IHN0cmluZyxcbiAgICBvdmVycmlkZTogUGFydGlhbDxJbmRpdmlkdWFsQ29uZmlnPiA9IHt9XG4gICkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnRvYXN0ckNvbmZpZy5pY29uQ2xhc3Nlcy5lcnJvciB8fCAnJztcbiAgICByZXR1cm4gdGhpcy5fcHJlQnVpbGROb3RpZmljYXRpb24oXG4gICAgICB0eXBlLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHRpdGxlLFxuICAgICAgdGhpcy5hcHBseUNvbmZpZyhvdmVycmlkZSlcbiAgICApO1xuICB9XG4gIC8qKiBzaG93IGluZm8gdG9hc3QgKi9cbiAgaW5mbyhcbiAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgIHRpdGxlPzogc3RyaW5nLFxuICAgIG92ZXJyaWRlOiBQYXJ0aWFsPEluZGl2aWR1YWxDb25maWc+ID0ge31cbiAgKSB7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMudG9hc3RyQ29uZmlnLmljb25DbGFzc2VzLmluZm8gfHwgJyc7XG4gICAgcmV0dXJuIHRoaXMuX3ByZUJ1aWxkTm90aWZpY2F0aW9uKFxuICAgICAgdHlwZSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICB0aXRsZSxcbiAgICAgIHRoaXMuYXBwbHlDb25maWcob3ZlcnJpZGUpXG4gICAgKTtcbiAgfVxuICAvKiogc2hvdyB3YXJuaW5nIHRvYXN0ICovXG4gIHdhcm5pbmcoXG4gICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICB0aXRsZT86IHN0cmluZyxcbiAgICBvdmVycmlkZTogUGFydGlhbDxJbmRpdmlkdWFsQ29uZmlnPiA9IHt9XG4gICkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnRvYXN0ckNvbmZpZy5pY29uQ2xhc3Nlcy53YXJuaW5nIHx8ICcnO1xuICAgIHJldHVybiB0aGlzLl9wcmVCdWlsZE5vdGlmaWNhdGlvbihcbiAgICAgIHR5cGUsXG4gICAgICBtZXNzYWdlLFxuICAgICAgdGl0bGUsXG4gICAgICB0aGlzLmFwcGx5Q29uZmlnKG92ZXJyaWRlKVxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgb3IgYSBzaW5nbGUgdG9hc3QgYnkgaWRcbiAgICovXG4gIGNsZWFyKHRvYXN0SWQ/OiBudW1iZXIpIHtcbiAgICAvLyBDYWxsIGV2ZXJ5IHRvYXN0UmVmIG1hbnVhbENsb3NlIGZ1bmN0aW9uXG4gICAgZm9yIChjb25zdCB0b2FzdCBvZiB0aGlzLnRvYXN0cykge1xuICAgICAgaWYgKHRvYXN0SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodG9hc3QudG9hc3RJZCA9PT0gdG9hc3RJZCkge1xuICAgICAgICAgIHRvYXN0LnRvYXN0UmVmLm1hbnVhbENsb3NlKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2FzdC50b2FzdFJlZi5tYW51YWxDbG9zZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogUmVtb3ZlIGFuZCBkZXN0cm95IGEgc2luZ2xlIHRvYXN0IGJ5IGlkXG4gICAqL1xuICByZW1vdmUodG9hc3RJZDogbnVtYmVyKSB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLl9maW5kVG9hc3QodG9hc3RJZCk7XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3VuZC5hY3RpdmVUb2FzdC50b2FzdFJlZi5jbG9zZSgpO1xuICAgIHRoaXMudG9hc3RzLnNwbGljZShmb3VuZC5pbmRleCwgMSk7XG4gICAgdGhpcy5jdXJyZW50bHlBY3RpdmUgPSB0aGlzLmN1cnJlbnRseUFjdGl2ZSAtIDE7XG4gICAgaWYgKCF0aGlzLnRvYXN0ckNvbmZpZy5tYXhPcGVuZWQgfHwgIXRoaXMudG9hc3RzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLmN1cnJlbnRseUFjdGl2ZSA8IHRoaXMudG9hc3RyQ29uZmlnLm1heE9wZW5lZCAmJlxuICAgICAgdGhpcy50b2FzdHNbdGhpcy5jdXJyZW50bHlBY3RpdmVdXG4gICAgKSB7XG4gICAgICBjb25zdCBwID0gdGhpcy50b2FzdHNbdGhpcy5jdXJyZW50bHlBY3RpdmVdLnRvYXN0UmVmO1xuICAgICAgaWYgKCFwLmlzSW5hY3RpdmUoKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRseUFjdGl2ZSA9IHRoaXMuY3VycmVudGx5QWN0aXZlICsgMTtcbiAgICAgICAgcC5hY3RpdmF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRvYXN0IG1lc3NhZ2UgaXMgYWxyZWFkeSBzaG93blxuICAgKi9cbiAgaXNEdXBsaWNhdGUobWVzc2FnZTogc3RyaW5nLCByZXNldE9uRHVwbGljYXRlOiBib29sZWFuKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRvYXN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMudG9hc3RzW2ldLm1lc3NhZ2UgPT09IG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlc2V0T25EdXBsaWNhdGUgJiZcbiAgICAgICAgICB0aGlzLnRvYXN0c1tpXS50b2FzdFJlZi5jb21wb25lbnRJbnN0YW5jZS5yZXNldFRpbWVvdXRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy50b2FzdHNbaV0udG9hc3RSZWYucmVzZXRUaW1lb3V0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBjcmVhdGUgYSBjbG9uZSBvZiBnbG9iYWwgY29uZmlnIGFuZCBhcHBseSBpbmRpdmlkdWFsIHNldHRpbmdzICovXG4gIHByaXZhdGUgYXBwbHlDb25maWcob3ZlcnJpZGU6IFBhcnRpYWw8SW5kaXZpZHVhbENvbmZpZz4gPSB7fSk6IEdsb2JhbENvbmZpZyB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy50b2FzdHJDb25maWcsIC4uLm92ZXJyaWRlIH07XG4gIH1cblxuICAvKipcbiAgICogRmluZCB0b2FzdCBvYmplY3QgYnkgaWRcbiAgICovXG4gIHByaXZhdGUgX2ZpbmRUb2FzdChcbiAgICB0b2FzdElkOiBudW1iZXJcbiAgKTogeyBpbmRleDogbnVtYmVyOyBhY3RpdmVUb2FzdDogQWN0aXZlVG9hc3Q8YW55PiB9IHwgbnVsbCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRvYXN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMudG9hc3RzW2ldLnRvYXN0SWQgPT09IHRvYXN0SWQpIHtcbiAgICAgICAgcmV0dXJuIHsgaW5kZXg6IGksIGFjdGl2ZVRvYXN0OiB0aGlzLnRvYXN0c1tpXSB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBuZWVkIHRvIHJ1biBpbnNpZGUgYW5ndWxhcidzIHpvbmUgdGhlbiBidWlsZHMgdGhlIHRvYXN0XG4gICAqL1xuICBwcml2YXRlIF9wcmVCdWlsZE5vdGlmaWNhdGlvbihcbiAgICB0b2FzdFR5cGU6IHN0cmluZyxcbiAgICBtZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBjb25maWc6IEdsb2JhbENvbmZpZ1xuICApOiBBY3RpdmVUb2FzdDxhbnk+IHwgbnVsbCB7XG4gICAgaWYgKGNvbmZpZy5vbkFjdGl2YXRlVGljaykge1xuICAgICAgcmV0dXJuIHRoaXMubmdab25lLnJ1bigoKSA9PlxuICAgICAgICB0aGlzLl9idWlsZE5vdGlmaWNhdGlvbih0b2FzdFR5cGUsIG1lc3NhZ2UsIHRpdGxlLCBjb25maWcpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYnVpbGROb3RpZmljYXRpb24odG9hc3RUeXBlLCBtZXNzYWdlLCB0aXRsZSwgY29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCBhdHRhY2hlcyB0b2FzdCBkYXRhIHRvIGNvbXBvbmVudFxuICAgKiByZXR1cm5zIG51bGwgaWYgdG9hc3QgaXMgZHVwbGljYXRlIGFuZCBwcmV2ZW50RHVwbGljYXRlcyA9PSBUcnVlXG4gICAqL1xuICBwcml2YXRlIF9idWlsZE5vdGlmaWNhdGlvbihcbiAgICB0b2FzdFR5cGU6IHN0cmluZyxcbiAgICBtZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBjb25maWc6IEdsb2JhbENvbmZpZ1xuICApOiBBY3RpdmVUb2FzdDxhbnk+IHwgbnVsbCB7XG4gICAgaWYgKCFjb25maWcudG9hc3RDb21wb25lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndG9hc3RDb21wb25lbnQgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgLy8gbWF4IG9wZW5lZCBhbmQgYXV0byBkaXNtaXNzID0gdHJ1ZVxuICAgIGlmIChcbiAgICAgIG1lc3NhZ2UgJiZcbiAgICAgIHRoaXMudG9hc3RyQ29uZmlnLnByZXZlbnREdXBsaWNhdGVzICYmXG4gICAgICB0aGlzLmlzRHVwbGljYXRlKG1lc3NhZ2UsIHRoaXMudG9hc3RyQ29uZmlnLnJlc2V0VGltZW91dE9uRHVwbGljYXRlKVxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNUb2FzdE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIGxldCBrZWVwSW5hY3RpdmUgPSBmYWxzZTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnRvYXN0ckNvbmZpZy5tYXhPcGVuZWQgJiZcbiAgICAgIHRoaXMuY3VycmVudGx5QWN0aXZlID49IHRoaXMudG9hc3RyQ29uZmlnLm1heE9wZW5lZFxuICAgICkge1xuICAgICAga2VlcEluYWN0aXZlID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLnRvYXN0ckNvbmZpZy5hdXRvRGlzbWlzcykge1xuICAgICAgICB0aGlzLmNsZWFyKHRoaXMudG9hc3RzWzBdLnRvYXN0SWQpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgIGNvbmZpZy5wb3NpdGlvbkNsYXNzLFxuICAgICAgdGhpcy5vdmVybGF5Q29udGFpbmVyXG4gICAgKTtcbiAgICB0aGlzLmluZGV4ID0gdGhpcy5pbmRleCArIDE7XG4gICAgbGV0IHNhbml0aXplZE1lc3NhZ2U6IHN0cmluZyB8IFNhZmVIdG1sIHwgdW5kZWZpbmVkIHwgbnVsbCA9IG1lc3NhZ2U7XG4gICAgaWYgKG1lc3NhZ2UgJiYgY29uZmlnLmVuYWJsZUh0bWwpIHtcbiAgICAgIHNhbml0aXplZE1lc3NhZ2UgPSB0aGlzLnNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgbWVzc2FnZSk7XG4gICAgfVxuICAgIGNvbnN0IHRvYXN0UmVmID0gbmV3IFRvYXN0UmVmKG92ZXJsYXlSZWYpO1xuICAgIGNvbnN0IHRvYXN0UGFja2FnZSA9IG5ldyBUb2FzdFBhY2thZ2UoXG4gICAgICB0aGlzLmluZGV4LFxuICAgICAgY29uZmlnLFxuICAgICAgc2FuaXRpemVkTWVzc2FnZSxcbiAgICAgIHRpdGxlLFxuICAgICAgdG9hc3RUeXBlLFxuICAgICAgdG9hc3RSZWZcbiAgICApO1xuICAgIGNvbnN0IHRvYXN0SW5qZWN0b3IgPSBuZXcgVG9hc3RJbmplY3Rvcih0b2FzdFBhY2thZ2UsIHRoaXMuX2luamVjdG9yKTtcbiAgICBjb25zdCBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbmZpZy50b2FzdENvbXBvbmVudCwgdG9hc3RJbmplY3Rvcik7XG4gICAgY29uc3QgcG9ydGFsID0gb3ZlcmxheVJlZi5hdHRhY2goY29tcG9uZW50LCB0aGlzLnRvYXN0ckNvbmZpZy5uZXdlc3RPblRvcCk7XG4gICAgdG9hc3RSZWYuY29tcG9uZW50SW5zdGFuY2UgPSAoPGFueT5wb3J0YWwpLl9jb21wb25lbnQ7XG4gICAgY29uc3QgaW5zOiBBY3RpdmVUb2FzdDxhbnk+ID0ge1xuICAgICAgdG9hc3RJZDogdGhpcy5pbmRleCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgJycsXG4gICAgICB0b2FzdFJlZixcbiAgICAgIG9uU2hvd246IHRvYXN0UmVmLmFmdGVyQWN0aXZhdGUoKSxcbiAgICAgIG9uSGlkZGVuOiB0b2FzdFJlZi5hZnRlckNsb3NlZCgpLFxuICAgICAgb25UYXA6IHRvYXN0UGFja2FnZS5vblRhcCgpLFxuICAgICAgb25BY3Rpb246IHRvYXN0UGFja2FnZS5vbkFjdGlvbigpLFxuICAgICAgcG9ydGFsXG4gICAgfTtcblxuICAgIGlmICgha2VlcEluYWN0aXZlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaW5zLnRvYXN0UmVmLmFjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuY3VycmVudGx5QWN0aXZlID0gdGhpcy5jdXJyZW50bHlBY3RpdmUgKyAxO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy50b2FzdHMucHVzaChpbnMpO1xuICAgIHJldHVybiBpbnM7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlclxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmRpdmlkdWFsQ29uZmlnLCBUb2FzdFBhY2thZ2UgfSBmcm9tICcuL3RvYXN0ci1jb25maWcnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJy4vdG9hc3RyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbdG9hc3QtY29tcG9uZW50XScsXG4gIHRlbXBsYXRlOiBgXG4gIDxidXR0b24gKm5nSWY9XCJvcHRpb25zLmNsb3NlQnV0dG9uXCIgKGNsaWNrKT1cInJlbW92ZSgpXCIgY2xhc3M9XCJ0b2FzdC1jbG9zZS1idXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGRpdiAqbmdJZj1cInRpdGxlXCIgW2NsYXNzXT1cIm9wdGlvbnMudGl0bGVDbGFzc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwidGl0bGVcIj5cbiAgICB7eyB0aXRsZSB9fVxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIm1lc3NhZ2UgJiYgb3B0aW9ucy5lbmFibGVIdG1sXCIgcm9sZT1cImFsZXJ0ZGlhbG9nXCIgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICBbY2xhc3NdPVwib3B0aW9ucy5tZXNzYWdlQ2xhc3NcIiBbaW5uZXJIVE1MXT1cIm1lc3NhZ2VcIj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJtZXNzYWdlICYmICFvcHRpb25zLmVuYWJsZUh0bWxcIiByb2xlPVwiYWxlcnRkaWFsb2dcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgIFtjbGFzc109XCJvcHRpb25zLm1lc3NhZ2VDbGFzc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwibWVzc2FnZVwiPlxuICAgIHt7IG1lc3NhZ2UgfX1cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJvcHRpb25zLnByb2dyZXNzQmFyXCI+XG4gICAgPGRpdiBjbGFzcz1cInRvYXN0LXByb2dyZXNzXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoICsgJyUnXCI+PC9kaXY+XG4gIDwvZGl2PlxuICBgLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZmx5SW5PdXQnLCBbXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2luYWN0aXZlJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgc3RhdGUoJ2FjdGl2ZScsIHN0eWxlKHt9KSksXG4gICAgICBzdGF0ZSgncmVtb3ZlZCcsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSksXG4gICAgICB0cmFuc2l0aW9uKFxuICAgICAgICAnaW5hY3RpdmUgPT4gYWN0aXZlJyxcbiAgICAgICAgYW5pbWF0ZSgne3sgZWFzZVRpbWUgfX1tcyB7eyBlYXNpbmcgfX0nKVxuICAgICAgKSxcbiAgICAgIHRyYW5zaXRpb24oJ2FjdGl2ZSA9PiByZW1vdmVkJywgYW5pbWF0ZSgne3sgZWFzZVRpbWUgfX1tcyB7eyBlYXNpbmcgfX0nKSlcbiAgICBdKVxuICBdLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIG1lc3NhZ2U/OiBzdHJpbmcgfCBTYWZlSHRtbCB8IG51bGw7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBvcHRpb25zOiBJbmRpdmlkdWFsQ29uZmlnO1xuICBvcmlnaW5hbFRpbWVvdXQ6IG51bWJlcjtcbiAgLyoqIHdpZHRoIG9mIHByb2dyZXNzIGJhciAqL1xuICB3aWR0aCA9IC0xO1xuICAvKiogYSBjb21iaW5hdGlvbiBvZiB0b2FzdCB0eXBlIGFuZCBvcHRpb25zLnRvYXN0Q2xhc3MgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHRvYXN0Q2xhc3NlcyA9ICcnO1xuICAvKiogY29udHJvbHMgYW5pbWF0aW9uICovXG4gIEBIb3N0QmluZGluZygnQGZseUluT3V0JylcbiAgc3RhdGUgPSB7XG4gICAgdmFsdWU6ICdpbmFjdGl2ZScsXG4gICAgcGFyYW1zOiB7XG4gICAgICBlYXNlVGltZTogdGhpcy50b2FzdFBhY2thZ2UuY29uZmlnLmVhc2VUaW1lLFxuICAgICAgZWFzaW5nOiAnZWFzZS1pbidcbiAgICB9XG4gIH07XG4gIHByaXZhdGUgdGltZW91dDogYW55O1xuICBwcml2YXRlIGludGVydmFsSWQ6IGFueTtcbiAgcHJpdmF0ZSBoaWRlVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHN1YjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHN1YjE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBzdWIyOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHVibGljIHRvYXN0UGFja2FnZTogVG9hc3RQYWNrYWdlLFxuICAgIHByb3RlY3RlZCBuZ1pvbmU/OiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gdG9hc3RQYWNrYWdlLm1lc3NhZ2U7XG4gICAgdGhpcy50aXRsZSA9IHRvYXN0UGFja2FnZS50aXRsZTtcbiAgICB0aGlzLm9wdGlvbnMgPSB0b2FzdFBhY2thZ2UuY29uZmlnO1xuICAgIHRoaXMub3JpZ2luYWxUaW1lb3V0ID0gdG9hc3RQYWNrYWdlLmNvbmZpZy50aW1lT3V0O1xuICAgIHRoaXMudG9hc3RDbGFzc2VzID0gYCR7dG9hc3RQYWNrYWdlLnRvYXN0VHlwZX0gJHtcbiAgICAgIHRvYXN0UGFja2FnZS5jb25maWcudG9hc3RDbGFzc1xuICAgIH1gO1xuICAgIHRoaXMuc3ViID0gdG9hc3RQYWNrYWdlLnRvYXN0UmVmLmFmdGVyQWN0aXZhdGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hY3RpdmF0ZVRvYXN0KCk7XG4gICAgfSk7XG4gICAgdGhpcy5zdWIxID0gdG9hc3RQYWNrYWdlLnRvYXN0UmVmLm1hbnVhbENsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlbW92ZSgpO1xuICAgIH0pO1xuICAgIHRoaXMuc3ViMiA9IHRvYXN0UGFja2FnZS50b2FzdFJlZi50aW1lb3V0UmVzZXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNldFRpbWVvdXQoKTtcbiAgICB9KTtcbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3ViMS51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3ViMi51bnN1YnNjcmliZSgpO1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgfVxuICAvKipcbiAgICogYWN0aXZhdGVzIHRvYXN0IGFuZCBzZXRzIHRpbWVvdXRcbiAgICovXG4gIGFjdGl2YXRlVG9hc3QoKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHsgLi4udGhpcy5zdGF0ZSwgdmFsdWU6ICdhY3RpdmUnIH07XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlzYWJsZVRpbWVPdXQgJiYgdGhpcy5vcHRpb25zLnRpbWVPdXQpIHtcbiAgICAgIHRoaXMub3V0c2lkZVRpbWVvdXQoKCkgPT4gdGhpcy5yZW1vdmUoKSwgdGhpcy5vcHRpb25zLnRpbWVPdXQpO1xuICAgICAgdGhpcy5oaWRlVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgdGhpcy5vcHRpb25zLnRpbWVPdXQ7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLnByb2dyZXNzQmFyKSB7XG4gICAgICAgIHRoaXMub3V0c2lkZUludGVydmFsKCgpID0+IHRoaXMudXBkYXRlUHJvZ3Jlc3MoKSwgMTApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogdXBkYXRlcyBwcm9ncmVzcyBiYXIgd2lkdGhcbiAgICovXG4gIHVwZGF0ZVByb2dyZXNzKCkge1xuICAgIGlmICh0aGlzLndpZHRoID09PSAwIHx8IHRoaXMud2lkdGggPT09IDEwMCB8fCAhdGhpcy5vcHRpb25zLnRpbWVPdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgcmVtYWluaW5nID0gdGhpcy5oaWRlVGltZSAtIG5vdztcbiAgICB0aGlzLndpZHRoID0gKHJlbWFpbmluZyAvIHRoaXMub3B0aW9ucy50aW1lT3V0KSAqIDEwMDtcbiAgICBpZiAodGhpcy5vcHRpb25zLnByb2dyZXNzQW5pbWF0aW9uID09PSAnaW5jcmVhc2luZycpIHtcbiAgICAgIHRoaXMud2lkdGggPSAxMDAgLSB0aGlzLndpZHRoO1xuICAgIH1cbiAgICBpZiAodGhpcy53aWR0aCA8PSAwKSB7XG4gICAgICB0aGlzLndpZHRoID0gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMud2lkdGggPj0gMTAwKSB7XG4gICAgICB0aGlzLndpZHRoID0gMTAwO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0VGltZW91dCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XG4gICAgdGhpcy5zdGF0ZSA9IHsgLi4udGhpcy5zdGF0ZSwgdmFsdWU6ICdhY3RpdmUnIH07XG5cbiAgICB0aGlzLm91dHNpZGVUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlKCksIHRoaXMub3JpZ2luYWxUaW1lb3V0KTtcbiAgICB0aGlzLm9wdGlvbnMudGltZU91dCA9IHRoaXMub3JpZ2luYWxUaW1lb3V0O1xuICAgIHRoaXMuaGlkZVRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArICh0aGlzLm9wdGlvbnMudGltZU91dCB8fCAwKTtcbiAgICB0aGlzLndpZHRoID0gLTE7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5wcm9ncmVzc0Jhcikge1xuICAgICAgdGhpcy5vdXRzaWRlSW50ZXJ2YWwoKCkgPT4gdGhpcy51cGRhdGVQcm9ncmVzcygpLCAxMCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHRlbGxzIHRvYXN0clNlcnZpY2UgdG8gcmVtb3ZlIHRoaXMgdG9hc3QgYWZ0ZXIgYW5pbWF0aW9uIHRpbWVcbiAgICovXG4gIHJlbW92ZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSA9PT0gJ3JlbW92ZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgIHRoaXMuc3RhdGUgPSB7IC4uLnRoaXMuc3RhdGUsIHZhbHVlOiAncmVtb3ZlZCcgfTtcbiAgICB0aGlzLm91dHNpZGVUaW1lb3V0KFxuICAgICAgKCkgPT4gdGhpcy50b2FzdHJTZXJ2aWNlLnJlbW92ZSh0aGlzLnRvYXN0UGFja2FnZS50b2FzdElkKSxcbiAgICAgICt0aGlzLnRvYXN0UGFja2FnZS5jb25maWcuZWFzZVRpbWVcbiAgICApO1xuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgdGFwVG9hc3QoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUudmFsdWUgPT09ICdyZW1vdmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvYXN0UGFja2FnZS50cmlnZ2VyVGFwKCk7XG4gICAgaWYgKHRoaXMub3B0aW9ucy50YXBUb0Rpc21pc3MpIHtcbiAgICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgfVxuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICBzdGlja0Fyb3VuZCgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZSA9PT0gJ3JlbW92ZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgIHRoaXMub3B0aW9ucy50aW1lT3V0ID0gMDtcbiAgICB0aGlzLmhpZGVUaW1lID0gMDtcblxuICAgIC8vIGRpc2FibGUgcHJvZ3Jlc3NCYXJcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZCk7XG4gICAgdGhpcy53aWR0aCA9IDA7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIGRlbGF5ZWRIaWRlVG9hc3QoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5vcHRpb25zLmRpc2FibGVUaW1lT3V0IHx8XG4gICAgICB0aGlzLm9wdGlvbnMuZXh0ZW5kZWRUaW1lT3V0ID09PSAwIHx8XG4gICAgICB0aGlzLnN0YXRlLnZhbHVlID09PSAncmVtb3ZlZCdcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vdXRzaWRlVGltZW91dCgoKSA9PiB0aGlzLnJlbW92ZSgpLCB0aGlzLm9wdGlvbnMuZXh0ZW5kZWRUaW1lT3V0KTtcbiAgICB0aGlzLm9wdGlvbnMudGltZU91dCA9IHRoaXMub3B0aW9ucy5leHRlbmRlZFRpbWVPdXQ7XG4gICAgdGhpcy5oaWRlVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgKHRoaXMub3B0aW9ucy50aW1lT3V0IHx8IDApO1xuICAgIHRoaXMud2lkdGggPSAtMTtcbiAgICBpZiAodGhpcy5vcHRpb25zLnByb2dyZXNzQmFyKSB7XG4gICAgICB0aGlzLm91dHNpZGVJbnRlcnZhbCgoKSA9PiB0aGlzLnVwZGF0ZVByb2dyZXNzKCksIDEwKTtcbiAgICB9XG4gIH1cblxuICBvdXRzaWRlVGltZW91dChmdW5jOiBGdW5jdGlvbiwgdGltZW91dDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubmdab25lKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAodGhpcy50aW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICgpID0+IHRoaXMucnVuSW5zaWRlQW5ndWxhcihmdW5jKSxcbiAgICAgICAgICAgIHRpbWVvdXRcbiAgICAgICAgICApKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBmdW5jKCksIHRpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIG91dHNpZGVJbnRlcnZhbChmdW5jOiBGdW5jdGlvbiwgdGltZW91dDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubmdab25lKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAodGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoXG4gICAgICAgICAgICAoKSA9PiB0aGlzLnJ1bkluc2lkZUFuZ3VsYXIoZnVuYyksXG4gICAgICAgICAgICB0aW1lb3V0XG4gICAgICAgICAgKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IGZ1bmMoKSwgdGltZW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBydW5JbnNpZGVBbmd1bGFyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKHRoaXMubmdab25lKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gZnVuYygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZnVuYygpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgVG9hc3QgfSBmcm9tICcuL3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHbG9iYWxDb25maWcgfSBmcm9tICcuL3RvYXN0ci1jb25maWcnO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdEdsb2JhbENvbmZpZyBpbXBsZW1lbnRzIEdsb2JhbENvbmZpZyB7XG4gIC8vIEdsb2JhbFxuICBtYXhPcGVuZWQgPSAwO1xuICBhdXRvRGlzbWlzcyA9IGZhbHNlO1xuICBuZXdlc3RPblRvcCA9IHRydWU7XG4gIHByZXZlbnREdXBsaWNhdGVzID0gZmFsc2U7XG4gIHJlc2V0VGltZW91dE9uRHVwbGljYXRlID0gZmFsc2U7XG4gIGljb25DbGFzc2VzID0ge1xuICAgIGVycm9yOiAndG9hc3QtZXJyb3InLFxuICAgIGluZm86ICd0b2FzdC1pbmZvJyxcbiAgICBzdWNjZXNzOiAndG9hc3Qtc3VjY2VzcycsXG4gICAgd2FybmluZzogJ3RvYXN0LXdhcm5pbmcnXG4gIH07XG5cbiAgLy8gSW5kaXZpZHVhbFxuICB0b2FzdENvbXBvbmVudCA9IFRvYXN0O1xuICBjbG9zZUJ1dHRvbiA9IGZhbHNlO1xuICBkaXNhYmxlVGltZU91dDogZmFsc2U7XG4gIHRpbWVPdXQgPSA1MDAwO1xuICBleHRlbmRlZFRpbWVPdXQgPSAxMDAwO1xuICBlbmFibGVIdG1sID0gZmFsc2U7XG4gIHByb2dyZXNzQmFyID0gZmFsc2U7XG4gIHRvYXN0Q2xhc3MgPSAndG9hc3QnO1xuICBwb3NpdGlvbkNsYXNzID0gJ3RvYXN0LXRvcC1yaWdodCc7XG4gIHRpdGxlQ2xhc3MgPSAndG9hc3QtdGl0bGUnO1xuICBtZXNzYWdlQ2xhc3MgPSAndG9hc3QtbWVzc2FnZSc7XG4gIGVhc2luZyA9ICdlYXNlLWluJztcbiAgZWFzZVRpbWUgPSAzMDA7XG4gIHRhcFRvRGlzbWlzcyA9IHRydWU7XG4gIG9uQWN0aXZhdGVUaWNrID0gZmFsc2U7XG4gIHByb2dyZXNzQW5pbWF0aW9uOiAnZGVjcmVhc2luZycgfCAnaW5jcmVhc2luZycgPSAnZGVjcmVhc2luZyc7XG59XG4iLCJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcbiAgTmdNb2R1bGUsXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICcuLi9vdmVybGF5L292ZXJsYXknO1xuaW1wb3J0IHsgT3ZlcmxheUNvbnRhaW5lciB9IGZyb20gJy4uL292ZXJsYXkvb3ZlcmxheS1jb250YWluZXInO1xuaW1wb3J0IHsgRGVmYXVsdEdsb2JhbENvbmZpZyB9IGZyb20gJy4vZGVmYXVsdC1jb25maWcnO1xuaW1wb3J0IHsgVE9BU1RfQ09ORklHIH0gZnJvbSAnLi90b2FzdC10b2tlbic7XG5pbXBvcnQgeyBUb2FzdCB9IGZyb20gJy4vdG9hc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEdsb2JhbENvbmZpZyB9IGZyb20gJy4vdG9hc3RyLWNvbmZpZyc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdHIuc2VydmljZSc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtUb2FzdF0sXG4gIGRlY2xhcmF0aW9uczogW1RvYXN0XSxcbiAgZW50cnlDb21wb25lbnRzOiBbVG9hc3RdLFxufSlcbmV4cG9ydCBjbGFzcyBUb2FzdHJNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwYXJlbnRNb2R1bGU6IFRvYXN0ck1vZHVsZSkge1xuICAgIGlmIChwYXJlbnRNb2R1bGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG9hc3RyTW9kdWxlIGlzIGFscmVhZHkgbG9hZGVkLiBJdCBzaG91bGQgb25seSBiZSBpbXBvcnRlZCBpbiB5b3VyIGFwcGxpY2F0aW9uXFwncyBtYWluIG1vZHVsZS4nKTtcbiAgICB9XG4gIH1cbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBQYXJ0aWFsPEdsb2JhbENvbmZpZz4gPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVG9hc3RyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogVE9BU1RfQ09ORklHLCB1c2VWYWx1ZTogeyBjb25maWcsIGRlZmF1bHRzOiBEZWZhdWx0R2xvYmFsQ29uZmlnIH0gfSxcbiAgICAgICAgT3ZlcmxheUNvbnRhaW5lcixcbiAgICAgICAgT3ZlcmxheSxcbiAgICAgICAgVG9hc3RyU2VydmljZSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBBcHBsaWNhdGlvblJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIE5nTW9kdWxlLFxyXG4gIE9uRGVzdHJveVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSW5kaXZpZHVhbENvbmZpZywgVG9hc3RQYWNrYWdlIH0gZnJvbSAnLi90b2FzdHItY29uZmlnJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJy4vdG9hc3RyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdbdG9hc3QtY29tcG9uZW50XScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICA8YnV0dG9uICpuZ0lmPVwib3B0aW9ucy5jbG9zZUJ1dHRvblwiIChjbGljayk9XCJyZW1vdmUoKVwiIGNsYXNzPVwidG9hc3QtY2xvc2UtYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XHJcbiAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxkaXYgKm5nSWY9XCJ0aXRsZVwiIFtjbGFzc109XCJvcHRpb25zLnRpdGxlQ2xhc3NcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInRpdGxlXCI+XHJcbiAgICB7eyB0aXRsZSB9fVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJtZXNzYWdlICYmIG9wdGlvbnMuZW5hYmxlSHRtbFwiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXHJcbiAgICBbY2xhc3NdPVwib3B0aW9ucy5tZXNzYWdlQ2xhc3NcIiBbaW5uZXJIVE1MXT1cIm1lc3NhZ2VcIj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwibWVzc2FnZSAmJiAhb3B0aW9ucy5lbmFibGVIdG1sXCIgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwicG9saXRlXCJcclxuICAgIFtjbGFzc109XCJvcHRpb25zLm1lc3NhZ2VDbGFzc1wiIFthdHRyLmFyaWEtbGFiZWxdPVwibWVzc2FnZVwiPlxyXG4gICAge3sgbWVzc2FnZSB9fVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJvcHRpb25zLnByb2dyZXNzQmFyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9hc3QtcHJvZ3Jlc3NcIiBbc3R5bGUud2lkdGhdPVwid2lkdGggKyAnJSdcIj48L2Rpdj5cclxuICA8L2Rpdj5cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2FzdE5vQW5pbWF0aW9uIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBtZXNzYWdlPzogc3RyaW5nIHwgU2FmZUh0bWwgfCBudWxsO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIG9wdGlvbnM6IEluZGl2aWR1YWxDb25maWc7XHJcbiAgb3JpZ2luYWxUaW1lb3V0OiBudW1iZXI7XHJcbiAgLyoqIHdpZHRoIG9mIHByb2dyZXNzIGJhciAqL1xyXG4gIHdpZHRoID0gLTE7XHJcbiAgLyoqIGEgY29tYmluYXRpb24gb2YgdG9hc3QgdHlwZSBhbmQgb3B0aW9ucy50b2FzdENsYXNzICovXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHRvYXN0Q2xhc3NlcyA9ICcnO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmRpc3BsYXknKVxyXG4gIGdldCBkaXNwbGF5U3R5bGUoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ2luYWN0aXZlJykge1xyXG4gICAgICByZXR1cm4gJ25vbmUnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdpbmhlcml0JztcclxuICB9XHJcblxyXG4gIC8qKiBjb250cm9scyBhbmltYXRpb24gKi9cclxuICBzdGF0ZSA9ICdpbmFjdGl2ZSc7XHJcbiAgcHJpdmF0ZSB0aW1lb3V0OiBhbnk7XHJcbiAgcHJpdmF0ZSBpbnRlcnZhbElkOiBhbnk7XHJcbiAgcHJpdmF0ZSBoaWRlVGltZTogbnVtYmVyO1xyXG4gIHByaXZhdGUgc3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdWIxOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdWIyOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwdWJsaWMgdG9hc3RQYWNrYWdlOiBUb2FzdFBhY2thZ2UsXHJcbiAgICBwcm90ZWN0ZWQgYXBwUmVmOiBBcHBsaWNhdGlvblJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5tZXNzYWdlID0gdG9hc3RQYWNrYWdlLm1lc3NhZ2U7XHJcbiAgICB0aGlzLnRpdGxlID0gdG9hc3RQYWNrYWdlLnRpdGxlO1xyXG4gICAgdGhpcy5vcHRpb25zID0gdG9hc3RQYWNrYWdlLmNvbmZpZztcclxuICAgIHRoaXMub3JpZ2luYWxUaW1lb3V0ID0gdG9hc3RQYWNrYWdlLmNvbmZpZy50aW1lT3V0O1xyXG4gICAgdGhpcy50b2FzdENsYXNzZXMgPSBgJHt0b2FzdFBhY2thZ2UudG9hc3RUeXBlfSAke1xyXG4gICAgICB0b2FzdFBhY2thZ2UuY29uZmlnLnRvYXN0Q2xhc3NcclxuICAgIH1gO1xyXG4gICAgdGhpcy5zdWIgPSB0b2FzdFBhY2thZ2UudG9hc3RSZWYuYWZ0ZXJBY3RpdmF0ZSgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVUb2FzdCgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN1YjEgPSB0b2FzdFBhY2thZ2UudG9hc3RSZWYubWFudWFsQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5yZW1vdmUoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdWIyID0gdG9hc3RQYWNrYWdlLnRvYXN0UmVmLnRpbWVvdXRSZXNldCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVzZXRUaW1lb3V0KCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5zdWIxLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnN1YjIudW5zdWJzY3JpYmUoKTtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBhY3RpdmF0ZXMgdG9hc3QgYW5kIHNldHMgdGltZW91dFxyXG4gICAqL1xyXG4gIGFjdGl2YXRlVG9hc3QoKSB7XHJcbiAgICB0aGlzLnN0YXRlID0gJ2FjdGl2ZSc7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5kaXNhYmxlVGltZU91dCAmJiB0aGlzLm9wdGlvbnMudGltZU91dCkge1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZSgpO1xyXG4gICAgICB9LCB0aGlzLm9wdGlvbnMudGltZU91dCk7XHJcbiAgICAgIHRoaXMuaGlkZVRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHRoaXMub3B0aW9ucy50aW1lT3V0O1xyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnByb2dyZXNzQmFyKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy51cGRhdGVQcm9ncmVzcygpLCAxMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMub25BY3RpdmF0ZVRpY2spIHtcclxuICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiB1cGRhdGVzIHByb2dyZXNzIGJhciB3aWR0aFxyXG4gICAqL1xyXG4gIHVwZGF0ZVByb2dyZXNzKCkge1xyXG4gICAgaWYgKHRoaXMud2lkdGggPT09IDAgfHwgdGhpcy53aWR0aCA9PT0gMTAwIHx8ICF0aGlzLm9wdGlvbnMudGltZU91dCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IHJlbWFpbmluZyA9IHRoaXMuaGlkZVRpbWUgLSBub3c7XHJcbiAgICB0aGlzLndpZHRoID0gKHJlbWFpbmluZyAvIHRoaXMub3B0aW9ucy50aW1lT3V0KSAqIDEwMDtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucHJvZ3Jlc3NBbmltYXRpb24gPT09ICdpbmNyZWFzaW5nJykge1xyXG4gICAgICB0aGlzLndpZHRoID0gMTAwIC0gdGhpcy53aWR0aDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLndpZHRoIDw9IDApIHtcclxuICAgICAgdGhpcy53aWR0aCA9IDA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53aWR0aCA+PSAxMDApIHtcclxuICAgICAgdGhpcy53aWR0aCA9IDEwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0VGltZW91dCgpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xyXG4gICAgdGhpcy5zdGF0ZSA9ICdhY3RpdmUnO1xyXG5cclxuICAgIHRoaXMub3B0aW9ucy50aW1lT3V0ID0gdGhpcy5vcmlnaW5hbFRpbWVvdXQ7XHJcbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlKCksIHRoaXMub3JpZ2luYWxUaW1lb3V0KTtcclxuICAgIHRoaXMuaGlkZVRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArICh0aGlzLm9yaWdpbmFsVGltZW91dCB8fCAwKTtcclxuICAgIHRoaXMud2lkdGggPSAtMTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMucHJvZ3Jlc3NCYXIpIHtcclxuICAgICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy51cGRhdGVQcm9ncmVzcygpLCAxMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0ZWxscyB0b2FzdHJTZXJ2aWNlIHRvIHJlbW92ZSB0aGlzIHRvYXN0IGFmdGVyIGFuaW1hdGlvbiB0aW1lXHJcbiAgICovXHJcbiAgcmVtb3ZlKCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdyZW1vdmVkJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcclxuICAgIHRoaXMuc3RhdGUgPSAncmVtb3ZlZCc7XHJcbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+XHJcbiAgICAgIHRoaXMudG9hc3RyU2VydmljZS5yZW1vdmUodGhpcy50b2FzdFBhY2thZ2UudG9hc3RJZClcclxuICAgICk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcclxuICB0YXBUb2FzdCgpIHtcclxuICAgIGlmICh0aGlzLnN0YXRlID09PSAncmVtb3ZlZCcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50b2FzdFBhY2thZ2UudHJpZ2dlclRhcCgpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy50YXBUb0Rpc21pc3MpIHtcclxuICAgICAgdGhpcy5yZW1vdmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXHJcbiAgc3RpY2tBcm91bmQoKSB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZSA9PT0gJ3JlbW92ZWQnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgdGhpcy5vcHRpb25zLnRpbWVPdXQgPSAwO1xyXG4gICAgdGhpcy5oaWRlVGltZSA9IDA7XHJcblxyXG4gICAgLy8gZGlzYWJsZSBwcm9ncmVzc0JhclxyXG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xyXG4gICAgdGhpcy53aWR0aCA9IDA7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxyXG4gIGRlbGF5ZWRIaWRlVG9hc3QoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlVGltZU91dCB8fFxyXG4gICAgICB0aGlzLm9wdGlvbnMuZXh0ZW5kZWRUaW1lT3V0ID09PSAwIHx8XHJcbiAgICAgIHRoaXMuc3RhdGUgPT09ICdyZW1vdmVkJ1xyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoXHJcbiAgICAgICgpID0+IHRoaXMucmVtb3ZlKCksXHJcbiAgICAgIHRoaXMub3B0aW9ucy5leHRlbmRlZFRpbWVPdXRcclxuICAgICk7XHJcbiAgICB0aGlzLm9wdGlvbnMudGltZU91dCA9IHRoaXMub3B0aW9ucy5leHRlbmRlZFRpbWVPdXQ7XHJcbiAgICB0aGlzLmhpZGVUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgKyAodGhpcy5vcHRpb25zLnRpbWVPdXQgfHwgMCk7XHJcbiAgICB0aGlzLndpZHRoID0gLTE7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnByb2dyZXNzQmFyKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHRoaXMudXBkYXRlUHJvZ3Jlc3MoKSwgMTApO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFtUb2FzdE5vQW5pbWF0aW9uXSxcclxuICBleHBvcnRzOiBbVG9hc3ROb0FuaW1hdGlvbl0sXHJcbiAgZW50cnlDb21wb25lbnRzOiBbVG9hc3ROb0FuaW1hdGlvbl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRvYXN0Tm9BbmltYXRpb25Nb2R1bGUge31cclxuIl0sIm5hbWVzIjpbInRzbGliXzEuX19leHRlbmRzIiwidHNsaWJfMS5fX3ZhbHVlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtJQVdFLGlDQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtLQUFLOzs7O0lBQ3ZDLHFEQUFtQjs7O0lBQW5CO1FBQ0UsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztLQUM5Qjs7Z0JBUkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzNCOzs7O2dCQVBDLFVBQVU7O2tDQUZaOzs7Ozs7Z0JBaUJDLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkMsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ25DOzsrQkFwQkQ7Ozs7Ozs7QUNDQTs7O0FBd0lBOzs7QUFBQTtJQUlF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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ngx-toastr/fesm5/ngx-toastr.js\n// module id = ./node_modules/ngx-toastr/fesm5/ngx-toastr.js\n// module chunks = common","/** PURE_IMPORTS_START .._Observable,.._util_tryCatch,.._util_isFunction,.._util_errorObject,.._Subscription PURE_IMPORTS_END */\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nimport { Observable } from '../Observable';\nimport { tryCatch } from '../util/tryCatch';\nimport { isFunction } from '../util/isFunction';\nimport { errorObject } from '../util/errorObject';\nimport { Subscription } from '../Subscription';\nvar toString = Object.prototype.toString;\nfunction isNodeStyleEventEmitter(sourceObj) {\n return !!sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return !!sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isNodeList(sourceObj) {\n return !!sourceObj && toString.call(sourceObj) === '[object NodeList]';\n}\nfunction isHTMLCollection(sourceObj) {\n return !!sourceObj && toString.call(sourceObj) === '[object HTMLCollection]';\n}\nfunction isEventTarget(sourceObj) {\n return !!sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var FromEventObservable = /*@__PURE__*/ (/*@__PURE__*/ function (_super) {\n __extends(FromEventObservable, _super);\n function FromEventObservable(sourceObj, eventName, selector, options) {\n _super.call(this);\n this.sourceObj = sourceObj;\n this.eventName = eventName;\n this.selector = selector;\n this.options = options;\n }\n /* tslint:enable:max-line-length */\n /**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * \n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * @example Emits clicks happening on the DOM document\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n *\n *\n * @example Use addEventListener with capture option\n * var clicksInDocument = Rx.Observable.fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * var clicksInDiv = Rx.Observable.fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {EventTargetLike} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @param {SelectorMethodSignature} [selector] An optional function to\n * post-process results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable}\n * @static true\n * @name fromEvent\n * @owner Observable\n */\n FromEventObservable.create = function (target, eventName, options, selector) {\n if (isFunction(options)) {\n selector = options;\n options = undefined;\n }\n return new FromEventObservable(target, eventName, selector, options);\n };\n FromEventObservable.setupSubscription = function (sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n FromEventObservable.setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(new Subscription(unsubscribe));\n };\n FromEventObservable.prototype._subscribe = function (subscriber) {\n var sourceObj = this.sourceObj;\n var eventName = this.eventName;\n var options = this.options;\n var selector = this.selector;\n var handler = selector ? function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n var result = tryCatch(selector).apply(void 0, args);\n if (result === errorObject) {\n subscriber.error(errorObject.e);\n }\n else {\n subscriber.next(result);\n }\n } : function (e) { return subscriber.next(e); };\n FromEventObservable.setupSubscription(sourceObj, eventName, handler, subscriber, options);\n };\n return FromEventObservable;\n}(Observable));\n//# sourceMappingURL=FromEventObservable.js.map \n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/rxjs/_esm5/observable/FromEventObservable.js\n// module id = ./node_modules/rxjs/_esm5/observable/FromEventObservable.js\n// module chunks = common","/** PURE_IMPORTS_START .._util_isFunction,.._Observable,.._Subscription PURE_IMPORTS_END */\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b)\n if (b.hasOwnProperty(p))\n d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nimport { isFunction } from '../util/isFunction';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @extends {Ignored}\n * @hide true\n */\nexport var FromEventPatternObservable = /*@__PURE__*/ (/*@__PURE__*/ function (_super) {\n __extends(FromEventPatternObservable, _super);\n function FromEventPatternObservable(addHandler, removeHandler, selector) {\n _super.call(this);\n this.addHandler = addHandler;\n this.removeHandler = removeHandler;\n this.selector = selector;\n }\n /**\n * Creates an Observable from an API based on addHandler/removeHandler\n * functions.\n *\n * Converts any addHandler/removeHandler API to an\n * Observable.\n *\n * \n *\n * Creates an Observable by using the `addHandler` and `removeHandler`\n * functions to add and remove the handlers, with an optional selector\n * function to project the event arguments to a result. The `addHandler` is\n * called when the output Observable is subscribed, and `removeHandler` is\n * called when the Subscription is unsubscribed.\n *\n * @example Emits clicks happening on the DOM document\n * function addClickHandler(handler) {\n * document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n * document.removeEventListener('click', handler);\n * }\n *\n * var clicks = Rx.Observable.fromEventPattern(\n * addClickHandler,\n * removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * @see {@link from}\n * @see {@link fromEvent}\n *\n * @param {function(handler: Function): any} addHandler A function that takes\n * a `handler` function as argument and attaches it somehow to the actual\n * source of events.\n * @param {function(handler: Function, signal?: any): void} [removeHandler] An optional function that\n * takes a `handler` function as argument and removes it in case it was\n * previously attached using `addHandler`. if addHandler returns signal to teardown when remove,\n * removeHandler function will forward it.\n * @param {function(...args: any): T} [selector] An optional function to\n * post-process results. It takes the arguments from the event handler and\n * should return a single value.\n * @return {Observable}\n * @static true\n * @name fromEventPattern\n * @owner Observable\n */\n FromEventPatternObservable.create = function (addHandler, removeHandler, selector) {\n return new FromEventPatternObservable(addHandler, removeHandler, selector);\n };\n FromEventPatternObservable.prototype._subscribe = function (subscriber) {\n var _this = this;\n var removeHandler = this.removeHandler;\n var handler = !!this.selector ? function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i - 0] = arguments[_i];\n }\n _this._callSelector(subscriber, args);\n } : function (e) { subscriber.next(e); };\n var retValue = this._callAddHandler(handler, subscriber);\n if (!isFunction(removeHandler)) {\n return;\n }\n subscriber.add(new Subscription(function () {\n //TODO: determine whether or not to forward to error handler\n removeHandler(handler, retValue);\n }));\n };\n FromEventPatternObservable.prototype._callSelector = function (subscriber, args) {\n try {\n var result = this.selector.apply(this, args);\n subscriber.next(result);\n }\n catch (e) {\n subscriber.error(e);\n }\n };\n FromEventPatternObservable.prototype._callAddHandler = function (handler, errorSubscriber) {\n try {\n return this.addHandler(handler) || null;\n }\n catch (e) {\n errorSubscriber.error(e);\n }\n };\n return FromEventPatternObservable;\n}(Observable));\n//# sourceMappingURL=FromEventPatternObservable.js.map \n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/rxjs/_esm5/observable/FromEventPatternObservable.js\n// module id = ./node_modules/rxjs/_esm5/observable/FromEventPatternObservable.js\n// module chunks = common","/** PURE_IMPORTS_START ._FromEventObservable PURE_IMPORTS_END */\nimport { FromEventObservable } from './FromEventObservable';\nexport var fromEvent = FromEventObservable.create;\n//# sourceMappingURL=fromEvent.js.map \n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/rxjs/_esm5/observable/fromEvent.js\n// module id = ./node_modules/rxjs/_esm5/observable/fromEvent.js\n// module chunks = common","/** PURE_IMPORTS_START ._FromEventPatternObservable PURE_IMPORTS_END */\nimport { FromEventPatternObservable } from './FromEventPatternObservable';\nexport var fromEventPattern = FromEventPatternObservable.create;\n//# sourceMappingURL=fromEventPattern.js.map \n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/rxjs/_esm5/observable/fromEventPattern.js\n// module id = ./node_modules/rxjs/_esm5/observable/fromEventPattern.js\n// module chunks = common","export class BaseRequest {\r\n all: boolean;\r\n pageNumber: number;\r\n constructor() {\r\n this.all = false;\r\n this.pageNumber = 1;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/model/base/baseRequest.ts","export class BaseResponse {\r\n responseStatus: number;\r\n description: string;\r\n total:number;\r\n constructor() { }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/model/base/baseResponse.ts","import { BaseResponse } from '../base/baseResponse';\r\nimport { BaseRequest } from '../base/baseRequest';\r\nexport class CustomerRequest extends BaseRequest {\r\n\r\n customerItemsreq: CustomerRequestItem;\r\n constructor() {\r\n super();\r\n this.customerItemsreq = new CustomerRequestItem('', '', false);\r\n }\r\n}\r\n\r\nexport class CustomerResponse extends BaseResponse {\r\n customerDataItems: CustomerItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class BuckWaUserResponse extends BaseResponse {\r\n buckWaUserItems: BuckWaUserItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class CustomerProfileResponse extends BaseResponse {\r\n customerProfileItems: any;\r\n constructor() { super(); }\r\n\r\n}\r\n\r\n\r\nexport class ProvinceResponse extends BaseResponse {\r\n provinceItems: ProvinceItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class BankResponse extends BaseResponse {\r\n bankItems: BankItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class CustomerItem {\r\n constructor(\r\n public no_: string,\r\n public name: string,\r\n public search_name: string,\r\n public address: string,\r\n public address_2: string,\r\n public city: string,\r\n public post_Code: string,\r\n public contact: string,\r\n public phone_No_: string,\r\n public telex_No_: string,\r\n public fax_No_: string,\r\n public vAT_Registration_No_: string,\r\n public useFlag: number,\r\n public showDetail: boolean\r\n ) {\r\n }\r\n}\r\n\r\nexport class BuckWaUserItem {\r\n constructor(\r\n public username: string,\r\n public customer_no: string,\r\n public enable: number,\r\n public rowID: number,\r\n public menuSystemGroupName: string,\r\n public showDetail: boolean\r\n ) {\r\n }\r\n}\r\n\r\nexport class CustomerRequestItem {\r\n constructor(\r\n public code: string,\r\n public name: string,\r\n public showDetail: boolean\r\n ) {\r\n }\r\n}\r\n\r\nexport class ProvinceItem {\r\n constructor(\r\n public provinceID: number,\r\n public provinceName: string,\r\n public provinceNameEn: string\r\n ) {\r\n }\r\n}\r\n\r\nexport class BankItem {\r\n constructor(\r\n public BankID: number,\r\n public BankName: string,\r\n public UseFlag: number\r\n ) {\r\n }\r\n}\r\n\r\n\r\n\r\nexport class MenuSystemGroupItem {\r\n constructor(\r\n public menuSystemGroupID: number,\r\n public menuSystemGroupName: string,\r\n public useFlag: number\r\n ) {\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/model/criteria/customer.ts","import { BaseResponse } from '../base/baseResponse';\r\nimport { BaseRequest } from '../base/baseRequest';\r\nexport class OrderRequest extends BaseRequest {\r\n\r\n orderItems: OrderItem;\r\n constructor() {\r\n super();\r\n this.orderItems = new OrderItem(0, '', -1, false, '');\r\n }\r\n}\r\n\r\nexport class OrderResponse extends BaseResponse {\r\n orderItems: OrderItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class OrderItem {\r\n constructor(\r\n public competencyID: number,\r\n public competencyName: string,\r\n public useFlag: number,\r\n public showDetail: boolean,\r\n public shipCode: string\r\n ) {\r\n }\r\n}\r\n\r\nexport class ShipmentItem {\r\n constructor(\r\n public customerNo: string,\r\n public code: string,\r\n public name: string,\r\n public address: string,\r\n public city: string,\r\n public distance: number,\r\n public logisticChargePerTons: number,\r\n public lodingChargePerTons: number\r\n ) {\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/model/criteria/order.ts","import { BaseResponse } from '../base/baseResponse';\r\nimport { BaseRequest } from '../base/baseRequest';\r\nexport class ProductRequest extends BaseRequest {\r\n\r\n productItems: ProductItem;\r\n constructor() {\r\n super();\r\n this.productItems = new ProductItem(0, '', '', -1, false, '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, false);\r\n }\r\n}\r\nexport class ProductResponse extends BaseResponse {\r\n productItems: ProductItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\n\r\n\r\nexport class ProductItem {\r\n constructor(\r\n public productID: number,\r\n public imageName: string,\r\n public productName: string,\r\n public useFlag: number,\r\n public chkProduct: boolean,\r\n public customerNo: string,\r\n public itemNo: string,\r\n public detail: string,\r\n public unit: string,\r\n public startDate: any,\r\n public paymentMethod: string,\r\n public unitPrice: any,\r\n public priceIncludesVAT: any,\r\n public endDate: any,\r\n public approve: any,\r\n public approve2: any,\r\n public userID: string,\r\n public costPlus: any,\r\n public discountAmount: number,\r\n public discount: number,\r\n public netPrice: number,\r\n public quantity: number,\r\n public showDetail: boolean\r\n ) {\r\n }\r\n}\r\n\r\nexport class ProductOrderItem {\r\n constructor(\r\n public productID: number,\r\n public imageName: string,\r\n public productName: string,\r\n public useFlag: number,\r\n public itemNo: string,\r\n public detail: string,\r\n public unit: string,\r\n public paymentMethod: string,\r\n public unitPrice: any,\r\n public priceIncludesVAT: any,\r\n public costPlus: any,\r\n public discountAmount: number,\r\n public quantity: number,\r\n public transportation: number,\r\n public shipping: number,\r\n public amount: number,\r\n public discount: number,\r\n public netPrice: number,\r\n public showDetail: boolean\r\n ) {\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/model/criteria/product.ts","import { BaseResponse } from '../base/baseResponse';\r\nimport { BaseRequest } from '../base/baseRequest';\r\nexport class PORequest extends BaseRequest {\r\n\r\n POItems: POItem;\r\n constructor() {\r\n super();\r\n this.POItems = new POItem(0, '', -1, false);\r\n }\r\n}\r\n\r\nexport class POResponse extends BaseResponse {\r\n POItems: POItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class DocumentRequest extends BaseRequest {\r\n\r\n documentReqItems: DocumentReqItem;\r\n constructor() {\r\n super();\r\n this.documentReqItems = new DocumentReqItem('', '', new Date(), new Date(), new Date(), new Date(), 0, 0, 0, '', '', 0);\r\n }\r\n}\r\n\r\nexport class DocumentResponse extends BaseResponse {\r\n documentHeadItems: DocumentItem[];\r\n statusPO: number;\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class ReportInvoiceResponse extends BaseResponse {\r\n invoiceReportItems: ReportInvoiceItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class ReportDOResponse extends BaseResponse {\r\n doReportItems: ReportDOItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class ReportPaymentResponse extends BaseResponse {\r\n reportInvoicePayments: ReportInvoicePayment[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class PaymentResponse extends BaseResponse {\r\n paymentItems: PaymentItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class PaymentBankResponse extends BaseResponse {\r\n paymentBankItems: PaymentBankItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class PaymentBankReportResponse extends BaseResponse {\r\n paymentBankReportItems: PaymentBankReportItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class PaymentBankDetailResponse extends BaseResponse {\r\n paymentBankDetailItems: PaymentBankDetailItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class ReportSumPaymentResponse extends BaseResponse {\r\n sumInvoiceReportItems: ReportSumInvoicePayment[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class PaymentRequest extends BaseRequest {\r\n\r\n paymentItems: PaymentItem;\r\n constructor() {\r\n super();\r\n this.paymentItems = new PaymentItem('', '', 0, 0, 0, true, []);\r\n }\r\n}\r\n\r\nexport class DocumentLineResponse extends BaseResponse {\r\n documentLineItems: DocumentLineItem[];\r\n constructor() { super(); }\r\n\r\n}\r\n\r\nexport class POItem {\r\n constructor(\r\n public competencyID: number,\r\n public competencyName: string,\r\n public useFlag: number,\r\n public showDetail: boolean\r\n ) {\r\n }\r\n}\r\n\r\nexport class PaymentItem {\r\n constructor(\r\n public payment_No: string,\r\n public customer_No: string,\r\n public payment_Type: number,\r\n public payment_Bank: number,\r\n public total: number,\r\n public showDetail: boolean,\r\n public documentHeadItems: DocumentItem[]\r\n ) {\r\n }\r\n}\r\n\r\nexport class DocumentReqItem {\r\n constructor(\r\n public customerName: string,\r\n public documentNo: string,\r\n public dateStart: Date,\r\n public dateEnd: Date,\r\n public duedateStart: Date,\r\n public duedateEnd: Date,\r\n // public pageNumber: number,\r\n public documentStatus: number,\r\n public status: number,\r\n public convertType: number,\r\n public productNo: string,\r\n public customerNo: string,\r\n public payment_Method: number,\r\n ) {\r\n }\r\n}\r\n\r\nexport class PaymentBankItem {\r\n constructor(\r\n public paymentNo: string,\r\n public customerNo: string,\r\n public paymentType: number,\r\n public statusPayment: number,\r\n public paymentBank: number,\r\n public paymentTypeStatus: number,\r\n public total: number,\r\n public useFlag: number,\r\n public showDetail: boolean,\r\n public payment_Method: number,\r\n public createDesc: string,\r\n public updateDateDesc: string,\r\n public cashReceiptNo: string,\r\n public name: string\r\n ) {\r\n }\r\n}\r\n\r\nexport class PaymentBankReportItem {\r\n constructor(\r\n public paymentNo: string,\r\n public documentNo: string,\r\n public cashReceiptNo: string,\r\n public createDesc: string,\r\n public total: number,\r\n public useFlag: number,\r\n public showDetail: boolean\r\n ) {\r\n }\r\n}\r\n\r\nexport class PaymentBankDetailItem {\r\n constructor(\r\n public payment_No: string,\r\n public document_No: string,\r\n public total: number\r\n ) {\r\n }\r\n}\r\n\r\nexport class DocumentItem {\r\n constructor(\r\n public documentNo: string,\r\n public customer_No: string,\r\n public customer_Name: string,\r\n public shipment_Type: number,\r\n public ship_Name: string,\r\n public ship_Address: string,\r\n public ship_Code: string,\r\n public orderDate: Date,\r\n public due_Date: Date,\r\n public due_DateType: number,\r\n public logistic_Status: number,\r\n public createBy: string,\r\n public your_Reference: string,\r\n public logistic_Charge: number,\r\n public truck_Province: string,\r\n public truck_No: string,\r\n public driver_Name: string,\r\n public remark: string,\r\n public remark2: string,\r\n public external_DocumentNo: string,\r\n public comment: string,\r\n public loading_Charge: string,\r\n public orderDateDesc: string,\r\n public due_DateDesc: string,\r\n public number: string,\r\n public showDetail: boolean,\r\n public quantity: number,\r\n public amount: number,\r\n public amountIncludingVAT: number,\r\n public chkPayment: boolean,\r\n public poStatus: number,\r\n public poStatusDESC: string,\r\n public billingNo: string,\r\n ) {\r\n }\r\n}\r\n\r\nexport class ReportInvoiceItem {\r\n constructor(\r\n public rownum: number,\r\n public poNo: string,\r\n public customerNo: string,\r\n public invoiceNo: string,\r\n public postingDate: Date,\r\n public dpNo: string,\r\n public itemNo: string,\r\n public duedate: Date,\r\n public deatil: string,\r\n public quantity: number,\r\n public unitPrice: number,\r\n public truckNo: string,\r\n public time_In: Date,\r\n public time_Out: Date,\r\n public saleInvoiceLineDesc: string,\r\n public shipmentNo: string,\r\n public shipmentLineNo: string,\r\n public lneAmount: number,\r\n public logisticCharge: number,\r\n public loadingCharge: number,\r\n public vat: number,\r\n public amount: number\r\n ) {\r\n }\r\n}\r\n\r\nexport class ReportDOItem {\r\n constructor(\r\n public sO_No: string,\r\n public dO_No: string,\r\n public dP_NO: string,\r\n public quantity: number,\r\n public truckNo: string,\r\n public driverNo: string,\r\n public time_In: Date,\r\n public dateTime_InDesc: string,\r\n public time_InDesc: string,\r\n public time_Out: Date,\r\n public dateTime_OutDesc: string,\r\n public time_OutDesc: string,\r\n public weight_In: number,\r\n public weight_Out: number,\r\n public weight_Ton: number,\r\n public posting_Date: Date,\r\n public posting_DateDesc: string,\r\n public externalDocument: string,\r\n public productName: string,\r\n public itemNo: string,\r\n public customer_No: string,\r\n public shipCode: string,\r\n public shipName: string,\r\n ) {\r\n }\r\n}\r\n\r\nexport class ReportInvoicePayment {\r\n constructor(\r\n public posting_DateDesc: string,\r\n public documentTypeDESC: string,\r\n public document_No: string,\r\n public amount: number,\r\n public sales: number,\r\n public balance: number,\r\n public due_DateDesc: string\r\n ) {\r\n }\r\n}\r\n\r\nexport class ReportSumInvoicePayment {\r\n constructor(\r\n\r\n public customerNo: string,\r\n public amount: number,\r\n\r\n ) {\r\n }\r\n}\r\n\r\n\r\n\r\nexport class DocumentLineItem {\r\n constructor(\r\n public documentNo: string,\r\n public number: string,\r\n public line_No: number,\r\n public imageName: string,\r\n public detail: string,\r\n public unit_Measure: string,\r\n public quantity: number,\r\n public unit_Price: number,\r\n public amount: number,\r\n public inv_Discount_Amount: number,\r\n public amount_Including_VAT: number,\r\n public totalAmt: number,\r\n public totalAmtIncludeVAT: number,\r\n public line_Discount_Amount: number,\r\n public total_Logistic_Charge: number,\r\n public line_Discount: number,\r\n public net_Price: number,\r\n public total_Loading_Charge: number,\r\n public totalAmount: number,\r\n public total_Charge: number,\r\n public showDetail: boolean\r\n ) {\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/model/criteria/purchase.ts"],"sourceRoot":"webpack:///"}