@wavemaker/app-ng-runtime 11.5.0-next.141081 → 11.5.0-next.141083
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- app-ng-runtime/build-task/bundles/index.umd.js +1 -1
- app-ng-runtime/build-task/esm2020/prefab/prefab.build.mjs +2 -2
- app-ng-runtime/build-task/fesm2015/index.mjs +1 -1
- app-ng-runtime/build-task/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/build-task/fesm2020/index.mjs +1 -1
- app-ng-runtime/build-task/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +16 -10
- app-ng-runtime/components/base/esm2020/widgets/common/base/base.component.mjs +15 -9
- app-ng-runtime/components/base/esm2020/widgets/common/lazy-load/lazy-load.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2020/widgets/common/partial-param/partial-param.directive.mjs +2 -2
- app-ng-runtime/components/base/fesm2015/index.mjs +15 -9
- app-ng-runtime/components/base/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/base/fesm2020/index.mjs +15 -9
- app-ng-runtime/components/base/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +1 -0
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +15 -10
- app-ng-runtime/components/containers/wizard/esm2020/wizard-step/wizard-step.directive.mjs +5 -3
- app-ng-runtime/components/containers/wizard/esm2020/wizard.module.mjs +8 -4
- app-ng-runtime/components/containers/wizard/fesm2015/index.mjs +12 -6
- app-ng-runtime/components/containers/wizard/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/fesm2020/index.mjs +12 -6
- app-ng-runtime/components/containers/wizard/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/wizard.module.d.ts +2 -1
- app-ng-runtime/locales/angular/global/af-na.js +3 -2
- app-ng-runtime/locales/angular/global/af.js +3 -2
- app-ng-runtime/locales/angular/global/agq.js +3 -1
- app-ng-runtime/locales/angular/global/ak.js +2 -1
- app-ng-runtime/locales/angular/global/am.js +3 -3
- app-ng-runtime/locales/angular/global/ar-ae.js +3 -2
- app-ng-runtime/locales/angular/global/ar-bh.js +3 -2
- app-ng-runtime/locales/angular/global/ar-dj.js +3 -2
- app-ng-runtime/locales/angular/global/ar-dz.js +3 -2
- app-ng-runtime/locales/angular/global/ar-eg.js +3 -2
- app-ng-runtime/locales/angular/global/ar-eh.js +3 -2
- app-ng-runtime/locales/angular/global/ar-er.js +3 -2
- app-ng-runtime/locales/angular/global/ar-il.js +3 -2
- app-ng-runtime/locales/angular/global/ar-iq.js +3 -2
- app-ng-runtime/locales/angular/global/ar-jo.js +3 -2
- app-ng-runtime/locales/angular/global/ar-km.js +3 -2
- app-ng-runtime/locales/angular/global/ar-kw.js +3 -2
- app-ng-runtime/locales/angular/global/ar-lb.js +3 -2
- app-ng-runtime/locales/angular/global/ar-ly.js +3 -2
- app-ng-runtime/locales/angular/global/ar-ma.js +3 -2
- app-ng-runtime/locales/angular/global/ar-mr.js +3 -2
- app-ng-runtime/locales/angular/global/ar-om.js +3 -2
- app-ng-runtime/locales/angular/global/ar-ps.js +3 -2
- app-ng-runtime/locales/angular/global/ar-qa.js +3 -2
- app-ng-runtime/locales/angular/global/ar-sa.js +3 -2
- app-ng-runtime/locales/angular/global/ar-sd.js +3 -2
- app-ng-runtime/locales/angular/global/ar-so.js +3 -2
- app-ng-runtime/locales/angular/global/ar-ss.js +3 -2
- app-ng-runtime/locales/angular/global/ar-sy.js +3 -2
- app-ng-runtime/locales/angular/global/ar-td.js +3 -2
- app-ng-runtime/locales/angular/global/ar-tn.js +3 -2
- app-ng-runtime/locales/angular/global/ar-ye.js +3 -2
- app-ng-runtime/locales/angular/global/ar.js +3 -2
- app-ng-runtime/locales/angular/global/as.js +3 -3
- app-ng-runtime/locales/angular/global/asa.js +2 -1
- app-ng-runtime/locales/angular/global/ast.js +3 -3
- app-ng-runtime/locales/angular/global/az-cyrl.js +3 -1
- app-ng-runtime/locales/angular/global/az-latn.js +3 -2
- app-ng-runtime/locales/angular/global/az.js +3 -2
- app-ng-runtime/locales/angular/global/bas.js +3 -1
- app-ng-runtime/locales/angular/global/be-tarask.js +28 -0
- app-ng-runtime/locales/angular/global/be.js +3 -2
- app-ng-runtime/locales/angular/global/bem.js +2 -1
- app-ng-runtime/locales/angular/global/bez.js +2 -1
- app-ng-runtime/locales/angular/global/bg.js +3 -2
- app-ng-runtime/locales/angular/global/bm.js +4 -2
- app-ng-runtime/locales/angular/global/bn-in.js +3 -3
- app-ng-runtime/locales/angular/global/bn.js +3 -3
- app-ng-runtime/locales/angular/global/bo-in.js +3 -1
- app-ng-runtime/locales/angular/global/bo.js +4 -2
- app-ng-runtime/locales/angular/global/br.js +3 -2
- app-ng-runtime/locales/angular/global/brx.js +3 -2
- app-ng-runtime/locales/angular/global/bs-cyrl.js +3 -1
- app-ng-runtime/locales/angular/global/bs-latn.js +3 -3
- app-ng-runtime/locales/angular/global/bs.js +3 -3
- app-ng-runtime/locales/angular/global/ca-ad.js +3 -3
- app-ng-runtime/locales/angular/global/ca-es-valencia.js +3 -3
- app-ng-runtime/locales/angular/global/ca-fr.js +3 -3
- app-ng-runtime/locales/angular/global/ca-it.js +3 -3
- app-ng-runtime/locales/angular/global/ca.js +3 -3
- app-ng-runtime/locales/angular/global/ccp-in.js +4 -2
- app-ng-runtime/locales/angular/global/ccp.js +4 -2
- app-ng-runtime/locales/angular/global/ce.js +3 -2
- app-ng-runtime/locales/angular/global/ceb.js +3 -3
- app-ng-runtime/locales/angular/global/cgg.js +2 -1
- app-ng-runtime/locales/angular/global/chr.js +3 -2
- app-ng-runtime/locales/angular/global/ckb-ir.js +2 -1
- app-ng-runtime/locales/angular/global/ckb.js +2 -1
- app-ng-runtime/locales/angular/global/cs.js +3 -3
- app-ng-runtime/locales/angular/global/cy.js +3 -2
- app-ng-runtime/locales/angular/global/da-gl.js +3 -3
- app-ng-runtime/locales/angular/global/da.js +3 -3
- app-ng-runtime/locales/angular/global/dav.js +3 -1
- app-ng-runtime/locales/angular/global/de-at.js +3 -3
- app-ng-runtime/locales/angular/global/de-be.js +3 -3
- app-ng-runtime/locales/angular/global/de-ch.js +3 -3
- app-ng-runtime/locales/angular/global/de-it.js +3 -3
- app-ng-runtime/locales/angular/global/de-li.js +3 -3
- app-ng-runtime/locales/angular/global/de-lu.js +3 -3
- app-ng-runtime/locales/angular/global/de.js +3 -3
- app-ng-runtime/locales/angular/global/dje.js +4 -2
- app-ng-runtime/locales/angular/global/doi.js +24 -0
- app-ng-runtime/locales/angular/global/dsb.js +3 -3
- app-ng-runtime/locales/angular/global/dua.js +3 -1
- app-ng-runtime/locales/angular/global/dyo.js +4 -2
- app-ng-runtime/locales/angular/global/dz.js +3 -1
- app-ng-runtime/locales/angular/global/ebu.js +3 -1
- app-ng-runtime/locales/angular/global/ee-tg.js +3 -2
- app-ng-runtime/locales/angular/global/ee.js +3 -2
- app-ng-runtime/locales/angular/global/el-cy.js +3 -2
- app-ng-runtime/locales/angular/global/el.js +3 -2
- app-ng-runtime/locales/angular/global/en-001.js +3 -3
- app-ng-runtime/locales/angular/global/en-150.js +3 -3
- app-ng-runtime/locales/angular/global/en-ae.js +3 -3
- app-ng-runtime/locales/angular/global/en-ag.js +3 -3
- app-ng-runtime/locales/angular/global/en-ai.js +3 -3
- app-ng-runtime/locales/angular/global/en-as.js +2 -2
- app-ng-runtime/locales/angular/global/en-at.js +3 -3
- app-ng-runtime/locales/angular/global/en-au.js +3 -3
- app-ng-runtime/locales/angular/global/en-bb.js +3 -3
- app-ng-runtime/locales/angular/global/en-be.js +3 -3
- app-ng-runtime/locales/angular/global/en-bi.js +2 -2
- app-ng-runtime/locales/angular/global/en-bm.js +3 -3
- app-ng-runtime/locales/angular/global/en-bs.js +3 -3
- app-ng-runtime/locales/angular/global/en-bw.js +3 -3
- app-ng-runtime/locales/angular/global/en-bz.js +3 -3
- app-ng-runtime/locales/angular/global/en-ca.js +3 -3
- app-ng-runtime/locales/angular/global/en-cc.js +3 -3
- app-ng-runtime/locales/angular/global/en-ch.js +3 -3
- app-ng-runtime/locales/angular/global/en-ck.js +3 -3
- app-ng-runtime/locales/angular/global/en-cm.js +3 -3
- app-ng-runtime/locales/angular/global/en-cx.js +3 -3
- app-ng-runtime/locales/angular/global/en-cy.js +3 -3
- app-ng-runtime/locales/angular/global/en-de.js +3 -3
- app-ng-runtime/locales/angular/global/en-dg.js +3 -3
- app-ng-runtime/locales/angular/global/en-dk.js +3 -3
- app-ng-runtime/locales/angular/global/en-dm.js +3 -3
- app-ng-runtime/locales/angular/global/en-er.js +3 -3
- app-ng-runtime/locales/angular/global/en-fi.js +3 -3
- app-ng-runtime/locales/angular/global/en-fj.js +3 -3
- app-ng-runtime/locales/angular/global/en-fk.js +3 -3
- app-ng-runtime/locales/angular/global/en-fm.js +3 -3
- app-ng-runtime/locales/angular/global/en-gb.js +3 -3
- app-ng-runtime/locales/angular/global/en-gd.js +3 -3
- app-ng-runtime/locales/angular/global/en-gg.js +3 -3
- app-ng-runtime/locales/angular/global/en-gh.js +3 -3
- app-ng-runtime/locales/angular/global/en-gi.js +3 -3
- app-ng-runtime/locales/angular/global/en-gm.js +3 -3
- app-ng-runtime/locales/angular/global/en-gu.js +2 -2
- app-ng-runtime/locales/angular/global/en-gy.js +3 -3
- app-ng-runtime/locales/angular/global/en-hk.js +3 -3
- app-ng-runtime/locales/angular/global/en-ie.js +3 -3
- app-ng-runtime/locales/angular/global/en-il.js +3 -3
- app-ng-runtime/locales/angular/global/en-im.js +3 -3
- app-ng-runtime/locales/angular/global/en-in.js +3 -3
- app-ng-runtime/locales/angular/global/en-io.js +3 -3
- app-ng-runtime/locales/angular/global/en-je.js +3 -3
- app-ng-runtime/locales/angular/global/en-jm.js +3 -3
- app-ng-runtime/locales/angular/global/en-ke.js +3 -3
- app-ng-runtime/locales/angular/global/en-ki.js +3 -3
- app-ng-runtime/locales/angular/global/en-kn.js +3 -3
- app-ng-runtime/locales/angular/global/en-ky.js +3 -3
- app-ng-runtime/locales/angular/global/en-lc.js +3 -3
- app-ng-runtime/locales/angular/global/en-lr.js +3 -3
- app-ng-runtime/locales/angular/global/en-ls.js +3 -3
- app-ng-runtime/locales/angular/global/en-mg.js +3 -3
- app-ng-runtime/locales/angular/global/en-mh.js +2 -2
- app-ng-runtime/locales/angular/global/en-mo.js +3 -3
- app-ng-runtime/locales/angular/global/en-mp.js +2 -2
- app-ng-runtime/locales/angular/global/en-ms.js +3 -3
- app-ng-runtime/locales/angular/global/en-mt.js +3 -3
- app-ng-runtime/locales/angular/global/en-mu.js +3 -3
- app-ng-runtime/locales/angular/global/en-mv.js +24 -0
- app-ng-runtime/locales/angular/global/en-mw.js +3 -3
- app-ng-runtime/locales/angular/global/en-my.js +3 -3
- app-ng-runtime/locales/angular/global/en-na.js +3 -3
- app-ng-runtime/locales/angular/global/en-nf.js +3 -3
- app-ng-runtime/locales/angular/global/en-ng.js +3 -3
- app-ng-runtime/locales/angular/global/en-nl.js +3 -3
- app-ng-runtime/locales/angular/global/en-nr.js +3 -3
- app-ng-runtime/locales/angular/global/en-nu.js +3 -3
- app-ng-runtime/locales/angular/global/en-nz.js +3 -3
- app-ng-runtime/locales/angular/global/en-pg.js +3 -3
- app-ng-runtime/locales/angular/global/en-ph.js +3 -3
- app-ng-runtime/locales/angular/global/en-pk.js +3 -3
- app-ng-runtime/locales/angular/global/en-pn.js +3 -3
- app-ng-runtime/locales/angular/global/en-pr.js +2 -2
- app-ng-runtime/locales/angular/global/en-pw.js +3 -3
- app-ng-runtime/locales/angular/global/en-rw.js +3 -3
- app-ng-runtime/locales/angular/global/en-sb.js +3 -3
- app-ng-runtime/locales/angular/global/en-sc.js +3 -3
- app-ng-runtime/locales/angular/global/en-sd.js +3 -3
- app-ng-runtime/locales/angular/global/en-se.js +3 -3
- app-ng-runtime/locales/angular/global/en-sg.js +3 -3
- app-ng-runtime/locales/angular/global/en-sh.js +3 -3
- app-ng-runtime/locales/angular/global/en-si.js +3 -3
- app-ng-runtime/locales/angular/global/en-sl.js +3 -3
- app-ng-runtime/locales/angular/global/en-ss.js +3 -3
- app-ng-runtime/locales/angular/global/en-sx.js +3 -3
- app-ng-runtime/locales/angular/global/en-sz.js +3 -3
- app-ng-runtime/locales/angular/global/en-tc.js +3 -3
- app-ng-runtime/locales/angular/global/en-tk.js +3 -3
- app-ng-runtime/locales/angular/global/en-to.js +3 -3
- app-ng-runtime/locales/angular/global/en-tt.js +3 -3
- app-ng-runtime/locales/angular/global/en-tv.js +3 -3
- app-ng-runtime/locales/angular/global/en-tz.js +3 -3
- app-ng-runtime/locales/angular/global/en-ug.js +3 -3
- app-ng-runtime/locales/angular/global/en-um.js +2 -2
- app-ng-runtime/locales/angular/global/en-vc.js +3 -3
- app-ng-runtime/locales/angular/global/en-vg.js +3 -3
- app-ng-runtime/locales/angular/global/en-vi.js +2 -2
- app-ng-runtime/locales/angular/global/en-vu.js +3 -3
- app-ng-runtime/locales/angular/global/en-ws.js +3 -3
- app-ng-runtime/locales/angular/global/en-za.js +3 -3
- app-ng-runtime/locales/angular/global/en-zm.js +3 -3
- app-ng-runtime/locales/angular/global/en-zw.js +3 -3
- app-ng-runtime/locales/angular/global/en.js +2 -2
- app-ng-runtime/locales/angular/global/eo.js +2 -1
- app-ng-runtime/locales/angular/global/es-419.js +5 -2
- app-ng-runtime/locales/angular/global/es-ar.js +5 -2
- app-ng-runtime/locales/angular/global/es-bo.js +5 -2
- app-ng-runtime/locales/angular/global/es-br.js +5 -2
- app-ng-runtime/locales/angular/global/es-bz.js +5 -2
- app-ng-runtime/locales/angular/global/es-cl.js +5 -2
- app-ng-runtime/locales/angular/global/es-co.js +5 -2
- app-ng-runtime/locales/angular/global/es-cr.js +5 -2
- app-ng-runtime/locales/angular/global/es-cu.js +5 -2
- app-ng-runtime/locales/angular/global/es-do.js +5 -2
- app-ng-runtime/locales/angular/global/es-ea.js +5 -2
- app-ng-runtime/locales/angular/global/es-ec.js +5 -2
- app-ng-runtime/locales/angular/global/es-gq.js +5 -2
- app-ng-runtime/locales/angular/global/es-gt.js +5 -2
- app-ng-runtime/locales/angular/global/es-hn.js +5 -2
- app-ng-runtime/locales/angular/global/es-ic.js +5 -2
- app-ng-runtime/locales/angular/global/es-mx.js +5 -2
- app-ng-runtime/locales/angular/global/es-ni.js +5 -2
- app-ng-runtime/locales/angular/global/es-pa.js +5 -2
- app-ng-runtime/locales/angular/global/es-pe.js +5 -2
- app-ng-runtime/locales/angular/global/es-ph.js +5 -2
- app-ng-runtime/locales/angular/global/es-pr.js +5 -2
- app-ng-runtime/locales/angular/global/es-py.js +5 -2
- app-ng-runtime/locales/angular/global/es-sv.js +5 -2
- app-ng-runtime/locales/angular/global/es-us.js +5 -2
- app-ng-runtime/locales/angular/global/es-uy.js +5 -2
- app-ng-runtime/locales/angular/global/es-ve.js +5 -2
- app-ng-runtime/locales/angular/global/es.js +5 -2
- app-ng-runtime/locales/angular/global/et.js +3 -3
- app-ng-runtime/locales/angular/global/eu.js +3 -2
- app-ng-runtime/locales/angular/global/ewo.js +3 -1
- app-ng-runtime/locales/angular/global/fa-af.js +3 -3
- app-ng-runtime/locales/angular/global/fa.js +3 -3
- app-ng-runtime/locales/angular/global/ff-adlm-bf.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-cm.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-gh.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-gm.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-gw.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-lr.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-mr.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-ne.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-ng.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-sl.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm-sn.js +22 -0
- app-ng-runtime/locales/angular/global/ff-adlm.js +22 -0
- app-ng-runtime/locales/angular/global/ff-latn-bf.js +3 -3
- app-ng-runtime/locales/angular/global/ff-latn-cm.js +2 -2
- app-ng-runtime/locales/angular/global/ff-latn-gh.js +2 -2
- app-ng-runtime/locales/angular/global/ff-latn-gm.js +2 -2
- app-ng-runtime/locales/angular/global/ff-latn-gn.js +2 -2
- app-ng-runtime/locales/angular/global/ff-latn-gw.js +3 -3
- app-ng-runtime/locales/angular/global/ff-latn-lr.js +2 -2
- app-ng-runtime/locales/angular/global/ff-latn-mr.js +2 -2
- app-ng-runtime/locales/angular/global/ff-latn-ne.js +3 -3
- app-ng-runtime/locales/angular/global/ff-latn-ng.js +2 -2
- app-ng-runtime/locales/angular/global/ff-latn-sl.js +2 -2
- app-ng-runtime/locales/angular/global/ff-latn.js +3 -3
- app-ng-runtime/locales/angular/global/ff.js +3 -3
- app-ng-runtime/locales/angular/global/fi.js +3 -3
- app-ng-runtime/locales/angular/global/fil.js +3 -3
- app-ng-runtime/locales/angular/global/fo-dk.js +3 -2
- app-ng-runtime/locales/angular/global/fo.js +3 -2
- app-ng-runtime/locales/angular/global/fr-be.js +5 -3
- app-ng-runtime/locales/angular/global/fr-bf.js +5 -3
- app-ng-runtime/locales/angular/global/fr-bi.js +5 -3
- app-ng-runtime/locales/angular/global/fr-bj.js +5 -3
- app-ng-runtime/locales/angular/global/fr-bl.js +5 -3
- app-ng-runtime/locales/angular/global/fr-ca.js +5 -3
- app-ng-runtime/locales/angular/global/fr-cd.js +5 -3
- app-ng-runtime/locales/angular/global/fr-cf.js +5 -3
- app-ng-runtime/locales/angular/global/fr-cg.js +5 -3
- app-ng-runtime/locales/angular/global/fr-ch.js +5 -3
- app-ng-runtime/locales/angular/global/fr-ci.js +5 -3
- app-ng-runtime/locales/angular/global/fr-cm.js +5 -3
- app-ng-runtime/locales/angular/global/fr-dj.js +5 -3
- app-ng-runtime/locales/angular/global/fr-dz.js +5 -3
- app-ng-runtime/locales/angular/global/fr-ga.js +5 -3
- app-ng-runtime/locales/angular/global/fr-gf.js +5 -3
- app-ng-runtime/locales/angular/global/fr-gn.js +5 -3
- app-ng-runtime/locales/angular/global/fr-gp.js +5 -3
- app-ng-runtime/locales/angular/global/fr-gq.js +5 -3
- app-ng-runtime/locales/angular/global/fr-ht.js +5 -3
- app-ng-runtime/locales/angular/global/fr-km.js +5 -3
- app-ng-runtime/locales/angular/global/fr-lu.js +5 -3
- app-ng-runtime/locales/angular/global/fr-ma.js +5 -3
- app-ng-runtime/locales/angular/global/fr-mc.js +5 -3
- app-ng-runtime/locales/angular/global/fr-mf.js +5 -3
- app-ng-runtime/locales/angular/global/fr-mg.js +5 -3
- app-ng-runtime/locales/angular/global/fr-ml.js +5 -3
- app-ng-runtime/locales/angular/global/fr-mq.js +5 -3
- app-ng-runtime/locales/angular/global/fr-mr.js +5 -3
- app-ng-runtime/locales/angular/global/fr-mu.js +5 -3
- app-ng-runtime/locales/angular/global/fr-nc.js +5 -3
- app-ng-runtime/locales/angular/global/fr-ne.js +5 -3
- app-ng-runtime/locales/angular/global/fr-pf.js +5 -3
- app-ng-runtime/locales/angular/global/fr-pm.js +5 -3
- app-ng-runtime/locales/angular/global/fr-re.js +5 -3
- app-ng-runtime/locales/angular/global/fr-rw.js +5 -3
- app-ng-runtime/locales/angular/global/fr-sc.js +5 -3
- app-ng-runtime/locales/angular/global/fr-sn.js +5 -3
- app-ng-runtime/locales/angular/global/fr-sy.js +5 -3
- app-ng-runtime/locales/angular/global/fr-td.js +5 -3
- app-ng-runtime/locales/angular/global/fr-tg.js +5 -3
- app-ng-runtime/locales/angular/global/fr-tn.js +5 -3
- app-ng-runtime/locales/angular/global/fr-vu.js +5 -3
- app-ng-runtime/locales/angular/global/fr-wf.js +5 -3
- app-ng-runtime/locales/angular/global/fr-yt.js +5 -3
- app-ng-runtime/locales/angular/global/fr.js +5 -3
- app-ng-runtime/locales/angular/global/fur.js +2 -1
- app-ng-runtime/locales/angular/global/fy.js +2 -2
- app-ng-runtime/locales/angular/global/ga-gb.js +3 -2
- app-ng-runtime/locales/angular/global/ga.js +3 -2
- app-ng-runtime/locales/angular/global/gd.js +3 -2
- app-ng-runtime/locales/angular/global/gl.js +3 -3
- app-ng-runtime/locales/angular/global/gsw-fr.js +2 -1
- app-ng-runtime/locales/angular/global/gsw-li.js +2 -1
- app-ng-runtime/locales/angular/global/gsw.js +2 -1
- app-ng-runtime/locales/angular/global/gu.js +3 -3
- app-ng-runtime/locales/angular/global/guz.js +3 -1
- app-ng-runtime/locales/angular/global/gv.js +2 -2
- app-ng-runtime/locales/angular/global/ha-gh.js +3 -2
- app-ng-runtime/locales/angular/global/ha-ne.js +3 -2
- app-ng-runtime/locales/angular/global/ha.js +3 -2
- app-ng-runtime/locales/angular/global/haw.js +2 -1
- app-ng-runtime/locales/angular/global/he.js +3 -3
- app-ng-runtime/locales/angular/global/hi-latn.js +24 -0
- app-ng-runtime/locales/angular/global/hi.js +3 -3
- app-ng-runtime/locales/angular/global/hr-ba.js +3 -3
- app-ng-runtime/locales/angular/global/hr.js +3 -3
- app-ng-runtime/locales/angular/global/hsb.js +3 -3
- app-ng-runtime/locales/angular/global/hu.js +3 -2
- app-ng-runtime/locales/angular/global/hy.js +3 -3
- app-ng-runtime/locales/angular/global/ia.js +2 -2
- app-ng-runtime/locales/angular/global/id.js +4 -2
- app-ng-runtime/locales/angular/global/ig.js +4 -2
- app-ng-runtime/locales/angular/global/ii.js +4 -2
- app-ng-runtime/locales/angular/global/is.js +3 -3
- app-ng-runtime/locales/angular/global/it-ch.js +5 -3
- app-ng-runtime/locales/angular/global/it-sm.js +5 -3
- app-ng-runtime/locales/angular/global/it-va.js +5 -3
- app-ng-runtime/locales/angular/global/it.js +5 -3
- app-ng-runtime/locales/angular/global/ja.js +4 -2
- app-ng-runtime/locales/angular/global/jgo.js +2 -1
- app-ng-runtime/locales/angular/global/jmc.js +2 -1
- app-ng-runtime/locales/angular/global/jv.js +3 -1
- app-ng-runtime/locales/angular/global/ka.js +3 -2
- app-ng-runtime/locales/angular/global/kab.js +2 -2
- app-ng-runtime/locales/angular/global/kam.js +3 -1
- app-ng-runtime/locales/angular/global/kde.js +3 -1
- app-ng-runtime/locales/angular/global/kea.js +4 -2
- app-ng-runtime/locales/angular/global/kgp.js +22 -0
- app-ng-runtime/locales/angular/global/khq.js +4 -2
- app-ng-runtime/locales/angular/global/ki.js +3 -1
- app-ng-runtime/locales/angular/global/kk.js +3 -2
- app-ng-runtime/locales/angular/global/kkj.js +2 -1
- app-ng-runtime/locales/angular/global/kl.js +2 -1
- app-ng-runtime/locales/angular/global/kln.js +3 -1
- app-ng-runtime/locales/angular/global/km.js +4 -2
- app-ng-runtime/locales/angular/global/kn.js +3 -3
- app-ng-runtime/locales/angular/global/ko-kp.js +4 -2
- app-ng-runtime/locales/angular/global/ko.js +4 -2
- app-ng-runtime/locales/angular/global/kok.js +4 -2
- app-ng-runtime/locales/angular/global/ks-arab.js +3 -2
- app-ng-runtime/locales/angular/global/ks-deva.js +22 -0
- app-ng-runtime/locales/angular/global/ks.js +3 -2
- app-ng-runtime/locales/angular/global/ksb.js +2 -1
- app-ng-runtime/locales/angular/global/ksf.js +3 -1
- app-ng-runtime/locales/angular/global/ksh.js +2 -1
- app-ng-runtime/locales/angular/global/ku.js +2 -1
- app-ng-runtime/locales/angular/global/kw.js +2 -1
- app-ng-runtime/locales/angular/global/ky.js +3 -2
- app-ng-runtime/locales/angular/global/lag.js +2 -2
- app-ng-runtime/locales/angular/global/lb.js +3 -2
- app-ng-runtime/locales/angular/global/lg.js +2 -1
- app-ng-runtime/locales/angular/global/lkt.js +3 -1
- app-ng-runtime/locales/angular/global/ln-ao.js +2 -1
- app-ng-runtime/locales/angular/global/ln-cf.js +2 -1
- app-ng-runtime/locales/angular/global/ln-cg.js +2 -1
- app-ng-runtime/locales/angular/global/ln.js +2 -1
- app-ng-runtime/locales/angular/global/lo.js +4 -2
- app-ng-runtime/locales/angular/global/lrc-iq.js +3 -1
- app-ng-runtime/locales/angular/global/lrc.js +3 -1
- app-ng-runtime/locales/angular/global/lt.js +3 -3
- app-ng-runtime/locales/angular/global/lu.js +3 -1
- app-ng-runtime/locales/angular/global/luo.js +3 -1
- app-ng-runtime/locales/angular/global/luy.js +3 -1
- app-ng-runtime/locales/angular/global/lv.js +3 -3
- app-ng-runtime/locales/angular/global/mai.js +22 -0
- app-ng-runtime/locales/angular/global/mas-tz.js +2 -1
- app-ng-runtime/locales/angular/global/mas.js +2 -1
- app-ng-runtime/locales/angular/global/mer.js +3 -1
- app-ng-runtime/locales/angular/global/mfe.js +3 -1
- app-ng-runtime/locales/angular/global/mg.js +2 -1
- app-ng-runtime/locales/angular/global/mgh.js +3 -1
- app-ng-runtime/locales/angular/global/mgo.js +2 -1
- app-ng-runtime/locales/angular/global/mi.js +3 -1
- app-ng-runtime/locales/angular/global/mk.js +3 -3
- app-ng-runtime/locales/angular/global/ml.js +3 -2
- app-ng-runtime/locales/angular/global/mn.js +3 -2
- app-ng-runtime/locales/angular/global/mni-beng.js +22 -0
- app-ng-runtime/locales/angular/global/mni.js +22 -0
- app-ng-runtime/locales/angular/global/mr.js +3 -2
- app-ng-runtime/locales/angular/global/ms-bn.js +4 -2
- app-ng-runtime/locales/angular/global/ms-id.js +22 -0
- app-ng-runtime/locales/angular/global/ms-sg.js +4 -2
- app-ng-runtime/locales/angular/global/ms.js +4 -2
- app-ng-runtime/locales/angular/global/mt.js +3 -2
- app-ng-runtime/locales/angular/global/mua.js +3 -1
- app-ng-runtime/locales/angular/global/my.js +4 -2
- app-ng-runtime/locales/angular/global/mzn.js +4 -2
- app-ng-runtime/locales/angular/global/naq.js +2 -1
- app-ng-runtime/locales/angular/global/nb-sj.js +3 -2
- app-ng-runtime/locales/angular/global/nb.js +3 -2
- app-ng-runtime/locales/angular/global/nd.js +2 -1
- app-ng-runtime/locales/angular/global/nds-nl.js +3 -1
- app-ng-runtime/locales/angular/global/nds.js +3 -1
- app-ng-runtime/locales/angular/global/ne-in.js +3 -2
- app-ng-runtime/locales/angular/global/ne.js +3 -2
- app-ng-runtime/locales/angular/global/nl-aw.js +3 -3
- app-ng-runtime/locales/angular/global/nl-be.js +3 -3
- app-ng-runtime/locales/angular/global/nl-bq.js +3 -3
- app-ng-runtime/locales/angular/global/nl-cw.js +3 -3
- app-ng-runtime/locales/angular/global/nl-sr.js +3 -3
- app-ng-runtime/locales/angular/global/nl-sx.js +3 -3
- app-ng-runtime/locales/angular/global/nl.js +3 -3
- app-ng-runtime/locales/angular/global/nmg.js +3 -1
- app-ng-runtime/locales/angular/global/nn.js +3 -2
- app-ng-runtime/locales/angular/global/nnh.js +2 -1
- app-ng-runtime/locales/angular/global/no.js +24 -0
- app-ng-runtime/locales/angular/global/nus.js +3 -1
- app-ng-runtime/locales/angular/global/nyn.js +2 -1
- app-ng-runtime/locales/angular/global/om-ke.js +2 -1
- app-ng-runtime/locales/angular/global/om.js +2 -1
- app-ng-runtime/locales/angular/global/or.js +3 -2
- app-ng-runtime/locales/angular/global/os-ru.js +2 -1
- app-ng-runtime/locales/angular/global/os.js +2 -1
- app-ng-runtime/locales/angular/global/pa-arab.js +3 -1
- app-ng-runtime/locales/angular/global/pa-guru.js +3 -2
- app-ng-runtime/locales/angular/global/pa.js +3 -2
- app-ng-runtime/locales/angular/global/pcm.js +24 -0
- app-ng-runtime/locales/angular/global/pl.js +3 -3
- app-ng-runtime/locales/angular/global/ps-pk.js +3 -2
- app-ng-runtime/locales/angular/global/ps.js +3 -2
- app-ng-runtime/locales/angular/global/pt-ao.js +5 -3
- app-ng-runtime/locales/angular/global/pt-ch.js +5 -3
- app-ng-runtime/locales/angular/global/pt-cv.js +5 -3
- app-ng-runtime/locales/angular/global/pt-gq.js +5 -3
- app-ng-runtime/locales/angular/global/pt-gw.js +5 -3
- app-ng-runtime/locales/angular/global/pt-lu.js +5 -3
- app-ng-runtime/locales/angular/global/pt-mo.js +5 -3
- app-ng-runtime/locales/angular/global/pt-mz.js +5 -3
- app-ng-runtime/locales/angular/global/pt-pt.js +5 -3
- app-ng-runtime/locales/angular/global/pt-st.js +5 -3
- app-ng-runtime/locales/angular/global/pt-tl.js +5 -3
- app-ng-runtime/locales/angular/global/pt.js +5 -3
- app-ng-runtime/locales/angular/global/qu-bo.js +4 -2
- app-ng-runtime/locales/angular/global/qu-ec.js +4 -2
- app-ng-runtime/locales/angular/global/qu.js +4 -2
- app-ng-runtime/locales/angular/global/rm.js +3 -2
- app-ng-runtime/locales/angular/global/rn.js +3 -1
- app-ng-runtime/locales/angular/global/ro-md.js +3 -3
- app-ng-runtime/locales/angular/global/ro.js +3 -3
- app-ng-runtime/locales/angular/global/rof.js +2 -1
- app-ng-runtime/locales/angular/global/ru-by.js +3 -3
- app-ng-runtime/locales/angular/global/ru-kg.js +3 -3
- app-ng-runtime/locales/angular/global/ru-kz.js +3 -3
- app-ng-runtime/locales/angular/global/ru-md.js +3 -3
- app-ng-runtime/locales/angular/global/ru-ua.js +3 -3
- app-ng-runtime/locales/angular/global/ru.js +3 -3
- app-ng-runtime/locales/angular/global/rw.js +4 -2
- app-ng-runtime/locales/angular/global/rwk.js +2 -1
- app-ng-runtime/locales/angular/global/sa.js +22 -0
- app-ng-runtime/locales/angular/global/sah.js +3 -1
- app-ng-runtime/locales/angular/global/saq.js +2 -1
- app-ng-runtime/locales/angular/global/sat-olck.js +26 -0
- app-ng-runtime/locales/angular/global/sat.js +26 -0
- app-ng-runtime/locales/angular/global/sbp.js +3 -1
- app-ng-runtime/locales/angular/global/sc.js +24 -0
- app-ng-runtime/locales/angular/global/sd-arab.js +3 -2
- app-ng-runtime/locales/angular/global/sd-deva.js +22 -0
- app-ng-runtime/locales/angular/global/sd.js +3 -2
- app-ng-runtime/locales/angular/global/se-fi.js +2 -1
- app-ng-runtime/locales/angular/global/se-se.js +2 -1
- app-ng-runtime/locales/angular/global/se.js +2 -1
- app-ng-runtime/locales/angular/global/seh.js +2 -1
- app-ng-runtime/locales/angular/global/ses.js +4 -2
- app-ng-runtime/locales/angular/global/sg.js +3 -1
- app-ng-runtime/locales/angular/global/shi-latn.js +3 -1
- app-ng-runtime/locales/angular/global/shi-tfng.js +2 -2
- app-ng-runtime/locales/angular/global/shi.js +2 -2
- app-ng-runtime/locales/angular/global/si.js +3 -3
- app-ng-runtime/locales/angular/global/sk.js +3 -3
- app-ng-runtime/locales/angular/global/sl.js +3 -3
- app-ng-runtime/locales/angular/global/smn.js +2 -1
- app-ng-runtime/locales/angular/global/sn.js +2 -1
- app-ng-runtime/locales/angular/global/so-dj.js +3 -2
- app-ng-runtime/locales/angular/global/so-et.js +3 -2
- app-ng-runtime/locales/angular/global/so-ke.js +3 -2
- app-ng-runtime/locales/angular/global/so.js +3 -2
- app-ng-runtime/locales/angular/global/sq-mk.js +3 -2
- app-ng-runtime/locales/angular/global/sq-xk.js +3 -2
- app-ng-runtime/locales/angular/global/sq.js +3 -2
- app-ng-runtime/locales/angular/global/sr-cyrl-ba.js +3 -3
- app-ng-runtime/locales/angular/global/sr-cyrl-me.js +3 -3
- app-ng-runtime/locales/angular/global/sr-cyrl-xk.js +3 -3
- app-ng-runtime/locales/angular/global/sr-cyrl.js +3 -3
- app-ng-runtime/locales/angular/global/sr-latn-ba.js +4 -2
- app-ng-runtime/locales/angular/global/sr-latn-me.js +4 -2
- app-ng-runtime/locales/angular/global/sr-latn-xk.js +4 -2
- app-ng-runtime/locales/angular/global/sr-latn.js +4 -2
- app-ng-runtime/locales/angular/global/sr.js +3 -3
- app-ng-runtime/locales/angular/global/su-latn.js +22 -0
- app-ng-runtime/locales/angular/global/su.js +22 -0
- app-ng-runtime/locales/angular/global/sv-ax.js +3 -3
- app-ng-runtime/locales/angular/global/sv-fi.js +3 -3
- app-ng-runtime/locales/angular/global/sv.js +3 -3
- app-ng-runtime/locales/angular/global/sw-cd.js +3 -3
- app-ng-runtime/locales/angular/global/sw-ke.js +3 -3
- app-ng-runtime/locales/angular/global/sw-ug.js +3 -3
- app-ng-runtime/locales/angular/global/sw.js +3 -3
- app-ng-runtime/locales/angular/global/ta-lk.js +3 -2
- app-ng-runtime/locales/angular/global/ta-my.js +3 -2
- app-ng-runtime/locales/angular/global/ta-sg.js +3 -2
- app-ng-runtime/locales/angular/global/ta.js +3 -2
- app-ng-runtime/locales/angular/global/te.js +3 -2
- app-ng-runtime/locales/angular/global/teo-ke.js +2 -1
- app-ng-runtime/locales/angular/global/teo.js +2 -1
- app-ng-runtime/locales/angular/global/tg.js +4 -2
- app-ng-runtime/locales/angular/global/th.js +4 -2
- app-ng-runtime/locales/angular/global/ti-er.js +3 -2
- app-ng-runtime/locales/angular/global/ti.js +3 -2
- app-ng-runtime/locales/angular/global/tk.js +3 -2
- app-ng-runtime/locales/angular/global/to.js +3 -1
- app-ng-runtime/locales/angular/global/tr-cy.js +3 -2
- app-ng-runtime/locales/angular/global/tr.js +3 -2
- app-ng-runtime/locales/angular/global/tt.js +4 -2
- app-ng-runtime/locales/angular/global/twq.js +4 -2
- app-ng-runtime/locales/angular/global/tzm.js +2 -1
- app-ng-runtime/locales/angular/global/ug.js +3 -2
- app-ng-runtime/locales/angular/global/uk.js +3 -3
- app-ng-runtime/locales/angular/global/und.js +24 -0
- app-ng-runtime/locales/angular/global/ur-in.js +3 -3
- app-ng-runtime/locales/angular/global/ur.js +3 -3
- app-ng-runtime/locales/angular/global/uz-arab.js +3 -1
- app-ng-runtime/locales/angular/global/uz-cyrl.js +3 -1
- app-ng-runtime/locales/angular/global/uz-latn.js +3 -2
- app-ng-runtime/locales/angular/global/uz.js +3 -2
- app-ng-runtime/locales/angular/global/vai-latn.js +3 -1
- app-ng-runtime/locales/angular/global/vai-vaii.js +3 -1
- app-ng-runtime/locales/angular/global/vai.js +3 -1
- app-ng-runtime/locales/angular/global/vi.js +4 -2
- app-ng-runtime/locales/angular/global/vun.js +2 -1
- app-ng-runtime/locales/angular/global/wae.js +2 -1
- app-ng-runtime/locales/angular/global/wo.js +4 -2
- app-ng-runtime/locales/angular/global/xh.js +2 -1
- app-ng-runtime/locales/angular/global/xog.js +2 -1
- app-ng-runtime/locales/angular/global/yav.js +3 -1
- app-ng-runtime/locales/angular/global/yi.js +2 -2
- app-ng-runtime/locales/angular/global/yo-bj.js +4 -2
- app-ng-runtime/locales/angular/global/yo.js +4 -2
- app-ng-runtime/locales/angular/global/yrl-co.js +22 -0
- app-ng-runtime/locales/angular/global/yrl-ve.js +22 -0
- app-ng-runtime/locales/angular/global/yrl.js +22 -0
- app-ng-runtime/locales/angular/global/yue-hans.js +4 -2
- app-ng-runtime/locales/angular/global/yue-hant.js +4 -2
- app-ng-runtime/locales/angular/global/yue.js +4 -2
- app-ng-runtime/locales/angular/global/zgh.js +3 -1
- app-ng-runtime/locales/angular/global/zh-hans-hk.js +4 -2
- app-ng-runtime/locales/angular/global/zh-hans-mo.js +4 -2
- app-ng-runtime/locales/angular/global/zh-hans-sg.js +4 -2
- app-ng-runtime/locales/angular/global/zh-hans.js +4 -2
- app-ng-runtime/locales/angular/global/zh-hant-hk.js +4 -2
- app-ng-runtime/locales/angular/global/zh-hant-mo.js +4 -2
- app-ng-runtime/locales/angular/global/zh-hant.js +4 -2
- app-ng-runtime/locales/angular/global/zh.js +4 -2
- app-ng-runtime/locales/angular/global/zu.js +3 -3
- app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +26 -25
- app-ng-runtime/mobile/runtime/bundles/index.umd.js +66 -8
- app-ng-runtime/mobile/runtime/esm2020/mobile-runtime.module.mjs +73 -6
- app-ng-runtime/mobile/runtime/fesm2015/index.mjs +73 -6
- app-ng-runtime/mobile/runtime/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime/fesm2020/index.mjs +73 -6
- app-ng-runtime/mobile/runtime/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime/mobile-runtime.module.d.ts +17 -2
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +75 -58
- app-ng-runtime/runtime/base/esm2020/components/base-page.component.mjs +11 -11
- app-ng-runtime/runtime/base/esm2020/components/base-partial.component.mjs +9 -9
- app-ng-runtime/runtime/base/esm2020/components/base-prefab.component.mjs +7 -8
- app-ng-runtime/runtime/base/esm2020/components/base-spa-page.component.mjs +12 -12
- app-ng-runtime/runtime/base/esm2020/runtime-base.module.mjs +35 -14
- app-ng-runtime/runtime/base/esm2020/services/dynamic-component-ref-provider.service.mjs +4 -7
- app-ng-runtime/runtime/base/fesm2015/index.mjs +72 -55
- app-ng-runtime/runtime/base/fesm2015/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/fesm2020/index.mjs +72 -55
- app-ng-runtime/runtime/base/fesm2020/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/runtime-base.module.d.ts +7 -6
- app-ng-runtime/locales/angular/af-na.js +0 -28
- app-ng-runtime/locales/angular/af.js +0 -28
- app-ng-runtime/locales/angular/agq.js +0 -26
- app-ng-runtime/locales/angular/ak.js +0 -28
- app-ng-runtime/locales/angular/am.js +0 -29
- app-ng-runtime/locales/angular/ar-ae.js +0 -36
- app-ng-runtime/locales/angular/ar-bh.js +0 -36
- app-ng-runtime/locales/angular/ar-dj.js +0 -36
- app-ng-runtime/locales/angular/ar-dz.js +0 -36
- app-ng-runtime/locales/angular/ar-eg.js +0 -36
- app-ng-runtime/locales/angular/ar-eh.js +0 -36
- app-ng-runtime/locales/angular/ar-er.js +0 -36
- app-ng-runtime/locales/angular/ar-il.js +0 -36
- app-ng-runtime/locales/angular/ar-iq.js +0 -36
- app-ng-runtime/locales/angular/ar-jo.js +0 -36
- app-ng-runtime/locales/angular/ar-km.js +0 -36
- app-ng-runtime/locales/angular/ar-kw.js +0 -36
- app-ng-runtime/locales/angular/ar-lb.js +0 -36
- app-ng-runtime/locales/angular/ar-ly.js +0 -36
- app-ng-runtime/locales/angular/ar-ma.js +0 -36
- app-ng-runtime/locales/angular/ar-mr.js +0 -36
- app-ng-runtime/locales/angular/ar-om.js +0 -36
- app-ng-runtime/locales/angular/ar-ps.js +0 -36
- app-ng-runtime/locales/angular/ar-qa.js +0 -36
- app-ng-runtime/locales/angular/ar-sa.js +0 -36
- app-ng-runtime/locales/angular/ar-sd.js +0 -36
- app-ng-runtime/locales/angular/ar-so.js +0 -36
- app-ng-runtime/locales/angular/ar-ss.js +0 -36
- app-ng-runtime/locales/angular/ar-sy.js +0 -36
- app-ng-runtime/locales/angular/ar-td.js +0 -36
- app-ng-runtime/locales/angular/ar-tn.js +0 -36
- app-ng-runtime/locales/angular/ar-ye.js +0 -36
- app-ng-runtime/locales/angular/ar.js +0 -36
- app-ng-runtime/locales/angular/as.js +0 -29
- app-ng-runtime/locales/angular/asa.js +0 -28
- app-ng-runtime/locales/angular/ast.js +0 -29
- app-ng-runtime/locales/angular/az-cyrl.js +0 -26
- app-ng-runtime/locales/angular/az-latn.js +0 -28
- app-ng-runtime/locales/angular/az.js +0 -28
- app-ng-runtime/locales/angular/bas.js +0 -26
- app-ng-runtime/locales/angular/be.js +0 -32
- app-ng-runtime/locales/angular/bem.js +0 -28
- app-ng-runtime/locales/angular/bez.js +0 -28
- app-ng-runtime/locales/angular/bg.js +0 -28
- app-ng-runtime/locales/angular/bm.js +0 -26
- app-ng-runtime/locales/angular/bn-in.js +0 -29
- app-ng-runtime/locales/angular/bn.js +0 -29
- app-ng-runtime/locales/angular/bo-in.js +0 -26
- app-ng-runtime/locales/angular/bo.js +0 -26
- app-ng-runtime/locales/angular/br.js +0 -34
- app-ng-runtime/locales/angular/brx.js +0 -28
- app-ng-runtime/locales/angular/bs-cyrl.js +0 -26
- app-ng-runtime/locales/angular/bs-latn.js +0 -31
- app-ng-runtime/locales/angular/bs.js +0 -31
- app-ng-runtime/locales/angular/ca-ad.js +0 -29
- app-ng-runtime/locales/angular/ca-es-valencia.js +0 -29
- app-ng-runtime/locales/angular/ca-fr.js +0 -29
- app-ng-runtime/locales/angular/ca-it.js +0 -29
- app-ng-runtime/locales/angular/ca.js +0 -29
- app-ng-runtime/locales/angular/ccp-in.js +0 -26
- app-ng-runtime/locales/angular/ccp.js +0 -26
- app-ng-runtime/locales/angular/ce.js +0 -28
- app-ng-runtime/locales/angular/ceb.js +0 -29
- app-ng-runtime/locales/angular/cgg.js +0 -28
- app-ng-runtime/locales/angular/chr.js +0 -28
- app-ng-runtime/locales/angular/ckb-ir.js +0 -28
- app-ng-runtime/locales/angular/ckb.js +0 -28
- app-ng-runtime/locales/angular/cs.js +0 -33
- app-ng-runtime/locales/angular/cu.js +0 -26
- app-ng-runtime/locales/angular/cy.js +0 -36
- app-ng-runtime/locales/angular/da-gl.js +0 -29
- app-ng-runtime/locales/angular/da.js +0 -29
- app-ng-runtime/locales/angular/dav.js +0 -26
- app-ng-runtime/locales/angular/de-at.js +0 -29
- app-ng-runtime/locales/angular/de-be.js +0 -29
- app-ng-runtime/locales/angular/de-ch.js +0 -29
- app-ng-runtime/locales/angular/de-it.js +0 -29
- app-ng-runtime/locales/angular/de-li.js +0 -29
- app-ng-runtime/locales/angular/de-lu.js +0 -29
- app-ng-runtime/locales/angular/de.js +0 -29
- app-ng-runtime/locales/angular/dje.js +0 -26
- app-ng-runtime/locales/angular/dsb.js +0 -33
- app-ng-runtime/locales/angular/dua.js +0 -26
- app-ng-runtime/locales/angular/dyo.js +0 -26
- app-ng-runtime/locales/angular/dz.js +0 -26
- app-ng-runtime/locales/angular/ebu.js +0 -26
- app-ng-runtime/locales/angular/ee-tg.js +0 -28
- app-ng-runtime/locales/angular/ee.js +0 -28
- app-ng-runtime/locales/angular/el-cy.js +0 -28
- app-ng-runtime/locales/angular/el.js +0 -28
- app-ng-runtime/locales/angular/en-001.js +0 -29
- app-ng-runtime/locales/angular/en-150.js +0 -29
- app-ng-runtime/locales/angular/en-ae.js +0 -29
- app-ng-runtime/locales/angular/en-ag.js +0 -29
- app-ng-runtime/locales/angular/en-ai.js +0 -29
- app-ng-runtime/locales/angular/en-as.js +0 -29
- app-ng-runtime/locales/angular/en-at.js +0 -29
- app-ng-runtime/locales/angular/en-au.js +0 -29
- app-ng-runtime/locales/angular/en-bb.js +0 -29
- app-ng-runtime/locales/angular/en-be.js +0 -29
- app-ng-runtime/locales/angular/en-bi.js +0 -29
- app-ng-runtime/locales/angular/en-bm.js +0 -29
- app-ng-runtime/locales/angular/en-bs.js +0 -29
- app-ng-runtime/locales/angular/en-bw.js +0 -29
- app-ng-runtime/locales/angular/en-bz.js +0 -29
- app-ng-runtime/locales/angular/en-ca.js +0 -29
- app-ng-runtime/locales/angular/en-cc.js +0 -29
- app-ng-runtime/locales/angular/en-ch.js +0 -29
- app-ng-runtime/locales/angular/en-ck.js +0 -29
- app-ng-runtime/locales/angular/en-cm.js +0 -29
- app-ng-runtime/locales/angular/en-cx.js +0 -29
- app-ng-runtime/locales/angular/en-cy.js +0 -29
- app-ng-runtime/locales/angular/en-de.js +0 -29
- app-ng-runtime/locales/angular/en-dg.js +0 -29
- app-ng-runtime/locales/angular/en-dk.js +0 -29
- app-ng-runtime/locales/angular/en-dm.js +0 -29
- app-ng-runtime/locales/angular/en-er.js +0 -29
- app-ng-runtime/locales/angular/en-fi.js +0 -29
- app-ng-runtime/locales/angular/en-fj.js +0 -29
- app-ng-runtime/locales/angular/en-fk.js +0 -29
- app-ng-runtime/locales/angular/en-fm.js +0 -29
- app-ng-runtime/locales/angular/en-gb.js +0 -29
- app-ng-runtime/locales/angular/en-gd.js +0 -29
- app-ng-runtime/locales/angular/en-gg.js +0 -29
- app-ng-runtime/locales/angular/en-gh.js +0 -29
- app-ng-runtime/locales/angular/en-gi.js +0 -29
- app-ng-runtime/locales/angular/en-gm.js +0 -29
- app-ng-runtime/locales/angular/en-gu.js +0 -29
- app-ng-runtime/locales/angular/en-gy.js +0 -29
- app-ng-runtime/locales/angular/en-hk.js +0 -29
- app-ng-runtime/locales/angular/en-ie.js +0 -29
- app-ng-runtime/locales/angular/en-il.js +0 -29
- app-ng-runtime/locales/angular/en-im.js +0 -29
- app-ng-runtime/locales/angular/en-in.js +0 -29
- app-ng-runtime/locales/angular/en-io.js +0 -29
- app-ng-runtime/locales/angular/en-je.js +0 -29
- app-ng-runtime/locales/angular/en-jm.js +0 -29
- app-ng-runtime/locales/angular/en-ke.js +0 -29
- app-ng-runtime/locales/angular/en-ki.js +0 -29
- app-ng-runtime/locales/angular/en-kn.js +0 -29
- app-ng-runtime/locales/angular/en-ky.js +0 -29
- app-ng-runtime/locales/angular/en-lc.js +0 -29
- app-ng-runtime/locales/angular/en-lr.js +0 -29
- app-ng-runtime/locales/angular/en-ls.js +0 -29
- app-ng-runtime/locales/angular/en-mg.js +0 -29
- app-ng-runtime/locales/angular/en-mh.js +0 -29
- app-ng-runtime/locales/angular/en-mo.js +0 -29
- app-ng-runtime/locales/angular/en-mp.js +0 -29
- app-ng-runtime/locales/angular/en-ms.js +0 -29
- app-ng-runtime/locales/angular/en-mt.js +0 -29
- app-ng-runtime/locales/angular/en-mu.js +0 -29
- app-ng-runtime/locales/angular/en-mw.js +0 -29
- app-ng-runtime/locales/angular/en-my.js +0 -29
- app-ng-runtime/locales/angular/en-na.js +0 -29
- app-ng-runtime/locales/angular/en-nf.js +0 -29
- app-ng-runtime/locales/angular/en-ng.js +0 -29
- app-ng-runtime/locales/angular/en-nl.js +0 -29
- app-ng-runtime/locales/angular/en-nr.js +0 -29
- app-ng-runtime/locales/angular/en-nu.js +0 -29
- app-ng-runtime/locales/angular/en-nz.js +0 -29
- app-ng-runtime/locales/angular/en-pg.js +0 -29
- app-ng-runtime/locales/angular/en-ph.js +0 -29
- app-ng-runtime/locales/angular/en-pk.js +0 -29
- app-ng-runtime/locales/angular/en-pn.js +0 -29
- app-ng-runtime/locales/angular/en-pr.js +0 -29
- app-ng-runtime/locales/angular/en-pw.js +0 -29
- app-ng-runtime/locales/angular/en-rw.js +0 -29
- app-ng-runtime/locales/angular/en-sb.js +0 -29
- app-ng-runtime/locales/angular/en-sc.js +0 -29
- app-ng-runtime/locales/angular/en-sd.js +0 -29
- app-ng-runtime/locales/angular/en-se.js +0 -29
- app-ng-runtime/locales/angular/en-sg.js +0 -29
- app-ng-runtime/locales/angular/en-sh.js +0 -29
- app-ng-runtime/locales/angular/en-si.js +0 -29
- app-ng-runtime/locales/angular/en-sl.js +0 -29
- app-ng-runtime/locales/angular/en-ss.js +0 -29
- app-ng-runtime/locales/angular/en-sx.js +0 -29
- app-ng-runtime/locales/angular/en-sz.js +0 -29
- app-ng-runtime/locales/angular/en-tc.js +0 -29
- app-ng-runtime/locales/angular/en-tk.js +0 -29
- app-ng-runtime/locales/angular/en-to.js +0 -29
- app-ng-runtime/locales/angular/en-tt.js +0 -29
- app-ng-runtime/locales/angular/en-tv.js +0 -29
- app-ng-runtime/locales/angular/en-tz.js +0 -29
- app-ng-runtime/locales/angular/en-ug.js +0 -29
- app-ng-runtime/locales/angular/en-um.js +0 -29
- app-ng-runtime/locales/angular/en-us-posix.js +0 -29
- app-ng-runtime/locales/angular/en-vc.js +0 -29
- app-ng-runtime/locales/angular/en-vg.js +0 -29
- app-ng-runtime/locales/angular/en-vi.js +0 -29
- app-ng-runtime/locales/angular/en-vu.js +0 -29
- app-ng-runtime/locales/angular/en-ws.js +0 -29
- app-ng-runtime/locales/angular/en-za.js +0 -29
- app-ng-runtime/locales/angular/en-zm.js +0 -29
- app-ng-runtime/locales/angular/en-zw.js +0 -29
- app-ng-runtime/locales/angular/en.js +0 -29
- app-ng-runtime/locales/angular/eo.js +0 -28
- app-ng-runtime/locales/angular/es-419.js +0 -28
- app-ng-runtime/locales/angular/es-ar.js +0 -28
- app-ng-runtime/locales/angular/es-bo.js +0 -28
- app-ng-runtime/locales/angular/es-br.js +0 -28
- app-ng-runtime/locales/angular/es-bz.js +0 -28
- app-ng-runtime/locales/angular/es-cl.js +0 -28
- app-ng-runtime/locales/angular/es-co.js +0 -28
- app-ng-runtime/locales/angular/es-cr.js +0 -28
- app-ng-runtime/locales/angular/es-cu.js +0 -28
- app-ng-runtime/locales/angular/es-do.js +0 -28
- app-ng-runtime/locales/angular/es-ea.js +0 -28
- app-ng-runtime/locales/angular/es-ec.js +0 -28
- app-ng-runtime/locales/angular/es-gq.js +0 -28
- app-ng-runtime/locales/angular/es-gt.js +0 -28
- app-ng-runtime/locales/angular/es-hn.js +0 -28
- app-ng-runtime/locales/angular/es-ic.js +0 -28
- app-ng-runtime/locales/angular/es-mx.js +0 -28
- app-ng-runtime/locales/angular/es-ni.js +0 -28
- app-ng-runtime/locales/angular/es-pa.js +0 -28
- app-ng-runtime/locales/angular/es-pe.js +0 -28
- app-ng-runtime/locales/angular/es-ph.js +0 -28
- app-ng-runtime/locales/angular/es-pr.js +0 -28
- app-ng-runtime/locales/angular/es-py.js +0 -28
- app-ng-runtime/locales/angular/es-sv.js +0 -28
- app-ng-runtime/locales/angular/es-us.js +0 -28
- app-ng-runtime/locales/angular/es-uy.js +0 -28
- app-ng-runtime/locales/angular/es-ve.js +0 -28
- app-ng-runtime/locales/angular/es.js +0 -28
- app-ng-runtime/locales/angular/et.js +0 -29
- app-ng-runtime/locales/angular/eu.js +0 -28
- app-ng-runtime/locales/angular/ewo.js +0 -26
- app-ng-runtime/locales/angular/fa-af.js +0 -29
- app-ng-runtime/locales/angular/fa.js +0 -29
- app-ng-runtime/locales/angular/ff-cm.js +0 -56
- app-ng-runtime/locales/angular/ff-gn.js +0 -56
- app-ng-runtime/locales/angular/ff-latn-bf.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-cm.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-gh.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-gm.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-gn.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-gw.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-lr.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-mr.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-ne.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-ng.js +0 -29
- app-ng-runtime/locales/angular/ff-latn-sl.js +0 -29
- app-ng-runtime/locales/angular/ff-latn.js +0 -29
- app-ng-runtime/locales/angular/ff-mr.js +0 -56
- app-ng-runtime/locales/angular/ff.js +0 -29
- app-ng-runtime/locales/angular/fi.js +0 -29
- app-ng-runtime/locales/angular/fil.js +0 -29
- app-ng-runtime/locales/angular/fo-dk.js +0 -28
- app-ng-runtime/locales/angular/fo.js +0 -28
- app-ng-runtime/locales/angular/fr-be.js +0 -29
- app-ng-runtime/locales/angular/fr-bf.js +0 -29
- app-ng-runtime/locales/angular/fr-bi.js +0 -29
- app-ng-runtime/locales/angular/fr-bj.js +0 -29
- app-ng-runtime/locales/angular/fr-bl.js +0 -29
- app-ng-runtime/locales/angular/fr-ca.js +0 -29
- app-ng-runtime/locales/angular/fr-cd.js +0 -29
- app-ng-runtime/locales/angular/fr-cf.js +0 -29
- app-ng-runtime/locales/angular/fr-cg.js +0 -29
- app-ng-runtime/locales/angular/fr-ch.js +0 -29
- app-ng-runtime/locales/angular/fr-ci.js +0 -29
- app-ng-runtime/locales/angular/fr-cm.js +0 -29
- app-ng-runtime/locales/angular/fr-dj.js +0 -29
- app-ng-runtime/locales/angular/fr-dz.js +0 -29
- app-ng-runtime/locales/angular/fr-ga.js +0 -29
- app-ng-runtime/locales/angular/fr-gf.js +0 -29
- app-ng-runtime/locales/angular/fr-gn.js +0 -29
- app-ng-runtime/locales/angular/fr-gp.js +0 -29
- app-ng-runtime/locales/angular/fr-gq.js +0 -29
- app-ng-runtime/locales/angular/fr-ht.js +0 -29
- app-ng-runtime/locales/angular/fr-km.js +0 -29
- app-ng-runtime/locales/angular/fr-lu.js +0 -29
- app-ng-runtime/locales/angular/fr-ma.js +0 -29
- app-ng-runtime/locales/angular/fr-mc.js +0 -29
- app-ng-runtime/locales/angular/fr-mf.js +0 -29
- app-ng-runtime/locales/angular/fr-mg.js +0 -29
- app-ng-runtime/locales/angular/fr-ml.js +0 -29
- app-ng-runtime/locales/angular/fr-mq.js +0 -29
- app-ng-runtime/locales/angular/fr-mr.js +0 -29
- app-ng-runtime/locales/angular/fr-mu.js +0 -29
- app-ng-runtime/locales/angular/fr-nc.js +0 -29
- app-ng-runtime/locales/angular/fr-ne.js +0 -29
- app-ng-runtime/locales/angular/fr-pf.js +0 -29
- app-ng-runtime/locales/angular/fr-pm.js +0 -29
- app-ng-runtime/locales/angular/fr-re.js +0 -29
- app-ng-runtime/locales/angular/fr-rw.js +0 -29
- app-ng-runtime/locales/angular/fr-sc.js +0 -29
- app-ng-runtime/locales/angular/fr-sn.js +0 -29
- app-ng-runtime/locales/angular/fr-sy.js +0 -29
- app-ng-runtime/locales/angular/fr-td.js +0 -29
- app-ng-runtime/locales/angular/fr-tg.js +0 -29
- app-ng-runtime/locales/angular/fr-tn.js +0 -29
- app-ng-runtime/locales/angular/fr-vu.js +0 -29
- app-ng-runtime/locales/angular/fr-wf.js +0 -29
- app-ng-runtime/locales/angular/fr-yt.js +0 -29
- app-ng-runtime/locales/angular/fr.js +0 -29
- app-ng-runtime/locales/angular/fur.js +0 -28
- app-ng-runtime/locales/angular/fy.js +0 -29
- app-ng-runtime/locales/angular/ga-gb.js +0 -34
- app-ng-runtime/locales/angular/ga.js +0 -34
- app-ng-runtime/locales/angular/gd.js +0 -32
- app-ng-runtime/locales/angular/gl.js +0 -29
- app-ng-runtime/locales/angular/global/cu.js +0 -20
- app-ng-runtime/locales/angular/global/en-us-posix.js +0 -24
- app-ng-runtime/locales/angular/global/prg.js +0 -26
- app-ng-runtime/locales/angular/global/root.js +0 -24
- app-ng-runtime/locales/angular/global/vo.js +0 -23
- app-ng-runtime/locales/angular/gsw-fr.js +0 -28
- app-ng-runtime/locales/angular/gsw-li.js +0 -28
- app-ng-runtime/locales/angular/gsw.js +0 -28
- app-ng-runtime/locales/angular/gu.js +0 -29
- app-ng-runtime/locales/angular/guz.js +0 -26
- app-ng-runtime/locales/angular/gv.js +0 -35
- app-ng-runtime/locales/angular/ha-gh.js +0 -28
- app-ng-runtime/locales/angular/ha-ne.js +0 -28
- app-ng-runtime/locales/angular/ha.js +0 -28
- app-ng-runtime/locales/angular/haw.js +0 -28
- app-ng-runtime/locales/angular/he.js +0 -33
- app-ng-runtime/locales/angular/hi.js +0 -29
- app-ng-runtime/locales/angular/hr-ba.js +0 -31
- app-ng-runtime/locales/angular/hr.js +0 -31
- app-ng-runtime/locales/angular/hsb.js +0 -33
- app-ng-runtime/locales/angular/hu.js +0 -28
- app-ng-runtime/locales/angular/hy.js +0 -29
- app-ng-runtime/locales/angular/ia.js +0 -29
- app-ng-runtime/locales/angular/id.js +0 -26
- app-ng-runtime/locales/angular/ig.js +0 -26
- app-ng-runtime/locales/angular/ii.js +0 -26
- app-ng-runtime/locales/angular/is.js +0 -29
- app-ng-runtime/locales/angular/it-ch.js +0 -29
- app-ng-runtime/locales/angular/it-sm.js +0 -29
- app-ng-runtime/locales/angular/it-va.js +0 -29
- app-ng-runtime/locales/angular/it.js +0 -29
- app-ng-runtime/locales/angular/ja.js +0 -26
- app-ng-runtime/locales/angular/jgo.js +0 -28
- app-ng-runtime/locales/angular/jmc.js +0 -28
- app-ng-runtime/locales/angular/jv.js +0 -26
- app-ng-runtime/locales/angular/ka.js +0 -28
- app-ng-runtime/locales/angular/kab.js +0 -29
- app-ng-runtime/locales/angular/kam.js +0 -26
- app-ng-runtime/locales/angular/kde.js +0 -26
- app-ng-runtime/locales/angular/kea.js +0 -26
- app-ng-runtime/locales/angular/khq.js +0 -26
- app-ng-runtime/locales/angular/ki.js +0 -26
- app-ng-runtime/locales/angular/kk.js +0 -28
- app-ng-runtime/locales/angular/kkj.js +0 -28
- app-ng-runtime/locales/angular/kl.js +0 -28
- app-ng-runtime/locales/angular/kln.js +0 -26
- app-ng-runtime/locales/angular/km.js +0 -26
- app-ng-runtime/locales/angular/kn.js +0 -29
- app-ng-runtime/locales/angular/ko-kp.js +0 -26
- app-ng-runtime/locales/angular/ko.js +0 -26
- app-ng-runtime/locales/angular/kok.js +0 -26
- app-ng-runtime/locales/angular/ks-arab.js +0 -28
- app-ng-runtime/locales/angular/ks.js +0 -28
- app-ng-runtime/locales/angular/ksb.js +0 -28
- app-ng-runtime/locales/angular/ksf.js +0 -26
- app-ng-runtime/locales/angular/ksh.js +0 -30
- app-ng-runtime/locales/angular/ku.js +0 -28
- app-ng-runtime/locales/angular/kw.js +0 -36
- app-ng-runtime/locales/angular/ky.js +0 -28
- app-ng-runtime/locales/angular/lag.js +0 -31
- app-ng-runtime/locales/angular/lb.js +0 -28
- app-ng-runtime/locales/angular/lg.js +0 -28
- app-ng-runtime/locales/angular/lkt.js +0 -26
- app-ng-runtime/locales/angular/ln-ao.js +0 -28
- app-ng-runtime/locales/angular/ln-cf.js +0 -28
- app-ng-runtime/locales/angular/ln-cg.js +0 -28
- app-ng-runtime/locales/angular/ln.js +0 -28
- app-ng-runtime/locales/angular/lo.js +0 -26
- app-ng-runtime/locales/angular/lrc-iq.js +0 -26
- app-ng-runtime/locales/angular/lrc.js +0 -26
- app-ng-runtime/locales/angular/lt.js +0 -33
- app-ng-runtime/locales/angular/lu.js +0 -26
- app-ng-runtime/locales/angular/luo.js +0 -26
- app-ng-runtime/locales/angular/luy.js +0 -26
- app-ng-runtime/locales/angular/lv.js +0 -31
- app-ng-runtime/locales/angular/mas-tz.js +0 -28
- app-ng-runtime/locales/angular/mas.js +0 -28
- app-ng-runtime/locales/angular/mer.js +0 -26
- app-ng-runtime/locales/angular/mfe.js +0 -26
- app-ng-runtime/locales/angular/mg.js +0 -28
- app-ng-runtime/locales/angular/mgh.js +0 -26
- app-ng-runtime/locales/angular/mgo.js +0 -28
- app-ng-runtime/locales/angular/mi.js +0 -26
- app-ng-runtime/locales/angular/mk.js +0 -29
- app-ng-runtime/locales/angular/ml.js +0 -28
- app-ng-runtime/locales/angular/mn.js +0 -28
- app-ng-runtime/locales/angular/mr.js +0 -28
- app-ng-runtime/locales/angular/ms-bn.js +0 -26
- app-ng-runtime/locales/angular/ms-sg.js +0 -26
- app-ng-runtime/locales/angular/ms.js +0 -26
- app-ng-runtime/locales/angular/mt.js +0 -32
- app-ng-runtime/locales/angular/mua.js +0 -26
- app-ng-runtime/locales/angular/my.js +0 -26
- app-ng-runtime/locales/angular/mzn.js +0 -26
- app-ng-runtime/locales/angular/naq.js +0 -30
- app-ng-runtime/locales/angular/nb-sj.js +0 -28
- app-ng-runtime/locales/angular/nb.js +0 -28
- app-ng-runtime/locales/angular/nd.js +0 -28
- app-ng-runtime/locales/angular/nds-nl.js +0 -26
- app-ng-runtime/locales/angular/nds.js +0 -26
- app-ng-runtime/locales/angular/ne-in.js +0 -28
- app-ng-runtime/locales/angular/ne.js +0 -28
- app-ng-runtime/locales/angular/nl-aw.js +0 -29
- app-ng-runtime/locales/angular/nl-be.js +0 -29
- app-ng-runtime/locales/angular/nl-bq.js +0 -29
- app-ng-runtime/locales/angular/nl-cw.js +0 -29
- app-ng-runtime/locales/angular/nl-sr.js +0 -29
- app-ng-runtime/locales/angular/nl-sx.js +0 -29
- app-ng-runtime/locales/angular/nl.js +0 -29
- app-ng-runtime/locales/angular/nmg.js +0 -26
- app-ng-runtime/locales/angular/nn.js +0 -28
- app-ng-runtime/locales/angular/nnh.js +0 -28
- app-ng-runtime/locales/angular/nus.js +0 -26
- app-ng-runtime/locales/angular/nyn.js +0 -28
- app-ng-runtime/locales/angular/om-ke.js +0 -28
- app-ng-runtime/locales/angular/om.js +0 -28
- app-ng-runtime/locales/angular/or.js +0 -28
- app-ng-runtime/locales/angular/os-ru.js +0 -28
- app-ng-runtime/locales/angular/os.js +0 -28
- app-ng-runtime/locales/angular/pa-arab.js +0 -26
- app-ng-runtime/locales/angular/pa-guru.js +0 -28
- app-ng-runtime/locales/angular/pa.js +0 -28
- app-ng-runtime/locales/angular/pl.js +0 -33
- app-ng-runtime/locales/angular/prg.js +0 -31
- app-ng-runtime/locales/angular/ps-pk.js +0 -28
- app-ng-runtime/locales/angular/ps.js +0 -28
- app-ng-runtime/locales/angular/pt-ao.js +0 -29
- app-ng-runtime/locales/angular/pt-ch.js +0 -29
- app-ng-runtime/locales/angular/pt-cv.js +0 -29
- app-ng-runtime/locales/angular/pt-gq.js +0 -29
- app-ng-runtime/locales/angular/pt-gw.js +0 -29
- app-ng-runtime/locales/angular/pt-lu.js +0 -29
- app-ng-runtime/locales/angular/pt-mo.js +0 -29
- app-ng-runtime/locales/angular/pt-mz.js +0 -29
- app-ng-runtime/locales/angular/pt-pt.js +0 -29
- app-ng-runtime/locales/angular/pt-st.js +0 -29
- app-ng-runtime/locales/angular/pt-tl.js +0 -29
- app-ng-runtime/locales/angular/pt.js +0 -29
- app-ng-runtime/locales/angular/qu-bo.js +0 -26
- app-ng-runtime/locales/angular/qu-ec.js +0 -26
- app-ng-runtime/locales/angular/qu.js +0 -26
- app-ng-runtime/locales/angular/rm.js +0 -28
- app-ng-runtime/locales/angular/rn.js +0 -26
- app-ng-runtime/locales/angular/ro-md.js +0 -31
- app-ng-runtime/locales/angular/ro.js +0 -31
- app-ng-runtime/locales/angular/rof.js +0 -28
- app-ng-runtime/locales/angular/root.js +0 -29
- app-ng-runtime/locales/angular/ru-by.js +0 -33
- app-ng-runtime/locales/angular/ru-kg.js +0 -33
- app-ng-runtime/locales/angular/ru-kz.js +0 -33
- app-ng-runtime/locales/angular/ru-md.js +0 -33
- app-ng-runtime/locales/angular/ru-ua.js +0 -33
- app-ng-runtime/locales/angular/ru.js +0 -33
- app-ng-runtime/locales/angular/rw.js +0 -26
- app-ng-runtime/locales/angular/rwk.js +0 -28
- app-ng-runtime/locales/angular/sah.js +0 -26
- app-ng-runtime/locales/angular/saq.js +0 -28
- app-ng-runtime/locales/angular/sbp.js +0 -26
- app-ng-runtime/locales/angular/sd-arab.js +0 -28
- app-ng-runtime/locales/angular/sd.js +0 -28
- app-ng-runtime/locales/angular/se-fi.js +0 -30
- app-ng-runtime/locales/angular/se-se.js +0 -30
- app-ng-runtime/locales/angular/se.js +0 -30
- app-ng-runtime/locales/angular/seh.js +0 -28
- app-ng-runtime/locales/angular/ses.js +0 -26
- app-ng-runtime/locales/angular/sg.js +0 -26
- app-ng-runtime/locales/angular/shi-latn.js +0 -26
- app-ng-runtime/locales/angular/shi-tfng.js +0 -31
- app-ng-runtime/locales/angular/shi.js +0 -31
- app-ng-runtime/locales/angular/si.js +0 -29
- app-ng-runtime/locales/angular/sk.js +0 -33
- app-ng-runtime/locales/angular/sl.js +0 -33
- app-ng-runtime/locales/angular/smn.js +0 -30
- app-ng-runtime/locales/angular/sn.js +0 -28
- app-ng-runtime/locales/angular/so-dj.js +0 -28
- app-ng-runtime/locales/angular/so-et.js +0 -28
- app-ng-runtime/locales/angular/so-ke.js +0 -28
- app-ng-runtime/locales/angular/so.js +0 -28
- app-ng-runtime/locales/angular/sq-mk.js +0 -28
- app-ng-runtime/locales/angular/sq-xk.js +0 -28
- app-ng-runtime/locales/angular/sq.js +0 -28
- app-ng-runtime/locales/angular/sr-cyrl-ba.js +0 -31
- app-ng-runtime/locales/angular/sr-cyrl-me.js +0 -31
- app-ng-runtime/locales/angular/sr-cyrl-xk.js +0 -31
- app-ng-runtime/locales/angular/sr-cyrl.js +0 -31
- app-ng-runtime/locales/angular/sr-latn-ba.js +0 -26
- app-ng-runtime/locales/angular/sr-latn-me.js +0 -26
- app-ng-runtime/locales/angular/sr-latn-xk.js +0 -26
- app-ng-runtime/locales/angular/sr-latn.js +0 -26
- app-ng-runtime/locales/angular/sr.js +0 -31
- app-ng-runtime/locales/angular/sv-ax.js +0 -29
- app-ng-runtime/locales/angular/sv-fi.js +0 -29
- app-ng-runtime/locales/angular/sv.js +0 -29
- app-ng-runtime/locales/angular/sw-cd.js +0 -29
- app-ng-runtime/locales/angular/sw-ke.js +0 -29
- app-ng-runtime/locales/angular/sw-ug.js +0 -29
- app-ng-runtime/locales/angular/sw.js +0 -29
- app-ng-runtime/locales/angular/ta-lk.js +0 -28
- app-ng-runtime/locales/angular/ta-my.js +0 -28
- app-ng-runtime/locales/angular/ta-sg.js +0 -28
- app-ng-runtime/locales/angular/ta.js +0 -28
- app-ng-runtime/locales/angular/te.js +0 -28
- app-ng-runtime/locales/angular/teo-ke.js +0 -28
- app-ng-runtime/locales/angular/teo.js +0 -28
- app-ng-runtime/locales/angular/tg.js +0 -26
- app-ng-runtime/locales/angular/th.js +0 -26
- app-ng-runtime/locales/angular/ti-er.js +0 -28
- app-ng-runtime/locales/angular/ti.js +0 -28
- app-ng-runtime/locales/angular/tk.js +0 -28
- app-ng-runtime/locales/angular/to.js +0 -26
- app-ng-runtime/locales/angular/tr-cy.js +0 -28
- app-ng-runtime/locales/angular/tr.js +0 -28
- app-ng-runtime/locales/angular/tt.js +0 -26
- app-ng-runtime/locales/angular/twq.js +0 -26
- app-ng-runtime/locales/angular/tzm.js +0 -28
- app-ng-runtime/locales/angular/ug.js +0 -28
- app-ng-runtime/locales/angular/uk.js +0 -33
- app-ng-runtime/locales/angular/ur-in.js +0 -29
- app-ng-runtime/locales/angular/ur.js +0 -29
- app-ng-runtime/locales/angular/uz-arab.js +0 -26
- app-ng-runtime/locales/angular/uz-cyrl.js +0 -26
- app-ng-runtime/locales/angular/uz-latn.js +0 -28
- app-ng-runtime/locales/angular/uz.js +0 -28
- app-ng-runtime/locales/angular/vai-latn.js +0 -26
- app-ng-runtime/locales/angular/vai-vaii.js +0 -26
- app-ng-runtime/locales/angular/vai.js +0 -26
- app-ng-runtime/locales/angular/vi.js +0 -26
- app-ng-runtime/locales/angular/vo.js +0 -28
- app-ng-runtime/locales/angular/vun.js +0 -28
- app-ng-runtime/locales/angular/wae.js +0 -28
- app-ng-runtime/locales/angular/wo.js +0 -26
- app-ng-runtime/locales/angular/xh.js +0 -28
- app-ng-runtime/locales/angular/xog.js +0 -28
- app-ng-runtime/locales/angular/yav.js +0 -26
- app-ng-runtime/locales/angular/yi.js +0 -29
- app-ng-runtime/locales/angular/yo-bj.js +0 -26
- app-ng-runtime/locales/angular/yo.js +0 -26
- app-ng-runtime/locales/angular/yue-hans.js +0 -26
- app-ng-runtime/locales/angular/yue-hant.js +0 -26
- app-ng-runtime/locales/angular/yue.js +0 -26
- app-ng-runtime/locales/angular/zgh.js +0 -26
- app-ng-runtime/locales/angular/zh-hans-hk.js +0 -26
- app-ng-runtime/locales/angular/zh-hans-mo.js +0 -26
- app-ng-runtime/locales/angular/zh-hans-sg.js +0 -26
- app-ng-runtime/locales/angular/zh-hans.js +0 -26
- app-ng-runtime/locales/angular/zh-hant-hk.js +0 -26
- app-ng-runtime/locales/angular/zh-hant-mo.js +0 -26
- app-ng-runtime/locales/angular/zh-hant.js +0 -26
- app-ng-runtime/locales/angular/zh.js +0 -26
- app-ng-runtime/locales/angular/zu.js +0 -29
|
@@ -961,7 +961,8 @@
|
|
|
961
961
|
this.isMuted = false;
|
|
962
962
|
const elementRef = inj.get(i0.ElementRef);
|
|
963
963
|
this.nativeElement = elementRef.nativeElement;
|
|
964
|
-
|
|
964
|
+
//making the code compatible in both the JIT and AOT modes
|
|
965
|
+
this.viewParentApp = inj ? inj.get(i1.App) : i0.inject(i1.App);
|
|
965
966
|
this.widgetType = config.widgetType;
|
|
966
967
|
this.widgetSubType = config.widgetSubType || config.widgetType;
|
|
967
968
|
this.viewContainerRef = inj.get(i0.ViewContainerRef);
|
|
@@ -1100,14 +1101,15 @@
|
|
|
1100
1101
|
}
|
|
1101
1102
|
initContext() {
|
|
1102
1103
|
// const context = (this.inj as any).view.context;
|
|
1103
|
-
this.context || {};
|
|
1104
|
+
const context = this.context || {};
|
|
1104
1105
|
const parentContexts = this.inj.get(Context, {});
|
|
1105
1106
|
// assign the context property accordingly
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1107
|
+
if (this.viewParent !== context) {
|
|
1108
|
+
this.context = context;
|
|
1109
|
+
}
|
|
1110
|
+
else {
|
|
1111
|
+
this.context = {};
|
|
1112
|
+
}
|
|
1111
1113
|
if (parentContexts) {
|
|
1112
1114
|
let parentContextObj = {};
|
|
1113
1115
|
if (_.isArray(parentContexts)) {
|
|
@@ -1341,14 +1343,18 @@
|
|
|
1341
1343
|
* and our logic to check like these changes will fail. Before IVY changes, angular maintains a separate object with these attributes
|
|
1342
1344
|
* as it is like in the camelcase. With IVY all those are gone. So need to maintain a separate list with the camelcasing of attributes
|
|
1343
1345
|
* @private
|
|
1346
|
+
* _tNode.attrs attributes are stored in array(even index: key, odd index: value)
|
|
1344
1347
|
*/
|
|
1345
1348
|
getAttributes() {
|
|
1346
1349
|
let _tNodeAttrs = this.inj._tNode.attrs, actualAttrs = Array.from(this.nativeElement.attributes).map(attr => attr.name);
|
|
1347
1350
|
if (_tNodeAttrs === null) {
|
|
1348
1351
|
return actualAttrs;
|
|
1349
1352
|
}
|
|
1350
|
-
|
|
1351
|
-
if (typeof attr === '
|
|
1353
|
+
_.forEach(_tNodeAttrs, (attr, i) => {
|
|
1354
|
+
if (typeof attr === 'number') {
|
|
1355
|
+
return false;
|
|
1356
|
+
}
|
|
1357
|
+
if (typeof attr === 'string' && i % 2 == 0) {
|
|
1352
1358
|
let lowerCaseAttr = attr.toLowerCase();
|
|
1353
1359
|
if (actualAttrs.includes(lowerCaseAttr)) {
|
|
1354
1360
|
let index = actualAttrs.indexOf(lowerCaseAttr);
|
|
@@ -1727,7 +1733,7 @@
|
|
|
1727
1733
|
constructor(inj, templateRef, viewContainer) {
|
|
1728
1734
|
this.templateRef = templateRef;
|
|
1729
1735
|
this.viewContainer = viewContainer;
|
|
1730
|
-
let viewParentApp = i0.inject(i1.App);
|
|
1736
|
+
let viewParentApp = inj ? inj.get(i1.App) : i0.inject(i1.App);
|
|
1731
1737
|
let lView = inj._lView;
|
|
1732
1738
|
const getParentlView = (lView) => {
|
|
1733
1739
|
let parentlView = lView[3];
|
|
@@ -73,7 +73,8 @@ export class BaseComponent {
|
|
|
73
73
|
this.isMuted = false;
|
|
74
74
|
const elementRef = inj.get(ElementRef);
|
|
75
75
|
this.nativeElement = elementRef.nativeElement;
|
|
76
|
-
|
|
76
|
+
//making the code compatible in both the JIT and AOT modes
|
|
77
|
+
this.viewParentApp = inj ? inj.get(App) : inject(App);
|
|
77
78
|
this.widgetType = config.widgetType;
|
|
78
79
|
this.widgetSubType = config.widgetSubType || config.widgetType;
|
|
79
80
|
this.viewContainerRef = inj.get(ViewContainerRef);
|
|
@@ -215,11 +216,12 @@ export class BaseComponent {
|
|
|
215
216
|
const context = this.context || {};
|
|
216
217
|
const parentContexts = this.inj.get(Context, {});
|
|
217
218
|
// assign the context property accordingly
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
219
|
+
if (this.viewParent !== context) {
|
|
220
|
+
this.context = context;
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
this.context = {};
|
|
224
|
+
}
|
|
223
225
|
if (parentContexts) {
|
|
224
226
|
let parentContextObj = {};
|
|
225
227
|
if (_.isArray(parentContexts)) {
|
|
@@ -455,14 +457,18 @@ export class BaseComponent {
|
|
|
455
457
|
* and our logic to check like these changes will fail. Before IVY changes, angular maintains a separate object with these attributes
|
|
456
458
|
* as it is like in the camelcase. With IVY all those are gone. So need to maintain a separate list with the camelcasing of attributes
|
|
457
459
|
* @private
|
|
460
|
+
* _tNode.attrs attributes are stored in array(even index: key, odd index: value)
|
|
458
461
|
*/
|
|
459
462
|
getAttributes() {
|
|
460
463
|
let _tNodeAttrs = this.inj._tNode.attrs, actualAttrs = Array.from(this.nativeElement.attributes).map(attr => attr.name);
|
|
461
464
|
if (_tNodeAttrs === null) {
|
|
462
465
|
return actualAttrs;
|
|
463
466
|
}
|
|
464
|
-
|
|
465
|
-
if (typeof attr === '
|
|
467
|
+
_.forEach(_tNodeAttrs, (attr, i) => {
|
|
468
|
+
if (typeof attr === 'number') {
|
|
469
|
+
return false;
|
|
470
|
+
}
|
|
471
|
+
if (typeof attr === 'string' && i % 2 == 0) {
|
|
466
472
|
let lowerCaseAttr = attr.toLowerCase();
|
|
467
473
|
if (actualAttrs.includes(lowerCaseAttr)) {
|
|
468
474
|
let index = actualAttrs.indexOf(lowerCaseAttr);
|
|
@@ -606,4 +612,4 @@ BaseComponent.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: BaseCompon
|
|
|
606
612
|
type: Inject,
|
|
607
613
|
args: [WidgetConfig]
|
|
608
614
|
}] }, { type: Promise }]; }, null); })();
|
|
609
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL2Jhc2Uvc3JjL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFHTixnQkFBZ0IsRUFFaEIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQUMsYUFBYSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE9BQU8sRUFDUCxNQUFNLEVBQ04sYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQWlCLE9BQU8sRUFBaUIsWUFBWSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsa0JBQWtC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Q1gsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFO1lBQ2xDLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUN4QyxFQUFFLEVBQUUsQ0FBQzthQUNSO1NBQ0o7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCLEtBQUksQ0FBQztJQUV2QixXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7OzBFQTdzQmlCLGFBQWEsd0NBMkhuQixZQUFZO21FQTNITixhQUFhLFdBQWIsYUFBYTt1RkFBYixhQUFhO2NBRGxDLFVBQVU7O3NCQTRIRixNQUFNO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdGFibGUsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBPcHRpb25hbCxcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0V2ZW50TWFuYWdlcn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7UmVwbGF5U3ViamVjdCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgJGludm9rZVdhdGNoZXJzLFxuICAgICRwYXJzZUV2ZW50LFxuICAgICR1bndhdGNoLFxuICAgICR3YXRjaCxcbiAgICBhZGRDbGFzcyxcbiAgICBBcHAsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzTW9iaWxlQXBwLFxuICAgIHJlbW92ZUF0dHIsXG4gICAgcmVtb3ZlQ2xhc3MsXG4gICAgc2V0QXR0cixcbiAgICBzZXRDU1MsXG4gICAgc2V0Q1NTRnJvbU9iaixcbiAgICBzd2l0Y2hDbGFzc1xufSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7Z2V0V2lkZ2V0UHJvcHNCeVR5cGV9IGZyb20gJy4uLy4uL2ZyYW1ld29yay93aWRnZXQtcHJvcHMnO1xuaW1wb3J0IHtpc1N0eWxlfSBmcm9tICcuLi8uLi9mcmFtZXdvcmsvc3R5bGVyJztcbmltcG9ydCB7cmVnaXN0ZXIsIHJlbmFtZVdpZGdldH0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL3dpZGdldC1yZWdpc3RyeSc7XG5pbXBvcnQge0NoYW5nZUxpc3RlbmVyLCBDb250ZXh0LCBJV2lkZ2V0Q29uZmlnLCBXaWRnZXRDb25maWd9IGZyb20gJy4uLy4uL2ZyYW1ld29yay90eXBlcyc7XG5pbXBvcnQge3dpZGdldElkR2VuZXJhdG9yfSBmcm9tICcuLi8uLi9mcmFtZXdvcmsvd2lkZ2V0LWlkLWdlbmVyYXRvcic7XG5pbXBvcnQge0RJU1BMQVlfVFlQRSwgRVZFTlRTX01BUH0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL2NvbnN0YW50cyc7XG5pbXBvcnQge1dpZGdldFByb3h5UHJvdmlkZXJ9IGZyb20gJy4uLy4uL2ZyYW1ld29yay93aWRnZXQtcHJveHktcHJvdmlkZXInO1xuaW1wb3J0IHtnZXRXYXRjaElkZW50aWZpZXJ9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3dpZGdldC11dGlscyc7XG5cbmRlY2xhcmUgY29uc3QgJCwgXztcblxuLy8gR2V0cyBsaXN0IG9mIGNsYXNzZXMgdG8gYWRkIGFuZCByZW1vdmUgYW5kIGFwcGxpZXMgb24gdGhlICRlbFxuY29uc3QgdXBkYXRlQ2xhc3NlcyA9ICh0b0FkZCwgdG9SZW1vdmUsIGVsKSA9PiB7XG4gICAgaWYgKHRvUmVtb3ZlICYmIHRvUmVtb3ZlLmxlbmd0aCkge1xuICAgICAgICByZW1vdmVDbGFzcyhlbCwgXy5qb2luKHRvUmVtb3ZlLCAnICcpKTtcbiAgICB9XG4gICAgaWYgKHRvQWRkICYmIHRvQWRkLmxlbmd0aCkge1xuICAgICAgICBhZGRDbGFzcyhlbCwgXy5qb2luKHRvQWRkLCAnICcpKTtcbiAgICB9XG59O1xuXG4vLyBUbyBhZGQgYW5kIHJlbW92ZSBzdHlsZXMgb24gdGhlICRlbFxuY29uc3QgdXBkYXRlU3R5bGVzID0gKG52LCBvdiwgZWwpID0+IHtcbiAgICBpZiAob3YgJiYgXy5pc09iamVjdChvdikpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG92IHx8IHt9KTtcbiAgICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgc2V0Q1NTKGVsLCBrZXksICcnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChudiAmJiBfLmlzT2JqZWN0KG52KSkge1xuICAgICAgICBzZXRDU1NGcm9tT2JqKGVsLCBudik7XG4gICAgfVxuXG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0IHtcblxuICAgIC8qKlxuICAgICAqIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHdpZGdldElkOiBhbnk7XG5cbiAgICBwdWJsaWMgaXNEZXN0cm95ZWQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgaXNBdHRhY2hlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogalF1ZXJ5IG5hdGl2ZUVsZW1lbnQgcmVmZXJlbmNlIG9mIHRoZSBjb21wb25lbnQgcm9vdFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgJGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiAkKHRoaXMubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRE9NIG5vZGUgcmVmZXJlbmNlIG9mIHRoZSBjb21wb25lbnQgcm9vdFxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBuYXRpdmVFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIC8qKlxuICAgICAqIFR5cGUgb2YgdGhlIGNvbXBvbmVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB3aWRnZXRUeXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNb3N0IG9mIHRoZSBjYXNlcyBpdCBpcyBzYW1lIGFzIHdpZGdldFR5cGVcbiAgICAgKiBmb3Igc3BlY2lmaWMgd2lkZ2V0cyBsaWtlIGNoYXJ0cyB3aWRnZXRUeXBlIGNhbiBiZSB3bS1jaGFydCB3aGVyZSBhcyB0aGUgc3VidHlwZSBjYW4gYmUgd20tYmFyLWNoYXJ0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpZGdldFN1YlR5cGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFByb3h5IGZvciB0aGUgY29tcG9uZW50IGluc3RhbmNlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB3aWRnZXQ6IGFueTtcblxuICAgIC8qKlxuICAgICAqIFZpZXcgcGFyZW50IGNvbXBvbmVudFxuICAgICAqIGVnLCBQYWdlLCBQYXJ0aWFsLCBQcmVmYWJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld1BhcmVudDogYW55O1xuXG4gICAgLyoqXG4gICAgICogRXZlbnRNYW5nZXIgdG8gYWRkL3JlbW92ZSBldmVudHNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXZlbnRNYW5hZ2VyOiBFdmVudE1hbmFnZXI7XG5cbiAgICAvKipcbiAgICAgKiBBcHAgTG9jYWxlXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGFwcExvY2FsZTogYW55O1xuXG4gICAgLyoqXG4gICAgICogU3R5bGUgY2hhbmdlIHN1YmplY3QgYW5kIG9ic2VydmFibGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlQ2hhbmdlID0gbmV3IFJlcGxheVN1YmplY3QoKTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGNoYW5nZSBzdWJqZWN0IGFuZCBvYnNlcnZhYmxlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wZXJ0eUNoYW5nZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICAvKipcbiAgICAgKiBPbiBSZWFkeSBTdGF0ZSBjaGFuZ2Ugc3ViamVjdCBhbmQgb2JzZXJ2YWJsZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVhZHlTdGF0ZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgZGVzdHJveSBzdWJqZWN0IGFuZCBvYnNlcnZhYmxlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8qKlxuICAgICAqIE1hcCBvZiBldmVudCBoYW5kbGVyIGNhbGxiYWNrc1xuICAgICAqL1xuICAgIHByaXZhdGUgZXZlbnRIYW5kbGVycyA9IG5ldyBNYXA8c3RyaW5nLCB7Y2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueX0+KCk7XG5cbiAgICAvKipcbiAgICAgKiBjb250ZXh0IG9mIHRoZSB3aWRnZXRcbiAgICAgKiB3aGVuIHRoZSB3aWRnZXQgaXMgcHJlc2V0IGluc2lkZSBhIHJlcGVhdGVyIHRoaXMgY29udGV4dCB3aWxsIGhhdmUgdGhlIHJlcGVhdGVyIHJlbGF0ZWQgcHJvcGVydGllc1xuICAgICAqL1xuICAgIHB1YmxpYyBjb250ZXh0OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHN0YXRlIG9mIHRoZSB3aWRnZXQuXG4gICAgICogV2lsbCBiZSB1bmRlZmluZWQgb25jZSB0aGUgaW5pdGlhbCBwcm9wZXJ0aWVzIGFyZSBzZXQgb24gdG8gdGhlIGNvbXBvbmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdFN0YXRlOiBNYXA8c3RyaW5nLCBhbnk+O1xuXG4gICAgLyoqXG4gICAgICogSW50ZXJuYWwgZmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciB0byB3YWl0IGZvciB0aGUgd2lkZ2V0IGluaXRpYWxpemF0aW9uIG9yIG5vdFxuICAgICAqIElmIHRoZSBpbml0UHJvbWlzZSBpcyBwcm92aWRlZCBpbiB0aGUgY29uc3RydWN0aW9uIHdhaXQgdGlsbCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZFxuICAgICAqIElmIHRoZSBpbml0UHJvbWlzZSBpcyBub3QgcHJvdmlkZWQgcHJvY2VlZCB3aXRoIHRoZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWxheWVkSW5pdDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERpc3BsYXkgdHlwZSBvZiB0aGUgY29tcG9uZW50LiBlZywgYmxvY2soRGVmYXVsdCksIGlubGluZS1ibG9jaywgaW5saW5lIGV0Y1xuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheVR5cGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEhvbGRzIHRoZSBldmVudCByZWdpc3RyYXRpb24gZnVuY3Rpb25zLlxuICAgICAqIHRoZXNlIGZ1bmN0aW9ucyBuZWVkcyB0byBiZSBleGVjdXRlZCBhZnRlciBvblZpZXdJbml0XG4gICAgICovXG4gICAgcHJpdmF0ZSB0b0JlU2V0dXBFdmVudHNRdWV1ZTogQXJyYXk8RnVuY3Rpb24+ID0gW107XG5cbiAgICBwdWJsaWMgX19jbG9uZWFibGVfXyA9IGZhbHNlO1xuXG4gICAgcHVibGljIHdpZGdldFByb3BzOiBNYXA8c3RyaW5nLCBhbnk+O1xuXG4gICAgcHJpdmF0ZSAkYXR0cnMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSBpc011dGVkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcbiAgICBwdWJsaWMgdmlld1BhcmVudEFwcDogQXBwO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgaW5qOiBJbmplY3RvcixcbiAgICAgICAgQEluamVjdChXaWRnZXRDb25maWcpIGNvbmZpZzogSVdpZGdldENvbmZpZyxcbiAgICAgICAgaW5pdFByb21pc2U/OiBQcm9taXNlPGFueT4gLy8gUHJvbWlzZSBvbiB3aGljaCB0aGUgaW5pdGlhbGl6YXRpb24gaGFzIHRvIHdhaXRcbiAgICApIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFJlZiA9IGluai5nZXQoRWxlbWVudFJlZik7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy52aWV3UGFyZW50QXBwID0gaW5qZWN0KEFwcCk7XG4gICAgICAgIHRoaXMud2lkZ2V0VHlwZSA9IGNvbmZpZy53aWRnZXRUeXBlO1xuICAgICAgICB0aGlzLndpZGdldFN1YlR5cGUgPSBjb25maWcud2lkZ2V0U3ViVHlwZSB8fCBjb25maWcud2lkZ2V0VHlwZTtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmID0gaW5qLmdldChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgLy8gdGhpcy52aWV3UGFyZW50ID0gKGluaiBhcyBhbnkpLnZpZXcuY29tcG9uZW50O1xuICAgICAgICAvLyB0aGlzLnZpZXdQYXJlbnQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkucGFyZW50SW5qZWN0b3IuX2xWaWV3WzhdO1xuICAgICAgICAvLyB0aGlzLnZpZXdQYXJlbnQgPSBfdmlld1BhcmVudCB8fCAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkucGFyZW50SW5qZWN0b3IuX2xWaWV3WzhdO1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFpbi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL2ludGVyZmFjZXMvdmlldy50c1xuXG4gICAgICAgIGxldCBsVmlldyA9ICh0aGlzLmluaiBhcyBhbnkpLl9sVmlldztcbiAgICAgICAgY29uc3QgZ2V0UGFyZW50bFZpZXcgPSAobFZpZXc6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIi0tLSoqKioqKioqKioqKiotLXdpZGdldFR5cGUtLSoqKioqKioqKioqKiotLS1cIiwgdGhpcy53aWRnZXRUeXBlKTtcbiAgICAgICAgICAgIGxldCBwYXJlbnRsVmlldyA9IGxWaWV3WzNdO1xuICAgICAgICAgICAgaWYodHlwZW9mIGxWaWV3WzFdID09PSBcImJvb2xlYW5cIikgeyAvLyB0aGlzIGlzIGxDb250YWluZXIsIG5vdCBsVmlldyBpZiB0aGlzIGlzIGJvb2xlYW5cbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50bFZpZXcocGFyZW50bFZpZXcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGNvbXBvbmVudFR5cGUgPSBsVmlld1sxXVtcInR5cGVcIl07XG4gICAgICAgICAgICBpZihjb21wb25lbnRUeXBlID09PSAwIHx8IGNvbXBvbmVudFR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbFZpZXdbOF07XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyB3aGVuIGNvbXBvbmVudFR5cGUgPT0gMiwgdGhlbiBmZXRjaCBwYXJlbnQgYWdhaW5cbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50bFZpZXcocGFyZW50bFZpZXcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld1BhcmVudCA9IGdldFBhcmVudGxWaWV3KGxWaWV3KSB8fCB0aGlzLnZpZXdQYXJlbnRBcHA7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCItLS0qKioqKioqKioqKioqLS1jb250ZXh0LS0qKioqKioqKioqKioqLS0tXCIsIGxWaWV3WzhdKTtcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gKHRoaXMuaW5qIGFzIGFueSkuX2xWaWV3WzhdO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheVR5cGUgPSBjb25maWcuZGlzcGxheVR5cGUgfHwgRElTUExBWV9UWVBFLkJMT0NLO1xuICAgICAgICAvLyB0aGlzLmNvbnRleHQgPSAoaW5qIGFzIGFueSkudmlldy5jb250ZXh0O1xuICAgICAgICAvLyB0aGlzLmNvbnRleHQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkuX2hvc3RMVmlldy5kZWJ1Zy5jb250ZXh0O1xuICAgICAgICAvLyBsZXQgaGFzSW1wbGljaXRDb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLl9ob3N0TFZpZXcuZmluZCh0ID0+IHQgJiYgISF0LiRpbXBsaWNpdCk7XG4gICAgICAgIC8vIHdoZW4gJGltcGxpY2l0IGlzIG5vdCBhdmFpbGFibGUsIHRoaXMgb2JqZWN0IGNvbnRhaW5zIHNvbWUgbmdGb3IgY29udGV4dCBvciBsaXN0aXRlbSBjb250ZXh0IG9mIHRoZSB3aWRnZXQgdGhlblxuICAgICAgICAvLyB3ZSB1c2UgdGhlIGRpcmVjdCBwYXJlbnQgZm9yIGV4YW1wbGU6IG5hdiBjb21wb25lbnQgaXMgdGhlIHBhcmVudCBmb3IgYW5jaG9yID0+IGFuY2hvciBnZXRzIHZpZXdQYXJlbnQgYXMgTmF2XG4gICAgICAgIC8vIEluIG90aGVyIGNhc2UsIHdoZXJlIHdlIGhhdmUgaW1wbGljaXRDb250ZXh0IHRoZXJlIHdlIGNhbiBtYWtlIHVzZSBvZiBwYWdlL2FwcCBsZXZlbCBjb250ZXh0IGhlbmNlIHZpZXdQYXJlbnQudmlld1BhcmVudCB0byBnZXQgcGFnZSBsZXZlbCBjb250ZXh0XG4gICAgICAgIC8qaWYgKGhhc0ltcGxpY2l0Q29udGV4dCAmJiB0aGlzLnZpZXdQYXJlbnQudmlld1BhcmVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudC53aWRnZXRUeXBlICE9PSAnd20tY2FyZCcgJiYgdGhpcy52aWV3UGFyZW50LndpZGdldFR5cGUgIT09ICd3bS1pZnJhbWVkaWFsb2cnXG4gICAgICAgICAgICAgICAgJiYgdGhpcy52aWV3UGFyZW50LndpZGdldFR5cGUgIT09ICd3bS1wYXJ0aWFsZGlhbG9nJykge1xuICAgICAgICAgICAgICAgIHRoaXMudmlld1BhcmVudCA9IHRoaXMudmlld1BhcmVudC52aWV3UGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghaGFzSW1wbGljaXRDb250ZXh0IHx8ICghdGhpcy52aWV3UGFyZW50LndpZGdldFR5cGUpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkuX2hvc3RMVmlldy5maW5kKHQgPT4gdCAmJiAhIXQuJGltcGxpY2l0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5wYXJlbnRJbmplY3Rvci5fbFZpZXdbOF07XG4gICAgICAgIH0qL1xuXG4gICAgICAgIC8qaWYoX3ZpZXdQYXJlbnQgJiYgIWhhc0ltcGxpY2l0Q29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLl9ob3N0TFZpZXdbOF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSBoYXNJbXBsaWNpdENvbnRleHQ7XG4gICAgICAgIH0qL1xuICAgICAgICAvLyBpZiAoWyd3bS1saXN0JywgJ3dtLW5hdiddLmluY2x1ZGVzKHRoaXMudmlld1BhcmVudC53aWRnZXRUeXBlKSB8fCBbJ3dtLWNhcm91c2VsLXRlbXBsYXRlJywgJ3dtLWNhcmQnXS5pbmNsdWRlcyh0aGlzLndpZGdldFR5cGUpKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmNvbnRleHQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkuX2hvc3RMVmlldy5kZWJ1Zy5jb250ZXh0O1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgdGhpcy5jb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLnBhcmVudEluamVjdG9yLl9sVmlld1s4XTtcbiAgICAgICAgLy8gfVxuICAgICAgICB0aGlzLndpZGdldCA9IHRoaXMuY3JlYXRlUHJveHkoKTtcbiAgICAgICAgdGhpcy5ldmVudE1hbmFnZXIgPSBpbmouZ2V0KEV2ZW50TWFuYWdlcik7XG4gICAgICAgICh0aGlzLm5hdGl2ZUVsZW1lbnQgYXMgYW55KS53aWRnZXQgPSB0aGlzLndpZGdldDtcblxuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IGluai5nZXQoQXBwKS5hcHBMb2NhbGUgfHwge307XG5cbiAgICAgICAgdGhpcy5pbml0Q29udGV4dCgpO1xuXG4gICAgICAgIGlmIChjb25maWcuaG9zdENsYXNzKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIGNvbmZpZy5ob3N0Q2xhc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53aWRnZXRJZCA9IHRoaXMuZ2VuZXJhdGVXaWRnZXRJZCgpO1xuICAgICAgICBzZXRBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgJ3dpZGdldC1pZCcsIHRoaXMud2lkZ2V0SWQsIHRydWUpO1xuXG4gICAgICAgIC8vIHJlZ2lzdGVyIGRlZmF1bHQgcHJvcGVydHkgY2hhbmdlIGhhbmRsZXIgYW5kIHN0eWxlIGNoYW5nZSBoYW5kbGVyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJTdHlsZUNoYW5nZUxpc3RlbmVyKHRoaXMub25TdHlsZUNoYW5nZSwgdGhpcyk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyKHRoaXMub25Qcm9wZXJ0eUNoYW5nZSwgdGhpcyk7XG5cbiAgICAgICAgLy8gaWYgdGhlIGluaXRQcm9taXNlIGlzIHByb3ZpZGVkLCB3YWl0IHRpbGwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgdG8gcHJvY2VlZCB3aXRoIHRoZSB3aWRnZXQgaW5pdGlhbGl6YXRpb25cbiAgICAgICAgaWYgKCFpbml0UHJvbWlzZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0V2lkZ2V0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlbGF5ZWRJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGluaXRQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFdpZGdldCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5pdFByb3BzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V2lkZ2V0VHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXaWRnZXRTdWJUeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldFN1YlR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdpZGdldCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFByb3BlcnR5KHByb3BOYW1lLCBwcm9wVmFsdWUpIHtcbiAgICAgICAgdGhpcy53aWRnZXRbcHJvcE5hbWVdID0gcHJvcFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWaWV3UGFyZW50KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdQYXJlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeVN0eWxlQ2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdjogYW55KSB7XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2UubmV4dCh7a2V5LCBudiwgb3Z9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90aWZ5UHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92OiBhbnkpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZS5uZXh0KHtrZXksIG52LCBvdn0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclN0eWxlQ2hhbmdlTGlzdGVuZXIoZm46IENoYW5nZUxpc3RlbmVyLCBjdHg/OiBhbnkpIHtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgZm4gPSBmbi5iaW5kKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdHlsZUNoYW5nZS5zdWJzY3JpYmUoKHtrZXksIG52LCBvdn0pID0+IGZuKGtleSwgbnYsIG92KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyUmVhZHlTdGF0ZUxpc3RlbmVyKGZuOiBGdW5jdGlvbiwgY3R4PzogYW55KSB7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICAgIGZuID0gZm4uYmluZChjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZS5zdWJzY3JpYmUoKCkgPT4gZm4oKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcihmbjogQ2hhbmdlTGlzdGVuZXIsIGN0eD86IGFueSkge1xuICAgICAgICBpZiAoY3R4KSB7XG4gICAgICAgICAgICBmbiA9IGZuLmJpbmQoY3R4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3BlcnR5Q2hhbmdlLnN1YnNjcmliZSgoe2tleSwgbnYsIG92fSkgPT4gZm4oa2V5LCBudiwgb3YpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoZm46IEZ1bmN0aW9uLCBjdHg/OiBhbnkpIHtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgZm4gPSBmbi5iaW5kKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0cm95LnN1YnNjcmliZSgoKSA9PiB7fSwgKCkgPT4ge30sICgpID0+IGZuKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREaXNwbGF5VHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5VHlwZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlUHJveHkoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIFdpZGdldFByb3h5UHJvdmlkZXIuY3JlYXRlKHRoaXMsIHRoaXMud2lkZ2V0U3ViVHlwZSwgZ2V0V2lkZ2V0UHJvcHNCeVR5cGUodGhpcy53aWRnZXRTdWJUeXBlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRDb250ZXh0KCkge1xuICAgICAgICAvLyBjb25zdCBjb250ZXh0ID0gKHRoaXMuaW5qIGFzIGFueSkudmlldy5jb250ZXh0O1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0IHx8IHt9O1xuXG4gICAgICAgIGNvbnN0IHBhcmVudENvbnRleHRzID0gdGhpcy5pbmouZ2V0KENvbnRleHQsIHt9KTtcblxuICAgICAgICAvLyBhc3NpZ24gdGhlIGNvbnRleHQgcHJvcGVydHkgYWNjb3JkaW5nbHlcbiAgICAgICAgLy8gaWYgKHRoaXMudmlld1BhcmVudCAhPT0gY29udGV4dCkge1xuICAgICAgICAvLyAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuY29udGV4dCA9IHt9O1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgaWYgKHBhcmVudENvbnRleHRzKSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50Q29udGV4dE9iaiA9IHt9O1xuICAgICAgICAgICAgaWYgKF8uaXNBcnJheShwYXJlbnRDb250ZXh0cykpIHtcbiAgICAgICAgICAgICAgICBfLmZvckVhY2gocGFyZW50Q29udGV4dHMsIChjb250ZXh0T2JqKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFyZW50Q29udGV4dE9iaiwgY29udGV4dE9iaik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmVudENvbnRleHRPYmogPSBwYXJlbnRDb250ZXh0cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IE9iamVjdC5hc3NpZ24oe30sIHBhcmVudENvbnRleHRPYmosIHRoaXMuY29udGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXQgdGhlIHZhbHVlIG9uIHRoZSBwcm94eSBvYmplY3QgaWUsIHdpZGdldFxuICAgICAqIHNldHRpbmcgdGhlIHByb3BlcnR5IG9uIHRoZSBwcm94eSB3aWxsIGludm9rZSB0aGUgY2hhbmdlIGxpc3RlbmVyc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0V2lkZ2V0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy53aWRnZXRba2V5XSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRyKGF0dHJOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXR0cnMuZ2V0KGF0dHJOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGFwcCBpbnN0YW5jZVxuICAgICAqIEByZXR1cm5zIHtBcHB9XG4gICAgICovXG4gICAgcHVibGljIGdldEFwcEluc3RhbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmouZ2V0KEFwcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgdW5pcXVlIGlkXG4gICAgICogRGVmYXVsdCBwYXR0ZXJuIGlzIGB3aWRnZXQtaWQtJHtpZH1gXG4gICAgICogQ29tcG9uZW50cyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZ2VuZXJhdGUgYSBkaWZmZXJlbnQgaWQgZWcsIGJhci1jaGFydC0xXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlV2lkZ2V0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHdpZGdldElkR2VuZXJhdG9yLm5leHRVaWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIHRoZSBjb21tb24gZnVuY3Rpb25hbGl0eSBhY3Jvc3MgdGhlIGNvbXBvbmVudHNcbiAgICAgKiBlZyxcbiAgICAgKiAgMS4gdmFsdWUgb2YgdGhlIGNsYXNzIHByb3BlcnR5IHdpbGwgYmUgYXBwbGllZCBvbiB0aGUgaG9zdCBlbGVtZW50XG4gICAgICogIDIuIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBzaG93IHByb3BlcnR5IGNvbXBvbmVudCBpcyBzaG93bi9oaWRkZW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAgICAgKiBAcGFyYW0gbnZcbiAgICAgKiBAcGFyYW0gb3ZcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ3Nob3cnKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gIW52O1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2hpbnQnKSB7XG4gICAgICAgICAgICBpZiAoIWlzTW9iaWxlQXBwKCkpIHtcbiAgICAgICAgICAgICAgICBzZXRBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgJ3RpdGxlJywgbnYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgc3dpdGNoQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBudiwgb3YpO1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG52Lm1hdGNoKC8oXFxXfF4pKGgoWzAtNl0pKSg/PVxcc3wkKS8pO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHNldEF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCAncm9sZScsICdoZWFkaW5nJyk7XG4gICAgICAgICAgICAgICAgc2V0QXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsICdhcmlhLWxldmVsJywgcmVzdWx0WzNdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICduYW1lJyB8fCBrZXkgPT09ICd0YWJpbmRleCcpIHtcbiAgICAgICAgICAgIHNldEF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCBrZXksIG52KTtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICduYW1lJyAmJiBudikge1xuICAgICAgICAgICAgICAgIHJlbmFtZVdpZGdldCh0aGlzLnZpZXdQYXJlbnQsIHRoaXMud2lkZ2V0LCBudiwgb3YpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2NvbmRpdGlvbmFsY2xhc3MnKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgY2xhc3NlcyBpZiBvbGQgYW5kIG52IHZhbHVlIGFyZSBkaWZmZXJlbnRcbiAgICAgICAgICAgIHVwZGF0ZUNsYXNzZXMobnYudG9BZGQsIG52LnRvUmVtb3ZlLCB0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgIGlmIChrZXkgPT09ICdhdXRvcGxheScpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ05hbWUgPSB0aGlzLndpZGdldFR5cGUgPT09ICd3bS1hdWRpbycgPyAnYXVkaW8nIDogJ3ZpZGVvJztcbiAgICAgICAgICAgIC8vIFRyaWdnZXIgbWVkaWEoYXVkaW8vdmlkZW8pIGVsZW1lbnQgbG9hZCBtZXRob2QgYWZ0ZXIgY2hhbmdpbmcgYXV0b3BsYXkgcHJvcGVydHlcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKHRhZ05hbWUpLmxvYWQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdjb25kaXRpb25hbHN0eWxlJykge1xuICAgICAgICAgICAgLy8gdXBkYXRlIHN0eWxlcyBpZiBvbGQgYW5kIG52IHZhbHVlIGFyZSBkaWZmZXJlbnRcbiAgICAgICAgICAgIHVwZGF0ZVN0eWxlcyhudiwgb3YsIHRoaXMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYW5pbWF0aW9uJykge1xuICAgICAgICAgICAgLy8gdXBkYXRlIHN0eWxlcyBpZiBvbGQgYW5kIG52IHZhbHVlIGFyZSBkaWZmZXJlbnRcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgXCJhbmltYXRlZCBcIiArIG52KTtcbiAgICAgICAgfSAgZWxzZSBpZiAoa2V5ID09PSAnZGlzYWJsZWQnKSB7XG4gICAgICAgICAgICAvLyBXTVMtMTkzMjE6IEluIElFLCB3aWRnZXQgaXMgaW4gZGlzYWJsZWQgc3RhdGUgd2hlbiBkaXNhYmxlZD1cImZhbHNlXCIgYXR0cmlidXRlIGlzIHByZXNlbnRcbiAgICAgICAgICAgIChudiA9PT0gdHJ1ZSkgPyBzZXRBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgJ3RydWUnLCB0cnVlKSA6IHJlbW92ZUF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgc3R5bGUgY2hhbmdlIGhhbmRsZXJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25TdHlsZUNoYW5nZShrOiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7fVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgdGhlIHdpZGdldCB3aXRoIHRoZSB3aWRnZXRSZWdpc3RyeVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWdpc3RlcldpZGdldCh3aWRnZXROYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihyZWdpc3Rlcih0aGlzLndpZGdldCwgdGhpcy52aWV3UGFyZW50LCB0aGlzLndpZGdldElkLCB3aWRnZXROYW1lKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogb3ZlcnJpZGUgdGhlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldE1hcHBlZEV2ZW50TmFtZShldmVudE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIEVWRU5UU19NQVAuZ2V0KGV2ZW50TmFtZSkgfHwgZXZlbnROYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGludm9rZSB0aGUgZXZlbnQgaGFuZGxlclxuICAgICAqIENvbXBvbmVudHMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGV4ZWN1dGUgY3VzdG9tIGxvZ2ljIGJlZm9yZSBpbnZva2luZyB0aGUgdXNlciBjYWxsYmFja1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBoYW5kbGVFdmVudChub2RlOiBIVE1MRWxlbWVudCwgZXZlbnROYW1lOiBzdHJpbmcsIGV2ZW50Q2FsbGJhY2s6IEZ1bmN0aW9uLCBsb2NhbHM6IGFueSwgbWV0YT86IHN0cmluZykge1xuICAgICAgICB0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgICAgIGUgPT4ge1xuICAgICAgICAgICAgICAgIGxvY2Fscy4kZXZlbnQgPSBlO1xuICAgICAgICAgICAgICAgIGlmIChtZXRhID09PSAnZGVsYXllZCcpIHtcbiAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGV2ZW50Q2FsbGJhY2soKSwgMTUwKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnRDYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBwYXJzZSB0aGUgZXZlbnQgZXhwcmVzc2lvbiBhbmQgc2F2ZSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uIGluc2lkZSBldmVudEhhbmRsZXJzIG1hcFxuICAgICAqIElmIHRoZSBjb21wb25lbnQgcHJvdmlkZXMgYSBvdmVycmlkZSBmb3IgYW4gZXZlbnQgdGhyb3VnaCBARXZlbnQgZGVjb3JhdG9yIGludm9rZSB0aGF0XG4gICAgICogZWxzZSBpbnZva2UgdGhlIHJlc29sdmVkIGZ1bmN0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV4cHJcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcHJvY2Vzc0V2ZW50QXR0cihldmVudE5hbWU6IHN0cmluZywgZXhwcjogc3RyaW5nLCBtZXRhPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGZuID0gJHBhcnNlRXZlbnQoZXhwcik7XG4gICAgICAgIGNvbnN0IGxvY2FscyA9IHRoaXMuY29udGV4dDtcbiAgICAgICAgbG9jYWxzLndpZGdldCA9IHRoaXMud2lkZ2V0O1xuICAgICAgICBjb25zdCBib3VuZEZuID0gZm4uYmluZCh1bmRlZmluZWQsIHRoaXMudmlld1BhcmVudCwgbG9jYWxzKTtcblxuICAgICAgICBjb25zdCBldmVudENhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGJvdW5kRm5WYWw7XG4gICAgICAgICAgICAkaW52b2tlV2F0Y2hlcnModHJ1ZSk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxvY2Fscy4kZXZlbnQgPSBsb2NhbHMuJGV2ZW50IHx8IG5ldyB3aW5kb3cuQ3VzdG9tRXZlbnQoZXZlbnROYW1lKTtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZXZlbnQgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIHZhcmlhYmxlIHRoZW4gd2UgbmVlZCB0byBpbnRlcm5hbGx5IGhhbmRsZVxuICAgICAgICAgICAgICAgIC8vIHRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSB2YXJpYWJsZSBjYWxsLlxuICAgICAgICAgICAgICAgIGJvdW5kRm5WYWwgPSBib3VuZEZuKCk7XG4gICAgICAgICAgICAgICAgaWYgKGJvdW5kRm5WYWwgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGJvdW5kRm5WYWwudGhlbiggcmVzcG9uc2UgPT4gcmVzcG9uc2UsIGVyciA9PiBlcnIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBib3VuZEZuVmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZXZlbnRIYW5kbGVycy5zZXQodGhpcy5nZXRNYXBwZWRFdmVudE5hbWUoZXZlbnROYW1lKSwge2NhbGxiYWNrOiBldmVudENhbGxiYWNrLCBsb2NhbHN9KTtcbiAgICAgICAgLy8gcHJlcGVuZCBldmVudE5hbWUgd2l0aCBvbiBhbmQgY29udmVydCBpdCB0byBjYW1lbGNhc2UuXG4gICAgICAgIC8vIGVnLCBcImNsaWNrXCIgLS0tPiBvbkNsaWNrXG4gICAgICAgIGNvbnN0IG9uRXZlbnROYW1lID0gIF8uY2FtZWxDYXNlKGBvbi0ke2V2ZW50TmFtZX1gKTtcbiAgICAgICAgLy8gc2F2ZSB0aGUgZXZlbnRDYWxsYmFjayBpbiB3aWRnZXRTY29wZS5cbiAgICAgICAgdGhpc1tvbkV2ZW50TmFtZV0gPSBldmVudENhbGxiYWNrO1xuXG4gICAgICAgIC8vIGV2ZW50cyBuZWVkcyB0byBiZSBzZXR1cCBhZnRlciB2aWV3SW5pdFxuICAgICAgICB0aGlzLnRvQmVTZXR1cEV2ZW50c1F1ZXVlLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFdmVudCh0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZ2V0TWFwcGVkRXZlbnROYW1lKGV2ZW50TmFtZSksIGV2ZW50Q2FsbGJhY2ssIGxvY2FscywgbWV0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGJvdW5kIHByb3BlcnR5XG4gICAgICogUmVnaXN0ZXIgYSB3YXRjaCBvbiB0aGUgYm91bmQgZXhwcmVzc2lvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwcm9jZXNzQmluZEF0dHIocHJvcE5hbWU6IHN0cmluZywgZXhwcjogc3RyaW5nKSB7XG5cbiAgICAgICAgdGhpcy5pbml0U3RhdGUuZGVsZXRlKHByb3BOYW1lKTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKFxuICAgICAgICAgICAgJHdhdGNoKFxuICAgICAgICAgICAgICAgIGV4cHIsXG4gICAgICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LFxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCxcbiAgICAgICAgICAgICAgICBudiA9PiB0aGlzLndpZGdldFtwcm9wTmFtZV0gPSBudixcbiAgICAgICAgICAgICAgICBnZXRXYXRjaElkZW50aWZpZXIodGhpcy53aWRnZXRJZCwgcHJvcE5hbWUpLFxuICAgICAgICAgICAgICAgIHByb3BOYW1lID09PSAnZGF0YXNvdXJjZScsXG4gICAgICAgICAgICAgICAgdGhpcy53aWRnZXRQcm9wcy5nZXQocHJvcE5hbWUpLFxuICAgICAgICAgICAgICAgICgpID0+IHRoaXMuaXNNdXRlZFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB3YXRjaCBvbiB0aGUgYm91bmQgcHJvcGVydHlcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVtb3ZlUHJvcGVydHlCaW5kaW5nKHByb3BOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgJHVud2F0Y2goZ2V0V2F0Y2hJZGVudGlmaWVyKHRoaXMud2lkZ2V0SWQsIHByb3BOYW1lKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaW52b2tlIHRoZSBldmVudCBjYWxsYmFjayBtZXRob2RcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG4gICAgICogQHBhcmFtIGV4dHJhTG9jYWxzXG4gICAgICovXG4gICAgcHVibGljIGludm9rZUV2ZW50Q2FsbGJhY2soZXZlbnROYW1lOiBzdHJpbmcsIGV4dHJhTG9jYWxzPzogYW55KSB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrSW5mbyA9IHRoaXMuZXZlbnRIYW5kbGVycy5nZXQoZXZlbnROYW1lKTtcbiAgICAgICAgaWYgKGNhbGxiYWNrSW5mbykge1xuICAgICAgICAgICAgY29uc3QgZm4gPSBjYWxsYmFja0luZm8uY2FsbGJhY2s7XG4gICAgICAgICAgICBjb25zdCBsb2NhbHMgPSBjYWxsYmFja0luZm8ubG9jYWxzIHx8IHt9O1xuXG4gICAgICAgICAgICBpZiAoZm4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm4oT2JqZWN0LmFzc2lnbihsb2NhbHMsIGV4dHJhTG9jYWxzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIHRoZSBhdHRyaWJ1dGVcbiAgICAgKiBJZiB0aGUgYXR0cmlidXRlIGlzIGFuIGV2ZW50IGV4cHJlc3Npb24sIGdlbmVyYXRlIGEgZnVuY3Rpb25hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXhwcmVzc2lvblxuICAgICAqICAgICAgYW5kIGtlZXAgaW4gZXZlbnRIYW5kbGVyc1xuICAgICAqIElmIHRoZSBhdHRyaWJ1dGUgaXMgYSBib3VuZCBleHByZXNzaW9uLCByZWdpc3RlciBhIHdhdGNoIG9uIHRoZSBleHByZXNzaW9uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHByb2Nlc3NBdHRyKGF0dHJOYW1lOiBzdHJpbmcsIGF0dHJWYWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHswOiBwcm9wTmFtZSwgMTogdHlwZSwgMjogbWV0YSwgbGVuZ3RofSA9IGF0dHJOYW1lLnNwbGl0KCcuJyk7XG4gICAgICAgIGlmICh0eXBlID09PSAnYmluZCcpIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBzaG93IHByb3BlcnR5IGlzIGJvdW5kLCBzZXQgdGhlIGluaXRpYWwgdmFsdWUgdG8gZmFsc2VcbiAgICAgICAgICAgIGlmIChwcm9wTmFtZSA9PT0gJ3Nob3cnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NCaW5kQXR0cihwcm9wTmFtZSwgYXR0clZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZXZlbnQnKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NFdmVudEF0dHIocHJvcE5hbWUsIGF0dHJWYWx1ZSwgbWV0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgY2xhc3MgYW5kIG5hbWUgYXR0cmlidXRlcy4gQ29tcG9uZW50IHdpbGwgc2V0IHRoZW0gb24gdGhlIHByb3BlciBub2RlXG4gICAgICAgICAgICBpZiAoYXR0ck5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIGF0dHJWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09PSAndGFiaW5kZXgnIHx8IGF0dHJOYW1lID09PSAnbmFtZScpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgYXR0ck5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmluaXRTdGF0ZS5zZXQocHJvcE5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjdXN0b20gYXR0cmlidXRlcyBwcm92aWRlZCBvbiBlbERlZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgcmVxdWlyZWQgYXMgdGhlIG5hdGl2ZSBlbGVtZW50IGF0dHJpYnV0ZXMgYXJlIGNhc2UgaW5zZW5zaXRpdmUoY2FtZWxjYXNlKSBsaWtlIGN1c3RvbUV4cHJlc3Npb25zIGJlY29tZXMgY3VzdG9tZXhwcmVzc2lvblxuICAgICAqIGFuZCBvdXIgbG9naWMgdG8gY2hlY2sgbGlrZSB0aGVzZSBjaGFuZ2VzIHdpbGwgZmFpbC4gQmVmb3JlIElWWSBjaGFuZ2VzLCBhbmd1bGFyIG1haW50YWlucyBhIHNlcGFyYXRlIG9iamVjdCB3aXRoIHRoZXNlIGF0dHJpYnV0ZXNcbiAgICAgKiBhcyBpdCBpcyBsaWtlIGluIHRoZSBjYW1lbGNhc2UuIFdpdGggSVZZIGFsbCB0aG9zZSBhcmUgZ29uZS4gU28gbmVlZCB0byBtYWludGFpbiBhIHNlcGFyYXRlIGxpc3Qgd2l0aCB0aGUgY2FtZWxjYXNpbmcgb2YgYXR0cmlidXRlc1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRBdHRyaWJ1dGVzKCkge1xuICAgICAgICBsZXQgX3ROb2RlQXR0cnMgPSAodGhpcy5pbmogYXMgYW55KS5fdE5vZGUuYXR0cnMsIGFjdHVhbEF0dHJzID0gQXJyYXkuZnJvbSh0aGlzLm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlcykubWFwKGF0dHIgPT4gYXR0ci5uYW1lKTtcbiAgICAgICAgaWYoX3ROb2RlQXR0cnMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxBdHRycztcbiAgICAgICAgfVxuICAgICAgICBfdE5vZGVBdHRycy5maWx0ZXIoYXR0ciA9PiB7XG4gICAgICAgICAgICBpZih0eXBlb2YgYXR0ciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBsZXQgbG93ZXJDYXNlQXR0ciA9IGF0dHIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0dWFsQXR0cnMuaW5jbHVkZXMobG93ZXJDYXNlQXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gYWN0dWFsQXR0cnMuaW5kZXhPZihsb3dlckNhc2VBdHRyKVxuICAgICAgICAgICAgICAgICAgICBhY3R1YWxBdHRyc1tpbmRleF0gPSBhdHRyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhY3R1YWxBdHRycztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIHRoZSBhdHRyaWJ1dGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9jZXNzQXR0cnMoKSB7XG4gICAgICAgIGNvbnN0IGF0dHJzID0gdGhpcy5nZXRBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgXy5tYXAoYXR0cnMsIChhdHRyTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBsZXQgYXR0clZhbHVlID0gdGhpcy5uYXRpdmVFbGVtZW50LmF0dHJpYnV0ZXNbYXR0ck5hbWVdLnZhbHVlXG4gICAgICAgICAgICB0aGlzLiRhdHRycy5zZXQoYXR0ck5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NBdHRyKGF0dHJOYW1lLCBhdHRyVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIGluaXRTdGF0ZSB3aXRoIHRoZSBkZWZhdWx0IHByb3BlcnR5IHZhbHVlcyBhbmQgdGhlIHZhbHVlcyBwcm92aWRlZCBpbiB0aGUgbWFya3VwXG4gICAgICogUHJvY2VzcyB0aGUgYXR0cmlidXRlc1xuICAgICAqIFJlZ2lzdGVyIHRoZSB3aWRnZXRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdFdpZGdldCgpIHtcbiAgICAgICAgdGhpcy5pbml0U3RhdGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gICAgICAgIC8vIGdldCB0aGUgd2lkZ2V0IHByb3BlcnRpZXNcbiAgICAgICAgY29uc3Qgd2lkZ2V0UHJvcHM6IE1hcDxzdHJpbmcsIGFueT4gPSBnZXRXaWRnZXRQcm9wc0J5VHlwZSh0aGlzLndpZGdldFN1YlR5cGUpO1xuICAgICAgICB3aWRnZXRQcm9wcy5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNEZWZpbmVkKHYudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U3RhdGUuc2V0KGssIHYudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLndpZGdldFByb3BzID0gd2lkZ2V0UHJvcHM7XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzQXR0cnMoKTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyV2lkZ2V0KHRoaXMuaW5pdFN0YXRlLmdldCgnbmFtZScpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIGRlZmF1bHQgcHJvcGVydGllcyBhbmQgdGhlIHByb3BlcnRpZXMgcHJvdmlkZWQgaW4gdGhlIG1hcmt1cCBpbiBjb21wb25lbnRcbiAgICAgKiBJbnZva2luZyB0aGlzIG1ldGhvZCB3aWxsIHJlc3VsdCBpbiBpbnZvY2F0aW9uIG9mIHByb3BlcnR5Q2hhbmdlIGhhbmRsZXJzIG9uIHRoZSBjb21wb25lbnQgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldEluaXRQcm9wcygpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5pdFN0YXRlLmdldCgnbmFtZScpKSB7XG4gICAgICAgICAgICB0aGlzLndpZGdldC5uYW1lID0gdGhpcy5pbml0U3RhdGUuZ2V0KCduYW1lJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0U3RhdGUuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICAgICAgLy8gbmFtZSBpcyBhbHJlYWR5IHNldCwgaWdub3JlIG5hbWVcbiAgICAgICAgICAgIC8vIGlmIHRoZSBrZXkgaXMgcGFydCBvZiB0byBiZSBpZ25vcmVkIGF0dHJpYnV0ZXMgbGlzdCBkbyBub3Qgc2V0IGl0IG9uIHRoZSBjb21wb25lbnQgaW5zdGFuY2VcbiAgICAgICAgICAgIGlmICgodGhpcy53aWRnZXRQcm9wcy5nZXQoaykgfHwgaXNTdHlsZShrKSkgJiYgayAhPT0gJ25hbWUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aWRnZXRba10gPSB2O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbml0U3RhdGUuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5pbml0U3RhdGUgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5yZWFkeVN0YXRlLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSwgaWYgYSBsaXN0ZW5lciByZWdpc3RlcmVkIGZvciB0aGUgZ2l2ZW4gZXZlbnQgb24gdGhpcyB3aWRnZXQgbWFya3VwLlxuICAgICAqIEBwYXJhbSBldmVudE5hbWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaGFzRXZlbnRDYWxsYmFjayhldmVudE5hbWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRIYW5kbGVycy5oYXMoZXZlbnROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBmb2N1cyBvbiB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2hlY2sgZm9yIHRoZSBub2RlcyBoYXZpbmcgZm9jdXMtdGFyZ2V0IGF0dHJpYnV0ZSBpbnNpZGUgdGhlIGVsZW1lbnRcbiAgICAgICAgICogSWYgZm91bmQsIGZvY3VzIHRoZSBmaXJzdCBub2RlIChlZywgZGF0ZSB3aWRnZXQpXG4gICAgICAgICAqIGVsc2UsIGZvY3VzIHRoZSBlbGVtZW50IChlZywgdGV4dCB3aWRnZXQpXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgJHRhcmdldCA9IHRoaXMuJGVsZW1lbnRbMF0ucXVlcnlTZWxlY3RvcignW2ZvY3VzLXRhcmdldF0nKTtcbiAgICAgICAgaWYgKCEkdGFyZ2V0KSB7XG4gICAgICAgICAgICAkdGFyZ2V0ID0gdGhpcy4kZWxlbWVudFswXTtcbiAgICAgICAgfVxuICAgICAgICAkdGFyZ2V0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5pbmcgdGhlIGV4ZWN1dGUgbWV0aG9kIG9uIEJhc2VDb21wb25lbnQuIElmIGRhdGFzZXQgaXMgYmluZGVkIHRvIHdpZGdldHMgb3VwdHV0IHRoZW4gZGF0YXNvdXJjZS5leGVjdXRlIHdpbGwgYmUgZGVmaW5lZFxuICAgIHByb3RlY3RlZCBleGVjdXRlKG9wZXJhdGlvbiwgb3B0aW9ucyk6IGFueSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgbXV0ZSgpIHtcbiAgICAgICAgdGhpcy5pc011dGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdW5tdXRlKCkge1xuICAgICAgICB0aGlzLmlzTXV0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZnRlciB0aGUgaG9zdCBwYWdlIGlzIGF0dGFjaGVkIGZyb20gY2FjaGUsIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uQXR0YWNoKCkge1xuICAgICAgICB0aGlzLmlzQXR0YWNoZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJlZm9yZSB0aGUgaG9zdCBwYWdlIGlzIGRldGFjaGVkIGZyb20gZG9tIGFuZCBzdG9yZWQgaW4gY2FjaGUsICB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRldGFjaCgpIHtcbiAgICAgICAgdGhpcy5pc0F0dGFjaGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbmF0aXZlRWxlbWVudCB3aWxsIGJlIGF2YWlsYWJsZSBieSB0aGlzIHRpbWVcbiAgICAgKiBpZiB0aGUgZGVsYXlJbml0IGlzIGZhbHNlLCBwcm9wZXJ0aWVzIG1ldGEgd2lsbCBiZSBhdmFpbGFibGUgYnkgdGhpcyB0aW1lXG4gICAgICogSW52b2tlIHRoZSBzZXRJbml0UHJvcHMgaWYgdGhlIGRlbGF5SW5pdCBpcyBmYWxzZVxuICAgICAqL1xuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuZGVsYXllZEluaXQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5pdFByb3BzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciB0aGUgZXZlbnRzXG4gICAgICovXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy50b0JlU2V0dXBFdmVudHNRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm4gb2YgdGhpcy50b0JlU2V0dXBFdmVudHNRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b0JlU2V0dXBFdmVudHNRdWV1ZS5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmlzQXR0YWNoZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHt9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5zdHlsZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnByb3BlcnR5Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmlzQXR0YWNoZWQgPSBmYWxzZTtcbiAgICB9XG59XG4iXX0=
|
|
615
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL2Jhc2Uvc3JjL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFHTixnQkFBZ0IsRUFFaEIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQUMsYUFBYSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU1QyxPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBQ0gsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE9BQU8sRUFDUCxNQUFNLEVBQ04sYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQWlCLE9BQU8sRUFBaUIsWUFBWSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0YsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsa0JBQWtC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dCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBJbmplY3RvcixcbiAgICBJbmplY3QsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIE9wdGlvbmFsLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RXZlbnRNYW5hZ2VyfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtSZXBsYXlTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgJHBhcnNlRXZlbnQsXG4gICAgJHVud2F0Y2gsXG4gICAgJHdhdGNoLFxuICAgIGFkZENsYXNzLFxuICAgIEFwcCxcbiAgICBpc0RlZmluZWQsXG4gICAgaXNNb2JpbGVBcHAsXG4gICAgcmVtb3ZlQXR0cixcbiAgICByZW1vdmVDbGFzcyxcbiAgICBzZXRBdHRyLFxuICAgIHNldENTUyxcbiAgICBzZXRDU1NGcm9tT2JqLFxuICAgIHN3aXRjaENsYXNzXG59IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHtnZXRXaWRnZXRQcm9wc0J5VHlwZX0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL3dpZGdldC1wcm9wcyc7XG5pbXBvcnQge2lzU3R5bGV9IGZyb20gJy4uLy4uL2ZyYW1ld29yay9zdHlsZXInO1xuaW1wb3J0IHtyZWdpc3RlciwgcmVuYW1lV2lkZ2V0fSBmcm9tICcuLi8uLi9mcmFtZXdvcmsvd2lkZ2V0LXJlZ2lzdHJ5JztcbmltcG9ydCB7Q2hhbmdlTGlzdGVuZXIsIENvbnRleHQsIElXaWRnZXRDb25maWcsIFdpZGdldENvbmZpZ30gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL3R5cGVzJztcbmltcG9ydCB7d2lkZ2V0SWRHZW5lcmF0b3J9IGZyb20gJy4uLy4uL2ZyYW1ld29yay93aWRnZXQtaWQtZ2VuZXJhdG9yJztcbmltcG9ydCB7RElTUExBWV9UWVBFLCBFVkVOVFNfTUFQfSBmcm9tICcuLi8uLi9mcmFtZXdvcmsvY29uc3RhbnRzJztcbmltcG9ydCB7V2lkZ2V0UHJveHlQcm92aWRlcn0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL3dpZGdldC1wcm94eS1wcm92aWRlcic7XG5pbXBvcnQge2dldFdhdGNoSWRlbnRpZmllcn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd2lkZ2V0LXV0aWxzJztcblxuZGVjbGFyZSBjb25zdCAkLCBfO1xuXG4vLyBHZXRzIGxpc3Qgb2YgY2xhc3NlcyB0byBhZGQgYW5kIHJlbW92ZSBhbmQgYXBwbGllcyBvbiB0aGUgJGVsXG5jb25zdCB1cGRhdGVDbGFzc2VzID0gKHRvQWRkLCB0b1JlbW92ZSwgZWwpID0+IHtcbiAgICBpZiAodG9SZW1vdmUgJiYgdG9SZW1vdmUubGVuZ3RoKSB7XG4gICAgICAgIHJlbW92ZUNsYXNzKGVsLCBfLmpvaW4odG9SZW1vdmUsICcgJykpO1xuICAgIH1cbiAgICBpZiAodG9BZGQgJiYgdG9BZGQubGVuZ3RoKSB7XG4gICAgICAgIGFkZENsYXNzKGVsLCBfLmpvaW4odG9BZGQsICcgJykpO1xuICAgIH1cbn07XG5cbi8vIFRvIGFkZCBhbmQgcmVtb3ZlIHN0eWxlcyBvbiB0aGUgJGVsXG5jb25zdCB1cGRhdGVTdHlsZXMgPSAobnYsIG92LCBlbCkgPT4ge1xuICAgIGlmIChvdiAmJiBfLmlzT2JqZWN0KG92KSkge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob3YgfHwge30pO1xuICAgICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgICAgICBzZXRDU1MoZWwsIGtleSwgJycpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaWYgKG52ICYmIF8uaXNPYmplY3QobnYpKSB7XG4gICAgICAgIHNldENTU0Zyb21PYmooZWwsIG52KTtcbiAgICB9XG5cbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gICAgLyoqXG4gICAgICogdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB3aWRnZXRcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgd2lkZ2V0SWQ6IGFueTtcblxuICAgIHB1YmxpYyBpc0Rlc3Ryb3llZDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBpc0F0dGFjaGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBqUXVlcnkgbmF0aXZlRWxlbWVudCByZWZlcmVuY2Ugb2YgdGhlIGNvbXBvbmVudCByb290XG4gICAgICovXG4gICAgcHVibGljIGdldCAkZWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuICQodGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBET00gbm9kZSByZWZlcmVuY2Ugb2YgdGhlIGNvbXBvbmVudCByb290XG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogVHlwZSBvZiB0aGUgY29tcG9uZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpZGdldFR5cGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE1vc3Qgb2YgdGhlIGNhc2VzIGl0IGlzIHNhbWUgYXMgd2lkZ2V0VHlwZVxuICAgICAqIGZvciBzcGVjaWZpYyB3aWRnZXRzIGxpa2UgY2hhcnRzIHdpZGdldFR5cGUgY2FuIGJlIHdtLWNoYXJ0IHdoZXJlIGFzIHRoZSBzdWJ0eXBlIGNhbiBiZSB3bS1iYXItY2hhcnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2lkZ2V0U3ViVHlwZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUHJveHkgZm9yIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHdpZGdldDogYW55O1xuXG4gICAgLyoqXG4gICAgICogVmlldyBwYXJlbnQgY29tcG9uZW50XG4gICAgICogZWcsIFBhZ2UsIFBhcnRpYWwsIFByZWZhYlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2aWV3UGFyZW50OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudE1hbmdlciB0byBhZGQvcmVtb3ZlIGV2ZW50c1xuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBldmVudE1hbmFnZXI6IEV2ZW50TWFuYWdlcjtcblxuICAgIC8qKlxuICAgICAqIEFwcCBMb2NhbGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXBwTG9jYWxlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBTdHlsZSBjaGFuZ2Ugc3ViamVjdCBhbmQgb2JzZXJ2YWJsZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3R5bGVDaGFuZ2UgPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgY2hhbmdlIHN1YmplY3QgYW5kIG9ic2VydmFibGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5Q2hhbmdlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8qKlxuICAgICAqIE9uIFJlYWR5IFN0YXRlIGNoYW5nZSBzdWJqZWN0IGFuZCBvYnNlcnZhYmxlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWFkeVN0YXRlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8qKlxuICAgICAqIENvbXBvbmVudCBkZXN0cm95IHN1YmplY3QgYW5kIG9ic2VydmFibGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgLyoqXG4gICAgICogTWFwIG9mIGV2ZW50IGhhbmRsZXIgY2FsbGJhY2tzXG4gICAgICovXG4gICAgcHJpdmF0ZSBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIHtjYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55fT4oKTtcblxuICAgIC8qKlxuICAgICAqIGNvbnRleHQgb2YgdGhlIHdpZGdldFxuICAgICAqIHdoZW4gdGhlIHdpZGdldCBpcyBwcmVzZXQgaW5zaWRlIGEgcmVwZWF0ZXIgdGhpcyBjb250ZXh0IHdpbGwgaGF2ZSB0aGUgcmVwZWF0ZXIgcmVsYXRlZCBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgcHVibGljIGNvbnRleHQ6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWwgc3RhdGUgb2YgdGhlIHdpZGdldC5cbiAgICAgKiBXaWxsIGJlIHVuZGVmaW5lZCBvbmNlIHRoZSBpbml0aWFsIHByb3BlcnRpZXMgYXJlIHNldCBvbiB0byB0aGUgY29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0U3RhdGU6IE1hcDxzdHJpbmcsIGFueT47XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcm5hbCBmbGFnIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHdhaXQgZm9yIHRoZSB3aWRnZXQgaW5pdGlhbGl6YXRpb24gb3Igbm90XG4gICAgICogSWYgdGhlIGluaXRQcm9taXNlIGlzIHByb3ZpZGVkIGluIHRoZSBjb25zdHJ1Y3Rpb24gd2FpdCB0aWxsIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkXG4gICAgICogSWYgdGhlIGluaXRQcm9taXNlIGlzIG5vdCBwcm92aWRlZCBwcm9jZWVkIHdpdGggdGhlIGluaXRpYWxpemF0aW9uLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlbGF5ZWRJbml0OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRGlzcGxheSB0eXBlIG9mIHRoZSBjb21wb25lbnQuIGVnLCBibG9jayhEZWZhdWx0KSwgaW5saW5lLWJsb2NrLCBpbmxpbmUgZXRjXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNwbGF5VHlwZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIGV2ZW50IHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMuXG4gICAgICogdGhlc2UgZnVuY3Rpb25zIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIG9uVmlld0luaXRcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvQmVTZXR1cEV2ZW50c1F1ZXVlOiBBcnJheTxGdW5jdGlvbj4gPSBbXTtcblxuICAgIHB1YmxpYyBfX2Nsb25lYWJsZV9fID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgd2lkZ2V0UHJvcHM6IE1hcDxzdHJpbmcsIGFueT47XG5cbiAgICBwcml2YXRlICRhdHRycyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICBwcml2YXRlIGlzTXV0ZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuICAgIHB1YmxpYyB2aWV3UGFyZW50QXBwOiBBcHA7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBpbmo6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFdpZGdldENvbmZpZykgY29uZmlnOiBJV2lkZ2V0Q29uZmlnLFxuICAgICAgICBpbml0UHJvbWlzZT86IFByb21pc2U8YW55PiAvLyBQcm9taXNlIG9uIHdoaWNoIHRoZSBpbml0aWFsaXphdGlvbiBoYXMgdG8gd2FpdFxuICAgICkge1xuICAgICAgICBjb25zdCBlbGVtZW50UmVmID0gaW5qLmdldChFbGVtZW50UmVmKTtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAvL21ha2luZyB0aGUgY29kZSBjb21wYXRpYmxlIGluIGJvdGggdGhlIEpJVCBhbmQgQU9UIG1vZGVzXG4gICAgICAgIHRoaXMudmlld1BhcmVudEFwcCA9IGluaiA/IGluai5nZXQoQXBwKSA6IGluamVjdChBcHApO1xuICAgICAgICB0aGlzLndpZGdldFR5cGUgPSBjb25maWcud2lkZ2V0VHlwZTtcbiAgICAgICAgdGhpcy53aWRnZXRTdWJUeXBlID0gY29uZmlnLndpZGdldFN1YlR5cGUgfHwgY29uZmlnLndpZGdldFR5cGU7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZiA9IGluai5nZXQoVmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIC8vIHRoaXMudmlld1BhcmVudCA9IChpbmogYXMgYW55KS52aWV3LmNvbXBvbmVudDtcbiAgICAgICAgLy8gdGhpcy52aWV3UGFyZW50ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLnBhcmVudEluamVjdG9yLl9sVmlld1s4XTtcbiAgICAgICAgLy8gdGhpcy52aWV3UGFyZW50ID0gX3ZpZXdQYXJlbnQgfHwgKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLnBhcmVudEluamVjdG9yLl9sVmlld1s4XTtcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21haW4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9pbnRlcmZhY2VzL3ZpZXcudHNcblxuICAgICAgICBsZXQgbFZpZXcgPSAodGhpcy5pbmogYXMgYW55KS5fbFZpZXc7XG4gICAgICAgIGNvbnN0IGdldFBhcmVudGxWaWV3ID0gKGxWaWV3OiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCItLS0qKioqKioqKioqKioqLS13aWRnZXRUeXBlLS0qKioqKioqKioqKioqLS0tXCIsIHRoaXMud2lkZ2V0VHlwZSk7XG4gICAgICAgICAgICBsZXQgcGFyZW50bFZpZXcgPSBsVmlld1szXTtcbiAgICAgICAgICAgIGlmKHR5cGVvZiBsVmlld1sxXSA9PT0gXCJib29sZWFuXCIpIHsgLy8gdGhpcyBpcyBsQ29udGFpbmVyLCBub3QgbFZpZXcgaWYgdGhpcyBpcyBib29sZWFuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFBhcmVudGxWaWV3KHBhcmVudGxWaWV3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBjb21wb25lbnRUeXBlID0gbFZpZXdbMV1bXCJ0eXBlXCJdO1xuICAgICAgICAgICAgaWYoY29tcG9uZW50VHlwZSA9PT0gMCB8fCBjb21wb25lbnRUeXBlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxWaWV3WzhdO1xuICAgICAgICAgICAgfSBlbHNlIHsgLy8gd2hlbiBjb21wb25lbnRUeXBlID09IDIsIHRoZW4gZmV0Y2ggcGFyZW50IGFnYWluXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldFBhcmVudGxWaWV3KHBhcmVudGxWaWV3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpZXdQYXJlbnQgPSBnZXRQYXJlbnRsVmlldyhsVmlldykgfHwgdGhpcy52aWV3UGFyZW50QXBwO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiLS0tKioqKioqKioqKioqKi0tY29udGV4dC0tKioqKioqKioqKioqKi0tLVwiLCBsVmlld1s4XSk7XG4gICAgICAgIHRoaXMuY29udGV4dCA9ICh0aGlzLmluaiBhcyBhbnkpLl9sVmlld1s4XTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlUeXBlID0gY29uZmlnLmRpc3BsYXlUeXBlIHx8IERJU1BMQVlfVFlQRS5CTE9DSztcbiAgICAgICAgLy8gdGhpcy5jb250ZXh0ID0gKGluaiBhcyBhbnkpLnZpZXcuY29udGV4dDtcbiAgICAgICAgLy8gdGhpcy5jb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLl9ob3N0TFZpZXcuZGVidWcuY29udGV4dDtcbiAgICAgICAgLy8gbGV0IGhhc0ltcGxpY2l0Q29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5faG9zdExWaWV3LmZpbmQodCA9PiB0ICYmICEhdC4kaW1wbGljaXQpO1xuICAgICAgICAvLyB3aGVuICRpbXBsaWNpdCBpcyBub3QgYXZhaWxhYmxlLCB0aGlzIG9iamVjdCBjb250YWlucyBzb21lIG5nRm9yIGNvbnRleHQgb3IgbGlzdGl0ZW0gY29udGV4dCBvZiB0aGUgd2lkZ2V0IHRoZW5cbiAgICAgICAgLy8gd2UgdXNlIHRoZSBkaXJlY3QgcGFyZW50IGZvciBleGFtcGxlOiBuYXYgY29tcG9uZW50IGlzIHRoZSBwYXJlbnQgZm9yIGFuY2hvciA9PiBhbmNob3IgZ2V0cyB2aWV3UGFyZW50IGFzIE5hdlxuICAgICAgICAvLyBJbiBvdGhlciBjYXNlLCB3aGVyZSB3ZSBoYXZlIGltcGxpY2l0Q29udGV4dCB0aGVyZSB3ZSBjYW4gbWFrZSB1c2Ugb2YgcGFnZS9hcHAgbGV2ZWwgY29udGV4dCBoZW5jZSB2aWV3UGFyZW50LnZpZXdQYXJlbnQgdG8gZ2V0IHBhZ2UgbGV2ZWwgY29udGV4dFxuICAgICAgICAvKmlmIChoYXNJbXBsaWNpdENvbnRleHQgJiYgdGhpcy52aWV3UGFyZW50LnZpZXdQYXJlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQud2lkZ2V0VHlwZSAhPT0gJ3dtLWNhcmQnICYmIHRoaXMudmlld1BhcmVudC53aWRnZXRUeXBlICE9PSAnd20taWZyYW1lZGlhbG9nJ1xuICAgICAgICAgICAgICAgICYmIHRoaXMudmlld1BhcmVudC53aWRnZXRUeXBlICE9PSAnd20tcGFydGlhbGRpYWxvZycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQgPSB0aGlzLnZpZXdQYXJlbnQudmlld1BhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc0ltcGxpY2l0Q29udGV4dCB8fCAoIXRoaXMudmlld1BhcmVudC53aWRnZXRUeXBlKSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLl9ob3N0TFZpZXcuZmluZCh0ID0+IHQgJiYgISF0LiRpbXBsaWNpdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkucGFyZW50SW5qZWN0b3IuX2xWaWV3WzhdO1xuICAgICAgICB9Ki9cblxuICAgICAgICAvKmlmKF92aWV3UGFyZW50ICYmICFoYXNJbXBsaWNpdENvbnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5faG9zdExWaWV3WzhdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gaGFzSW1wbGljaXRDb250ZXh0O1xuICAgICAgICB9Ki9cbiAgICAgICAgLy8gaWYgKFsnd20tbGlzdCcsICd3bS1uYXYnXS5pbmNsdWRlcyh0aGlzLnZpZXdQYXJlbnQud2lkZ2V0VHlwZSkgfHwgWyd3bS1jYXJvdXNlbC10ZW1wbGF0ZScsICd3bS1jYXJkJ10uaW5jbHVkZXModGhpcy53aWRnZXRUeXBlKSkge1xuICAgICAgICAvLyAgICAgdGhpcy5jb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLl9ob3N0TFZpZXcuZGVidWcuY29udGV4dDtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuY29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5wYXJlbnRJbmplY3Rvci5fbFZpZXdbOF07XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy53aWRnZXQgPSB0aGlzLmNyZWF0ZVByb3h5KCk7XG4gICAgICAgIHRoaXMuZXZlbnRNYW5hZ2VyID0gaW5qLmdldChFdmVudE1hbmFnZXIpO1xuICAgICAgICAodGhpcy5uYXRpdmVFbGVtZW50IGFzIGFueSkud2lkZ2V0ID0gdGhpcy53aWRnZXQ7XG5cbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSBpbmouZ2V0KEFwcCkuYXBwTG9jYWxlIHx8IHt9O1xuXG4gICAgICAgIHRoaXMuaW5pdENvbnRleHQoKTtcblxuICAgICAgICBpZiAoY29uZmlnLmhvc3RDbGFzcykge1xuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBjb25maWcuaG9zdENsYXNzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud2lkZ2V0SWQgPSB0aGlzLmdlbmVyYXRlV2lkZ2V0SWQoKTtcbiAgICAgICAgc2V0QXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsICd3aWRnZXQtaWQnLCB0aGlzLndpZGdldElkLCB0cnVlKTtcblxuICAgICAgICAvLyByZWdpc3RlciBkZWZhdWx0IHByb3BlcnR5IGNoYW5nZSBoYW5kbGVyIGFuZCBzdHlsZSBjaGFuZ2UgaGFuZGxlclxuICAgICAgICB0aGlzLnJlZ2lzdGVyU3R5bGVDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uU3R5bGVDaGFuZ2UsIHRoaXMpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uUHJvcGVydHlDaGFuZ2UsIHRoaXMpO1xuXG4gICAgICAgIC8vIGlmIHRoZSBpbml0UHJvbWlzZSBpcyBwcm92aWRlZCwgd2FpdCB0aWxsIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHRvIHByb2NlZWQgd2l0aCB0aGUgd2lkZ2V0IGluaXRpYWxpemF0aW9uXG4gICAgICAgIGlmICghaW5pdFByb21pc2UpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFdpZGdldCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZWxheWVkSW5pdCA9IHRydWU7XG4gICAgICAgICAgICBpbml0UHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRXaWRnZXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEluaXRQcm9wcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdpZGdldFR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0VHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V2lkZ2V0U3ViVHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXRTdWJUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXaWRnZXQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQcm9wZXJ0eShwcm9wTmFtZSwgcHJvcFZhbHVlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0W3Byb3BOYW1lXSA9IHByb3BWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Vmlld1BhcmVudCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3UGFyZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBub3RpZnlTdHlsZUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y6IGFueSkge1xuICAgICAgICB0aGlzLnN0eWxlQ2hhbmdlLm5leHQoe2tleSwgbnYsIG92fSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeVByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdjogYW55KSB7XG4gICAgICAgIHRoaXMucHJvcGVydHlDaGFuZ2UubmV4dCh7a2V5LCBudiwgb3Z9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJTdHlsZUNoYW5nZUxpc3RlbmVyKGZuOiBDaGFuZ2VMaXN0ZW5lciwgY3R4PzogYW55KSB7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICAgIGZuID0gZm4uYmluZChjdHgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2Uuc3Vic2NyaWJlKCh7a2V5LCBudiwgb3Z9KSA9PiBmbihrZXksIG52LCBvdikpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclJlYWR5U3RhdGVMaXN0ZW5lcihmbjogRnVuY3Rpb24sIGN0eD86IGFueSkge1xuICAgICAgICBpZiAoY3R4KSB7XG4gICAgICAgICAgICBmbiA9IGZuLmJpbmQoY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlLmlzU3RvcHBlZCkge1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlYWR5U3RhdGUuc3Vic2NyaWJlKCgpID0+IGZuKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclByb3BlcnR5Q2hhbmdlTGlzdGVuZXIoZm46IENoYW5nZUxpc3RlbmVyLCBjdHg/OiBhbnkpIHtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgZm4gPSBmbi5iaW5kKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZS5zdWJzY3JpYmUoKHtrZXksIG52LCBvdn0pID0+IGZuKGtleSwgbnYsIG92KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKGZuOiBGdW5jdGlvbiwgY3R4PzogYW55KSB7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICAgIGZuID0gZm4uYmluZChjdHgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGVzdHJveS5zdWJzY3JpYmUoKCkgPT4ge30sICgpID0+IHt9LCAoKSA9PiBmbigpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGlzcGxheVR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheVR5cGU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVByb3h5KCk6IGFueSB7XG4gICAgICAgIHJldHVybiBXaWRnZXRQcm94eVByb3ZpZGVyLmNyZWF0ZSh0aGlzLCB0aGlzLndpZGdldFN1YlR5cGUsIGdldFdpZGdldFByb3BzQnlUeXBlKHRoaXMud2lkZ2V0U3ViVHlwZSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0Q29udGV4dCgpIHtcbiAgICAgICAgLy8gY29uc3QgY29udGV4dCA9ICh0aGlzLmluaiBhcyBhbnkpLnZpZXcuY29udGV4dDtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCB8fCB7fTtcblxuICAgICAgICBjb25zdCBwYXJlbnRDb250ZXh0cyA9IHRoaXMuaW5qLmdldChDb250ZXh0LCB7fSk7XG5cbiAgICAgICAgLy8gYXNzaWduIHRoZSBjb250ZXh0IHByb3BlcnR5IGFjY29yZGluZ2x5XG4gICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQgIT09IGNvbnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJlbnRDb250ZXh0cykge1xuICAgICAgICAgICAgbGV0IHBhcmVudENvbnRleHRPYmogPSB7fTtcbiAgICAgICAgICAgIGlmIChfLmlzQXJyYXkocGFyZW50Q29udGV4dHMpKSB7XG4gICAgICAgICAgICAgICAgXy5mb3JFYWNoKHBhcmVudENvbnRleHRzLCAoY29udGV4dE9iaikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBhcmVudENvbnRleHRPYmosIGNvbnRleHRPYmopO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRDb250ZXh0T2JqID0gcGFyZW50Q29udGV4dHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSBPYmplY3QuYXNzaWduKHt9LCBwYXJlbnRDb250ZXh0T2JqLCB0aGlzLmNvbnRleHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0IHRoZSB2YWx1ZSBvbiB0aGUgcHJveHkgb2JqZWN0IGllLCB3aWRnZXRcbiAgICAgKiBzZXR0aW5nIHRoZSBwcm9wZXJ0eSBvbiB0aGUgcHJveHkgd2lsbCBpbnZva2UgdGhlIGNoYW5nZSBsaXN0ZW5lcnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICovXG4gICAgcHVibGljIHNldFdpZGdldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMud2lkZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXR0cihhdHRyTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGF0dHJzLmdldChhdHRyTmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBhcHAgaW5zdGFuY2VcbiAgICAgKiBAcmV0dXJucyB7QXBwfVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBcHBJbnN0YW5jZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qLmdldChBcHApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBpZFxuICAgICAqIERlZmF1bHQgcGF0dGVybiBpcyBgd2lkZ2V0LWlkLSR7aWR9YFxuICAgICAqIENvbXBvbmVudHMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGdlbmVyYXRlIGEgZGlmZmVyZW50IGlkIGVnLCBiYXItY2hhcnQtMVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZW5lcmF0ZVdpZGdldElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB3aWRnZXRJZEdlbmVyYXRvci5uZXh0VWlkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyB0aGUgY29tbW9uIGZ1bmN0aW9uYWxpdHkgYWNyb3NzIHRoZSBjb21wb25lbnRzXG4gICAgICogZWcsXG4gICAgICogIDEuIHZhbHVlIG9mIHRoZSBjbGFzcyBwcm9wZXJ0eSB3aWxsIGJlIGFwcGxpZWQgb24gdGhlIGhvc3QgZWxlbWVudFxuICAgICAqICAyLiBiYXNlZCBvbiB0aGUgdmFsdWUgb2Ygc2hvdyBwcm9wZXJ0eSBjb21wb25lbnQgaXMgc2hvd24vaGlkZGVuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gICAgICogQHBhcmFtIG52XG4gICAgICogQHBhcmFtIG92XG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdzaG93Jykge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmhpZGRlbiA9ICFudjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdoaW50Jykge1xuICAgICAgICAgICAgaWYgKCFpc01vYmlsZUFwcCgpKSB7XG4gICAgICAgICAgICAgICAgc2V0QXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsICd0aXRsZScsIG52KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgIHN3aXRjaENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgbnYsIG92KTtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBudi5tYXRjaCgvKFxcV3xeKShoKFswLTZdKSkoPz1cXHN8JCkvKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBzZXRBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgJ3JvbGUnLCAnaGVhZGluZycpO1xuICAgICAgICAgICAgICAgIHNldEF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCAnYXJpYS1sZXZlbCcsIHJlc3VsdFszXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnbmFtZScgfHwga2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICBzZXRBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwga2V5LCBudik7XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnbmFtZScgJiYgbnYpIHtcbiAgICAgICAgICAgICAgICByZW5hbWVXaWRnZXQodGhpcy52aWV3UGFyZW50LCB0aGlzLndpZGdldCwgbnYsIG92KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdjb25kaXRpb25hbGNsYXNzJykge1xuICAgICAgICAgICAgLy8gdXBkYXRlIGNsYXNzZXMgaWYgb2xkIGFuZCBudiB2YWx1ZSBhcmUgZGlmZmVyZW50XG4gICAgICAgICAgICB1cGRhdGVDbGFzc2VzKG52LnRvQWRkLCBudi50b1JlbW92ZSwgdGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlICBpZiAoa2V5ID09PSAnYXV0b3BsYXknKSB7XG4gICAgICAgICAgICBjb25zdCB0YWdOYW1lID0gdGhpcy53aWRnZXRUeXBlID09PSAnd20tYXVkaW8nID8gJ2F1ZGlvJyA6ICd2aWRlbyc7XG4gICAgICAgICAgICAvLyBUcmlnZ2VyIG1lZGlhKGF1ZGlvL3ZpZGVvKSBlbGVtZW50IGxvYWQgbWV0aG9kIGFmdGVyIGNoYW5naW5nIGF1dG9wbGF5IHByb3BlcnR5XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcih0YWdOYW1lKS5sb2FkKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnY29uZGl0aW9uYWxzdHlsZScpIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBzdHlsZXMgaWYgb2xkIGFuZCBudiB2YWx1ZSBhcmUgZGlmZmVyZW50XG4gICAgICAgICAgICB1cGRhdGVTdHlsZXMobnYsIG92LCB0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2FuaW1hdGlvbicpIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBzdHlsZXMgaWYgb2xkIGFuZCBudiB2YWx1ZSBhcmUgZGlmZmVyZW50XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIFwiYW5pbWF0ZWQgXCIgKyBudik7XG4gICAgICAgIH0gIGVsc2UgaWYgKGtleSA9PT0gJ2Rpc2FibGVkJykge1xuICAgICAgICAgICAgLy8gV01TLTE5MzIxOiBJbiBJRSwgd2lkZ2V0IGlzIGluIGRpc2FibGVkIHN0YXRlIHdoZW4gZGlzYWJsZWQ9XCJmYWxzZVwiIGF0dHJpYnV0ZSBpcyBwcmVzZW50XG4gICAgICAgICAgICAobnYgPT09IHRydWUpID8gc2V0QXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsICd0cnVlJywgdHJ1ZSkgOiByZW1vdmVBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHN0eWxlIGNoYW5nZSBoYW5kbGVyXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uU3R5bGVDaGFuZ2Uoazogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge31cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIHRoZSB3aWRnZXQgd2l0aCB0aGUgd2lkZ2V0UmVnaXN0cnlcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVnaXN0ZXJXaWRnZXQod2lkZ2V0TmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIocmVnaXN0ZXIodGhpcy53aWRnZXQsIHRoaXMudmlld1BhcmVudCwgdGhpcy53aWRnZXRJZCwgd2lkZ2V0TmFtZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG92ZXJyaWRlIHRoZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRNYXBwZWRFdmVudE5hbWUoZXZlbnROYW1lKSB7XG4gICAgICAgIHJldHVybiBFVkVOVFNfTUFQLmdldChldmVudE5hbWUpIHx8IGV2ZW50TmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpbnZva2UgdGhlIGV2ZW50IGhhbmRsZXJcbiAgICAgKiBDb21wb25lbnRzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBleGVjdXRlIGN1c3RvbSBsb2dpYyBiZWZvcmUgaW52b2tpbmcgdGhlIHVzZXIgY2FsbGJhY2tcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudENhbGxiYWNrOiBGdW5jdGlvbiwgbG9jYWxzOiBhbnksIG1ldGE/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgICBlID0+IHtcbiAgICAgICAgICAgICAgICBsb2NhbHMuJGV2ZW50ID0gZTtcbiAgICAgICAgICAgICAgICBpZiAobWV0YSA9PT0gJ2RlbGF5ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBldmVudENhbGxiYWNrKCksIDE1MCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50Q2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcGFyc2UgdGhlIGV2ZW50IGV4cHJlc3Npb24gYW5kIHNhdmUgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbiBpbnNpZGUgZXZlbnRIYW5kbGVycyBtYXBcbiAgICAgKiBJZiB0aGUgY29tcG9uZW50IHByb3ZpZGVzIGEgb3ZlcnJpZGUgZm9yIGFuIGV2ZW50IHRocm91Z2ggQEV2ZW50IGRlY29yYXRvciBpbnZva2UgdGhhdFxuICAgICAqIGVsc2UgaW52b2tlIHRoZSByZXNvbHZlZCBmdW5jdGlvblxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleHByXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHByb2Nlc3NFdmVudEF0dHIoZXZlbnROYW1lOiBzdHJpbmcsIGV4cHI6IHN0cmluZywgbWV0YT86IHN0cmluZykge1xuICAgICAgICBjb25zdCBmbiA9ICRwYXJzZUV2ZW50KGV4cHIpO1xuICAgICAgICBjb25zdCBsb2NhbHMgPSB0aGlzLmNvbnRleHQ7XG4gICAgICAgIGxvY2Fscy53aWRnZXQgPSB0aGlzLndpZGdldDtcbiAgICAgICAgY29uc3QgYm91bmRGbiA9IGZuLmJpbmQodW5kZWZpbmVkLCB0aGlzLnZpZXdQYXJlbnQsIGxvY2Fscyk7XG5cbiAgICAgICAgY29uc3QgZXZlbnRDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBib3VuZEZuVmFsO1xuICAgICAgICAgICAgJGludm9rZVdhdGNoZXJzKHRydWUpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsb2NhbHMuJGV2ZW50ID0gbG9jYWxzLiRldmVudCB8fCBuZXcgd2luZG93LkN1c3RvbUV2ZW50KGV2ZW50TmFtZSk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSB2YXJpYWJsZSB0aGVuIHdlIG5lZWQgdG8gaW50ZXJuYWxseSBoYW5kbGVcbiAgICAgICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdmFyaWFibGUgY2FsbC5cbiAgICAgICAgICAgICAgICBib3VuZEZuVmFsID0gYm91bmRGbigpO1xuICAgICAgICAgICAgICAgIGlmIChib3VuZEZuVmFsIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBib3VuZEZuVmFsLnRoZW4oIHJlc3BvbnNlID0+IHJlc3BvbnNlLCBlcnIgPT4gZXJyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm91bmRGblZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmV2ZW50SGFuZGxlcnMuc2V0KHRoaXMuZ2V0TWFwcGVkRXZlbnROYW1lKGV2ZW50TmFtZSksIHtjYWxsYmFjazogZXZlbnRDYWxsYmFjaywgbG9jYWxzfSk7XG4gICAgICAgIC8vIHByZXBlbmQgZXZlbnROYW1lIHdpdGggb24gYW5kIGNvbnZlcnQgaXQgdG8gY2FtZWxjYXNlLlxuICAgICAgICAvLyBlZywgXCJjbGlja1wiIC0tLT4gb25DbGlja1xuICAgICAgICBjb25zdCBvbkV2ZW50TmFtZSA9ICBfLmNhbWVsQ2FzZShgb24tJHtldmVudE5hbWV9YCk7XG4gICAgICAgIC8vIHNhdmUgdGhlIGV2ZW50Q2FsbGJhY2sgaW4gd2lkZ2V0U2NvcGUuXG4gICAgICAgIHRoaXNbb25FdmVudE5hbWVdID0gZXZlbnRDYWxsYmFjaztcblxuICAgICAgICAvLyBldmVudHMgbmVlZHMgdG8gYmUgc2V0dXAgYWZ0ZXIgdmlld0luaXRcbiAgICAgICAgdGhpcy50b0JlU2V0dXBFdmVudHNRdWV1ZS5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXZlbnQodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLmdldE1hcHBlZEV2ZW50TmFtZShldmVudE5hbWUpLCBldmVudENhbGxiYWNrLCBsb2NhbHMsIG1ldGEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIHRoZSBib3VuZCBwcm9wZXJ0eVxuICAgICAqIFJlZ2lzdGVyIGEgd2F0Y2ggb24gdGhlIGJvdW5kIGV4cHJlc3Npb25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcHJvY2Vzc0JpbmRBdHRyKHByb3BOYW1lOiBzdHJpbmcsIGV4cHI6IHN0cmluZykge1xuXG4gICAgICAgIHRoaXMuaW5pdFN0YXRlLmRlbGV0ZShwcm9wTmFtZSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoXG4gICAgICAgICAgICAkd2F0Y2goXG4gICAgICAgICAgICAgICAgZXhwcixcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQsXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LFxuICAgICAgICAgICAgICAgIG52ID0+IHRoaXMud2lkZ2V0W3Byb3BOYW1lXSA9IG52LFxuICAgICAgICAgICAgICAgIGdldFdhdGNoSWRlbnRpZmllcih0aGlzLndpZGdldElkLCBwcm9wTmFtZSksXG4gICAgICAgICAgICAgICAgcHJvcE5hbWUgPT09ICdkYXRhc291cmNlJyxcbiAgICAgICAgICAgICAgICB0aGlzLndpZGdldFByb3BzLmdldChwcm9wTmFtZSksXG4gICAgICAgICAgICAgICAgKCkgPT4gdGhpcy5pc011dGVkXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHdhdGNoIG9uIHRoZSBib3VuZCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZW1vdmVQcm9wZXJ0eUJpbmRpbmcocHJvcE5hbWU6IHN0cmluZykge1xuICAgICAgICAkdW53YXRjaChnZXRXYXRjaElkZW50aWZpZXIodGhpcy53aWRnZXRJZCwgcHJvcE5hbWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpbnZva2UgdGhlIGV2ZW50IGNhbGxiYWNrIG1ldGhvZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVcbiAgICAgKiBAcGFyYW0gZXh0cmFMb2NhbHNcbiAgICAgKi9cbiAgICBwdWJsaWMgaW52b2tlRXZlbnRDYWxsYmFjayhldmVudE5hbWU6IHN0cmluZywgZXh0cmFMb2NhbHM/OiBhbnkpIHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2tJbmZvID0gdGhpcy5ldmVudEhhbmRsZXJzLmdldChldmVudE5hbWUpO1xuICAgICAgICBpZiAoY2FsbGJhY2tJbmZvKSB7XG4gICAgICAgICAgICBjb25zdCBmbiA9IGNhbGxiYWNrSW5mby5jYWxsYmFjaztcbiAgICAgICAgICAgIGNvbnN0IGxvY2FscyA9IGNhbGxiYWNrSW5mby5sb2NhbHMgfHwge307XG5cbiAgICAgICAgICAgIGlmIChmbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmbihPYmplY3QuYXNzaWduKGxvY2FscywgZXh0cmFMb2NhbHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGF0dHJpYnV0ZVxuICAgICAqIElmIHRoZSBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgZXhwcmVzc2lvbiwgZ2VuZXJhdGUgYSBmdW5jdGlvbmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBleHByZXNzaW9uXG4gICAgICogICAgICBhbmQga2VlcCBpbiBldmVudEhhbmRsZXJzXG4gICAgICogSWYgdGhlIGF0dHJpYnV0ZSBpcyBhIGJvdW5kIGV4cHJlc3Npb24sIHJlZ2lzdGVyIGEgd2F0Y2ggb24gdGhlIGV4cHJlc3Npb25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcHJvY2Vzc0F0dHIoYXR0ck5hbWU6IHN0cmluZywgYXR0clZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgezA6IHByb3BOYW1lLCAxOiB0eXBlLCAyOiBtZXRhLCBsZW5ndGh9ID0gYXR0ck5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdiaW5kJykge1xuICAgICAgICAgICAgLy8gaWYgdGhlIHNob3cgcHJvcGVydHkgaXMgYm91bmQsIHNldCB0aGUgaW5pdGlhbCB2YWx1ZSB0byBmYWxzZVxuICAgICAgICAgICAgaWYgKHByb3BOYW1lID09PSAnc2hvdycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0JpbmRBdHRyKHByb3BOYW1lLCBhdHRyVmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdldmVudCcpIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0V2ZW50QXR0cihwcm9wTmFtZSwgYXR0clZhbHVlLCBtZXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChsZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBjbGFzcyBhbmQgbmFtZSBhdHRyaWJ1dGVzLiBDb21wb25lbnQgd2lsbCBzZXQgdGhlbSBvbiB0aGUgcHJvcGVyIG5vZGVcbiAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PT0gJ2NsYXNzJykge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgYXR0clZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT09ICd0YWJpbmRleCcgfHwgYXR0ck5hbWUgPT09ICduYW1lJykge1xuICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCBhdHRyTmFtZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdFN0YXRlLnNldChwcm9wTmFtZSwgYXR0clZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGN1c3RvbSBhdHRyaWJ1dGVzIHByb3ZpZGVkIG9uIGVsRGVmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyByZXF1aXJlZCBhcyB0aGUgbmF0aXZlIGVsZW1lbnQgYXR0cmlidXRlcyBhcmUgY2FzZSBpbnNlbnNpdGl2ZShjYW1lbGNhc2UpIGxpa2UgY3VzdG9tRXhwcmVzc2lvbnMgYmVjb21lcyBjdXN0b21leHByZXNzaW9uXG4gICAgICogYW5kIG91ciBsb2dpYyB0byBjaGVjayBsaWtlIHRoZXNlIGNoYW5nZXMgd2lsbCBmYWlsLiBCZWZvcmUgSVZZIGNoYW5nZXMsIGFuZ3VsYXIgbWFpbnRhaW5zIGEgc2VwYXJhdGUgb2JqZWN0IHdpdGggdGhlc2UgYXR0cmlidXRlc1xuICAgICAqIGFzIGl0IGlzIGxpa2UgaW4gdGhlIGNhbWVsY2FzZS4gV2l0aCBJVlkgYWxsIHRob3NlIGFyZSBnb25lLiBTbyBuZWVkIHRvIG1haW50YWluIGEgc2VwYXJhdGUgbGlzdCB3aXRoIHRoZSBjYW1lbGNhc2luZyBvZiBhdHRyaWJ1dGVzXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBfdE5vZGUuYXR0cnMgYXR0cmlidXRlcyBhcmUgc3RvcmVkIGluIGFycmF5KGV2ZW4gaW5kZXg6IGtleSwgb2RkIGluZGV4OiB2YWx1ZSlcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIGxldCBfdE5vZGVBdHRycyA9ICh0aGlzLmluaiBhcyBhbnkpLl90Tm9kZS5hdHRycywgYWN0dWFsQXR0cnMgPSBBcnJheS5mcm9tKHRoaXMubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzKS5tYXAoYXR0ciA9PiBhdHRyLm5hbWUpO1xuICAgICAgICBpZihfdE5vZGVBdHRycyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGFjdHVhbEF0dHJzO1xuICAgICAgICB9XG4gICAgICAgIF8uZm9yRWFjaChfdE5vZGVBdHRycywgKGF0dHIsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYXR0ciA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZih0eXBlb2YgYXR0ciA9PT0gJ3N0cmluZycgJiYgaSAlIDIgPT0gMCkge1xuICAgICAgICAgICAgICAgIGxldCBsb3dlckNhc2VBdHRyID0gYXR0ci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChhY3R1YWxBdHRycy5pbmNsdWRlcyhsb3dlckNhc2VBdHRyKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBhY3R1YWxBdHRycy5pbmRleE9mKGxvd2VyQ2FzZUF0dHIpXG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbEF0dHJzW2luZGV4XSA9IGF0dHI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFjdHVhbEF0dHJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGF0dHJpYnV0ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NBdHRycygpIHtcbiAgICAgICAgY29uc3QgYXR0cnMgPSB0aGlzLmdldEF0dHJpYnV0ZXMoKTtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBfLm1hcChhdHRycywgKGF0dHJOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCBhdHRyVmFsdWUgPSB0aGlzLm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlc1thdHRyTmFtZV0udmFsdWVcbiAgICAgICAgICAgIHRoaXMuJGF0dHJzLnNldChhdHRyTmFtZSwgYXR0clZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0F0dHIoYXR0ck5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgaW5pdFN0YXRlIHdpdGggdGhlIGRlZmF1bHQgcHJvcGVydHkgdmFsdWVzIGFuZCB0aGUgdmFsdWVzIHByb3ZpZGVkIGluIHRoZSBtYXJrdXBcbiAgICAgKiBQcm9jZXNzIHRoZSBhdHRyaWJ1dGVzXG4gICAgICogUmVnaXN0ZXIgdGhlIHdpZGdldFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpbml0V2lkZ2V0KCkge1xuICAgICAgICB0aGlzLmluaXRTdGF0ZSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgICAgICAgLy8gZ2V0IHRoZSB3aWRnZXQgcHJvcGVydGllc1xuICAgICAgICBjb25zdCB3aWRnZXRQcm9wczogTWFwPHN0cmluZywgYW55PiA9IGdldFdpZGdldFByb3BzQnlUeXBlKHRoaXMud2lkZ2V0U3ViVHlwZSk7XG4gICAgICAgIHdpZGdldFByb3BzLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQodi52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTdGF0ZS5zZXQoaywgdi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMud2lkZ2V0UHJvcHMgPSB3aWRnZXRQcm9wcztcblxuICAgICAgICB0aGlzLnByb2Nlc3NBdHRycygpO1xuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJXaWRnZXQodGhpcy5pbml0U3RhdGUuZ2V0KCduYW1lJykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIGFuZCB0aGUgcHJvcGVydGllcyBwcm92aWRlZCBpbiB0aGUgbWFya3VwIGluIGNvbXBvbmVudFxuICAgICAqIEludm9raW5nIHRoaXMgbWV0aG9kIHdpbGwgcmVzdWx0IGluIGludm9jYXRpb24gb2YgcHJvcGVydHlDaGFuZ2UgaGFuZGxlcnMgb24gdGhlIGNvbXBvbmVudCBmb3IgdGhlIGZpcnN0IHRpbWVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0SW5pdFByb3BzKCkge1xuICAgICAgICBpZiAodGhpcy5pbml0U3RhdGUuZ2V0KCduYW1lJykpIHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Lm5hbWUgPSB0aGlzLmluaXRTdGF0ZS5nZXQoJ25hbWUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXRTdGF0ZS5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICAvLyBuYW1lIGlzIGFscmVhZHkgc2V0LCBpZ25vcmUgbmFtZVxuICAgICAgICAgICAgLy8gaWYgdGhlIGtleSBpcyBwYXJ0IG9mIHRvIGJlIGlnbm9yZWQgYXR0cmlidXRlcyBsaXN0IGRvIG5vdCBzZXQgaXQgb24gdGhlIGNvbXBvbmVudCBpbnN0YW5jZVxuICAgICAgICAgICAgaWYgKCh0aGlzLndpZGdldFByb3BzLmdldChrKSB8fCBpc1N0eWxlKGspKSAmJiBrICE9PSAnbmFtZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLndpZGdldFtrXSA9IHY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmluaXRTdGF0ZS5jbGVhcigpO1xuICAgICAgICB0aGlzLmluaXRTdGF0ZSA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLnJlYWR5U3RhdGUubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5yZWFkeVN0YXRlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlLCBpZiBhIGxpc3RlbmVyIHJlZ2lzdGVyZWQgZm9yIHRoZSBnaXZlbiBldmVudCBvbiB0aGlzIHdpZGdldCBtYXJrdXAuXG4gICAgICogQHBhcmFtIGV2ZW50TmFtZVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBoYXNFdmVudENhbGxiYWNrKGV2ZW50TmFtZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVudEhhbmRsZXJzLmhhcyhldmVudE5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZvY3VzIG9uIHRoZSB3aWRnZXRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDaGVjayBmb3IgdGhlIG5vZGVzIGhhdmluZyBmb2N1cy10YXJnZXQgYXR0cmlidXRlIGluc2lkZSB0aGUgZWxlbWVudFxuICAgICAgICAgKiBJZiBmb3VuZCwgZm9jdXMgdGhlIGZpcnN0IG5vZGUgKGVnLCBkYXRlIHdpZGdldClcbiAgICAgICAgICogZWxzZSwgZm9jdXMgdGhlIGVsZW1lbnQgKGVnLCB0ZXh0IHdpZGdldClcbiAgICAgICAgICovXG4gICAgICAgIGxldCAkdGFyZ2V0ID0gdGhpcy4kZWxlbWVudFswXS5xdWVyeVNlbGVjdG9yKCdbZm9jdXMtdGFyZ2V0XScpO1xuICAgICAgICBpZiAoISR0YXJnZXQpIHtcbiAgICAgICAgICAgICR0YXJnZXQgPSB0aGlzLiRlbGVtZW50WzBdO1xuICAgICAgICB9XG4gICAgICAgICR0YXJnZXQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmluZyB0aGUgZXhlY3V0ZSBtZXRob2Qgb24gQmFzZUNvbXBvbmVudC4gSWYgZGF0YXNldCBpcyBiaW5kZWQgdG8gd2lkZ2V0cyBvdXB0dXQgdGhlbiBkYXRhc291cmNlLmV4ZWN1dGUgd2lsbCBiZSBkZWZpbmVkXG4gICAgcHJvdGVjdGVkIGV4ZWN1dGUob3BlcmF0aW9uLCBvcHRpb25zKTogYW55IHtcblxuICAgIH1cblxuICAgIHB1YmxpYyBtdXRlKCkge1xuICAgICAgICB0aGlzLmlzTXV0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyB1bm11dGUoKSB7XG4gICAgICAgIHRoaXMuaXNNdXRlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFmdGVyIHRoZSBob3N0IHBhZ2UgaXMgYXR0YWNoZWQgZnJvbSBjYWNoZSwgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcHVibGljIG5nT25BdHRhY2goKSB7XG4gICAgICAgIHRoaXMuaXNBdHRhY2hlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmVmb3JlIHRoZSBob3N0IHBhZ2UgaXMgZGV0YWNoZWQgZnJvbSBkb20gYW5kIHN0b3JlZCBpbiBjYWNoZSwgIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLmlzQXR0YWNoZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBuYXRpdmVFbGVtZW50IHdpbGwgYmUgYXZhaWxhYmxlIGJ5IHRoaXMgdGltZVxuICAgICAqIGlmIHRoZSBkZWxheUluaXQgaXMgZmFsc2UsIHByb3BlcnRpZXMgbWV0YSB3aWxsIGJlIGF2YWlsYWJsZSBieSB0aGlzIHRpbWVcbiAgICAgKiBJbnZva2UgdGhlIHNldEluaXRQcm9wcyBpZiB0aGUgZGVsYXlJbml0IGlzIGZhbHNlXG4gICAgICovXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5kZWxheWVkSW5pdCkge1xuICAgICAgICAgICAgdGhpcy5zZXRJbml0UHJvcHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIHRoZSBldmVudHNcbiAgICAgKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvQmVTZXR1cEV2ZW50c1F1ZXVlLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmbiBvZiB0aGlzLnRvQmVTZXR1cEV2ZW50c1F1ZXVlKSB7XG4gICAgICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvQmVTZXR1cEV2ZW50c1F1ZXVlLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuaXNBdHRhY2hlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge31cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmlzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy53aWRnZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLnN0eWxlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMucHJvcGVydHlDaGFuZ2UuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuaXNBdHRhY2hlZCA9IGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -5,7 +5,7 @@ export class LazyLoadDirective {
|
|
|
5
5
|
constructor(inj, templateRef, viewContainer) {
|
|
6
6
|
this.templateRef = templateRef;
|
|
7
7
|
this.viewContainer = viewContainer;
|
|
8
|
-
let viewParentApp = inject(App);
|
|
8
|
+
let viewParentApp = inj ? inj.get(App) : inject(App);
|
|
9
9
|
let lView = inj._lView;
|
|
10
10
|
const getParentlView = (lView) => {
|
|
11
11
|
let parentlView = lView[3];
|
|
@@ -46,4 +46,4 @@ LazyLoadDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: LazyLoadD
|
|
|
46
46
|
}], function () { return [{ type: i0.Injector }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, { lazyLoad: [{
|
|
47
47
|
type: Input
|
|
48
48
|
}] }); })();
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS1sb2FkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvd2lkZ2V0cy9jb21tb24vbGF6eS1sb2FkL2xhenktbG9hZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsV0FBVyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJILE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sVUFBVSxDQUFDOztBQU9yQyxNQUFNLE9BQU8saUJBQWlCO0lBTTFCLFlBQ0ksR0FBYSxFQUNMLFdBQTZCLEVBQzdCLGFBQStCO1FBRC9CLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFFdkMsSUFBSSxhQUFhLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEdBQUksR0FBVyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2xDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFHLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxFQUFFLG1EQUFtRDtnQkFDbkYsT0FBTyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDdEM7WUFDRCxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsSUFBRyxhQUFhLEtBQUssQ0FBQyxJQUFJLGFBQWEsS0FBSyxDQUFDLEVBQUU7Z0JBQzNDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25CO2lCQUFNLEVBQUUsbURBQW1EO2dCQUN4RCxPQUFPLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN0QztRQUNMLENBQUMsQ0FBQTtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLGFBQWEsQ0FBQztRQUN6RCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBSSxHQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxJQUFJO1FBQ2IsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQ3ZCLElBQUksRUFDSixJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxPQUFPLEVBQ1osQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLEdBQUcsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFlBQVksR0FBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEI7UUFDTCxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7O2tGQS9DUSxpQkFBaUI7b0VBQWpCLGlCQUFpQjt1RkFBakIsaUJBQWlCO2NBSDdCLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTthQUN6QjtvSEFnQ08sUUFBUTtrQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7JHdhdGNoLCBBcHB9IGZyb20gJ0B3bS9jb3JlJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tsYXp5TG9hZF0nXG59KVxuZXhwb3J0IGNsYXNzIExhenlMb2FkRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdQYXJlbnQ6IGFueTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ7XG4gICAgcHJpdmF0ZSBlbWJlZGRlZFZpZXc7XG4gICAgcHJpdmF0ZSB1blN1YnNjcmliZUZuOiBGdW5jdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWZcbiAgICApIHtcbiAgICAgICAgbGV0IHZpZXdQYXJlbnRBcHAgPSBpbmogPyBpbmouZ2V0KEFwcCkgOiBpbmplY3QoQXBwKTtcbiAgICAgICAgbGV0IGxWaWV3ID0gKGluaiBhcyBhbnkpLl9sVmlldztcbiAgICAgICAgY29uc3QgZ2V0UGFyZW50bFZpZXcgPSAobFZpZXc6IGFueSkgPT4ge1xuICAgICAgICAgICAgbGV0IHBhcmVudGxWaWV3ID0gbFZpZXdbM107XG4gICAgICAgICAgICBpZih0eXBlb2YgbFZpZXdbMV0gPT09IFwiYm9vbGVhblwiKSB7IC8vIHRoaXMgaXMgbENvbnRhaW5lciwgbm90IGxWaWV3IGlmIHRoaXMgaXMgYm9vbGVhblxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnRsVmlldyhwYXJlbnRsVmlldyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgY29tcG9uZW50VHlwZSA9IGxWaWV3WzFdW1widHlwZVwiXTtcbiAgICAgICAgICAgIGlmKGNvbXBvbmVudFR5cGUgPT09IDAgfHwgY29tcG9uZW50VHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsVmlld1s4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIHdoZW4gY29tcG9uZW50VHlwZSA9PSAyLCB0aGVuIGZldGNoIHBhcmVudCBhZ2FpblxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnRsVmlldyhwYXJlbnRsVmlldyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aWV3UGFyZW50ID0gZ2V0UGFyZW50bFZpZXcobFZpZXcpIHx8IHZpZXdQYXJlbnRBcHA7XG4gICAgICAgIC8vdGhpcy5jb250ZXh0ID0gKGluaiBhcyBhbnkpLnZpZXcuY29udGV4dDtcbiAgICAgICAgdGhpcy5jb250ZXh0ID0gKGluaiBhcyBhbnkpLl9sVmlld1s4XTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBsYXp5TG9hZChleHByKSB7XG4gICAgICAgIHRoaXMudW5TdWJzY3JpYmVGbiA9ICR3YXRjaChcbiAgICAgICAgICAgIGV4cHIsXG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQsXG4gICAgICAgICAgICB0aGlzLmNvbnRleHQsXG4gICAgICAgICAgICAodmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVtYmVkZGVkVmlldyAmJiB2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWJlZGRlZFZpZXcgID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCB0aGlzLmNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVuU3Vic2NyaWJlRm4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudW5TdWJzY3JpYmVGbigpO1xuICAgIH1cbn1cbiJdfQ==
|
app-ng-runtime/components/base/esm2020/widgets/common/partial-param/partial-param.directive.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Attribute, Directive, Inject, Self, Input } from '@angular/core';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
3
|
import { $watch } from '@wm/core';
|
|
4
|
-
import { WidgetRef } from '
|
|
4
|
+
import { WidgetRef } from '../../framework/types';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class PartialParamHandlerDirective {
|
|
7
7
|
constructor(widgetRef) {
|
|
@@ -67,4 +67,4 @@ PartialParamDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: Parti
|
|
|
67
67
|
}], value: [{
|
|
68
68
|
type: Input
|
|
69
69
|
}] }); })();
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbC1wYXJhbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL2Jhc2Uvc3JjL3dpZGdldHMvY29tbW9uL3BhcnRpYWwtcGFyYW0vcGFydGlhbC1wYXJhbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPbEQsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQyxZQUFnRCxTQUFTO1FBQVQsY0FBUyxHQUFULFNBQVMsQ0FBQTtRQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxJQUFZO1FBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRTtZQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QjtZQUNsQyxvREFBb0Q7WUFDcEQsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtnQkFDcEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUV4QyxvREFBb0Q7Z0JBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUNMLENBQUM7U0FDTDthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDakM7SUFFTCxDQUFDOzt3R0F2QlEsNEJBQTRCLHVCQUNSLFNBQVM7K0VBRDdCLDRCQUE0Qjt1RkFBNUIsNEJBQTRCO2NBSHhDLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2FBQ2pDOztzQkFFaUIsSUFBSTs7c0JBQUksTUFBTTt1QkFBQyxTQUFTOztBQTRCMUMsTUFBTSxPQUFPLHFCQUFxQjtJQUs5QixZQUNvQyxTQUFTLEVBQ2YsSUFBSSxFQUN0QixxQkFBbUQ7UUFGM0IsY0FBUyxHQUFULFNBQVMsQ0FBQTtRQUNmLFNBQUksR0FBSixJQUFJLENBQUE7UUFDdEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUE4QjtJQUUvRCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hHLENBQUM7OzBGQWRRLHFCQUFxQix1QkFNZixZQUFZLHdCQUNaLE1BQU07d0VBUFoscUJBQXFCO3VGQUFyQixxQkFBcUI7Y0FIakMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxXQUFXO2FBQ3hCOztzQkFPUSxTQUFTO3VCQUFDLFlBQVk7O3NCQUN0QixTQUFTO3VCQUFDLE1BQU07Z0VBTFosSUFBSTtrQkFBWixLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0cmlidXRlLCBEaXJlY3RpdmUsIEluamVjdCwgU2VsZiwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7ICR3YXRjaCB9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgV2lkZ2V0UmVmIH0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL3R5cGVzJztcblxuZGVjbGFyZSBjb25zdCBfO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1twYXJ0aWFsQ29udGFpbmVyXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhcnRpYWxQYXJhbUhhbmRsZXJEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yIChAU2VsZigpIEBJbmplY3QoV2lkZ2V0UmVmKSBwcml2YXRlIHdpZGdldFJlZikge1xuICAgICAgICB0aGlzLndpZGdldFJlZi5wYXJ0aWFsUGFyYW1zID0ge307XG4gICAgICAgIHRoaXMud2lkZ2V0UmVmLnBhZ2VQYXJhbXMgPSB0aGlzLndpZGdldFJlZi5wYXJ0aWFsUGFyYW1zO1xuICAgICAgICB0aGlzLndpZGdldFJlZi5wYXJhbXMkID0gbmV3IFN1YmplY3QoKTtcbiAgICB9XG5cbiAgICByZWdpc3RlclBhcmFtcyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGJpbmRFeHByOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgICAgICB0aGlzLndpZGdldFJlZi5wYXJ0aWFsUGFyYW1zW25hbWVdID0gdmFsdWU7XG4gICAgICAgIGlmICghdmFsdWUgJiYgYmluZEV4cHIpIHtcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0UmVmLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKFxuICAgICAgICAgICAgICAgIC8vW1RvZG8tQ1NQXTogZXhwciBmbiBzaG91bGQgYmUgZ2VuZXJhdGVkIGJlIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAkd2F0Y2goYmluZEV4cHIsIHRoaXMud2lkZ2V0UmVmLmdldFZpZXdQYXJlbnQoKSwgXy5nZXQodGhpcy53aWRnZXRSZWYsICdjb250ZXh0JyksIG52ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWRnZXRSZWYucGFydGlhbFBhcmFtc1tuYW1lXSA9IG52O1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIG5vdGlmeSB0aGUgcGFydGlhbCBjb250YWluZXIgb2YgdGhlIHBhcmFtIGNoYW5nZXNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53aWRnZXRSZWYucGFyYW1zJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndpZGdldFJlZi5wYXJhbXMkLm5leHQoKTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t3bVBhcmFtXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhcnRpYWxQYXJhbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdmFsdWU6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAQXR0cmlidXRlKCd2YWx1ZS5iaW5kJykgcHVibGljIGJpbmRWYWx1ZSxcbiAgICAgICAgQEF0dHJpYnV0ZSgndHlwZScpIHB1YmxpYyB0eXBlLFxuICAgICAgICBwcml2YXRlIHBhcnRpYWxQYXJhbXNQcm92aWRlcjogUGFydGlhbFBhcmFtSGFuZGxlckRpcmVjdGl2ZVxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnBhcnRpYWxQYXJhbXNQcm92aWRlci5yZWdpc3RlclBhcmFtcyh0aGlzLm5hbWUsIHRoaXMudmFsdWUsIHRoaXMuYmluZFZhbHVlLCB0aGlzLnR5cGUpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -953,7 +953,8 @@ class BaseComponent {
|
|
|
953
953
|
this.isMuted = false;
|
|
954
954
|
const elementRef = inj.get(ElementRef);
|
|
955
955
|
this.nativeElement = elementRef.nativeElement;
|
|
956
|
-
|
|
956
|
+
//making the code compatible in both the JIT and AOT modes
|
|
957
|
+
this.viewParentApp = inj ? inj.get(App) : inject(App);
|
|
957
958
|
this.widgetType = config.widgetType;
|
|
958
959
|
this.widgetSubType = config.widgetSubType || config.widgetType;
|
|
959
960
|
this.viewContainerRef = inj.get(ViewContainerRef);
|
|
@@ -1095,11 +1096,12 @@ class BaseComponent {
|
|
|
1095
1096
|
const context = this.context || {};
|
|
1096
1097
|
const parentContexts = this.inj.get(Context, {});
|
|
1097
1098
|
// assign the context property accordingly
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1099
|
+
if (this.viewParent !== context) {
|
|
1100
|
+
this.context = context;
|
|
1101
|
+
}
|
|
1102
|
+
else {
|
|
1103
|
+
this.context = {};
|
|
1104
|
+
}
|
|
1103
1105
|
if (parentContexts) {
|
|
1104
1106
|
let parentContextObj = {};
|
|
1105
1107
|
if (_.isArray(parentContexts)) {
|
|
@@ -1335,14 +1337,18 @@ class BaseComponent {
|
|
|
1335
1337
|
* and our logic to check like these changes will fail. Before IVY changes, angular maintains a separate object with these attributes
|
|
1336
1338
|
* as it is like in the camelcase. With IVY all those are gone. So need to maintain a separate list with the camelcasing of attributes
|
|
1337
1339
|
* @private
|
|
1340
|
+
* _tNode.attrs attributes are stored in array(even index: key, odd index: value)
|
|
1338
1341
|
*/
|
|
1339
1342
|
getAttributes() {
|
|
1340
1343
|
let _tNodeAttrs = this.inj._tNode.attrs, actualAttrs = Array.from(this.nativeElement.attributes).map(attr => attr.name);
|
|
1341
1344
|
if (_tNodeAttrs === null) {
|
|
1342
1345
|
return actualAttrs;
|
|
1343
1346
|
}
|
|
1344
|
-
|
|
1345
|
-
if (typeof attr === '
|
|
1347
|
+
_.forEach(_tNodeAttrs, (attr, i) => {
|
|
1348
|
+
if (typeof attr === 'number') {
|
|
1349
|
+
return false;
|
|
1350
|
+
}
|
|
1351
|
+
if (typeof attr === 'string' && i % 2 == 0) {
|
|
1346
1352
|
let lowerCaseAttr = attr.toLowerCase();
|
|
1347
1353
|
if (actualAttrs.includes(lowerCaseAttr)) {
|
|
1348
1354
|
let index = actualAttrs.indexOf(lowerCaseAttr);
|
|
@@ -1722,7 +1728,7 @@ class LazyLoadDirective {
|
|
|
1722
1728
|
constructor(inj, templateRef, viewContainer) {
|
|
1723
1729
|
this.templateRef = templateRef;
|
|
1724
1730
|
this.viewContainer = viewContainer;
|
|
1725
|
-
let viewParentApp = inject(App);
|
|
1731
|
+
let viewParentApp = inj ? inj.get(App) : inject(App);
|
|
1726
1732
|
let lView = inj._lView;
|
|
1727
1733
|
const getParentlView = (lView) => {
|
|
1728
1734
|
let parentlView = lView[3];
|