UNPKG

23.6 kBSource Map (JSON)View Raw
1{"version":3,"file":"vue2-transitions.min.js","sources":["../src/mixins/baseTransition.js","../src/Fade/FadeTransition.vue","../src/Zoom/ZoomCenterTransition.vue","../src/Zoom/ZoomXTransition.vue","../src/Zoom/ZoomYTransition.vue","../src/Collapse/CollapseTransition.vue","../src/Scale/ScaleTransition.vue","../src/Slide/SlideYUpTransition.vue","../src/Slide/SlideYDownTransition.vue","../src/Slide/SlideXLeftTransition.vue","../src/Slide/SlideXRightTransition.vue","../src/index.js"],"sourcesContent":["export default {\n inheritAttrs: false,\n props: {\n /**\n * Transition duration. Number for specifying the same duration for enter/leave transitions\n * Object style {enter: 300, leave: 300} for specifying explicit durations for enter/leave\n */\n duration: {\n type: [Number, Object],\n default: 300\n },\n /**\n * Transition delay. Number for specifying the same delay for enter/leave transitions\n * Object style {enter: 300, leave: 300} for specifying explicit durations for enter/leave\n */\n delay: {\n type: [Number, Object],\n default: 0\n },\n /**\n * Whether the component should be a `transition-group` component.\n */\n group: Boolean,\n /**\n * Transition tag, in case the component is a `transition-group`\n */\n tag: {\n type: String,\n default: 'span'\n },\n /**\n * Transform origin property https://tympanus.net/codrops/css_reference/transform-origin/.\n * Can be specified with styles as well but it's shorter with this prop\n */\n origin: {\n type: String,\n default: ''\n },\n /**\n * Element styles that are applied during transition. These styles are applied on @beforeEnter and @beforeLeave hooks\n */\n styles: {\n type: Object,\n default: () => {\n return {\n animationFillMode: 'both',\n animationTimingFunction: 'ease-out'\n }\n }\n }\n },\n computed: {\n componentType() {\n return this.group ? 'transition-group' : 'transition'\n },\n hooks() {\n return {\n beforeEnter: this.beforeEnter,\n afterEnter: this.cleanUpStyles,\n beforeLeave: this.beforeLeave,\n leave: this.leave,\n afterLeave: this.cleanUpStyles,\n ...this.$listeners\n }\n }\n },\n methods: {\n beforeEnter(el) {\n let enterDuration = this.duration.enter ? this.duration.enter : this.duration\n el.style.animationDuration = `${enterDuration}ms`\n\n let enterDelay = this.delay.enter ? this.delay.enter : this.delay\n el.style.animationDelay = `${enterDelay}ms`\n\n this.setStyles(el)\n },\n cleanUpStyles(el) {\n Object.keys(this.styles).forEach(key => {\n const styleValue = this.styles[key]\n if (styleValue) {\n el.style[key] = ''\n }\n })\n el.style.animationDuration = ''\n el.style.animationDelay = ''\n },\n beforeLeave(el) {\n let leaveDuration = this.duration.leave ? this.duration.leave : this.duration\n el.style.animationDuration = `${leaveDuration}ms`\n\n let leaveDelay = this.delay.leave ? this.delay.leave : this.delay\n el.style.animationDelay = `${leaveDelay}ms`\n\n this.setStyles(el)\n },\n leave(el) {\n this.setAbsolutePosition(el)\n },\n setStyles(el) {\n this.setTransformOrigin(el)\n Object.keys(this.styles).forEach(key => {\n const styleValue = this.styles[key]\n if (styleValue) {\n el.style[key] = styleValue\n }\n })\n },\n setAbsolutePosition(el) {\n if (this.group) {\n el.style.position = 'absolute'\n }\n return this\n },\n setTransformOrigin(el) {\n if (this.origin) {\n el.style.transformOrigin = this.origin\n }\n return this\n }\n }\n}\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n v-bind=\"$attrs\"\n v-on=\"hooks\"\n enter-active-class=\"fadeIn\"\n move-class=\"fade-move\"\n leave-active-class=\"fadeOut\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'fade-transition',\n mixins: [baseTransition]\n }\n</script>\n<style>\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .fadeIn {\n animation-name: fadeIn;\n }\n\n @keyframes fadeOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n }\n\n .fadeOut {\n animation-name: fadeOut;\n }\n\n .fade-move {\n transition: transform .3s ease-out;\n }\n</style>\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n v-bind=\"$attrs\"\n v-on=\"hooks\"\n enter-active-class=\"zoomIn\"\n move-class=\"zoom-move\"\n leave-active-class=\"zoomOut\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'zoom-center-transition',\n mixins: [baseTransition]\n }\n</script>\n<style lang=\"scss\">\n @import \"move\";\n\n @keyframes zoomIn {\n from {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n }\n\n 50% {\n opacity: 1;\n }\n }\n\n .zoomIn {\n animation-name: zoomIn;\n }\n\n @keyframes zoomOut {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n transform: scale3d(.3, .3, .3);\n }\n\n to {\n opacity: 0;\n }\n }\n\n .zoomOut {\n animation-name: zoomOut;\n }\n</style>\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n v-bind=\"$attrs\"\n v-on=\"hooks\"\n enter-active-class=\"zoomInX\"\n move-class=\"zoom-move\"\n leave-active-class=\"zoomOutX\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'zoom-x-transition',\n props: {\n styles: {\n type: Object,\n default: () => {\n return {\n animationFillMode: 'both',\n animationTimingFunction: 'cubic-bezier(.55,0,.1,1)'\n }\n }\n }\n },\n mixins: [baseTransition]\n }\n</script>\n<style lang=\"scss\">\n @import \"move\";\n\n @keyframes zoomInX {\n from {\n opacity: 0;\n transform: scaleX(0);\n }\n\n 50% {\n opacity: 1;\n }\n }\n\n .zoomInX {\n animation-name: zoomInX;\n }\n\n @keyframes zoomOutX {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n transform: scaleX(0);\n }\n\n to {\n opacity: 0;\n }\n }\n\n .zoomOutX {\n animation-name: zoomOutX;\n }\n</style>\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n v-bind=\"$attrs\"\n v-on=\"hooks\"\n enter-active-class=\"zoomInY\"\n move-class=\"zoom-move\"\n leave-active-class=\"zoomOutY\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'zoom-y-transition',\n mixins: [baseTransition],\n props: {\n styles: {\n type: Object,\n default: () => {\n return {\n animationFillMode: 'both',\n animationTimingFunction: 'cubic-bezier(.55,0,.1,1)'\n }\n }\n }\n },\n }\n</script>\n<style lang=\"scss\">\n @import \"move\";\n\n @keyframes zoomInY {\n from {\n opacity: 0;\n transform: scaleY(0);\n }\n\n 50% {\n opacity: 1;\n tranform: scaleY(1)\n }\n }\n\n .zoomInY {\n animation-name: zoomInY;\n }\n\n @keyframes zoomOutY {\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n transform: scaleY(0);\n }\n\n to {\n opacity: 0;\n }\n }\n\n .zoomOutY {\n animation-name: zoomOutY;\n }\n</style>\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n @before-enter=\"beforeEnter\"\n @after-enter=\"afterEnter\"\n @enter=\"enter\"\n @before-leave=\"beforeLeave\"\n @leave=\"leave\"\n @after-leave=\"afterLeave\"\n move-class=\"collapse-move\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'collapse-transition',\n mixins: [baseTransition],\n methods: {\n transitionStyle(duration = 300) {\n let durationInSeconds = duration / 1000\n let style = `${durationInSeconds}s height ease-in-out, ${durationInSeconds}s padding-top ease-in-out, ${durationInSeconds}s padding-bottom ease-in-out`\n return style;\n },\n beforeEnter(el) {\n let enterDuration = this.duration.enter ? this.duration.enter : this.duration\n el.style.transition = this.transitionStyle(enterDuration)\n if (!el.dataset) el.dataset = {};\n\n el.dataset.oldPaddingTop = el.style.paddingTop;\n el.dataset.oldPaddingBottom = el.style.paddingBottom;\n\n el.style.height = '0';\n el.style.paddingTop = 0;\n el.style.paddingBottom = 0;\n this.setStyles(el)\n },\n\n enter(el) {\n el.dataset.oldOverflow = el.style.overflow;\n if (el.scrollHeight !== 0) {\n el.style.height = el.scrollHeight + 'px';\n el.style.paddingTop = el.dataset.oldPaddingTop;\n el.style.paddingBottom = el.dataset.oldPaddingBottom;\n } else {\n el.style.height = '';\n el.style.paddingTop = el.dataset.oldPaddingTop;\n el.style.paddingBottom = el.dataset.oldPaddingBottom;\n }\n\n el.style.overflow = 'hidden';\n },\n\n afterEnter(el) {\n // for safari: remove class then reset height is necessary\n el.style.transition = ''\n el.style.height = '';\n el.style.overflow = el.dataset.oldOverflow;\n },\n\n beforeLeave(el) {\n if (!el.dataset) el.dataset = {};\n el.dataset.oldPaddingTop = el.style.paddingTop;\n el.dataset.oldPaddingBottom = el.style.paddingBottom;\n el.dataset.oldOverflow = el.style.overflow;\n\n el.style.height = el.scrollHeight + 'px';\n el.style.overflow = 'hidden';\n this.setStyles(el)\n },\n\n leave(el) {\n let leaveDuration = this.duration.leave ? this.duration.leave : this.duration\n if (el.scrollHeight !== 0) {\n // for safari: add class after set height, or it will jump to zero height suddenly, weired\n el.style.transition = this.transitionStyle(leaveDuration)\n el.style.height = 0;\n el.style.paddingTop = 0;\n el.style.paddingBottom = 0;\n }\n // necessary for transition-group\n this.setAbsolutePosition(el)\n },\n\n afterLeave(el) {\n el.style.transition = ''\n el.style.height = '';\n el.style.overflow = el.dataset.oldOverflow;\n el.style.paddingTop = el.dataset.oldPaddingTop;\n el.style.paddingBottom = el.dataset.oldPaddingBottom;\n }\n }\n }\n</script>\n<style>\n .collapse-move {\n transition: transform .3s ease-in-out;\n }\n</style>\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n v-bind=\"$attrs\"\n v-on=\"hooks\"\n enter-active-class=\"scaleIn\"\n move-class=\"scale-move\"\n leave-active-class=\"scaleOut\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'scale-transition',\n mixins: [baseTransition],\n props: {\n origin: {\n type: String,\n default: 'top left'\n },\n styles: {\n type: Object,\n default: () => {\n return {\n animationFillMode: 'both',\n animationTimingFunction: 'cubic-bezier(.25,.8,.50,1)'\n }\n }\n }\n }\n }\n</script>\n<style>\n @keyframes scaleIn {\n from {\n opacity: 0;\n transform: scale(0)\n }\n\n to {\n opacity: 1;\n }\n }\n\n .scaleIn {\n animation-name: scaleIn;\n }\n\n @keyframes scaleOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: scale(0);\n }\n }\n\n .scaleOut {\n animation-name: scaleOut;\n }\n\n .scale-move {\n transition: transform .3s cubic-bezier(.25, .8, .50, 1);\n }\n</style>\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n type=\"animation\"\n v-bind=\"$attrs\"\n v-on=\"hooks\"\n enter-active-class=\"slideYIn\"\n move-class=\"slide-move\"\n leave-active-class=\"slideYOut\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'slide-y-up-transition',\n mixins: [baseTransition],\n props: {\n styles: {\n type: Object,\n default: () => {\n return {\n animationFillMode: 'both',\n animationTimingFunction: 'cubic-bezier(.25,.8,.50,1)'\n }\n }\n }\n }\n }\n</script>\n<style lang=\"scss\">\n @import \"move\";\n\n @keyframes slideYIn {\n from {\n opacity: 0;\n transform: translateY(-15px);\n }\n\n to {\n opacity: 1;\n }\n }\n\n .slideYIn {\n animation-name: slideYIn;\n }\n\n @keyframes slideYOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translateY(-15px);\n }\n }\n\n .slideYOut {\n animation-name: slideYOut;\n }\n</style>\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n v-bind=\"$attrs\"\n v-on=\"hooks\"\n enter-active-class=\"slideYDownIn\"\n leave-active-class=\"slideYDownOut\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'slide-y-down-transition',\n mixins: [baseTransition],\n props: {\n styles: {\n type: Object,\n default: () => {\n return {\n animationFillMode: 'both',\n animationTimingFunction: 'cubic-bezier(.25,.8,.50,1)'\n }\n }\n }\n }\n }\n</script>\n<style lang=\"scss\">\n @import \"move\";\n\n @keyframes slideYDownIn {\n from {\n opacity: 0;\n transform: translateY(15px);\n }\n\n to {\n opacity: 1;\n }\n }\n\n .slideYDownIn {\n animation-name: slideYDownIn;\n }\n\n @keyframes slideYDownOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translateY(15px);\n }\n }\n\n .slideYDownOut {\n animation-name: slideYDownOut;\n }\n</style>\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n v-bind=\"$attrs\"\n v-on=\"hooks\"\n enter-active-class=\"slideXLeftIn\"\n move-class=\"slide-move\"\n leave-active-class=\"slideXLeftOut\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'slide-x-left-transition',\n mixins: [baseTransition],\n props: {\n styles: {\n type: Object,\n default: () => {\n return {\n animationFillMode: 'both',\n animationTimingFunction: 'cubic-bezier(.25,.8,.50,1)'\n }\n }\n }\n }\n }\n</script>\n<style lang=\"scss\">\n @import \"move\";\n\n @keyframes slideXLeftIn {\n from {\n opacity: 0;\n transform: translateX(-15px);\n }\n\n to {\n opacity: 1;\n }\n }\n\n .slideXLeftIn {\n animation-name: slideXLeftIn;\n }\n\n @keyframes slideXLeftOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translateX(-15px);\n }\n }\n\n .slideXLeftOut {\n animation-name: slideXLeftOut;\n }\n</style>\n","<template>\n <component :is=\"componentType\"\n :tag=\"tag\"\n v-bind=\"$attrs\"\n v-on=\"hooks\"\n enter-active-class=\"slideXRightIn\"\n move-class=\"slide-move\"\n leave-active-class=\"slideXRightOut\">\n <slot></slot>\n </component>\n</template>\n<script>\n import {baseTransition} from '../mixins/index.js'\n\n export default {\n name: 'slide-x-right-transition',\n mixins: [baseTransition],\n props: {\n styles: {\n type: Object,\n default: () => {\n return {\n animationFillMode: 'both',\n animationTimingFunction: 'cubic-bezier(.25,.8,.50,1)'\n }\n }\n }\n }\n }\n</script>\n<style lang=\"scss\">\n @import \"move\";\n\n @keyframes slideXRightIn {\n from {\n opacity: 0;\n transform: translateX(15px);\n }\n\n to {\n opacity: 1;\n }\n }\n\n .slideXRightIn {\n animation-name: slideXRightIn;\n }\n\n @keyframes slideXRightOut {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translateX(15px);\n }\n }\n\n .slideXRightOut {\n animation-name: slideXRightOut;\n }\n</style>\n","import FadeTransition from './Fade/FadeTransition.vue'\n\nimport ZoomCenterTransition from './Zoom/ZoomCenterTransition.vue'\nimport ZoomXTransition from './Zoom/ZoomXTransition.vue'\nimport ZoomYTransition from './Zoom/ZoomYTransition.vue'\n\nimport CollapseTransition from './Collapse/CollapseTransition.vue'\n\nimport ScaleTransition from './Scale/ScaleTransition.vue'\n\nimport SlideYUpTransition from './Slide/SlideYUpTransition.vue'\nimport SlideYDownTransition from './Slide/SlideYDownTransition.vue'\nimport SlideXLeftTransition from './Slide/SlideXLeftTransition.vue'\nimport SlideXRightTransition from './Slide/SlideXRightTransition.vue'\n\nlet components = {\n [FadeTransition.name]: FadeTransition,\n [ZoomCenterTransition.name]: ZoomCenterTransition,\n [ZoomXTransition.name]: ZoomXTransition,\n [ZoomYTransition.name]: ZoomYTransition,\n [CollapseTransition.name]: CollapseTransition,\n [ScaleTransition.name]: ScaleTransition,\n [SlideYUpTransition.name]: SlideYUpTransition,\n [SlideYDownTransition.name]: SlideYDownTransition,\n [SlideXLeftTransition.name]: SlideXLeftTransition,\n [SlideXRightTransition.name]: SlideXRightTransition,\n}\n\nfunction install(Vue, options) {\n if (options && options.components) {\n options.components.forEach(c => Vue.component(c.name, components[c.name]))\n } else {\n Object.keys(components).forEach((key) => {\n Vue.component(key, components[key])\n });\n }\n}\n\n// Automatic installation if Vue has been added to the global scope.\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use({install})\n}\n\nexport default {\n install\n}\n\nexport {\n FadeTransition,\n ZoomCenterTransition,\n ZoomXTransition,\n ZoomYTransition,\n CollapseTransition,\n ScaleTransition,\n SlideYUpTransition,\n SlideYDownTransition,\n SlideXLeftTransition,\n SlideXRightTransition\n}\n"],"names":["Number","Object","Boolean","String","this","group","beforeEnter","cleanUpStyles","beforeLeave","leave","$listeners","el","enterDuration","duration","enter","style","animationDuration","enterDelay","delay","animationDelay","setStyles","keys","styles","forEach","key","leaveDuration","leaveDelay","setAbsolutePosition","setTransformOrigin","styleValue","position","origin","transformOrigin","render","baseTransition","durationInSeconds","transition","transitionStyle","dataset","oldPaddingTop","paddingTop","oldPaddingBottom","paddingBottom","height","oldOverflow","overflow","scrollHeight","components","FadeTransition","name","ZoomCenterTransition","ZoomXTransition","ZoomYTransition","CollapseTransition","ScaleTransition","SlideYUpTransition","SlideYDownTransition","SlideXLeftTransition","SlideXRightTransition","install","Vue","options","c","component","window","use"],"mappings":";;;;;kMAAA,qBACgB,yBAOHA,OAAQC,gBACN,kBAOFD,OAAQC,gBACN,SAKJC,kBAKCC,eACG,qBAOHA,eACG,iBAMHF,mDAGiB,+BACM,yDAOtBG,KAAKC,MAAQ,mBAAqB,iEAI1BD,KAAKE,uBACNF,KAAKG,0BACJH,KAAKI,kBACXJ,KAAKK,iBACAL,KAAKG,eACdH,KAAKM,4CAKAC,OACNC,EAAgBR,KAAKS,SAASC,MAAQV,KAAKS,SAASC,MAAQV,KAAKS,WAClEE,MAAMC,kBAAqBJ,WAE1BK,EAAab,KAAKc,MAAMJ,MAAQV,KAAKc,MAAMJ,MAAQV,KAAKc,QACzDH,MAAMI,eAAkBF,YAEtBG,UAAUT,2BAEHA,qBACLU,KAAKjB,KAAKkB,QAAQC,iBAAQC,GACZpB,EAAKkB,OAAOE,OAE1BT,MAAMS,GAAO,QAGjBT,MAAMC,kBAAoB,KAC1BD,MAAMI,eAAiB,yBAEhBR,OACNc,EAAgBrB,KAAKS,SAASJ,MAAQL,KAAKS,SAASJ,MAAQL,KAAKS,WAClEE,MAAMC,kBAAqBS,WAE1BC,EAAatB,KAAKc,MAAMT,MAAQL,KAAKc,MAAMT,MAAQL,KAAKc,QACzDH,MAAMI,eAAkBO,YAEtBN,UAAUT,mBAEXA,QACCgB,oBAAoBhB,uBAEjBA,mBACHiB,mBAAmBjB,UACjBU,KAAKjB,KAAKkB,QAAQC,iBAAQC,OACzBK,EAAazB,EAAKkB,OAAOE,GAC3BK,MACCd,MAAMS,GAAOK,mCAIFlB,UACdP,KAAKC,UACJU,MAAMe,SAAW,YAEf1B,kCAEUO,UACbP,KAAK2B,WACJhB,MAAMiB,gBAAkB5B,KAAK2B,QAE3B3B,SCrHb,8fAAA,GAYA,OAEgB6B,8TACR,0BACGC,KChBX,wlBAAA,GAYA,OAEgBD,8TACR,iCACGC,KChBX,okBAAA,GAYA,OAEgBD,gUACR,wCAGIhC,mDAGiB,+BACM,uCAKxBiC,KC3BX,ylBAAA,GAYA,OAEgBD,gUACR,4BACGC,uBAGCjC,mDAGiB,+BACM,iCCvBnC,8TAAA,GAgBA,OAEgBgC,uYACR,8BACGC,qCAESrB,kBAAW,SACrBsB,EAAoBtB,EAAW,WACtBsB,2BAA4CA,gCAA+CA,uDAG9FxB,OACNC,EAAgBR,KAAKS,SAASC,MAAQV,KAAKS,SAASC,MAAQV,KAAKS,WAClEE,MAAMqB,WAAahC,KAAKiC,gBAAgBzB,GACtCD,EAAG2B,UAAS3B,EAAG2B,cAEjBA,QAAQC,cAAgB5B,EAAGI,MAAMyB,aACjCF,QAAQG,iBAAmB9B,EAAGI,MAAM2B,gBAEpC3B,MAAM4B,OAAS,MACf5B,MAAMyB,WAAa,IACnBzB,MAAM2B,cAAgB,OACpBtB,UAAUT,mBAGXA,KACD2B,QAAQM,YAAcjC,EAAGI,MAAM8B,SACV,IAApBlC,EAAGmC,gBACF/B,MAAM4B,OAAShC,EAAGmC,aAAe,OACjC/B,MAAMyB,WAAa7B,EAAG2B,QAAQC,gBAC9BxB,MAAM2B,cAAgB/B,EAAG2B,QAAQG,qBAEjC1B,MAAM4B,OAAS,KACf5B,MAAMyB,WAAa7B,EAAG2B,QAAQC,gBAC9BxB,MAAM2B,cAAgB/B,EAAG2B,QAAQG,oBAGnC1B,MAAM8B,SAAW,8BAGXlC,KAENI,MAAMqB,WAAa,KACnBrB,MAAM4B,OAAS,KACf5B,MAAM8B,SAAWlC,EAAG2B,QAAQM,kCAGrBjC,GACLA,EAAG2B,UAAS3B,EAAG2B,cACjBA,QAAQC,cAAgB5B,EAAGI,MAAMyB,aACjCF,QAAQG,iBAAmB9B,EAAGI,MAAM2B,gBACpCJ,QAAQM,YAAcjC,EAAGI,MAAM8B,WAE/B9B,MAAM4B,OAAShC,EAAGmC,aAAe,OACjC/B,MAAM8B,SAAW,cACfzB,UAAUT,mBAGXA,OACAc,EAAgBrB,KAAKS,SAASJ,MAAQL,KAAKS,SAASJ,MAAQL,KAAKS,SAC7C,IAApBF,EAAGmC,iBAEF/B,MAAMqB,WAAahC,KAAKiC,gBAAgBZ,KACxCV,MAAM4B,OAAS,IACf5B,MAAMyB,WAAa,IACnBzB,MAAM2B,cAAgB,QAGtBf,oBAAoBhB,wBAGhBA,KACNI,MAAMqB,WAAa,KACnBrB,MAAM4B,OAAS,KACf5B,MAAM8B,SAAWlC,EAAG2B,QAAQM,cAC5B7B,MAAMyB,WAAa7B,EAAG2B,QAAQC,gBAC9BxB,MAAM2B,cAAgB/B,EAAG2B,QAAQG,qBC5F1C,mkBAAA,GAYA,OAEgBR,iUACR,2BACGC,uBAGC/B,eACG,yBAGHF,mDAGiB,+BACM,mCC3BnC,6jBAAA,GAaA,OAEgBgC,oVACR,gCACGC,uBAGCjC,mDAGiB,+BACM,mCCxBnC,mlBAAA,GAWA,OAEgBgC,iTACR,kCACGC,uBAGCjC,mDAGiB,+BACM,mCCtBnC,qlBAAA,GAYA,OAEgBgC,2UACR,kCACGC,uBAGCjC,mDAGiB,+BACM,mCCvBnC,ylBAAA,GAYA,OAEgBgC,6UACR,mCACGC,uBAGCjC,mDAGiB,+BACM,kCCR/B8C,OACDC,EAAeC,MAAOD,IACtBE,EAAqBD,MAAOC,IAC5BC,EAAgBF,MAAOE,IACvBC,EAAgBH,MAAOG,IACvBC,EAAmBJ,MAAOI,IAC1BC,EAAgBL,MAAOK,IACvBC,EAAmBN,MAAOM,IAC1BC,EAAqBP,MAAOO,IAC5BC,EAAqBR,MAAOQ,IAC5BC,EAAsBT,MAAOS,EAGhC,SAASC,EAAQC,EAAKC,GAChBA,GAAWA,EAAQd,aACbA,WAAWxB,iBAAQuC,UAAKF,EAAIG,UAAUD,EAAEb,KAAMF,EAAWe,EAAEb,gBAE5D5B,KAAK0B,GAAYxB,iBAASC,KAC3BuC,UAAUvC,EAAKuB,EAAWvB,MAMd,oBAAXwC,QAA0BA,OAAOJ,YACnCA,IAAIK,aAAKN,IAGlB"}
\No newline at end of file