| Current Path : /var/www/homesaver/www/bitrix/js/ui/vue3/components/audioplayer/dist/ |
| Current File : /var/www/homesaver/www/bitrix/js/ui/vue3/components/audioplayer/dist/audioplayer.bundle.js.map |
{"version":3,"file":"audioplayer.bundle.js","sources":["../src/audioplayer.js"],"sourcesContent":["/**\n * Bitrix UI\n * Audio player Vue component\n *\n * @package bitrix\n * @subpackage ui\n * @copyright 2001-2021 Bitrix\n */\n\nimport 'ui.fonts.opensans';\nimport \"./audioplayer.css\";\nimport 'main.polyfill.intersectionobserver';\n\nimport {BitrixVue} from \"ui.vue3\";\nimport {BaseEvent, EventEmitter} from \"main.core.events\";\n\nconst State = Object.freeze({\n\tplay: 'play',\n\tpause: 'pause',\n\tstop: 'stop',\n\tnone: 'none',\n});\nexport {State as AudioPlayerState};\n\nexport const AudioPlayer = BitrixVue.mutableComponent('ui-audioplayer',\n{\n\tprops:\n\t{\n\t\tid: { default: 0 },\n\t\tsrc: { default: '' },\n\t\tautoPlayNext: { default: true },\n\t\tbackground: { default: 'light' },\n\t},\n\tdata()\n\t{\n\t\treturn {\n\t\t\tisDark: false,\n\t\t\tpreload: \"none\",\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tplayAfterLoad: false,\n\t\t\tstate: State.none,\n\t\t\tprogress: 0,\n\t\t\tprogressInPixel: 0,\n\t\t\tseek: 0,\n\t\t\ttimeCurrent: 0,\n\t\t\ttimeTotal: 0,\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tthis.preloadRequestSent = false;\n\t\tthis.registeredId = 0;\n\n\t\tthis.registerPlayer(this.id);\n\t\tthis.$Bitrix.eventEmitter.subscribe('ui:audioplayer:play', this.onPlay);\n\t\tthis.$Bitrix.eventEmitter.subscribe('ui:audioplayer:stop', this.onStop);\n\t\tthis.$Bitrix.eventEmitter.subscribe('ui:audioplayer:pause', this.onPause);\n\t\tthis.$Bitrix.eventEmitter.subscribe('ui:audioplayer:preload', this.onPreload);\n\t\tEventEmitter.subscribe('ui:audioplayer:pause', this.onPause);\n\n\t\tthis.isDark = this.background === 'dark';\n\t},\n\tmounted()\n\t{\n\t\tthis.getObserver().observe(this.$refs.body);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.unregisterPlayer();\n\n\t\tthis.$Bitrix.eventEmitter.unsubscribe('ui:audioplayer:play', this.onPlay);\n\t\tthis.$Bitrix.eventEmitter.unsubscribe('ui:audioplayer:stop', this.onStop);\n\t\tthis.$Bitrix.eventEmitter.unsubscribe('ui:audioplayer:pause', this.onPause);\n\t\tthis.$Bitrix.eventEmitter.unsubscribe('ui:audioplayer:preload', this.onPreload);\n\t\tEventEmitter.unsubscribe('ui:audioplayer:pause', this.onPause);\n\n\t\tthis.getObserver().unobserve(this.$refs.body);\n\t},\n\twatch:\n\t{\n\t\tid(value)\n\t\t{\n\t\t\tthis.registerPlayer(value);\n\t\t},\n\t\tprogress(value)\n\t\t{\n\t\t\tif (value > 70)\n\t\t\t{\n\t\t\t\tthis.preloadNext();\n\t\t\t}\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tloadFile(play = false)\n\t\t{\n\t\t\tif (this.loaded)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (this.loading && !play)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.preload = 'auto';\n\n\t\t\tif (play)\n\t\t\t{\n\t\t\t\tthis.loading = true;\n\n\t\t\t\tif (this.source())\n\t\t\t\t{\n\t\t\t\t\tthis.source().play();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\t\tclickToButton()\n\t\t{\n\t\t\tif (!this.src)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.state === State.play)\n\t\t\t{\n\t\t\t\tthis.pause();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.play();\n\t\t\t}\n\t\t},\n\t\tplay()\n\t\t{\n\t\t\tif (!this.loaded)\n\t\t\t{\n\t\t\t\tthis.loadFile(true);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.source().play();\n\t\t},\n\t\tpause()\n\t\t{\n\t\t\tthis.source().pause();\n\t\t},\n\t\tstop()\n\t\t{\n\t\t\tthis.state = State.stop;\n\t\t\tthis.source().pause();\n\t\t},\n\t\tsetPosition(event)\n\t\t{\n\t\t\tif (!this.loaded)\n\t\t\t{\n\t\t\t\tthis.loadFile(true);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tlet pixelPerPercent = this.$refs.track.offsetWidth / 100;\n\n\t\t\tthis.setProgress(this.seek / pixelPerPercent, this.seek);\n\n\t\t\tif (this.state !== State.play)\n\t\t\t{\n\t\t\t\tthis.state = State.pause;\n\t\t\t}\n\n\t\t\tthis.play();\n\t\t\tthis.source().currentTime = this.timeTotal/100*this.progress;\n\t\t},\n\t\tseeking(event)\n\t\t{\n\t\t\tif (!this.loaded)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.seek = event.offsetX > 0? event.offsetX: 0;\n\n\t\t\treturn true;\n\t\t},\n\t\tsetProgress(percent, pixel = -1)\n\t\t{\n\t\t\tthis.progress = percent;\n\t\t\tthis.progressInPixel = pixel > 0? pixel: Math.round(this.$refs.track.offsetWidth / 100 * percent);\n\t\t},\n\t\tformatTime(second)\n\t\t{\n\t\t\tsecond = Math.floor(second);\n\n\t\t\tconst hour = Math.floor(second/60/60);\n\t\t\tif (hour > 0)\n\t\t\t{\n\t\t\t\tsecond -= hour*60*60;\n\t\t\t}\n\n\t\t\tconst minute = Math.floor(second/60);\n\t\t\tif (minute > 0)\n\t\t\t{\n\t\t\t\tsecond -= minute*60;\n\t\t\t}\n\n\t\t\treturn (hour > 0? hour+':': '')\n\t\t\t\t\t+ (hour > 0? minute.toString().padStart(2, \"0\")+':': minute+':')\n\t\t\t\t\t+ second.toString().padStart(2, \"0\")\n\t\t},\n\t\tregisterPlayer(id)\n\t\t{\n\t\t\tif (id <= 0)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\n\n\t\t\tthis.unregisterPlayer();\n\n\t\t\tthis.$Bitrix.Data.set('ui:audioplayer:id', [...new Set([...this.$Bitrix.Data.get('ui:audioplayer:id', []), id])].sort((a, b) => a - b));\n\n\t\t\tthis.registeredId = id;\n\n\t\t\treturn true;\n\t\t},\n\t\tunregisterPlayer()\n\t\t{\n\t\t\tif (!this.registeredId)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.$Bitrix.Data.get('ui:audioplayer:id', this.$Bitrix.Data.get('ui:audioplayer:id', []).filter(id => id !== this.registeredId));\n\n\t\t\tthis.registeredId = 0;\n\n\t\t\treturn true;\n\t\t},\n\t\tplayNext()\n\t\t{\n\t\t\tif (!this.registeredId || !this.autoPlayNext)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst nextId = this.$Bitrix.Data.get('ui:audioplayer:id', []).filter(id => id > this.registeredId).slice(0, 1)[0];\n\t\t\tif (nextId)\n\t\t\t{\n\t\t\t\tthis.$Bitrix.eventEmitter.emit('ui:audioplayer:play', {id: nextId, start: true});\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\t\tpreloadNext()\n\t\t{\n\t\t\tif (this.preloadRequestSent)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!this.registeredId || !this.autoPlayNext)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.preloadRequestSent = true;\n\n\t\t\tconst nextId = this.$Bitrix.Data.get('ui:audioplayer:id', []).filter(id => id > this.registeredId).slice(0, 1)[0];\n\t\t\tif (nextId)\n\t\t\t{\n\t\t\t\tthis.$Bitrix.eventEmitter.emit('ui:audioplayer:preload', {id: nextId});\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\t\tonPlay(event: BaseEvent)\n\t\t{\n\t\t\tconst data = event.getData();\n\n\t\t\tif (data.id !== this.id)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (data.start)\n\t\t\t{\n\t\t\t\tthis.stop();\n\t\t\t}\n\n\t\t\tthis.play();\n\t\t},\n\t\tonStop(event: BaseEvent)\n\t\t{\n\t\t\tconst data = event.getData();\n\n\t\t\tif (data.initiator === this.id)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.stop();\n\t\t},\n\t\tonPause(event: BaseEvent)\n\t\t{\n\t\t\tconst data = event.getData();\n\n\t\t\tif (data.initiator === this.id)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.pause();\n\t\t},\n\t\tonPreload(event: BaseEvent)\n\t\t{\n\t\t\tconst data = event.getData();\n\n\t\t\tif (data.id !== this.id)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.loadFile();\n\t\t},\n\t\tsource()\n\t\t{\n\t\t\treturn this.$refs.source;\n\t\t},\n\t\taudioEventRouter(eventName, event)\n\t\t{\n\t\t\tif (\n\t\t\t\teventName === 'durationchange'\n\t\t\t\t|| eventName === 'loadeddata'\n\t\t\t\t|| eventName === 'loadedmetadata'\n\t\t\t)\n\t\t\t{\n\t\t\t\tif (!this.source())\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.timeTotal = this.source().duration;\n\t\t\t}\n\t\t\telse if (\n\t\t\t\teventName === 'abort'\n\t\t\t\t|| eventName === 'error'\n\t\t\t)\n\t\t\t{\n\t\t\t\tconsole.error('BxAudioPlayer: load failed', this.id, event);\n\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.state = State.none;\n\t\t\t\tthis.timeTotal = 0;\n\t\t\t\tthis.preload = 'none';\n\t\t\t}\n\t\t\telse if (\n\t\t\t\teventName === 'canplaythrough'\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.loaded = true;\n\t\t\t}\n\t\t\telse if (eventName === 'timeupdate')\n\t\t\t{\n\t\t\t\tif (!this.source())\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.timeCurrent = this.source().currentTime;\n\n\t\t\t\tthis.setProgress(Math.round(100/this.timeTotal*this.timeCurrent));\n\n\t\t\t\tif (\n\t\t\t\t\tthis.state === State.play\n\t\t\t\t\t&& this.timeCurrent >= this.timeTotal\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tthis.playNext();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (eventName === 'pause')\n\t\t\t{\n\t\t\t\tif (this.state !== State.stop)\n\t\t\t\t{\n\t\t\t\t\tthis.state = State.pause;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (eventName === 'play')\n\t\t\t{\n\t\t\t\tthis.state = State.play;\n\n\t\t\t\tif (this.state === State.stop)\n\t\t\t\t{\n\t\t\t\t\tthis.progress = 0;\n\t\t\t\t\tthis.timeCurrent = 0;\n\t\t\t\t}\n\n\t\t\t\tif (this.id > 0)\n\t\t\t\t{\n\t\t\t\t\tthis.$Bitrix.eventEmitter.emit('ui:audioplayer:pause', {initiator: this.id});\n\t\t\t\t\tEventEmitter.emit('ui:audioplayer:pause', {initiator: this.id});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetObserver()\n\t\t{\n\t\t\tif (this.observer)\n\t\t\t{\n\t\t\t\treturn this.observer;\n\t\t\t}\n\n\t\t\tthis.observer = new IntersectionObserver((entries, observer) =>\n\t\t\t{\n\t\t\t\tentries.forEach((entry) =>\n\t\t\t\t{\n\t\t\t\t\tif (entry.isIntersecting)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.preload === \"none\")\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.preload = \"metadata\";\n\t\t\t\t\t\t\tthis.observer.unobserve(entry.target);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},{\n\t\t\t\tthreshold: [0, 1]\n\t\t\t});\n\n\t\t\treturn this.observer;\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tState: () => State,\n\t\tseekPosition()\n\t\t{\n\t\t\tif (!this.loaded && !this.seek || this.isMobile)\n\t\t\t{\n\t\t\t\treturn 'display: none'\n\t\t\t}\n\n\t\t\treturn `left: ${this.seek}px;`;\n\t\t},\n\t\tprogressPosition()\n\t\t{\n\t\t\tif (!this.loaded || this.state === State.none)\n\t\t\t{\n\t\t\t\treturn `width: 100%;`;\n\t\t\t}\n\n\t\t\treturn `width: ${this.progressInPixel}px;`;\n\t\t},\n\t\tlabelTime()\n\t\t{\n\t\t\tif (!this.loaded && !this.timeTotal)\n\t\t\t{\n\t\t\t\treturn '--:--';\n\t\t\t}\n\n\t\t\tlet time;\n\t\t\tif (this.state === State.play)\n\t\t\t{\n\t\t\t\ttime = this.timeTotal - this.timeCurrent;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttime = this.timeTotal;\n\t\t\t}\n\n\t\t\treturn this.formatTime(time);\n\t\t},\n\t\tisMobile()\n\t\t{\n\t\t\tconst UA = navigator.userAgent.toLowerCase();\n\n\t\t\treturn (\n\t\t\t\tUA.includes('android')\n\t\t\t\t|| UA.includes('iphone')\n\t\t\t\t|| UA.includes('ipad')\n\t\t\t\t|| UA.includes('bitrixmobile')\n\t\t\t)\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div :class=\"['ui-vue-audioplayer-container', {\n\t\t\t\t'ui-vue-audioplayer-container-dark': isDark,\n\t\t\t\t'ui-vue-audioplayer-container-mobile': isMobile,\n\t\t\t}]\" ref=\"body\">\n\t\t\t<div class=\"ui-vue-audioplayer-controls-container\">\n\t\t\t\t<button :class=\"['ui-vue-audioplayer-control', {\n\t\t\t\t\t'ui-vue-audioplayer-control-loader': loading,\n\t\t\t\t\t'ui-vue-audioplayer-control-play': !loading && state !== State.play,\n\t\t\t\t\t'ui-vue-audioplayer-control-pause': !loading && state === State.play,\n\t\t\t\t}]\" @click=\"clickToButton\"></button>\n\t\t\t</div>\n\t\t\t<div class=\"ui-vue-audioplayer-timeline-container\">\n\t\t\t\t<div class=\"ui-vue-audioplayer-track-container\" @click=\"setPosition\" ref=\"track\">\n\t\t\t\t\t<div class=\"ui-vue-audioplayer-track-mask\"></div>\n\t\t\t\t\t<div class=\"ui-vue-audioplayer-track\" :style=\"progressPosition\"></div>\n\t\t\t\t\t<div class=\"ui-vue-audioplayer-track-seek\" :style=\"seekPosition\"></div>\n\t\t\t\t\t<div class=\"ui-vue-audioplayer-track-event\" @mousemove=\"seeking\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"ui-vue-audioplayer-timers-container\">\n\t\t\t\t\t<div class=\"ui-vue-audioplayer-time-current\">{{labelTime}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<audio v-if=\"src\" :src=\"src\" class=\"ui-vue-audioplayer-source\" ref=\"source\" :preload=\"preload\"\n\t\t\t\t@abort=\"audioEventRouter('abort', $event)\"\n\t\t\t\t@error=\"audioEventRouter('error', $event)\"\n\t\t\t\t@suspend=\"audioEventRouter('suspend', $event)\"\n\t\t\t\t@canplay=\"audioEventRouter('canplay', $event)\"\n\t\t\t\t@canplaythrough=\"audioEventRouter('canplaythrough', $event)\"\n\t\t\t\t@durationchange=\"audioEventRouter('durationchange', $event)\"\n\t\t\t\t@loadeddata=\"audioEventRouter('loadeddata', $event)\"\n\t\t\t\t@loadedmetadata=\"audioEventRouter('loadedmetadata', $event)\"\n\t\t\t\t@timeupdate=\"audioEventRouter('timeupdate', $event)\"\n\t\t\t\t@play=\"audioEventRouter('play', $event)\"\n\t\t\t\t@playing=\"audioEventRouter('playing', $event)\"\n\t\t\t\t@pause=\"audioEventRouter('pause', $event)\"\n\t\t\t></audio>\n\t\t</div>\n\t`\n});"],"names":["State","Object","freeze","play","pause","stop","none","AudioPlayer","BitrixVue","mutableComponent","props","id","default","src","autoPlayNext","background","data","isDark","preload","loaded","loading","playAfterLoad","state","progress","progressInPixel","seek","timeCurrent","timeTotal","created","preloadRequestSent","registeredId","registerPlayer","$Bitrix","eventEmitter","subscribe","onPlay","onStop","onPause","onPreload","EventEmitter","mounted","getObserver","observe","$refs","body","beforeUnmount","unregisterPlayer","unsubscribe","unobserve","watch","value","preloadNext","methods","loadFile","source","clickToButton","setPosition","event","pixelPerPercent","track","offsetWidth","setProgress","currentTime","seeking","offsetX","percent","pixel","Math","round","formatTime","second","floor","hour","minute","toString","padStart","Data","set","Set","get","sort","a","b","filter","playNext","nextId","slice","emit","start","getData","initiator","audioEventRouter","eventName","duration","console","error","observer","IntersectionObserver","entries","forEach","entry","isIntersecting","target","threshold","computed","seekPosition","isMobile","progressPosition","labelTime","time","UA","navigator","userAgent","toLowerCase","includes","template"],"mappings":";;;;;;CAAA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;OASMA,KAAK,GAAGC,MAAM,CAACC,MAAM,CAAC;GAC3BC,IAAI,EAAE,MAAM;GACZC,KAAK,EAAE,OAAO;GACdC,IAAI,EAAE,MAAM;GACZC,IAAI,EAAE;CACP,CAAC,CAAC;AACF,OAEaC,WAAW,GAAGC,iBAAS,CAACC,gBAAgB,CAAC,gBAAgB,EACtE;GACCC,KAAK,EACL;KACCC,EAAE,EAAE;OAAEC,OAAO,EAAE;MAAG;KAClBC,GAAG,EAAE;OAAED,OAAO,EAAE;MAAI;KACpBE,YAAY,EAAE;OAAEF,OAAO,EAAE;MAAM;KAC/BG,UAAU,EAAE;OAAEH,OAAO,EAAE;;IACvB;GACDI,IAAI,GACJ;KACC,OAAO;OACNC,MAAM,EAAE,KAAK;OACbC,OAAO,EAAE,MAAM;OACfC,MAAM,EAAE,KAAK;OACbC,OAAO,EAAE,KAAK;OACdC,aAAa,EAAE,KAAK;OACpBC,KAAK,EAAEtB,KAAK,CAACM,IAAI;OACjBiB,QAAQ,EAAE,CAAC;OACXC,eAAe,EAAE,CAAC;OAClBC,IAAI,EAAE,CAAC;OACPC,WAAW,EAAE,CAAC;OACdC,SAAS,EAAE;MACX;IACD;GACDC,OAAO,GACP;KACC,IAAI,CAACC,kBAAkB,GAAG,KAAK;KAC/B,IAAI,CAACC,YAAY,GAAG,CAAC;KAErB,IAAI,CAACC,cAAc,CAAC,IAAI,CAACpB,EAAE,CAAC;KAC5B,IAAI,CAACqB,OAAO,CAACC,YAAY,CAACC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAACC,MAAM,CAAC;KACvE,IAAI,CAACH,OAAO,CAACC,YAAY,CAACC,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAACE,MAAM,CAAC;KACvE,IAAI,CAACJ,OAAO,CAACC,YAAY,CAACC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAACG,OAAO,CAAC;KACzE,IAAI,CAACL,OAAO,CAACC,YAAY,CAACC,SAAS,CAAC,wBAAwB,EAAE,IAAI,CAACI,SAAS,CAAC;KAC7EC,6BAAY,CAACL,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAACG,OAAO,CAAC;KAE5D,IAAI,CAACpB,MAAM,GAAG,IAAI,CAACF,UAAU,KAAK,MAAM;IACxC;GACDyB,OAAO,GACP;KACC,IAAI,CAACC,WAAW,EAAE,CAACC,OAAO,CAAC,IAAI,CAACC,KAAK,CAACC,IAAI,CAAC;IAC3C;GACDC,aAAa,GACb;KACC,IAAI,CAACC,gBAAgB,EAAE;KAEvB,IAAI,CAACd,OAAO,CAACC,YAAY,CAACc,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAACZ,MAAM,CAAC;KACzE,IAAI,CAACH,OAAO,CAACC,YAAY,CAACc,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAACX,MAAM,CAAC;KACzE,IAAI,CAACJ,OAAO,CAACC,YAAY,CAACc,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAACV,OAAO,CAAC;KAC3E,IAAI,CAACL,OAAO,CAACC,YAAY,CAACc,WAAW,CAAC,wBAAwB,EAAE,IAAI,CAACT,SAAS,CAAC;KAC/EC,6BAAY,CAACQ,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAACV,OAAO,CAAC;KAE9D,IAAI,CAACI,WAAW,EAAE,CAACO,SAAS,CAAC,IAAI,CAACL,KAAK,CAACC,IAAI,CAAC;IAC7C;GACDK,KAAK,EACL;KACCtC,EAAE,CAACuC,KAAK,EACR;OACC,IAAI,CAACnB,cAAc,CAACmB,KAAK,CAAC;MAC1B;KACD3B,QAAQ,CAAC2B,KAAK,EACd;OACC,IAAIA,KAAK,GAAG,EAAE,EACd;SACC,IAAI,CAACC,WAAW,EAAE;;;IAGpB;GACDC,OAAO,EACP;KACCC,QAAQ,CAAClD,IAAI,GAAG,KAAK,EACrB;OACC,IAAI,IAAI,CAACgB,MAAM,EACf;SACC,OAAO,IAAI;;OAGZ,IAAI,IAAI,CAACC,OAAO,IAAI,CAACjB,IAAI,EACzB;SACC,OAAO,IAAI;;OAGZ,IAAI,CAACe,OAAO,GAAG,MAAM;OAErB,IAAIf,IAAI,EACR;SACC,IAAI,CAACiB,OAAO,GAAG,IAAI;SAEnB,IAAI,IAAI,CAACkC,MAAM,EAAE,EACjB;WACC,IAAI,CAACA,MAAM,EAAE,CAACnD,IAAI,EAAE;;;OAItB,OAAO,IAAI;MACX;KACDoD,aAAa,GACb;OACC,IAAI,CAAC,IAAI,CAAC1C,GAAG,EACb;SACC,OAAO,KAAK;;OAGb,IAAI,IAAI,CAACS,KAAK,KAAKtB,KAAK,CAACG,IAAI,EAC7B;SACC,IAAI,CAACC,KAAK,EAAE;QACZ,MAED;SACC,IAAI,CAACD,IAAI,EAAE;;MAEZ;KACDA,IAAI,GACJ;OACC,IAAI,CAAC,IAAI,CAACgB,MAAM,EAChB;SACC,IAAI,CAACkC,QAAQ,CAAC,IAAI,CAAC;SACnB,OAAO,KAAK;;OAGb,IAAI,CAACC,MAAM,EAAE,CAACnD,IAAI,EAAE;MACpB;KACDC,KAAK,GACL;OACC,IAAI,CAACkD,MAAM,EAAE,CAAClD,KAAK,EAAE;MACrB;KACDC,IAAI,GACJ;OACC,IAAI,CAACiB,KAAK,GAAGtB,KAAK,CAACK,IAAI;OACvB,IAAI,CAACiD,MAAM,EAAE,CAAClD,KAAK,EAAE;MACrB;KACDoD,WAAW,CAACC,KAAK,EACjB;OACC,IAAI,CAAC,IAAI,CAACtC,MAAM,EAChB;SACC,IAAI,CAACkC,QAAQ,CAAC,IAAI,CAAC;SACnB,OAAO,KAAK;;OAGb,IAAIK,eAAe,GAAG,IAAI,CAACf,KAAK,CAACgB,KAAK,CAACC,WAAW,GAAG,GAAG;OAExD,IAAI,CAACC,WAAW,CAAC,IAAI,CAACpC,IAAI,GAAGiC,eAAe,EAAE,IAAI,CAACjC,IAAI,CAAC;OAExD,IAAI,IAAI,CAACH,KAAK,KAAKtB,KAAK,CAACG,IAAI,EAC7B;SACC,IAAI,CAACmB,KAAK,GAAGtB,KAAK,CAACI,KAAK;;OAGzB,IAAI,CAACD,IAAI,EAAE;OACX,IAAI,CAACmD,MAAM,EAAE,CAACQ,WAAW,GAAG,IAAI,CAACnC,SAAS,GAAC,GAAG,GAAC,IAAI,CAACJ,QAAQ;MAC5D;KACDwC,OAAO,CAACN,KAAK,EACb;OACC,IAAI,CAAC,IAAI,CAACtC,MAAM,EAChB;SACC,OAAO,KAAK;;OAGb,IAAI,CAACM,IAAI,GAAGgC,KAAK,CAACO,OAAO,GAAG,CAAC,GAAEP,KAAK,CAACO,OAAO,GAAE,CAAC;OAE/C,OAAO,IAAI;MACX;KACDH,WAAW,CAACI,OAAO,EAAEC,KAAK,GAAG,CAAC,CAAC,EAC/B;OACC,IAAI,CAAC3C,QAAQ,GAAG0C,OAAO;OACvB,IAAI,CAACzC,eAAe,GAAG0C,KAAK,GAAG,CAAC,GAAEA,KAAK,GAAEC,IAAI,CAACC,KAAK,CAAC,IAAI,CAACzB,KAAK,CAACgB,KAAK,CAACC,WAAW,GAAG,GAAG,GAAGK,OAAO,CAAC;MACjG;KACDI,UAAU,CAACC,MAAM,EACjB;OACCA,MAAM,GAAGH,IAAI,CAACI,KAAK,CAACD,MAAM,CAAC;OAE3B,MAAME,IAAI,GAAGL,IAAI,CAACI,KAAK,CAACD,MAAM,GAAC,EAAE,GAAC,EAAE,CAAC;OACrC,IAAIE,IAAI,GAAG,CAAC,EACZ;SACCF,MAAM,IAAIE,IAAI,GAAC,EAAE,GAAC,EAAE;;OAGrB,MAAMC,MAAM,GAAGN,IAAI,CAACI,KAAK,CAACD,MAAM,GAAC,EAAE,CAAC;OACpC,IAAIG,MAAM,GAAG,CAAC,EACd;SACCH,MAAM,IAAIG,MAAM,GAAC,EAAE;;OAGpB,OAAO,CAACD,IAAI,GAAG,CAAC,GAAEA,IAAI,GAAC,GAAG,GAAE,EAAE,KACzBA,IAAI,GAAG,CAAC,GAAEC,MAAM,CAACC,QAAQ,EAAE,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAC,GAAG,GAAEF,MAAM,GAAC,GAAG,CAAC,GAC9DH,MAAM,CAACI,QAAQ,EAAE,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MACtC;KACD5C,cAAc,CAACpB,EAAE,EACjB;OACC,IAAIA,EAAE,IAAI,CAAC,EACX;SACC,OAAO,KAAK;;OAKb,IAAI,CAACmC,gBAAgB,EAAE;OAEvB,IAAI,CAACd,OAAO,CAAC4C,IAAI,CAACC,GAAG,CAAC,mBAAmB,EAAE,CAAC,GAAG,IAAIC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC9C,OAAO,CAAC4C,IAAI,CAACG,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAEpE,EAAE,CAAC,CAAC,CAAC,CAACqE,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC,CAAC;OAEvI,IAAI,CAACpD,YAAY,GAAGnB,EAAE;OAEtB,OAAO,IAAI;MACX;KACDmC,gBAAgB,GAChB;OACC,IAAI,CAAC,IAAI,CAAChB,YAAY,EACtB;SACC,OAAO,IAAI;;OAGZ,IAAI,CAACE,OAAO,CAAC4C,IAAI,CAACG,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC/C,OAAO,CAAC4C,IAAI,CAACG,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAACI,MAAM,CAACxE,EAAE,IAAIA,EAAE,KAAK,IAAI,CAACmB,YAAY,CAAC,CAAC;OAEjI,IAAI,CAACA,YAAY,GAAG,CAAC;OAErB,OAAO,IAAI;MACX;KACDsD,QAAQ,GACR;OACC,IAAI,CAAC,IAAI,CAACtD,YAAY,IAAI,CAAC,IAAI,CAAChB,YAAY,EAC5C;SACC,OAAO,KAAK;;OAGb,MAAMuE,MAAM,GAAG,IAAI,CAACrD,OAAO,CAAC4C,IAAI,CAACG,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAACI,MAAM,CAACxE,EAAE,IAAIA,EAAE,GAAG,IAAI,CAACmB,YAAY,CAAC,CAACwD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;OACjH,IAAID,MAAM,EACV;SACC,IAAI,CAACrD,OAAO,CAACC,YAAY,CAACsD,IAAI,CAAC,qBAAqB,EAAE;WAAC5E,EAAE,EAAE0E,MAAM;WAAEG,KAAK,EAAE;UAAK,CAAC;;OAGjF,OAAO,IAAI;MACX;KACDrC,WAAW,GACX;OACC,IAAI,IAAI,CAACtB,kBAAkB,EAC3B;SACC,OAAO,IAAI;;OAGZ,IAAI,CAAC,IAAI,CAACC,YAAY,IAAI,CAAC,IAAI,CAAChB,YAAY,EAC5C;SACC,OAAO,KAAK;;OAGb,IAAI,CAACe,kBAAkB,GAAG,IAAI;OAE9B,MAAMwD,MAAM,GAAG,IAAI,CAACrD,OAAO,CAAC4C,IAAI,CAACG,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAACI,MAAM,CAACxE,EAAE,IAAIA,EAAE,GAAG,IAAI,CAACmB,YAAY,CAAC,CAACwD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;OACjH,IAAID,MAAM,EACV;SACC,IAAI,CAACrD,OAAO,CAACC,YAAY,CAACsD,IAAI,CAAC,wBAAwB,EAAE;WAAC5E,EAAE,EAAE0E;UAAO,CAAC;;OAGvE,OAAO,IAAI;MACX;KACDlD,MAAM,CAACsB,KAAgB,EACvB;OACC,MAAMzC,IAAI,GAAGyC,KAAK,CAACgC,OAAO,EAAE;OAE5B,IAAIzE,IAAI,CAACL,EAAE,KAAK,IAAI,CAACA,EAAE,EACvB;SACC,OAAO,KAAK;;OAGb,IAAIK,IAAI,CAACwE,KAAK,EACd;SACC,IAAI,CAACnF,IAAI,EAAE;;OAGZ,IAAI,CAACF,IAAI,EAAE;MACX;KACDiC,MAAM,CAACqB,KAAgB,EACvB;OACC,MAAMzC,IAAI,GAAGyC,KAAK,CAACgC,OAAO,EAAE;OAE5B,IAAIzE,IAAI,CAAC0E,SAAS,KAAK,IAAI,CAAC/E,EAAE,EAC9B;SACC,OAAO,KAAK;;OAGb,IAAI,CAACN,IAAI,EAAE;MACX;KACDgC,OAAO,CAACoB,KAAgB,EACxB;OACC,MAAMzC,IAAI,GAAGyC,KAAK,CAACgC,OAAO,EAAE;OAE5B,IAAIzE,IAAI,CAAC0E,SAAS,KAAK,IAAI,CAAC/E,EAAE,EAC9B;SACC,OAAO,KAAK;;OAGb,IAAI,CAACP,KAAK,EAAE;MACZ;KACDkC,SAAS,CAACmB,KAAgB,EAC1B;OACC,MAAMzC,IAAI,GAAGyC,KAAK,CAACgC,OAAO,EAAE;OAE5B,IAAIzE,IAAI,CAACL,EAAE,KAAK,IAAI,CAACA,EAAE,EACvB;SACC,OAAO,KAAK;;OAGb,IAAI,CAAC0C,QAAQ,EAAE;MACf;KACDC,MAAM,GACN;OACC,OAAO,IAAI,CAACX,KAAK,CAACW,MAAM;MACxB;KACDqC,gBAAgB,CAACC,SAAS,EAAEnC,KAAK,EACjC;OACC,IACCmC,SAAS,KAAK,gBAAgB,IAC3BA,SAAS,KAAK,YAAY,IAC1BA,SAAS,KAAK,gBAAgB,EAElC;SACC,IAAI,CAAC,IAAI,CAACtC,MAAM,EAAE,EAClB;WACC;;SAED,IAAI,CAAC3B,SAAS,GAAG,IAAI,CAAC2B,MAAM,EAAE,CAACuC,QAAQ;QACvC,MACI,IACJD,SAAS,KAAK,OAAO,IAClBA,SAAS,KAAK,OAAO,EAEzB;SACCE,OAAO,CAACC,KAAK,CAAC,4BAA4B,EAAE,IAAI,CAACpF,EAAE,EAAE8C,KAAK,CAAC;SAE3D,IAAI,CAACrC,OAAO,GAAG,KAAK;SACpB,IAAI,CAACE,KAAK,GAAGtB,KAAK,CAACM,IAAI;SACvB,IAAI,CAACqB,SAAS,GAAG,CAAC;SAClB,IAAI,CAACT,OAAO,GAAG,MAAM;QACrB,MACI,IACJ0E,SAAS,KAAK,gBAAgB,EAE/B;SACC,IAAI,CAACxE,OAAO,GAAG,KAAK;SACpB,IAAI,CAACD,MAAM,GAAG,IAAI;QAClB,MACI,IAAIyE,SAAS,KAAK,YAAY,EACnC;SACC,IAAI,CAAC,IAAI,CAACtC,MAAM,EAAE,EAClB;WACC;;SAGD,IAAI,CAAC5B,WAAW,GAAG,IAAI,CAAC4B,MAAM,EAAE,CAACQ,WAAW;SAE5C,IAAI,CAACD,WAAW,CAACM,IAAI,CAACC,KAAK,CAAC,GAAG,GAAC,IAAI,CAACzC,SAAS,GAAC,IAAI,CAACD,WAAW,CAAC,CAAC;SAEjE,IACC,IAAI,CAACJ,KAAK,KAAKtB,KAAK,CAACG,IAAI,IACtB,IAAI,CAACuB,WAAW,IAAI,IAAI,CAACC,SAAS,EAEtC;WACC,IAAI,CAACyD,QAAQ,EAAE;;QAEhB,MACI,IAAIQ,SAAS,KAAK,OAAO,EAC9B;SACC,IAAI,IAAI,CAACtE,KAAK,KAAKtB,KAAK,CAACK,IAAI,EAC7B;WACC,IAAI,CAACiB,KAAK,GAAGtB,KAAK,CAACI,KAAK;;QAEzB,MACI,IAAIwF,SAAS,KAAK,MAAM,EAC7B;SACC,IAAI,CAACtE,KAAK,GAAGtB,KAAK,CAACG,IAAI;SAEvB,IAAI,IAAI,CAACmB,KAAK,KAAKtB,KAAK,CAACK,IAAI,EAC7B;WACC,IAAI,CAACkB,QAAQ,GAAG,CAAC;WACjB,IAAI,CAACG,WAAW,GAAG,CAAC;;SAGrB,IAAI,IAAI,CAACf,EAAE,GAAG,CAAC,EACf;WACC,IAAI,CAACqB,OAAO,CAACC,YAAY,CAACsD,IAAI,CAAC,sBAAsB,EAAE;aAACG,SAAS,EAAE,IAAI,CAAC/E;YAAG,CAAC;WAC5E4B,6BAAY,CAACgD,IAAI,CAAC,sBAAsB,EAAE;aAACG,SAAS,EAAE,IAAI,CAAC/E;YAAG,CAAC;;;MAGjE;KACD8B,WAAW,GACX;OACC,IAAI,IAAI,CAACuD,QAAQ,EACjB;SACC,OAAO,IAAI,CAACA,QAAQ;;OAGrB,IAAI,CAACA,QAAQ,GAAG,IAAIC,oBAAoB,CAAC,CAACC,OAAO,EAAEF,QAAQ,KAC3D;SACCE,OAAO,CAACC,OAAO,CAAEC,KAAK,IACtB;WACC,IAAIA,KAAK,CAACC,cAAc,EACxB;aACC,IAAI,IAAI,CAACnF,OAAO,KAAK,MAAM,EAC3B;eACC,IAAI,CAACA,OAAO,GAAG,UAAU;eACzB,IAAI,CAAC8E,QAAQ,CAAChD,SAAS,CAACoD,KAAK,CAACE,MAAM,CAAC;;;UAGvC,CAAC;QACF,EAAC;SACDC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;QAChB,CAAC;OAEF,OAAO,IAAI,CAACP,QAAQ;;IAErB;GACDQ,QAAQ,EACR;KACCxG,KAAK,EAAE,MAAMA,KAAK;KAClByG,YAAY,GACZ;OACC,IAAI,CAAC,IAAI,CAACtF,MAAM,IAAI,CAAC,IAAI,CAACM,IAAI,IAAI,IAAI,CAACiF,QAAQ,EAC/C;SACC,OAAO,eAAe;;OAGvB,OAAQ,SAAQ,IAAI,CAACjF,IAAK,KAAI;MAC9B;KACDkF,gBAAgB,GAChB;OACC,IAAI,CAAC,IAAI,CAACxF,MAAM,IAAI,IAAI,CAACG,KAAK,KAAKtB,KAAK,CAACM,IAAI,EAC7C;SACC,OAAQ,cAAa;;OAGtB,OAAQ,UAAS,IAAI,CAACkB,eAAgB,KAAI;MAC1C;KACDoF,SAAS,GACT;OACC,IAAI,CAAC,IAAI,CAACzF,MAAM,IAAI,CAAC,IAAI,CAACQ,SAAS,EACnC;SACC,OAAO,OAAO;;OAGf,IAAIkF,IAAI;OACR,IAAI,IAAI,CAACvF,KAAK,KAAKtB,KAAK,CAACG,IAAI,EAC7B;SACC0G,IAAI,GAAG,IAAI,CAAClF,SAAS,GAAG,IAAI,CAACD,WAAW;QACxC,MAED;SACCmF,IAAI,GAAG,IAAI,CAAClF,SAAS;;OAGtB,OAAO,IAAI,CAAC0C,UAAU,CAACwC,IAAI,CAAC;MAC5B;KACDH,QAAQ,GACR;OACC,MAAMI,EAAE,GAAGC,SAAS,CAACC,SAAS,CAACC,WAAW,EAAE;OAE5C,OACCH,EAAE,CAACI,QAAQ,CAAC,SAAS,CAAC,IACnBJ,EAAE,CAACI,QAAQ,CAAC,QAAQ,CAAC,IACrBJ,EAAE,CAACI,QAAQ,CAAC,MAAM,CAAC,IACnBJ,EAAE,CAACI,QAAQ,CAAC,cAAc,CAAC;;IAGhC;GACDC,QAAQ,EAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCZ,CAAC,CAAC;;;;;;;;;"}