diff --git a/client/galaxy/scripts/apps/history-panel.js b/client/galaxy/scripts/apps/history-panel.js index 3d0353b3c82..1fd00e52c37 100644 --- a/client/galaxy/scripts/apps/history-panel.js +++ b/client/galaxy/scripts/apps/history-panel.js @@ -59,7 +59,7 @@ var HistoryPanel = RightPanel.extend({ render : function(){ RightPanel.prototype.render.call( this ); - this.debug( 'rendering:' ); + this.$( '.unified-panel-header' ).addClass( 'history-panel-header' ); this.$( '.panel-header-buttons' ).append([ this.refreshButton.$el, this.optionsButton.$el, diff --git a/client/galaxy/scripts/apps/tool-panel.js b/client/galaxy/scripts/apps/tool-panel.js index f3460c0d57c..ea42ecee8be 100644 --- a/client/galaxy/scripts/apps/tool-panel.js +++ b/client/galaxy/scripts/apps/tool-panel.js @@ -28,7 +28,8 @@ var ToolPanel = LeftPanel.extend({ layout : options.toolbox_in_panel }); this.tool_panel_view = new Tools.ToolPanelView({ model: this.tool_panel }); - // add upload plugin + + // add upload modal this.uploadButton = new Upload( options ); } }, diff --git a/client/galaxy/scripts/layout/masthead.js b/client/galaxy/scripts/layout/masthead.js index 8f88422f074..1f64121e250 100644 --- a/client/galaxy/scripts/layout/masthead.js +++ b/client/galaxy/scripts/layout/masthead.js @@ -28,10 +28,8 @@ var GalaxyMasthead = Backbone.View.extend({ $("body").off(); // define this element - this.setElement($(this._template(options))); - - // append to masthead - $(this.el_masthead).append($(this.el)); + this.$el.html(this._template(options)); + $(this.el_masthead).find('#masthead').replaceWith(this.$el); // assign background this.$background = $(this.el).find('#masthead-background'); diff --git a/client/galaxy/scripts/layout/page.js b/client/galaxy/scripts/layout/page.js index 6d7c28aacf6..afe6c4bcad7 100644 --- a/client/galaxy/scripts/layout/page.js +++ b/client/galaxy/scripts/layout/page.js @@ -29,6 +29,9 @@ var PageLayoutView = Backbone.View.extend( BASE_MVC.LoggableMixin ).extend({ this.log( this + '.initialize:', options ); _.extend( this, _.pick( options, this._panelIds ) ); this.options = _.defaults( _.omit( options, this._panelIds ), this.defaultOptions ); + + // TODO: remove globals + Galaxy.modal = this.modal = new MODAL.View(); }, /** */ @@ -41,13 +44,10 @@ var PageLayoutView = Backbone.View.extend( BASE_MVC.LoggableMixin ).extend({ this.$el.attr( 'scroll', 'no' ); this.$el.html( this.template( this.options ) ); - this.modal = new MODAL.View(); //TODO: no render on masthead, needs init each time - this.masthead = new MASTHEAD.GalaxyMasthead( this.options.config ); - - // TODO: remove globals - Galaxy.modal = this.modal; - Galaxy.masthead = this.masthead; + Galaxy.masthead = this.masthead = new MASTHEAD.GalaxyMasthead( _.extend( this.options.config, { + el: this.$( '#masthead' ).get(0) + })); if( this.options.message_box_visible ){ this.messageBox( this.options.message_box_content, this.options.message_box_class ); @@ -105,6 +105,7 @@ var PageLayoutView = Backbone.View.extend( BASE_MVC.LoggableMixin ).extend({ return [ '
', '
', + '', '', '', // content here diff --git a/client/galaxy/scripts/polyfills.js b/client/galaxy/scripts/polyfills.js index 0e44fb6b5f1..1e57e1be1ca 100644 --- a/client/galaxy/scripts/polyfills.js +++ b/client/galaxy/scripts/polyfills.js @@ -1,3 +1,6 @@ +// phantomjs: does not have the native extend fn assign +Object.assign = Object.assign || _.extend; + (function() { 'use strict'; /*globals window, clearTimeout */ diff --git a/client/galaxy/scripts/utils/localization.js b/client/galaxy/scripts/utils/localization.js index ea313be0f54..8db4b2f7a3b 100644 --- a/client/galaxy/scripts/utils/localization.js +++ b/client/galaxy/scripts/utils/localization.js @@ -8,15 +8,15 @@ define([ // support both requirejs and webpack from the same file // if loaded via webpack, it will be a different format than via requirejs - convert if( localeStrings.hasOwnProperty( '__root' ) ){ + //console.debug( 'amdi18n+webpack localization for ' + locale + ' loaded' ); var locale = ( typeof navigator === 'undefined' ? '__root' : ( navigator.language || navigator.userLanguage || '__root' ).toLowerCase() ); localeStrings = localeStrings[ '__' + locale ] || localeStrings.__root; - console.debug( 'amdi18n+webpack localization for ' + locale + ' loaded' ); -} else { - console.debug( 'i18n+requirejs localization for ' + locale + ' loaded' ); +// } else { +// console.debug( 'i18n+requirejs localization for ' + locale + ' loaded' ); } // TODO: when this is no longer necessary remove this, i18n.js, and the resolveModule in config diff --git a/lib/galaxy/webapps/galaxy/controllers/user.py b/lib/galaxy/webapps/galaxy/controllers/user.py index 0b2655aea6b..39a2505dea9 100644 --- a/lib/galaxy/webapps/galaxy/controllers/user.py +++ b/lib/galaxy/webapps/galaxy/controllers/user.py @@ -671,7 +671,9 @@ class User( BaseUIController, UsesFormDefinitionsMixin, CreatesUsersMixin, Creat username = util.restore_text( params.get( 'username', '' ) ) subscribe = params.get( 'subscribe', '' ) subscribe_checked = CheckboxField.is_checked( subscribe ) - redirect = kwd.get( 'redirect', trans.request.referer ).strip() + redirect = kwd.get( 'redirect', trans.request.referer ) + if redirect: + redirect = redirect.strip() is_admin = cntrller == 'admin' and trans.user_is_admin if not trans.app.config.allow_user_creation and not trans.user_is_admin(): message = 'User registration is disabled. Please contact your local Galaxy administrator for an account.' diff --git a/static/maps/layout/masthead.js.map b/static/maps/layout/masthead.js.map index 7b5c4b8de8d..1c3d0c37e08 100644 --- a/static/maps/layout/masthead.js.map +++ b/static/maps/layout/masthead.js.map @@ -1 +1 @@ -{"version":3,"file":"masthead.js","sources":["../../src/layout/masthead.js"],"names":["define","Utils","Menu","Scratchbook","QuotaMeter","GalaxyMasthead","Backbone","View","extend","el_masthead","options","$background","list","initialize","this","$","off","setElement","_template","append","el","find","self","window","on","text","key","onunload","q","menu","Galaxy","GalaxyMenu","masthead","config","frame","GalaxyFrame","quotaMeter","UserQuotaMeter","model","user","render","events","click","mousedown","e","preventDefault","item","_add","prepend","highlight","id","current","addClass","$loc","location","$current","push","_click","$all","hide","target","closest","hasClass","show","brand_text","brand","logo_url","root"],"mappings":"AAAAA,QACI,cACA,cACA,qBACA,4BACD,SAASC,EAAOC,EAAMC,EAAaC,GAGtC,GAAIC,GAAiBC,SAASC,KAAKC,QAE/BC,YAAa,cAGbC,QAAU,KAGVC,YAAa,KAGbC,QAGAC,WAAa,SAASH,GAElBI,KAAKJ,QAAUA,EAGfK,EAAE,QAAQC,MAGVF,KAAKG,WAAWF,EAAED,KAAKI,UAAUR,KAGjCK,EAAED,KAAKL,aAAaU,OAAOJ,EAAED,KAAKM,KAGlCN,KAAKH,YAAcI,EAAED,KAAKM,IAAIC,KAAK,uBAGnC,IAAIC,GAAOR,IACXC,GAAEQ,QAAQC,GAAG,eAAgB,WACzB,GAAIC,GAAO,EACX,KAAK,GAAIC,KAAOJ,GAAKV,KACjB,GAAIU,EAAKV,KAAKc,GAAKhB,QAAQiB,SAAU,CACjC,GAAIC,GAAIN,EAAKV,KAAKc,GAAKhB,QAAQiB,UAC3BC,KAAGH,GAAQG,EAAI,KAG3B,MAAa,KAATH,EACOA,EADX,SAMJX,KAAKe,KAAOC,OAAOD,KAAO,GAAI3B,GAAK6B,YAC/BC,SAAclB,KACdmB,OAAcnB,KAAKJ,UAIvBI,KAAKoB,MAAQJ,OAAOI,MAAQ,GAAI/B,GAAYgC,aACxCH,SAAclB,OAKlBgB,OAAOM,WAAa,GAAIhC,GAAWiC,gBAC/BC,MAAcR,OAAOS,KACrBnB,GAAcN,KAAKC,EAAG,4BACvByB,UAIPC,QACIC,MAAc,SACdC,UAAc,SAASC,GAAKA,EAAEC,mBAIlC1B,OAAS,SAAS2B,GACd,MAAOhC,MAAKiC,KAAKD,GAAM,IAI3BE,QAAU,SAASF,GACf,MAAOhC,MAAKiC,KAAKD,GAAM,IAI3BG,UAAW,SAASC,GAChB,GAAIC,GAAUpC,EAAED,KAAKM,IAAIC,KAAK,IAAM6B,EAAK,OACrCC,IACAA,EAAQC,SAAS,WAKzBL,KAAO,SAASD,EAAM3B,GAClB,GAAIkC,GAAOtC,EAAED,KAAKM,IAAIC,KAAK,IAAMyB,EAAKQ,SACtC,IAAID,EAAK,CAEL,GAAIE,GAAWxC,EAAE+B,EAAK1B,GAGtBmC,GAASH,SAAS,iBAGdjC,EACAkC,EAAKlC,OAAOoC,GAEZF,EAAKL,QAAQO,GAIjBzC,KAAKF,KAAK4C,KAAKV,GAInB,MAAO,OAIXW,OAAQ,SAASb,GAEb,GAAIc,GAAO3C,EAAED,KAAKM,IAAIC,KAAK,SACvBqC,IACAA,EAAKC,MAIT,IAAIJ,GAAWxC,EAAE6B,EAAEgB,QAAQC,QAAQ,kBAAkBxC,KAAK,SACtDN,GAAE6B,EAAEgB,QAAQE,SAAS,SACrBP,EAASQ,OACTjD,KAAKH,YAAYoD,QAEjBjD,KAAKH,YAAYgD,QASzBzC,UAAW,SAASR,GAChB,GAAIsD,GAAatD,EAAQuD,MAAS,KAAOvD,EAAQuD,MAAS,EAC1D,OAAQ,6PAKsBvD,EAAQwD,SAAW,uDAC0BpC,OAAOqC,KAAO,iEACvCH,EAAa,sPAYvE,QACI3D,eAAgBA"} \ No newline at end of file +{"version":3,"file":"masthead.js","sources":["../../src/layout/masthead.js"],"names":["define","Utils","Menu","Scratchbook","QuotaMeter","GalaxyMasthead","Backbone","View","extend","el_masthead","options","$background","list","initialize","this","$","off","$el","html","_template","find","replaceWith","el","self","window","on","text","key","onunload","q","menu","Galaxy","GalaxyMenu","masthead","config","frame","GalaxyFrame","quotaMeter","UserQuotaMeter","model","user","render","events","click","mousedown","e","preventDefault","append","item","_add","prepend","highlight","id","current","addClass","$loc","location","$current","push","_click","$all","hide","target","closest","hasClass","show","brand_text","brand","logo_url","root"],"mappings":"AAAAA,QACI,cACA,cACA,qBACA,4BACD,SAASC,EAAOC,EAAMC,EAAaC,GAGtC,GAAIC,GAAiBC,SAASC,KAAKC,QAE/BC,YAAa,cAGbC,QAAU,KAGVC,YAAa,KAGbC,QAGAC,WAAa,SAASH,GAElBI,KAAKJ,QAAUA,EAGfK,EAAE,QAAQC,MAGVF,KAAKG,IAAIC,KAAKJ,KAAKK,UAAUT,IAC7BK,EAAED,KAAKL,aAAaW,KAAK,aAAaC,YAAYP,KAAKG,KAGvDH,KAAKH,YAAcI,EAAED,KAAKQ,IAAIF,KAAK,uBAGnC,IAAIG,GAAOT,IACXC,GAAES,QAAQC,GAAG,eAAgB,WACzB,GAAIC,GAAO,EACX,KAAK,GAAIC,KAAOJ,GAAKX,KACjB,GAAIW,EAAKX,KAAKe,GAAKjB,QAAQkB,SAAU,CACjC,GAAIC,GAAIN,EAAKX,KAAKe,GAAKjB,QAAQkB,UAC3BC,KAAGH,GAAQG,EAAI,KAG3B,MAAa,KAATH,EACOA,EADX,SAMJZ,KAAKgB,KAAOC,OAAOD,KAAO,GAAI5B,GAAK8B,YAC/BC,SAAcnB,KACdoB,OAAcpB,KAAKJ,UAIvBI,KAAKqB,MAAQJ,OAAOI,MAAQ,GAAIhC,GAAYiC,aACxCH,SAAcnB,OAKlBiB,OAAOM,WAAa,GAAIjC,GAAWkC,gBAC/BC,MAAcR,OAAOS,KACrBlB,GAAcR,KAAKC,EAAG,4BACvB0B,UAIPC,QACIC,MAAc,SACdC,UAAc,SAASC,GAAKA,EAAEC,mBAIlCC,OAAS,SAASC,GACd,MAAOlC,MAAKmC,KAAKD,GAAM,IAI3BE,QAAU,SAASF,GACf,MAAOlC,MAAKmC,KAAKD,GAAM,IAI3BG,UAAW,SAASC,GAChB,GAAIC,GAAUtC,EAAED,KAAKQ,IAAIF,KAAK,IAAMgC,EAAK,OACrCC,IACAA,EAAQC,SAAS,WAKzBL,KAAO,SAASD,EAAMD,GAClB,GAAIQ,GAAOxC,EAAED,KAAKQ,IAAIF,KAAK,IAAM4B,EAAKQ,SACtC,IAAID,EAAK,CAEL,GAAIE,GAAW1C,EAAEiC,EAAK1B,GAGtBmC,GAASH,SAAS,iBAGdP,EACAQ,EAAKR,OAAOU,GAEZF,EAAKL,QAAQO,GAIjB3C,KAAKF,KAAK8C,KAAKV,GAInB,MAAO,OAIXW,OAAQ,SAASd,GAEb,GAAIe,GAAO7C,EAAED,KAAKQ,IAAIF,KAAK,SACvBwC,IACAA,EAAKC,MAIT,IAAIJ,GAAW1C,EAAE8B,EAAEiB,QAAQC,QAAQ,kBAAkB3C,KAAK,SACtDL,GAAE8B,EAAEiB,QAAQE,SAAS,SACrBP,EAASQ,OACTnD,KAAKH,YAAYsD,QAEjBnD,KAAKH,YAAYkD,QASzB1C,UAAW,SAAST,GAChB,GAAIwD,GAAaxD,EAAQyD,MAAS,KAAOzD,EAAQyD,MAAS,EAC1D,OAAQ,6PAKsBzD,EAAQ0D,SAAW,uDAC0BrC,OAAOsC,KAAO,iEACvCH,EAAa,sPAYvE,QACI7D,eAAgBA"} \ No newline at end of file diff --git a/static/maps/layout/page.js.map b/static/maps/layout/page.js.map index 9deebce3d23..499cc0ba345 100644 --- a/static/maps/layout/page.js.map +++ b/static/maps/layout/page.js.map @@ -1 +1 @@ -{"version":3,"file":"page.js","sources":["../../src/layout/page.js"],"names":["define","MASTHEAD","PANEL","MODAL","BASE_MVC","PageLayoutView","Backbone","View","extend","LoggableMixin","_logNamespace","el","className","_panelIds","defaultOptions","message_box_visible","message_box_content","message_box_class","show_inactivity_warning","inactivity_box_content","initialize","options","this","log","_","pick","defaults","omit","$everything","$","render","$el","attr","html","template","modal","masthead","GalaxyMasthead","config","Galaxy","messageBox","inactivityWarning","renderPanels","content","level","addClass","toggle","verificationLink","root","append","page","remove","forEach","panelId","has","panelView","setElement","left","center","right","join","hideSidePanels","hide","toString"],"mappings":"AAAAA,QACI,kBACA,eACA,kBACA,gBACD,SAAUC,EAAUC,EAAOC,EAAOC,GAGrC,GAAIC,GAAiBC,SAASC,KAAKC,OAAQJ,EAASK,eAAgBD,QAChEE,cAAgB,SAEhBC,GAAK,OACLC,UAAY,eAEZC,WACI,OAAQ,SAAU,SAGtBC,gBACIC,qBAAsB,EACtBC,oBAAsB,GACtBC,kBAAsB,OAEtBC,yBAA0B,EAC1BC,uBAA0B,IAG9BC,WAAa,SAAUC,GACnBC,KAAKC,IAAKD,KAAO,eAAgBD,GACjCG,EAAEhB,OAAQc,KAAME,EAAEC,KAAMJ,EAASC,KAAKT,YACtCS,KAAKD,QAAUG,EAAEE,SAAUF,EAAEG,KAAMN,EAASC,KAAKT,WAAaS,KAAKR,iBAIvEc,YAAc,WACV,MAAON,MAAKO,EAAG,gBAGnBC,OAAS,WAqBL,MApBAR,MAAKC,IAAKD,KAAO,YACjBA,KAAKS,IAAIC,KAAM,SAAU,MACzBV,KAAKS,IAAIE,KAAMX,KAAKY,SAAUZ,KAAKD,UAEnCC,KAAKa,MAAQ,GAAIhC,GAAMI,KAEvBe,KAAKc,SAAW,GAAInC,GAASoC,eAAgBf,KAAKD,QAAQiB,QAG1DC,OAAOJ,MAAQb,KAAKa,MACpBI,OAAOH,SAAWd,KAAKc,SAEnBd,KAAKD,QAAQN,qBACbO,KAAKkB,WAAYlB,KAAKD,QAAQL,oBAAqBM,KAAKD,QAAQJ,mBAEhEK,KAAKD,QAAQH,yBACbI,KAAKmB,kBAAmBnB,KAAKD,QAAQF,wBAGzCG,KAAKoB,eACEpB,MAIXkB,WAAa,SAAUG,EAASC,GAQ5B,MAPAD,GAAUA,GAAW,GACrBC,EAAQA,GAAS,OACjBtB,KAAKS,IAAIc,SAAU,mBACnBvB,KAAKO,EAAG,eACHG,KAAM,QAAS,SAAWY,EAAQ,YAClCX,KAAMU,GACNG,SAAUH,GACRrB,MAIXmB,kBAAoB,SAAUE,GAC1B,GAAII,GAAmB,YAAcR,OAAOS,KAAO,oDAMnD,OALA1B,MAAKS,IAAIc,SAAU,sBACnBvB,KAAKO,EAAG,gBACHI,KAAMU,GACNM,OAAQ,IAAMF,GACdD,SAAUH,GACRrB,MAIXoB,aAAe,WACX,GAAIQ,GAAO5B,IAUX,OARAO,GAAG,8BAA+BsB,SAClC7B,KAAKT,UAAUuC,QAAS,SAAUC,GAC9B,GAAI7B,EAAE8B,IAAKJ,EAAMG,GAAW,CACxB,GAAIE,GAAYL,EAAMG,EACtBE,GAAUC,WAAY,IAAMH,GAC5BE,EAAUzB,YAGXR,MAKXY,SAAU,WAEN,OACI,gGACI,yBACA,qDACA,oFAGAZ,KAAKmC,KAAQ,mBAAqB,GAClCnC,KAAKoC,OAAQ,qCAAuC,GACpDpC,KAAKqC,MAAQ,oBAAsB,GACvC,SAEA,oDAEA,aACI,4DACI,QACI,wDACA,QACI,gFACA,iDACJ,SACJ,SACJ,SACJ,eACFC,KAAK,KAGXC,eAAiB,WACTvC,KAAKmC,MACLnC,KAAKmC,KAAKK,OAEVxC,KAAKqC,OACLrC,KAAKqC,MAAMG,QAInBC,SAAW,WAAY,MAAO,mBAI9B,QACI1D,eAAgBA"} \ No newline at end of file +{"version":3,"file":"page.js","sources":["../../src/layout/page.js"],"names":["define","MASTHEAD","PANEL","MODAL","BASE_MVC","PageLayoutView","Backbone","View","extend","LoggableMixin","_logNamespace","el","className","_panelIds","defaultOptions","message_box_visible","message_box_content","message_box_class","show_inactivity_warning","inactivity_box_content","initialize","options","this","log","_","pick","defaults","omit","Galaxy","modal","$everything","$","render","$el","attr","html","template","masthead","GalaxyMasthead","config","get","messageBox","inactivityWarning","renderPanels","content","level","addClass","toggle","verificationLink","root","append","page","remove","forEach","panelId","has","panelView","setElement","left","center","right","join","hideSidePanels","hide","toString"],"mappings":"AAAAA,QACI,kBACA,eACA,kBACA,gBACD,SAAUC,EAAUC,EAAOC,EAAOC,GAGrC,GAAIC,GAAiBC,SAASC,KAAKC,OAAQJ,EAASK,eAAgBD,QAChEE,cAAgB,SAEhBC,GAAK,OACLC,UAAY,eAEZC,WACI,OAAQ,SAAU,SAGtBC,gBACIC,qBAAsB,EACtBC,oBAAsB,GACtBC,kBAAsB,OAEtBC,yBAA0B,EAC1BC,uBAA0B,IAG9BC,WAAa,SAAUC,GACnBC,KAAKC,IAAKD,KAAO,eAAgBD,GACjCG,EAAEhB,OAAQc,KAAME,EAAEC,KAAMJ,EAASC,KAAKT,YACtCS,KAAKD,QAAUG,EAAEE,SAAUF,EAAEG,KAAMN,EAASC,KAAKT,WAAaS,KAAKR,gBAGnEc,OAAOC,MAAQP,KAAKO,MAAQ,GAAI1B,GAAMI,MAI1CuB,YAAc,WACV,MAAOR,MAAKS,EAAG,gBAGnBC,OAAS,WAkBL,MAjBAV,MAAKC,IAAKD,KAAO,YACjBA,KAAKW,IAAIC,KAAM,SAAU,MACzBZ,KAAKW,IAAIE,KAAMb,KAAKc,SAAUd,KAAKD,UAGnCO,OAAOS,SAAWf,KAAKe,SAAW,GAAIpC,GAASqC,eAAgBd,EAAEhB,OAAQc,KAAKD,QAAQkB,QAClF5B,GAAIW,KAAKS,EAAG,aAAcS,IAAI,MAG9BlB,KAAKD,QAAQN,qBACbO,KAAKmB,WAAYnB,KAAKD,QAAQL,oBAAqBM,KAAKD,QAAQJ,mBAEhEK,KAAKD,QAAQH,yBACbI,KAAKoB,kBAAmBpB,KAAKD,QAAQF,wBAGzCG,KAAKqB,eACErB,MAIXmB,WAAa,SAAUG,EAASC,GAQ5B,MAPAD,GAAUA,GAAW,GACrBC,EAAQA,GAAS,OACjBvB,KAAKW,IAAIa,SAAU,mBACnBxB,KAAKS,EAAG,eACHG,KAAM,QAAS,SAAWW,EAAQ,YAClCV,KAAMS,GACNG,SAAUH,GACRtB,MAIXoB,kBAAoB,SAAUE,GAC1B,GAAII,GAAmB,YAAcpB,OAAOqB,KAAO,oDAMnD,OALA3B,MAAKW,IAAIa,SAAU,sBACnBxB,KAAKS,EAAG,gBACHI,KAAMS,GACNM,OAAQ,IAAMF,GACdD,SAAUH,GACRtB,MAIXqB,aAAe,WACX,GAAIQ,GAAO7B,IAUX,OARAS,GAAG,8BAA+BqB,SAClC9B,KAAKT,UAAUwC,QAAS,SAAUC,GAC9B,GAAI9B,EAAE+B,IAAKJ,EAAMG,GAAW,CACxB,GAAIE,GAAYL,EAAMG,EACtBE,GAAUC,WAAY,IAAMH,GAC5BE,EAAUxB,YAGXV,MAKXc,SAAU,WAEN,OACI,gGACI,yBACA,2EACA,qDACA,oFAGAd,KAAKoC,KAAQ,mBAAqB,GAClCpC,KAAKqC,OAAQ,qCAAuC,GACpDrC,KAAKsC,MAAQ,oBAAsB,GACvC,SAEA,oDAEA,aACI,4DACI,QACI,wDACA,QACI,gFACA,iDACJ,SACJ,SACJ,SACJ,eACFC,KAAK,KAGXC,eAAiB,WACTxC,KAAKoC,MACLpC,KAAKoC,KAAKK,OAEVzC,KAAKsC,OACLtC,KAAKsC,MAAMG,QAInBC,SAAW,WAAY,MAAO,mBAI9B,QACI3D,eAAgBA"} \ No newline at end of file diff --git a/static/maps/polyfills.js.map b/static/maps/polyfills.js.map index c0e974458ae..392fe008e3e 100644 --- a/static/maps/polyfills.js.map +++ b/static/maps/polyfills.js.map @@ -1 +1 @@ -{"version":3,"file":"polyfills.js","sources":["../src/polyfills.js"],"names":["lastTime","vendors","x","length","window","requestAnimationFrame","cancelRequestAnimationFrame","callback","currTime","Date","getTime","timeToCall","Math","max","id","setTimeout","cancelAnimationFrame","clearTimeout"],"mappings":"CAAA,WACI,YAMA,KAAI,GAFAA,GAAW,EACXC,GAAW,KAAM,MAAO,SAAU,KAC9BC,EAAI,EAAGA,EAAID,EAAQE,SAAWC,OAAOC,wBAAyBH,EAClEE,OAAOC,sBAAwBD,OAAOH,EAAQC,GAAG,yBACjDE,OAAOE,4BAA8BF,OAAOH,EAAQC,GAClD,8BAGDE,QAAOC,wBACRD,OAAOC,sBAAwB,SAASE,GACpC,GAAIC,IAAW,GAAIC,OAAOC,UACtBC,EAAaC,KAAKC,IAAI,EAAG,IAAML,EAAWR,IAC1Cc,EAAKV,OAAOW,WAAW,WAAaR,EAASC,EAAWG,IAC1DA,EAEF,OADAX,GAAWQ,EAAWG,EACfG,IAGVV,OAAOY,uBACRZ,OAAOY,qBAAuB,SAASF,GACnCG,aAAaH"} \ No newline at end of file +{"version":3,"file":"polyfills.js","sources":["../src/polyfills.js"],"names":["Object","assign","_","extend","lastTime","vendors","x","length","window","requestAnimationFrame","cancelRequestAnimationFrame","callback","currTime","Date","getTime","timeToCall","Math","max","id","setTimeout","cancelAnimationFrame","clearTimeout"],"mappings":"AACAA,OAAOC,OAASD,OAAOC,QAAUC,EAAEC,OAEnC,WACI,YAMA,KAAI,GAFAC,GAAW,EACXC,GAAW,KAAM,MAAO,SAAU,KAC9BC,EAAI,EAAGA,EAAID,EAAQE,SAAWC,OAAOC,wBAAyBH,EAClEE,OAAOC,sBAAwBD,OAAOH,EAAQC,GAAG,yBACjDE,OAAOE,4BAA8BF,OAAOH,EAAQC,GAClD,8BAGDE,QAAOC,wBACRD,OAAOC,sBAAwB,SAASE,GACpC,GAAIC,IAAW,GAAIC,OAAOC,UACtBC,EAAaC,KAAKC,IAAI,EAAG,IAAML,EAAWR,IAC1Cc,EAAKV,OAAOW,WAAW,WAAaR,EAASC,EAAWG,IAC1DA,EAEF,OADAX,GAAWQ,EAAWG,EACfG,IAGVV,OAAOY,uBACRZ,OAAOY,qBAAuB,SAASF,GACnCG,aAAaH"} \ No newline at end of file diff --git a/static/maps/utils/localization.js.map b/static/maps/utils/localization.js.map index 4b089f6fb53..578cc929abd 100644 --- a/static/maps/utils/localization.js.map +++ b/static/maps/utils/localization.js.map @@ -1 +1 @@ -{"version":3,"file":"localization.js","sources":["../../src/utils/localization.js"],"names":["define","localeStrings","hasOwnProperty","locale","navigator","language","userLanguage","toLowerCase","__root","console","debug","localize","strToLocalize","cacheNonLocalized"],"mappings":"AAAAA,QACI,mBACD,SAAUC,GAOb,GAAIA,EAAcC,eAAgB,UAAY,CAC1C,GAAIC,GACqB,mBAAdC,WAA4B,UAC3BA,UAAUC,UAAYD,UAAUE,cAAgB,UAAWC,aAEvEN,GAAgBA,EAAe,KAAOE,IAAYF,EAAcO,OAChEC,QAAQC,MAAO,oCAAsCP,EAAS,eAG9DM,SAAQC,MAAO,mCAAqCP,EAAS,UAUjE,IAAIQ,GAAW,SAAUC,GAcrB,MAAOX,GAAeW,IAAmBA,EAMzC,OAJJD,GAASE,mBAAoB,EAIlBF"} \ No newline at end of file +{"version":3,"file":"localization.js","sources":["../../src/utils/localization.js"],"names":["define","localeStrings","hasOwnProperty","locale","navigator","language","userLanguage","toLowerCase","__root","localize","strToLocalize","cacheNonLocalized"],"mappings":"AAAAA,QACI,mBACD,SAAUC,GAOb,GAAIA,EAAcC,eAAgB,UAAY,CAE1C,GAAIC,GACqB,mBAAdC,WAA4B,UAC3BA,UAAUC,UAAYD,UAAUE,cAAgB,UAAWC,aAEvEN,GAAgBA,EAAe,KAAOE,IAAYF,EAAcO,OAapE,GAAIC,GAAW,SAAUC,GAcrB,MAAOT,GAAeS,IAAmBA,EAMzC,OAJJD,GAASE,mBAAoB,EAIlBF"} \ No newline at end of file diff --git a/static/scripts/bundled/analysis.bundled.js b/static/scripts/bundled/analysis.bundled.js index ca51cf27739..85f978b7148 100644 --- a/static/scripts/bundled/analysis.bundled.js +++ b/static/scripts/bundled/analysis.bundled.js @@ -141,7 +141,8 @@ webpackJsonp([0],[ layout : options.toolbox_in_panel }); this.tool_panel_view = new Tools.ToolPanelView({ model: this.tool_panel }); - // add upload plugin + + // add upload modal this.uploadButton = new Upload( options ); } }, @@ -761,9 +762,7 @@ webpackJsonp([0],[ Galaxy.upload.show(); }); } - - // regular tools - if ( this.model.id !== 'upload1' && this.model.get( 'model_class' ) === 'Tool' ) { + else if ( this.model.get( 'model_class' ) === 'Tool' ) { // regular tools var self = this; $link.find('a').on('click', function(e) { e.preventDefault(); @@ -15651,7 +15650,7 @@ webpackJsonp([0],[ render : function(){ RightPanel.prototype.render.call( this ); - this.debug( 'rendering:' ); + this.$( '.unified-panel-header' ).addClass( 'history-panel-header' ); this.$( '.panel-header-buttons' ).append([ this.refreshButton.$el, this.optionsButton.$el, @@ -17938,7 +17937,7 @@ webpackJsonp([0],[ constructor : function( attrs, options ){ hcontentMixin.constructor.call( this, attrs, options ); }, - + /** default attributes for a model */ defaults : _.extend( {}, _super.prototype.defaults, hcontentMixin.defaults, { model_class : 'HistoryDatasetAssociation' @@ -27780,6 +27779,9 @@ webpackJsonp([0],[ this.log( this + '.initialize:', options ); _.extend( this, _.pick( options, this._panelIds ) ); this.options = _.defaults( _.omit( options, this._panelIds ), this.defaultOptions ); + + // TODO: remove globals + Galaxy.modal = this.modal = new MODAL.View(); }, /** */ @@ -27792,13 +27794,10 @@ webpackJsonp([0],[ this.$el.attr( 'scroll', 'no' ); this.$el.html( this.template( this.options ) ); - this.modal = new MODAL.View(); //TODO: no render on masthead, needs init each time - this.masthead = new MASTHEAD.GalaxyMasthead( this.options.config ); - - // TODO: remove globals - Galaxy.modal = this.modal; - Galaxy.masthead = this.masthead; + Galaxy.masthead = this.masthead = new MASTHEAD.GalaxyMasthead( _.extend( this.options.config, { + el: this.$( '#masthead' ).get(0) + })); if( this.options.message_box_visible ){ this.messageBox( this.options.message_box_content, this.options.message_box_class ); @@ -27856,6 +27855,7 @@ webpackJsonp([0],[ return [ '
', '
', + '', '', '', // content here @@ -27938,10 +27938,8 @@ webpackJsonp([0],[ $("body").off(); // define this element - this.setElement($(this._template(options))); - - // append to masthead - $(this.el_masthead).append($(this.el)); + this.$el.html(this._template(options)); + $(this.el_masthead).find('#masthead').replaceWith(this.$el); // assign background this.$background = $(this.el).find('#masthead-background'); diff --git a/static/scripts/bundled/analysis.bundled.js.map b/static/scripts/bundled/analysis.bundled.js.map index f5936a8e0fb..5a0ab80c4db 100644 --- a/static/scripts/bundled/analysis.bundled.js.map +++ b/static/scripts/bundled/analysis.bundled.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./galaxy/scripts/apps/analysis.js","webpack:///./galaxy/scripts/apps/tool-panel.js","webpack:///./galaxy/scripts/mvc/tool/tools.js","webpack:///./galaxy/scripts/viz/trackster/util.js","webpack:///./galaxy/scripts/mvc/dataset/data.js","webpack:///./galaxy/scripts/mvc/ui/ui-modal.js","webpack:///./galaxy/scripts/mvc/ui/ui-frames.js","webpack:///./galaxy/scripts/mvc/ui/icon-button.js","webpack:///./galaxy/scripts/mvc/tool/tools-form.js","webpack:///./galaxy/scripts/utils/utils.js","webpack:///./galaxy/scripts/mvc/ui/ui-misc.js","webpack:///./galaxy/scripts/mvc/ui/ui-select-default.js","webpack:///./galaxy/scripts/mvc/ui/ui-buttons.js","webpack:///./galaxy/scripts/mvc/ui/ui-slider.js","webpack:///./galaxy/scripts/mvc/ui/ui-options.js","webpack:///./galaxy/scripts/mvc/ui/ui-drilldown.js","webpack:///./galaxy/scripts/mvc/tool/tools-form-base.js","webpack:///./galaxy/scripts/utils/deferred.js","webpack:///./galaxy/scripts/mvc/form/form-view.js","webpack:///./galaxy/scripts/mvc/ui/ui-portlet.js","webpack:///./galaxy/scripts/mvc/form/form-section.js","webpack:///./galaxy/scripts/mvc/ui/ui-table.js","webpack:///./galaxy/scripts/mvc/form/form-repeat.js","webpack:///./galaxy/scripts/mvc/form/form-input.js","webpack:///./galaxy/scripts/mvc/form/form-parameters.js","webpack:///./galaxy/scripts/mvc/form/form-select-content.js","webpack:///./galaxy/scripts/mvc/ui/ui-tabs.js","webpack:///./galaxy/scripts/mvc/tool/tools-template.js","webpack:///./galaxy/scripts/mvc/ui/ui-select-library.js","webpack:///./galaxy/scripts/mvc/ui/ui-list.js","webpack:///./galaxy/scripts/mvc/ui/ui-select-ftp.js","webpack:///./galaxy/scripts/mvc/ui/ui-color-picker.js","webpack:///./galaxy/scripts/mvc/form/form-data.js","webpack:///./galaxy/scripts/mvc/citation/citation-model.js","webpack:///./galaxy/scripts/libs/bibtex.js","webpack:///./galaxy/scripts/mvc/citation/citation-view.js","webpack:///./galaxy/scripts/mvc/tool/tools-jobs.js","webpack:///./galaxy/scripts/templates/tool_form.handlebars","webpack:///./~/handlebars/runtime.js","webpack:///./~/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./~/handlebars/dist/cjs/handlebars/base.js","webpack:///./~/handlebars/dist/cjs/handlebars/utils.js","webpack:///./~/handlebars/dist/cjs/handlebars/exception.js","webpack:///./~/handlebars/dist/cjs/handlebars/helpers.js","webpack:///./~/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./~/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./~/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./~/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./~/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./~/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./~/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./~/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./~/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./~/handlebars/dist/cjs/handlebars/logger.js","webpack:///./~/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./~/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./~/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///./galaxy/scripts/templates/tool_link.handlebars","webpack:///./galaxy/scripts/templates/panel_section.handlebars","webpack:///./galaxy/scripts/templates/tool_search.handlebars","webpack:///./galaxy/scripts/mvc/upload/upload-view.js","webpack:///./galaxy/scripts/mvc/upload/upload-button.js","webpack:///./galaxy/scripts/mvc/upload/default/default-view.js","webpack:///./galaxy/scripts/mvc/upload/upload-model.js","webpack:///./galaxy/scripts/mvc/upload/default/default-row.js","webpack:///./galaxy/scripts/mvc/upload/upload-settings.js","webpack:///./galaxy/scripts/mvc/ui/ui-popover.js","webpack:///./galaxy/scripts/mvc/ui/ui-select.js","webpack:///./galaxy/scripts/mvc/upload/upload-ftp.js","webpack:///./galaxy/scripts/utils/uploadbox.js","webpack:///./galaxy/scripts/mvc/upload/composite/composite-view.js","webpack:///./galaxy/scripts/mvc/upload/composite/composite-row.js","webpack:///./galaxy/scripts/apps/history-panel.js","webpack:///./galaxy/scripts/mvc/history/options-menu.js","webpack:///./galaxy/scripts/mvc/ui/popup-menu.js","webpack:///./galaxy/scripts/mvc/history/history-view-edit-current.js","webpack:///./galaxy/scripts/mvc/history/history-model.js","webpack:///./galaxy/scripts/mvc/history/history-contents.js","webpack:///./galaxy/scripts/mvc/history/history-content-model.js","webpack:///./galaxy/scripts/mvc/dataset/states.js","webpack:///./galaxy/scripts/mvc/history/hda-model.js","webpack:///./galaxy/scripts/mvc/dataset/dataset-model.js","webpack:///./galaxy/scripts/mvc/history/hdca-model.js","webpack:///./galaxy/scripts/mvc/collection/collection-model.js","webpack:///./galaxy/scripts/mvc/history/history-view-edit.js","webpack:///./galaxy/scripts/mvc/collection/list-collection-creator.js","webpack:///./galaxy/scripts/utils/natural-sort.js","webpack:///./galaxy/scripts/ui/hoverhighlight.js","webpack:///./galaxy/scripts/mvc/history/history-view.js","webpack:///./galaxy/scripts/ui/fa-icon-button.js","webpack:///./galaxy/scripts/mvc/list/list-view.js","webpack:///./galaxy/scripts/mvc/list/list-item.js","webpack:///./galaxy/scripts/ui/loading-indicator.js","webpack:///./galaxy/scripts/ui/search-input.js","webpack:///./galaxy/scripts/mvc/history/hda-li.js","webpack:///./galaxy/scripts/mvc/dataset/dataset-li.js","webpack:///./galaxy/scripts/mvc/history/hdca-li.js","webpack:///./galaxy/scripts/mvc/collection/collection-li.js","webpack:///./galaxy/scripts/mvc/collection/collection-view.js","webpack:///./galaxy/scripts/mvc/history/hda-li-edit.js","webpack:///./galaxy/scripts/mvc/dataset/dataset-li-edit.js","webpack:///./galaxy/scripts/mvc/tag.js","webpack:///./galaxy/scripts/mvc/annotation.js","webpack:///./galaxy/scripts/ui/editable-text.js","webpack:///./galaxy/scripts/mvc/history/hdca-li-edit.js","webpack:///./galaxy/scripts/mvc/collection/collection-view-edit.js","webpack:///./galaxy/scripts/mvc/collection/collection-li-edit.js","webpack:///./galaxy/scripts/mvc/collection/pair-collection-creator.js","webpack:///./galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js","webpack:///./galaxy/scripts/utils/levenshtein.js","webpack:///./galaxy/scripts/layout/page.js","webpack:///./galaxy/scripts/layout/masthead.js","webpack:///./galaxy/scripts/layout/menu.js","webpack:///./galaxy/scripts/layout/scratchbook.js","webpack:///./galaxy/scripts/mvc/user/user-quotameter.js"],"names":[],"mappings":";;;;;;;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kCAAiC;AACjC;AACA;AACA;;AAEA,UAAS;AACT;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,MAAK;AACL;;;;;;;;;;;;;;;;;;;ACvFA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,6DAA4D,yBAAyB;AACrF;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,2EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL,2BAA0B,oBAAoB;AAC9C,EAAC;;AAED,4B;;;;;;;;;;iEC3GA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,gDAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,2DAA0D,mBAAmB,EAAE;AAC/E;AACA,MAAK;;AAEL;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA,iBAAgB;AAChB;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA,qCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,OAAO;AACzC;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;;AAEA,EAAC;AACD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,mEAAkE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAgD,0DAA0D;AAC1G;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAkD,mCAAmC;AACrF;AACA;AACA;AACA;AACA,4DAA2D,WAAW;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA,gDAA+C,uCAAuC;AACtF;AACA;;AAEA;AACA;AACA;AACA,+DAA8D,iBAAiB;AAC/E;AACA;AACA;AACA;AACA,mDAAkD,kDAAkD;AACpG;AACA;AACA;AACA;AACA,4DAA2D,iBAAiB;AAC5E;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;;AAET;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAkD,4BAA4B;AAC9E;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;sFCjyBD;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,yBAAwB,EAAE;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA,uCAAsC,aAAa;AACnD,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,oBAAoB;;AAEtC;AACA;AACA;AACA;;AAEA;AACA,oBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAC,KAAK;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECxID;AACA;;AAEA;AACA;AACA;AACA,+CAA8C;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,wEAAuE;AACvE;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,yCAAwC,iBAAiB;AACzD,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,EAAC;;AAED;AACA;AACA,EAAC;;AAED;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,4BAA2B,yCAAyC;AACpE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;;AAEA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA,2BAA0B,qBAAqB;;AAE/C;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gCAA+B,kBAAkB;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gCAA+B,4DAA4D;AAC3F;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAAiD;AACjD,8CAA6C;AAC7C;AACA;AACA,kCAAiC;AACjC,8BAA6B;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA;AACA,sBAAqB;AACrB;AACA,cAAa;AACb;AACA;AACA;AACA,EAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;uHClqBD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,mBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA,sEAAqE,aAAa,EAAE;AACpF;;AAEA;AACA;AACA,0CAAyC,4CAA4C;AACrF;AACA,MAAK;;AAEL;AACA;AACA;AACA,6EAA4E;AAC5E;AACA;AACA;AACA,2FAA0F,SAAS;AACnG;AACA;AACA,8EAA6E;AAC7E;AACA,2EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iEC3MD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC;AAChC,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA,+CAA8C,oBAAoB;;AAElE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA,iCAAgC,mE;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,8G;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC;AAChC,iCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAkC,6CAA6C;;AAE/E;AACA,mCAAkC,gBAAgB;;AAElD;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,gDAA+C,2BAA2B;AAC1E,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,oBAAmB,uBAAuB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,wBAAuB,uBAAuB;AAC9C;AACA,4BAA2B,sCAAsC;AACjE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kCAAiC,yBAAyB;AAC1D;AACA,cAAa;AACb,UAAS;AACT,8BAA6B,yBAAyB;AACtD;AACA,MAAK;;AAEL;AACA;AACA;AACA,0BAAyB,iCAAiC;;AAE1D;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,iBAAgB;AAChB,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;uHC5gCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAgD;AAChD;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA,qCAAoC,oBAAoB;AACxD;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;ACtLD;AACA;AACA;AACA,4QACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC;AACjC;AACA,0BAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA,EAAC;;;;;;;;;;iEClDD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB,WAAU,SAAS;AACnB,WAAU,SAAS;AACnB,WAAU,QAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB,WAAU,OAAO;AACjB,WAAU,OAAO;AACjB,WAAU,SAAS;AACnB,WAAU,SAAS;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA,WAAU,OAAO;AACjB,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU,OAAO;AACjB,WAAU,OAAO;AACjB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;;AAGA;AACA;AACA,WAAU,OAAO;AACjB,WAAU,OAAO;AACjB;AACA;AACA;AACA,kBAAiB,aAAa;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,QAAQ;AAClB,WAAU,QAAQ;AAClB;AACA;AACA;AACA;AACA;AACA,qBAAoB,kBAAkB,aAAa,EAAE;AACrD,qBAAoB,kBAAkB,aAAa,EAAE;AACrD,qBAAoB,kBAAkB,aAAa,EAAE;AACrD,qBAAoB,kBAAkB,aAAa,EAAE;AACrD,oBAAmB,YAAY;AAC/B,WAAU,iDAAiD;AAC3D;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECnRD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,iCAAgC,4CAA4C;AAC5E,UAAS;AACT;AACA;AACA,uFAAsF;AACtF;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA,sBAAqB;AACrB;AACA,cAAa;AACb;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,UAAS;AACT;AACA;AACA,uDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;iECnRD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uDAAsD,oDAAoD;AAC1G;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uDAAsD,oDAAoD;AAC1G,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAkC,wCAAwC;AAC1E;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECrSD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,oCAAmC,8CAA8C;AACjF,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,+GAA8G;AAC9G;AACA,6EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA,kBAAiB,QAAQ;AACzB;AACA,kBAAiB,QAAQ;AACzB,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA,oCAAmC,8CAA8C;AACjF,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;;AAEA;AACA,8FAA6F;AAC7F;AACA;AACA,iFAAgF;AAChF;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;;AAEA;AACA,6BAA4B,8CAA8C;AAC1E,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC,cAAa;AACb,uCAAsC;AACtC;AACA,8FAA6F;AAC7F;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;iEClYD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iEC1HD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,kCAAiC,iDAAiD;AAClF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECjUD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qGAAoG,mBAAmB;;AAEvH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iEC1ID;AACA;AACA;AACA;AACA,yNACA;;AAEA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;;AAEA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAmD;AACnD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAA+D,yBAAyB;AACxF,kCAAiC;AACjC;AACA,0BAAyB;AACzB;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B,0BAAyB;AACzB;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6EAA4E,wCAAwC;AACpH;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,gJ;;;;;;;;;;iEC7UD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED,EAAC,gJ;;;;;;;;;;iECzDD;AACA;AACA;AACA;AACA,mJACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,yCAAwC,uEAAuE;AAC/G,sBAAqB;AACrB,kDAAiD,kDAAkD;AACnG;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA,MAAK;AACL,EAAC,gJ;;;;;;;;;;iEC5OD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,2GAA0G;AAC1G;;AAEA;AACA,gFAA+E;;AAE/E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iEC5MD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAkD;;AAElD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA2B,8BAA8B;AACzD;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,EAAC,gJ;;;;;;;;;;iEC/VD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECnOD;AACA,iQACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECtKD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,8CAA6C,sBAAsB;AACnE;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,gJ;;;;;;;;;;iECjID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,iCAAiC;AAClE,kCAAiC,iCAAiC;AAClE;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA,EAAC;;;;;;;;;;;iECxSD;AACA,sQACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,uEAAsE,kBAAkB;AACxF;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECxVD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+BAA8B,iEAAiE;;AAE/F;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAA+B,mEAAmE;AAClG;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,sEAAqE,oBAAoB;AACzF;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECpSD;AACA;;AAEA;AACA;AACA;AACA,oEAAmE;AACnE;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,uDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,iFAAgF,0BAA0B;AAC1G;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC,gJ;;;;;;;;;;iECxED;AACA,8PACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,2CAA0C,mBAAmB;AAC7D;AACA,yBAAwB,cAAc;AACtC,UAAS;AACT,MAAK;AACL;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA,kBAAiB;AACjB;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iEC9HD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wCAAuC,uBAAuB;;AAE9D;AACA,0CAAyC,4BAA4B;;AAErE;AACA,2CAA0C,8BAA8B;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb,sCAAqC,wEAAwE;AAC7G;AACA,UAAS;AACT,kCAAiC,4DAA4D;AAC7F;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iEC5JD;AACA,+JACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECpDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,oDAAmD;AACnD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,iHAAgH;AAChH,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC,gJ;;;;;;;;;;iEC1LD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA2G;AAC3G;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA8D,cAAc,EAAE;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA,EAAC;;AAED,EAAC,gJ;;;;;;;;;;iHCtSD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC,gJ;;;;;;;;;;ACtED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,oBAAoB;AAC9D;AACA;AACA;AACA;AACA;AACA,YAAW,sBAAsB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,kBAAkB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA,wBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mC;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oD;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC,aAAa;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAmC,YAAY;AAC/C;AACA;AACA;AACA;AACA,uDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C,uDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,uDAAsD;AACtD;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA,uDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,iCAAgC;AAChC;AACA,+BAA8B,kBAAkB;AAChD,wCAAuC;AACvC;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;AACA,cAAa;AACb;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,MAAM;AACvB;AACA;AACA,aAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,aAAY,GAAG;AACf;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,KAAK;AACjB,aAAY,KAAK;AACjB,cAAa,KAAK;AAClB,aAAY,KAAK;AACjB;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,cAAa,GAAG;AAChB;AACA,aAAY,GAAG;AACf,aAAY,KAAK;AACjB,aAAY,GAAG;AACf,aAAY,KAAK;AACjB,aAAY,GAAG;AACf,aAAY,KAAK;AACjB,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA,cAAa,GAAG;AAChB,cAAa,KAAK;AAClB,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,cAAa,GAAG;AAChB,cAAa,GAAG;AAChB,cAAa,GAAG;AAChB,cAAa,GAAG;AAChB,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf;AACA;AACA;AACA;AACA,aAAY,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,EAAE;AACd,aAAY,EAAE;AACd;AACA,aAAY,EAAE;AACd,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,GAAG;AACf,aAAY,EAAE,EAAE,GAAG;AACnB,aAAY,EAAE;AACd,kBAAiB,IAAI;AACrB,kBAAiB,UAAU;AAC3B,iBAAgB,QAAQ,QAAQ,EAAE;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,QAAQ,GAAG,EAAE;AAC9B,kBAAiB,QAAQ,GAAG,EAAE;AAC9B,aAAY,aAAa;AACzB,iBAAgB,WAAW;AAC3B,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB,iBAAgB,QAAQ,WAAW,EAAE;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,QAAQ;AACvB,gBAAe,WAAW;AAC1B,aAAY,GAAG;AACf,iBAAgB,WAAW;AAC3B,iBAAgB,SAAS;AACzB,oBAAmB,QAAQ,EAAE,IAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,OAAO;AACxB,kBAAiB,KAAK;AACtB,kBAAiB,QAAQ;AACzB,kBAAiB,QAAQ;AACzB,kBAAiB,SAAS;AAC1B,oBAAmB,GAAG;AACtB,oBAAmB,GAAG;AACtB,kBAAiB,SAAS;AAC1B;AACA;AACA;AACA,gBAAe,KAAK,EAAE,KAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,UAAU;AAC/B,gBAAe,YAAY;AAC3B;AACA;AACA,kBAAiB,GAAG;AACpB,mBAAkB,GAAG;AACrB,mBAAkB,GAAG;AACrB,oBAAmB,GAAG;AACtB,kBAAiB,GAAG;AACpB;AACA,mBAAkB,GAAG;AACrB,oBAAmB,GAAG;AACtB,mBAAkB,GAAG;AACrB,mBAAkB,GAAG;AACrB,kBAAiB,GAAG;AACpB;AACA;AACA,kBAAiB,GAAG;AACpB,kBAAiB,GAAG;AACpB,mBAAkB,GAAG;AACrB,oBAAmB,GAAG;AACtB,kBAAiB,GAAG;AACpB;AACA;AACA,kBAAiB,GAAG;AACpB;AACA;AACA,oBAAmB,GAAG;AACtB,yBAAwB,MAAM;AAC9B;AACA,mBAAkB,GAAG;AACrB,oBAAmB,GAAG;AACtB,mBAAkB,GAAG;AACrB,mBAAkB,GAAG;AACrB,mBAAkB,GAAG;AACrB,mBAAkB,GAAG;AACrB,mBAAkB,GAAG;AACrB;AACA;AACA;AACA;AACA,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B,oBAAmB,GAAG,EAAE,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,mBAAkB,EAAE,GAAG,QAAQ,IAAI,QAAQ,GAAG,EAAE;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA,gBAAe,IAAI;AACnB;AACA,yBAAwB,MAAM;AAC9B,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAe,KAAK;AACpB;AACA,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,IAAI;AACnB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB,gBAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B;AACA,yBAAwB,MAAM;AAC9B;AACA,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,oBAAmB,GAAG,EAAE,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,QAAQ,EAAE,KAAK;AAClC,oBAAmB,QAAQ,EAAE,KAAK;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B,yBAAwB,MAAM;AAC9B;AACA;AACA;;AAEA;AACA,EAAC;;AAED;AACA;AACA;;;;;;;;;;iHC10DA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA,+CAA8C,kBAAkB;AAChE;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAgF;AAChF;AACA;AACA,+CAA8C,eAAe;AAC7D;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;AC3LD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;AChJD;AACA,kEAAiE;AACjE,4DAA2D;;AAE3D;AACA,uKAAsK,uBAAuB,aAAa;AAC1M;AACA,yKAAwK,wBAAwB,aAAa;AAC7M;AACA,2KAA0K,uBAAuB,aAAa;AAC9M,2FAA0F;AAC1F,uKAAsK,uBAAuB,aAAa;AAC1M,mEAAkE;AAClE,EAAC;AACD,4DAA2D;;AAE3D;AACA,uKAAsK,uBAAuB,aAAa;AAC1M;AACA,6KAA4K,0BAA0B,aAAa;AACnN;AACA,sFAAqF,uBAAuB,yEAAyE;AACrL;AACA,uKAAsK,uBAAuB,aAAa;AAC1M;AACA,EAAC,gBAAgB,E;;;;;;;;;ACzBjB;AACA;AACA;;;;;;;;;;ACFA;;AAEA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA,wCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,4CAA2C;;;;;;;;;;AClE3C;;AAEA;AACA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,4CAA2C;;;;;;;;;;ACvG3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,aAAY;AACZ,aAAY;AACZ,eAAc;AACd,eAAc;AACd,eAAc;AACd,eAAc;AACd;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA,wBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C;;;;;;;;;;AC3H3C;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,oBAAmB,yBAAyB;AAC5C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,4CAA2C;;;;;;;;;;ACvC3C;;AAEA;AACA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;;;;;;;;;;AC7C3C;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,oBAAmB;AACnB;;AAEA;AACA;AACA,IAAG;AACH;;AAEA;AACA,4CAA2C;;;;;;;;;;ACtC3C;;AAEA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA,qCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA,4CAA2C;;;;;;;;;;AC7F3C;;AAEA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;AACA;AACA;AACA,iCAAgC,KAAK;AACrC;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA,4CAA2C;;;;;;;;;;ACxB3C;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA,4DAA2D,+DAA+D;AAC1H,IAAG;AACH;;AAEA;AACA,4CAA2C;;;;;;;;;;AC5B3C;;AAEA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,0BAA0B;AAC7C;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA,4CAA2C;;;;;;;;;;ACzB3C;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA,4CAA2C;;;;;;;;;;ACX3C;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA,IAAG;AACH;;AAEA;AACA,4CAA2C;;;;;;;;;;AChC3C;;AAEA;AACA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;;AAEA;AACA;AACA;AACA,4CAA2C;;;;;;;;;;ACf3C;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAG;AACH;;AAEA;AACA,4CAA2C;;;;;;;;;;AC5B3C;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,4FAA2F,aAAa;AACxG;AACA;;AAEA,+CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;AACA,4CAA2C;;;;;;;;;;AC9C3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4CAA2C;;;;;;;;;;ACd3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA,wCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,OAAO;AAChD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA,8BAA6B;AAC7B;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA,2EAA0E;;AAE1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,2EAA0E;;AAE1E;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAwC;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;;;;;;;;;;ACnS3C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA2C;;;;;;;;;;;AClB3C;AACA,kEAAiE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD,4DAA2D;;AAE3D;AACA,sFAAqF,uBAAuB,yEAAyE;AACrL;AACA,mKAAkK,qBAAqB,aAAa;AACpM;AACA,uKAAsK,uBAAuB,aAAa;AAC1M;AACA,2KAA0K,yBAAyB,aAAa;AAChN;AACA,iLAAgL,4BAA4B,aAAa;AACzN;AACA,uKAAsK,uBAAuB,aAAa;AAC1M;AACA,qLAAoL,8BAA8B,aAAa;AAC/N;AACA,EAAC,gBAAgB,E;;;;;;;;;AC3BjB;AACA,kEAAiE;AACjE,oDAAmD;;AAEnD;AACA,mKAAkK,qBAAqB,aAAa;AACpM;AACA,uKAAsK,uBAAuB,aAAa;AAC1M;AACA,mKAAkK,qBAAqB,aAAa;AACpM,2DAA0D;AAC1D,EAAC,gBAAgB,E;;;;;;;;;ACXjB;AACA,kEAAiE;AACjE,oDAAmD;;AAEnD;AACA,mMAAkM,qCAAqC,aAAa;AACpP;AACA,qLAAoL,8BAA8B,aAAa;AAC/N;AACA,EAAC,gBAAgB,E;;;;;;;;;iECTjB;AACA;AACA;AACA;AACA;AACA;AACA,8GACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,iEAAgE,WAAW;AAC3E,iEAAgE,UAAU;AAC1E;AACA,kBAAiB;AACjB;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA0C,cAAc;AACxD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,gBAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,0DAA0D;AACxG;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED,EAAC;;;;;;;;;;;iECpOD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,8CAA6C,sBAAsB,EAAE;;AAErE;AACA,4BAA2B,mDAAmD;;AAE9E;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,mBAAkB,sBAAsB;AACxC,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iEC5FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA0C,qEAAqE,yBAAyB,EAAE,wBAAwB;AAClK,2CAA0C,qEAAqE,kBAAkB,EAAE,+BAA+B;AAClK,2CAA0C,qEAAqE,qBAAqB,EAAE,sBAAsB;AAC5J,2CAA0C,qEAAqE,oBAAoB,EAAE,EAAE;AACvI,2CAA0C,qEAAqE,mBAAmB,EAAE,EAAE;AACtI,2CAA0C,qEAAqE,oBAAoB,EAAE,EAAE;AACvI,2CAA0C,qEAAqE,uBAAuB,EAAE,EAAE;;AAE1I;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sDAAqD,mCAAmC;AACxF,gDAA+C,0EAA0E;AACzH,4DAA2D,yCAAyC;AACpG,yDAAwD,qCAAqC;AAC7F,yDAAwD,mCAAmC;AAC3F,2CAA0C,wBAAwB;AAClE,2CAA0C,6CAA6C,EAAE;AACzF,2CAA0C,gDAAgD;AAC1F,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,yEAAwE,8BAA8B;AACtG;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS,+BAA+B,oBAAoB,EAAE;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA,+CAA8C,mBAAmB;;AAEjE;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA6D,gBAAgB;;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,kBAAiB;AACjB;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAiC;AACjC,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED,EAAC;;;;;;;;;;;iECvjBD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECtCD;AACA;AACA;AACA;AACA;AACA,2FAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAkD,mBAAmB,EAAE;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS,+BAA+B,oBAAoB,EAAE;;AAE9D;AACA,uDAAsD,sBAAsB,EAAE;AAC9E,2DAA0D,oBAAoB,EAAE;;AAEhF;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,sCAAqC,2BAA2B;AAChE;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAAyF,SAAS;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAC;;AAED,EAAC;;;;;;;;;;;iECrVD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,MAAK;;AAEL;AACA;AACA,oCAAmC,oBAAoB;AACvD,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA,yEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED,EAAC;;;;;;;;;;;iECjGD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6DAA4D,aAAa,EAAE;AAC3E;;AAEA;AACA;;AAEA;AACA;AACA,6DAA4D,gBAAgB;AAC5E,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAgB;AAChB,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC,gJ;;;;;;;;;;iECxKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iEC3ND;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C;AAC3C,4CAA2C;AAC3C;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C,uBAAuB,EAAE;AACpE,mCAAkC,cAAc;AAChD,UAAS;AACT,MAAK;;AAEL;AACA;AACA,mCAAkC,oBAAoB;AACtD,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,+CAA8C,gCAAgC;AAC9E;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA,uEAAsE;AACtE;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,kDAAiD,aAAa;AAC9D,kDAAiD,cAAc;AAC/D;AACA,0DAAyD,MAAM;AAC/D;AACA;AACA;AACA,yDAAwD;AACxD;AACA;AACA,+EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED,EAAC;;;;;;;;;;;AC7MD;AACA;AACA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B,iCAAgC;AAChC,4CAA2C;AAC3C,4CAA2C;AAC3C,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,sBAAqB;AACrB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B,wCAAuC;AACvC,wCAAuC;AACvC,wCAAuC;AACvC;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B,4CAA2C;AAC3C,4CAA2C;AAC3C,6CAA4C;AAC5C,6CAA4C;AAC5C,gDAA+C;AAC/C,gDAA+C;AAC/C,+CAA8C,UAAU,EAAE;AAC1D;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C,YAAY,EAAE;AACzD;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,gCAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA8C,8BAA8B,YAAY;AACxF,+CAA8C,4BAA4B,YAAY;AACtF,kDAAiD,kCAAkC;AACnF,cAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;;iECpSD;AACA;AACA;AACA;AACA;AACA;AACA,yFAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,wCAAuC,sCAAsC,oBAAoB,EAAE,EAAE;AACrG,wCAAuC,sCAAsC,uBAAuB,EAAE,EAAE;;AAExG;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yEAAwE,6BAA6B;AACrG;AACA;AACA,kEAAiE,iBAAiB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS,+BAA+B,oBAAoB,EAAE;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;;AAET;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,+CAA8C,gBAAgB;;AAE9D;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,2CAA0C,6BAA6B,EAAE;AACzE,2CAA0C,2BAA2B,EAAE;AACvE,8CAA6C,iCAAiC;AAC9E,UAAS;AACT,MAAK;;AAEL;AACA;AACA,4CAA2C,kCAAkC,EAAE;AAC/E,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA6D,iBAAiB;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,oCAAmC,mBAAmB;AACtD;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED,EAAC;;;;;;;;;;;iEChQD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,uDAAsD,sBAAsB,EAAE;AAC9E,0DAAyD,oBAAoB,EAAE;;AAE/E;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,0CAAyC,2BAA2B;AACpE,UAAS;AACT;AACA,0CAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD,EAAC;;;;;;;;;;;ACjWD;AACA;AACA;AACA;;AAEA;AACA,kBAAiB,aAAa,YAAY,aAAa;AACvD;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,0CAAyC,0BAA0B;AACnE,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL,2BAA0B,uBAAuB;AACjD,EAAC;;AAED,+B;;;;;;;;;oHClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE,iBAAiB;AACrF;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE,gCAAgC;AACpG;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,EAAC;;;;;;;;;;;+HCzLD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,mBAAkB,wBAAwB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA,cAAa;AACb;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,wEAAuE;AACvE;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,wBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAY,kBAAkB;AAC9B,aAAY,OAAO;AACnB;AACA,eAAc,UAAU;AACxB;AACA;AACA;AACA;AACA,0BAAyB;;AAEzB;AACA,kCAAiC;AACjC;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,eAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sEAAqE,QAAQ;;AAE7E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,eAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAY,WAAW;AACvB,aAAY,OAAO;AACnB,aAAY,SAAS;AACrB;AACA,oEAAmE;AACnE,eAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA,EAAC;;;;;;;;;;;;qHCxTD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB;AACnB;AACA;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,2BAA0B,YAAY;AACtC;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,8CAA6C;AAC7C,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,qBAAoB,aAAa;AACjC,sCAAqC,uCAAuC;AAC5E;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,aAAY;;AAEZ;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL,wEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,oCAAmC,gCAAgC;AACnE,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,qCAAoC,8BAA8B;AAClE,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL,EAAC;;;AAGD;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;;ACreD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,SAAS;AACzB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oFAAmF,6BAA6B;AAChH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,yFAAwF,mBAAmB,EAAE;AAC7G,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,SAAS;AACzB,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA,qCAAoC,sBAAsB;AAC1D,4BAA2B,gBAAgB;AAC3C,MAAK;AACL;AACA;AACA,oCAAmC,sBAAsB;AACzD,4BAA2B,8BAA8B;AACzD,MAAK;AACL;AACA;AACA,sCAAqC,sBAAsB;AAC3D,4BAA2B,iBAAiB;AAC5C,MAAK;;AAEL;AACA,iBAAgB,QAAQ;AACxB,iBAAgB,OAAO;AACvB;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA4F,aAAa;AACzG;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,6DAA6D;AAChF,MAAK;AACL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,oBAAmB,0FAA0F;AAC7G;AACA;AACA,MAAK;AACL;AACA;AACA,kDAAiD,uBAAuB;AACxE,MAAK;;AAEL;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB;AACrB;AACA,4CAA2C;AAC3C;;AAEA,mGAAkG;AAClG;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,YAAY;AACzC,+BAA8B,aAAa;AAC3C;AACA;AACA,UAAS;AACT;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gBAAe,OAAO;AACtB;;AAEA,gBAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,oCAAmC,2CAA2C,EAAE;AAChF;AACA,UAAS;AACT;AACA,oCAAmC,2CAA2C,EAAE;AAChF;AACA,UAAS;AACT;AACA,oCAAmC,wBAAwB,EAAE;AAC7D;AACA,UAAS;AACT;AACA,oCAAmC,wBAAwB,EAAE;AAC7D;AACA,UAAS;AACT;AACA,oCAAmC,wBAAwB,EAAE;AAC7D;AACA,UAAS;AACT;AACA,oCAAmC,wBAAwB,EAAE;AAC7D;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA,oBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA,oBAAmB,QAAQ;AAC3B;;AAEA;AACA;AACA,aAAY;AACZ;AACA,MAAK;;AAEL;AACA,0BAAyB,qBAAqB,EAAE;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,QAAQ;;AAEjD;AACA;AACA;AACA;AACA,6CAA4C,WAAW;AACvD,6CAA4C,UAAU;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+BAA8B,sBAAsB,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,kFAAiF;AACjF,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,IAAG;;;;;;;;;;;4HCvoBH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA,iBAAgB;AAChB,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,uBAAuB,EAAE;AACnE,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA,iBAAgB,IAAI;AACpB,mBAAkB,0BAA0B;AAC5C;AACA;AACA,0DAAyD,qCAAqC,EAAE;AAChG,MAAK;;AAEL;AACA;AACA,iBAAgB,QAAQ;AACxB,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA,6CAA4C,QAAQ;AACpD;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA,gCAA+B,mBAAmB;AAClD;AACA,MAAK;;AAEL;AACA;AACA,gCAA+B,2BAA2B;AAC1D;AACA,MAAK;;AAEL;AACA;AACA,8CAA6C,6BAA6B,EAAE;AAC5E,MAAK;;AAEL;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,qEAAqE;AAC1G,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,kBAAiB;AACjB;AACA,UAAS;AACT;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA,iEAAgE;AAChE,gDAA+C,0CAA0C;AACzF,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;yHCnUD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,QAAQ;AACxB,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,sCAAqC,sBAAsB;AAC3D,4BAA2B,iBAAiB;AAC5C,MAAK;AACL;AACA;AACA,qCAAoC,sBAAsB;AAC1D,4BAA2B,gBAAgB;AAC3C,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,+BAA+B;;;AAGhD;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;iEChJD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,EAAC;;;;;;;;;;0GC3DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,4BAA2B;AAC3B;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;4HCpDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA,qCAAoC,sBAAsB;AAC1D,4BAA2B,gBAAgB;AAC3C,MAAK;AACL;AACA;AACA,8DAA6D,sBAAsB;AACnF,4BAA2B,iBAAiB;AAC5C,MAAK;;AAEL;AACA;AACA,kDAAiD,cAAc;AAC/D,oCAAmC,sBAAsB;AACzD;AACA;AACA,qEAAoE,cAAc;AAClF;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA,0BAAyB,8BAA8B;AACvD;AACA,YAAW;AACX;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAqB,8BAA8B;AACnD,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,oEAAmE,eAAe;AAClF,UAAS;AACT;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,2CAA0C,uBAAuB,EAAE;AACnE,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA,8CAA6C,6BAA6B,EAAE;AAC5E,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,qEAAqE;AAC1G,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,kBAAiB;AACjB;AACA,UAAS;AACT;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;0GC1VD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;4HC3HD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,mDAAkD,4BAA4B;AAC9E;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa,+BAA+B;;;AAG5C;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL,4BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,kCAAiC,eAAe;AAChD;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,qCAAoC,sBAAsB;AAC1D,4BAA2B,gBAAgB;AAC3C,MAAK;AACL;AACA;AACA,8DAA6D,sBAAsB;AACnF,4BAA2B,iBAAiB;AAC5C,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;qHC9fD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,2BAA0B,mBAAmB;;AAE7C;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,wEAAuE;AACvE;AACA;AACA,+CAA8C,gBAAgB;AAC9D,+CAA8C,iBAAiB;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,eAAe,EAAE;AAC1D;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,eAAe,EAAE;AAC1D;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,QAAQ;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA,2CAA0C,gBAAgB;AAC1D;AACA;AACA,8BAA6B;AAC7B,sBAAqB;AACrB;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,2CAA0C,wBAAwB;AAClE;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA,2CAA0C,wBAAwB;AAClE;AACA,cAAa;AACb,cAAa;AACb;AACA,2CAA0C,wBAAwB;AAClE;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA,iBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,iBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA,sEAAqE,0BAA0B,EAAE;AACjG,sEAAqE,yBAAyB;AAC9F,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,+BAA8B,aAAa;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA,gCAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;;AC3hBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,mCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA,2BAA0B,+BAA+B;AACzD;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,gCAA+B,uBAAuB;AACtD;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC,qDAAqD,EAAE;AACvF;AACA,kCAAiC;AACjC;AACA,kCAAiC;AACjC;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA,wDAAuD,sCAAsC,EAAE;AAC/F;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,0DAAyD,iCAAiC;AAC1F,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,mBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA,2EAA0E;AAC1E;AACA,oEAAmE;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,YAAW;AACX;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,SAAQ;;AAER;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,gCAA+B,uBAAuB;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAiE,SAAS;AAC1E;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gEAA+D;AAC/D;AACA,oEAAmE;AACnE;AACA;AACA;AACA;AACA,+FAA8F;AAC9F;AACA;AACA;;AAEA;AACA;AACA;AACA,4DAA2D;AAC3D;AACA;AACA;AACA,qEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2DAA0D;AAC1D;AACA,kBAAiB,EAAE;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAqD;AACrD;AACA,2EAA0E;AAC1E;AACA,kCAAiC,EAAE;AACnC,8BAA6B,mCAAmC;AAChE;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,2BAA0B,gCAAgC;AAC1D,EAAC;;;;AAID;AACA;AACA,eAAc,SAAS;AACvB;AACA;;AAEA;AACA;AACA;;AAEA,wCAAuC;AACvC;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,eAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;iECniCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,WAAW;AACnC,8BAA6B,UAAU;AACvC;AACA;AACA;AACA,+DAA8D,aAAa;AAC3E;AACA;AACA,+BAA8B,WAAW;AACzC,oCAAmC,UAAU;AAC7C;AACA;AACA;;AAEA;AACA,EAAC;;;;;;;;;;iGC7BD;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,EAAC;AACD;;AAEA;AACA;AACA;AACA,gCAA+B,aAAa;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,sBAAqB;AACrB;AACA;AACA;AACA,0BAAyB;AACzB,sBAAqB;AACrB;AACA,cAAa;AACb;AACA;AACA,MAAK;AACL,EAAC;;;;;;;;;;;6GCpCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,kDAAkD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT,uCAAsC,4BAA4B,EAAE;AACpE,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,sBAAqB,6CAA6C,EAAE;AACpE,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,QAAQ;AACxB,iBAAgB,QAAQ;AACxB;AACA;AACA;AACA,6BAA4B,aAAa;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+CAA8C,eAAe;AAC7D;AACA;AACA,cAAa;AACb;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA,iBAAgB,cAAc;AAC9B,iBAAgB,eAAe;AAC/B,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAS;AACT;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,OAAO;AACvB,iBAAgB,OAAO;AACvB,iBAAgB,eAAe;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,wBAAuB;AACvB;;AAEA;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4CAA2C,sDAAsD;AACjG;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,QAAQ;AACxB,mBAAkB,YAAY;AAC9B;AACA;AACA,kEAAiE,WAAW;AAC5E,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA,sBAAqB,4BAA4B;AACjD;AACA;AACA;AACA,sBAAqB,2BAA2B;AAChD;AACA;AACA;AACA,sBAAqB;;AAErB,2CAA0C;AAC1C;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;iGCnrBD;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA0D;;AAE1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8GAA6G;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;;;;;uHC/CD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,uDAAsD;AACtD;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA6B,iCAAiC,EAAE;AAChE;AACA;AACA;AACA,cAAa;AACb,8BAA6B,gCAAgC,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,8BAA6B,yBAAyB;AACtD;AACA,MAAK;;AAEL;AACA;AACA;AACA,qDAAoD,sBAAsB;AAC1E;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA0D;AAC1D;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,6DAA4D,yBAAyB,EAAE;AACvF;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,2CAA0C,kBAAkB;;AAE5D;AACA;AACA;AACA;AACA,8BAA6B,sDAAsD,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,qBAAoB,kBAAkB;AACtC;AACA;;AAEA;AACA;AACA,aAAY;AACZ,8BAA6B,yCAAyC,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,wBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,sBAAqB,kBAAkB;AACvC;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA,+BAA8B,uCAAuC;;AAErE;AACA;;AAEA;AACA;AACA,qCAAoC,WAAW;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,0CAAyC,iBAAiB;AAC1D;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,qBAAoB,aAAa;AACjC;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;+HCl9BD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,iBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA6B,iCAAiC,EAAE;AAChE;AACA;AACA;AACA,cAAa;AACb,8BAA6B,gCAAgC,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA,2CAA0C,uBAAuB;AACjE,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,QAAQ,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA,mBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;;AAEA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT;AACA;AACA,YAAW;AACX;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,+BAA8B,wBAAwB;AACtD,8BAA6B,oBAAoB;AACjD;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAgD,uBAAuB;AACvE;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,QAAO;;AAEP;AACA;AACA;AACA,iDAAgD,YAAY;AAC5D;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB;AACvB;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;iGC7fD;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS,eAAe;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;;AAEjB,cAAa;AACb;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAmC,YAAY;AAC/C,kBAAiB;AACjB,cAAa;AACb,gCAA+B,YAAY;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;;;;;iGCjGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,EAAC;AACD,yCAAwC,UAAU;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA,yDAAwD;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,4CAA2C,kBAAkB;;AAE7D;AACA;AACA;;AAEA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAsB,sBAAsB;AAC5C;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAiC,sBAAsB;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;AACL,EAAC;;;;;;;;;;;0GC9JD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAA+B;AAC/B;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA,kBAAiB;AACjB;AACA,MAAK;;AAEL,wBAAuB;AACvB;AACA;AACA,MAAK;AACL,EAAC;;;;AAID;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;+HCzED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,iCAAgC,qDAAqD;AACrF;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAa;AACb;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,eAAe;AACpD;AACA;AACA,MAAK;;AAEL;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,uBAAuB;AAClD,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA;AACA,UAAS;AACT;AACA;;AAEA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA,8CAA6C,WAAW;AACxD;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA,mEAAkE,aAAa;;AAE/E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,kDAAiD,qCAAqC,EAAE;AACxF,kDAAiD,oCAAoC,EAAE;AACvF,kDAAiD,sCAAsC;AACvF,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA,gCAA+B;AAC/B;AACA;AACA,yDAAwD;AACxD;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,sDAAqD;AACrD;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2DAA0D;AAC1D;AACA;;AAEA;;AAEA,wCAAuC;AACvC;AACA,sBAAqB;AACrB,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sCAAqC;AACrC;AACA;AACA;AACA,cAAa;;AAEb,oCAAmC;AACnC;AACA;AACA;AACA;AACA,cAAa;;AAEb,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb,qCAAoC;AACpC;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAwC;AACxC;AACA;AACA;AACA,kBAAiB;AACjB;AACA;;AAEA;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA,6DAA4D;AAC5D;AACA,0DAAyD;AACzD;AACA,0BAAyB,EAAE;AAC3B;AACA;AACA,cAAa,EAAE;AACf;;AAEA,wBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;0GCjfD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4EAA2E,eAAe,EAAE;AAC5F,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA,gCAA+B;AAC/B;AACA;AACA,2CAA0C;AAC1C;AACA;AACA;AACA,kBAAiB;AACjB;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB;AACvB;AACA;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;qHCpGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,gCAA+B;AAC/B;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,oCAAmC;AACnC;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,sDAAqD;AACrD;AACA;AACA;AACA,kBAAiB;AACjB;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB;AACvB;AACA;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iCAAgC,qDAAqD;AACrF;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB;AACvB;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,iCAAgC,qDAAqD;AACrF;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,eAAe;AACpD;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAuB;AACvB;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;0GCrRD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qEAAoE;AACpE;AACA,0BAAyB,oDAAoD;AAC7E;AACA,0BAAyB,yDAAyD;AAClF;AACA,0BAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL,EAAC;;;;AAID;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;;kHC5ND;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,eAAe;;AAEpD;AACA;AACA,UAAS;AACT,sCAAqC;AACrC;AACA;AACA,eAAc;AACd;AACA;AACA,MAAK;;AAEL;AACA;AACA,+CAA8C,qBAAqB,cAAc;AACjF,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA,gCAA+B;AAC/B;AACA,wCAAuC;AACvC;AACA;AACA;AACA,8EAA6E;AAC7E;AACA,kBAAiB;AACjB;AACA,MAAK;;AAEL,wBAAuB;AACvB;AACA;AACA;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;6GC/ED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,0BAA0B;AACjF;AACA;AACA,0BAAyB;AACzB,sB,6CAAqB;AACrB;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA,0CAAyC,eAAe,EAAE;AAC1D;AACA,0CAAyC,6BAA6B,EAAE;AACxE,0CAAyC,8BAA8B,EAAE;AACzE;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT,oCAAmC,gCAAgC;AACnE,MAAK;;AAEL;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA,0CAAyC,eAAe,EAAE;AAC1D;AACA,0CAAyC,mCAAmC,EAAE;AAC9E,0CAAyC,oCAAoC,EAAE;AAC/E;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT,0CAAyC,sCAAsC;AAC/E,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,kDAAiD,kCAAkC,EAAE;AACrF,kDAAiD,oCAAoC,EAAE;AACvF,kDAAiD,mCAAmC,EAAE;AACtF,kDAAiD,wCAAwC,EAAE;AAC3F,qDAAoD,uCAAuC,EAAE;AAC7F,kDAAiD,kCAAkC;AACnF,MAAK;;;AAGL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA,gCAA+B;AAC/B;AACA;AACA,2DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA,0DAAyD;AACzD;AACA;AACA;AACA,8EAA6E;AAC7E,iDAAgD;AAChD,+EAA8E;AAC9E;AACA;AACA,0BAAyB;AACzB;AACA,kBAAiB;AACjB;AACA,MAAK;;AAEL;AACA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,2EAA0E;AAC1E;AACA;AACA;AACA;AACA,0BAAyB,EAAE;AAC3B;AACA;AACA,cAAa;AACb;;AAEA,wBAAuB;AACvB;AACA;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;oHC9XD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,MAAK;;AAEL,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL,mBAAkB,OAAO;AACzB;AACA;AACA,MAAK;;AAEL,mBAAkB,SAAS;AAC3B;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,8BAA6B,kBAAkB,GAAG,eAAe;AACjE;AACA;AACA;AACA,gEAA+D,sBAAsB;AACrF;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,2BAA0B,yDAAyD;AACnF,EAAC;;AAED;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;oHCvHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wDAAuD;AACvD;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAiC,4BAA4B,GAAG,eAAe;AAC/E;AACA;AACA,sBAAqB;AACrB;AACA,UAAS;AACT;AACA,MAAK;;AAEL,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL,mBAAkB,OAAO;AACzB;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,2BAA0B,+DAA+D;AACzF,EAAC;AACD;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;ACnFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA,EAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb,4BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,iCAAiC;AACxD;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,yDAAwD,0CAA0C;AAClG;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAC;;;;;;;;;;iECtHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;iECrED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAgB,OAAO;AACvB;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,2BAA0B,QAAQ;;AAElC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;AACA,2CAA0C,gBAAgB;AAC1D;AACA;AACA,8BAA6B;AAC7B,sBAAqB;AACrB;AACA;AACA;AACA,cAAa;AACb,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;kHCzJD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,eAAe;AACpD;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;;AAEA,wBAAuB;AACvB;AACA,MAAK;AACL,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;4HCzID;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,mCAAkC,qDAAqD;AACvF;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAwC;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,mEAAkE,wBAAwB;AAC1F,MAAK;;AAEL;AACA;AACA,mEAAkE,wBAAwB;AAC1F,MAAK;;AAEL;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAqD;AACrD;AACA,2EAA0E;AAC1E;AACA,kCAAiC,EAAE;AACnC,8BAA6B,qCAAqC;AAClE;AACA,8BAA6B,qCAAqC;AAClE;AACA,8BAA6B,mCAAmC;AAChE;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,2BAA0B,gCAAgC;AAC1D,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,eAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,kDAAkD;AACvE,sBAAqB;AACrB;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;+HC1PD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAkC,kBAAkB;AACpD;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gCAA+B,uBAAuB;;AAEtD;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA0B,qBAAqB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,qCAAoC,sCAAsC,EAAE;AAC5E;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,8BAA6B,YAAY;;AAEzC;AACA;;AAEA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,yFAAwF,OAAO;AAC/F;;AAEA,UAAS;;AAET;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA,mCAAkC,yCAAyC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA,oCAAmC,YAAY,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,oCAAmC,6BAA6B,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,oCAAmC,6BAA6B,EAAE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,WAAW;AACzC,+BAA8B,WAAW;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,0DAAyD,eAAe;AACxE;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA,mBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,qCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA,YAAW;AACX;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE,iCAAiC,EAAE;AACxG,sEAAqE,gCAAgC,EAAE;AACvG;AACA;AACA;AACA,sEAAqE,iCAAiC,EAAE;AACxG,sEAAqE,gCAAgC,EAAE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sEAAqE,yBAAyB,EAAE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,kFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,yDAAwD,iBAAiB;;AAEzE;AACA;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,2DAA0D,eAAe;;AAEzE,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,MAAK;;AAEL;AACA;AACA,mCAAkC,aAAa;AAC/C;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,mCAAkC,aAAa;AAC/C;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAsC,QAAQ;AAC9C;AACA,UAAS;;AAET;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA,2BAA0B,kCAAkC;AAC5D,EAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4DAA2D;AAC3D;AACA,gEAA+D;AAC/D;AACA;AACA;AACA,iGAAgG;AAChG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA4E;AAC5E;AACA;AACA,wEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,wCAAuC;AACvC;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;iECtrDD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,iBAAiB;AACtC,sBAAqB,iBAAiB;;AAEtC;;AAEA;AACA;AACA,aAAY,eAAe;AAC3B;AACA;;AAEA;AACA;AACA,aAAY,eAAe;AAC3B;AACA;;AAEA;AACA,aAAY,eAAe;AAC3B,eAAc,eAAe;AAC7B;AACA;AACA,QAAO;AACP;AACA;AACA,+DAA8D;AAC9D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAC;;;;;;;;;;uHC3DD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,6DAA4D,QAAQ,SAAS,aAAa,cAAc;AACxG;AACA,4DAA2D;AAC3D,2FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL,2BAA0B,yBAAyB;AACnD,EAAC;;AAED;AACA;AACA;AACA;AACA,EAAC;;;;;;;;;;;oHCpJD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA,oCAAmC;AACnC,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAoD,aAAa,aAAa;AAC9E,iEAAgE,oBAAoB,YAAY;AAChG;AACA;AACA;AACA,8DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,qEAAoE,oBAAoB,WAAW,aAAa,cAAc;AAC9H;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECzKD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;;AAEA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,UAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA,cAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,yBAAwB,uBAAuB;AAC/C,MAAK;;AAEL;AACA;AACA,yBAAwB,sBAAsB;AAC9C,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,qCAAqC;AAC9C;AACA;AACA,cAAa;AACb,UAAS;AACT,OAAM;;AAEN;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;iECtfD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA,uCAAsC,kBAAkB,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;AACA,UAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,gD,4CAAA;AACA,6CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,sBAAqB;;AAErB,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;;AAEA;;AAEA,cAAa;AACb,U;yHAAS;;AAET,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,+E,4CAAA;AACA,wDAAuD,WAAW;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAa;AACb,U;yHAAS;AACT,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,cAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,oBAAoB;AAC1D;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA0C,iDAAiD;AAC3F;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,yBAAwB,uBAAuB;AAC/C,MAAK;;AAEL;AACA;AACA,yBAAwB,sBAAsB;AAC9C,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;uHCxVD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA,qDAAoD,2CAA2C,EAAE;AACjG;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,kBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,mBAAkB,OAAO;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,gEAA+D;AAC/D;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,EAAC;;;AAGD;AACA;AACA;AACA,IAAG","file":"analysis.bundled.js","sourcesContent":["\nvar jQuery = require( 'jquery' ),\n $ = jQuery,\n PANEL = require( 'layout/panel' ),\n ToolPanel = require( './tool-panel' ),\n HistoryPanel = require( './history-panel' ),\n PAGE = require( 'layout/page' ),\n ToolsForm = require( 'mvc/tool/tools-form' );\n\nwindow.app = function app( options, bootstrapped ){\n Galaxy.debug( 'building app:', options, bootstrapped );\n\n // .................................................... panels and page\n var toolPanel = new ToolPanel({\n el : '#left',\n userIsAnonymous : Galaxy.user.isAnonymous(),\n require_login : options.config.require_login,\n spinner_url : options.config.spinner_url,\n search_url : options.config.search_url,\n toolbox : options.config.toolbox,\n toolbox_in_panel: options.config.toolbox_in_panel,\n stored_workflow_menu_entries : options.config.stored_workflow_menu_entries,\n }),\n centerPanel = new PANEL.CenterPanel({\n el : '#center'\n }),\n historyPanel = new HistoryPanel({\n el : '#right',\n galaxyRoot : Galaxy.root,\n userIsAnonymous : Galaxy.user.isAnonymous(),\n allow_user_dataset_purge: Galaxy.config.allow_user_dataset_purge,\n }),\n analysisPage = new PAGE.PageLayoutView( _.extend( options, {\n el : 'body',\n left : toolPanel,\n center : centerPanel,\n right : historyPanel,\n }));\n\n // .................................................... decorate the galaxy object\n // TODO: most of this is becoming unnecessary as we move to apps\n Galaxy.page = analysisPage;\n\n // add tool panel to Galaxy object\n Galaxy.toolPanel = toolPanel.tool_panel;\n Galaxy.upload = toolPanel.uploadButton;\n\n Galaxy.currHistoryPanel = historyPanel.historyView;\n Galaxy.currHistoryPanel.connectToQuotaMeter( Galaxy.quotaMeter );\n Galaxy.currHistoryPanel.listenToGalaxy( Galaxy );\n\n //HACK: move to router/App\n Galaxy.app = {\n display : function( view, target ){\n // TODO: Remove this line after select2 update\n $( '.select2-hidden-accessible' ).remove();\n centerPanel.display( view );\n },\n };\n\n // .................................................... start up\n $(function(){\n analysisPage.render();\n Galaxy.currHistoryPanel.loadCurrentHistory();\n\n // TODO: to router, remove Globals\n var params = $.extend( {}, options.config.params );\n if( params.tool_id && params.tool_id !== 'upload1' ){\n params.id = params.tool_id;\n centerPanel.display( new ToolsForm.View( params ) );\n\n } else if( params.job_id ){\n params.id = params.tool_id;\n centerPanel.display( new ToolsForm.View( params ) );\n\n } else {\n var iframeUrl = Galaxy.root;\n if( params.workflow_id ){\n iframeUrl += 'workflow/run?id=' + params.workflow_id;\n } else if( params.m_c ){\n iframeUrl += params.m_c + '/' + params.m_a;\n } else {\n iframeUrl += 'root/welcome';\n }\n centerPanel.$( '#galaxy_main' ).prop( 'src', iframeUrl );\n }\n });\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/apps/analysis.js\n ** module id = 0\n ** module chunks = 0\n **/","var LeftPanel = require( 'layout/panel' ).LeftPanel,\n Tools = require( 'mvc/tool/tools' ),\n Upload = require( 'mvc/upload/upload-view' );\n//TODO: localize\n\n/* Builds the tool panel on the left */\nvar ToolPanel = LeftPanel.extend({\n\n title : 'Tools',\n\n initialize: function( options ){\n LeftPanel.prototype.initialize.call( this, options );\n this.log( this + '.initialize:', options );\n this.stored_workflow_menu_entries = options.stored_workflow_menu_entries || [];\n\n // TODO: this switch doesn't belong here?\n if( options.userIsAnonymous || !options.require_login ){\n // create tool search, tool panel, and tool panel view.\n var tool_search = new Tools.ToolSearch({\n spinner_url : options.spinner_url,\n search_url : options.search_url,\n hidden : false\n });\n var tools = new Tools.ToolCollection( options.toolbox );\n this.tool_panel = new Tools.ToolPanel({\n tool_search : tool_search,\n tools : tools,\n layout : options.toolbox_in_panel\n });\n this.tool_panel_view = new Tools.ToolPanelView({ model: this.tool_panel });\n // add upload plugin\n this.uploadButton = new Upload( options );\n }\n },\n\n render : function(){\n var self = this;\n LeftPanel.prototype.render.call( self );\n self.$( '.panel-header-buttons' ).append( self.uploadButton.$el );\n\n // if there are tools, render panel and display everything\n if (self.tool_panel.get( 'layout' ).size() > 0) {\n self.tool_panel_view.render();\n //TODO: why the hide/show?\n self.$( '.toolMenu' ).show();\n }\n self.$( '.toolMenuContainer' ).prepend( self.tool_panel_view.$el );\n\n self._renderWorkflowMenu();\n\n // if a tool link has the minsizehint attribute, handle it here (gen. by hiding the tool panel)\n self.$( 'a[minsizehint]' ).click( function() {\n if ( parent.handle_minwidth_hint ) {\n parent.handle_minwidth_hint( $( self ).attr( 'minsizehint' ) );\n }\n });\n },\n\n _renderWorkflowMenu : function(){\n var self = this;\n // add internal workflow list\n self.$( '#internal-workflows' ).append( self._templateTool({\n title : 'All workflows',\n href : 'workflow/list_for_run'\n }));\n _.each( self.stored_workflow_menu_entries, function( menu_entry ){\n self.$( '#internal-workflows' ).append( self._templateTool({\n title : menu_entry.stored_workflow.name,\n href : 'workflow/run?id=' + menu_entry.encoded_stored_workflow_id\n }));\n });\n },\n\n _templateTool: function( tool ) {\n return [\n '
',\n // global\n '', tool.title, '',\n '
'\n ].join('');\n },\n\n _templateBody : function(){\n return [\n '
',\n '
',\n '
',\n '
',\n 'Search did not match any tools.',\n '
',\n '
',\n '
',\n '
',\n '
',\n 'Workflows',\n '
',\n '
',\n '
',\n '
',\n '
',\n '
'\n ].join('');\n },\n\n toString : function(){ return 'ToolPanel'; }\n});\n\nmodule.exports = ToolPanel;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/apps/tool-panel.js\n ** module id = 9\n ** module chunks = 0\n **/","/**\n * Model, view, and controller objects for Galaxy tools and tool panel.\n */\n\n define([\n \"libs/underscore\",\n \"viz/trackster/util\",\n \"mvc/dataset/data\",\n \"mvc/tool/tools-form\",\n \"templates/tool_form.handlebars\",\n \"templates/tool_link.handlebars\",\n \"templates/panel_section.handlebars\",\n \"templates/tool_search.handlebars\",\n], function(_, util, data, ToolsForm, tool_form_template, tool_link_template, panel_section_template, tool_search_template) {\n\n/**\n * Mixin for tracking model visibility.\n */\nvar VisibilityMixin = {\n hidden: false,\n\n show: function() {\n this.set(\"hidden\", false);\n },\n\n hide: function() {\n this.set(\"hidden\", true);\n },\n\n toggle: function() {\n this.set(\"hidden\", !this.get(\"hidden\"));\n },\n\n is_visible: function() {\n return !this.attributes.hidden;\n }\n\n};\n\n/**\n * A tool parameter.\n */\nvar ToolParameter = Backbone.Model.extend({\n defaults: {\n name: null,\n label: null,\n type: null,\n value: null,\n html: null,\n num_samples: 5\n },\n\n initialize: function(options) {\n this.attributes.html = unescape(this.attributes.html);\n },\n\n copy: function() {\n return new ToolParameter(this.toJSON());\n },\n\n set_value: function(value) {\n this.set('value', value || '');\n }\n});\n\nvar ToolParameterCollection = Backbone.Collection.extend({\n model: ToolParameter\n});\n\n/**\n * A data tool parameter.\n */\nvar DataToolParameter = ToolParameter.extend({});\n\n/**\n * An integer tool parameter.\n */\nvar IntegerToolParameter = ToolParameter.extend({\n set_value: function(value) {\n this.set('value', parseInt(value, 10));\n },\n\n /**\n * Returns samples from a tool input.\n */\n get_samples: function() {\n return d3.scale.linear()\n .domain([this.get('min'), this.get('max')])\n .ticks(this.get('num_samples'));\n }\n});\n\nvar FloatToolParameter = IntegerToolParameter.extend({\n set_value: function(value) {\n this.set('value', parseFloat(value));\n }\n});\n\n/**\n * A select tool parameter.\n */\nvar SelectToolParameter = ToolParameter.extend({\n /**\n * Returns tool options.\n */\n get_samples: function() {\n return _.map(this.get('options'), function(option) {\n return option[0];\n });\n }\n});\n\n// Set up dictionary of parameter types.\nToolParameter.subModelTypes = {\n 'integer': IntegerToolParameter,\n 'float': FloatToolParameter,\n 'data': DataToolParameter,\n 'select': SelectToolParameter\n};\n\n/**\n * A Galaxy tool.\n */\nvar Tool = Backbone.Model.extend({\n // Default attributes.\n defaults: {\n id: null,\n name: null,\n description: null,\n target: null,\n inputs: [],\n outputs: []\n },\n\n urlRoot: Galaxy.root + 'api/tools',\n\n initialize: function(options) {\n\n // Set parameters.\n this.set('inputs', new ToolParameterCollection(_.map(options.inputs, function(p) {\n var p_class = ToolParameter.subModelTypes[p.type] || ToolParameter;\n return new p_class(p);\n })));\n },\n\n /**\n *\n */\n toJSON: function() {\n var rval = Backbone.Model.prototype.toJSON.call(this);\n\n // Convert inputs to JSON manually.\n rval.inputs = this.get('inputs').map(function(i) { return i.toJSON(); });\n return rval;\n },\n\n /**\n * Removes inputs of a particular type; this is useful because not all inputs can be handled by\n * client and server yet.\n */\n remove_inputs: function(types) {\n var tool = this,\n incompatible_inputs = tool.get('inputs').filter( function(input) {\n return ( types.indexOf( input.get('type') ) !== -1);\n });\n tool.get('inputs').remove(incompatible_inputs);\n },\n\n /**\n * Returns object copy, optionally including only inputs that can be sampled.\n */\n copy: function(only_samplable_inputs) {\n var copy = new Tool(this.toJSON());\n\n // Return only samplable inputs if flag is set.\n if (only_samplable_inputs) {\n var valid_inputs = new Backbone.Collection();\n copy.get('inputs').each(function(input) {\n if (input.get_samples()) {\n valid_inputs.push(input);\n }\n });\n copy.set('inputs', valid_inputs);\n }\n\n return copy;\n },\n\n apply_search_results: function(results) {\n ( _.indexOf(results, this.attributes.id) !== -1 ? this.show() : this.hide() );\n return this.is_visible();\n },\n\n /**\n * Set a tool input's value.\n */\n set_input_value: function(name, value) {\n this.get('inputs').find(function(input) {\n return input.get('name') === name;\n }).set('value', value);\n },\n\n /**\n * Set many input values at once.\n */\n set_input_values: function(inputs_dict) {\n var self = this;\n _.each(_.keys(inputs_dict), function(input_name) {\n self.set_input_value(input_name, inputs_dict[input_name]);\n });\n },\n\n /**\n * Run tool; returns a Deferred that resolves to the tool's output(s).\n */\n run: function() {\n return this._run();\n },\n\n /**\n * Rerun tool using regions and a target dataset.\n */\n rerun: function(target_dataset, regions) {\n return this._run({\n action: 'rerun',\n target_dataset_id: target_dataset.id,\n regions: regions\n });\n },\n\n /**\n * Returns input dict for tool's inputs.\n */\n get_inputs_dict: function() {\n var input_dict = {};\n this.get('inputs').each(function(input) {\n input_dict[input.get('name')] = input.get('value');\n });\n return input_dict;\n },\n\n /**\n * Run tool; returns a Deferred that resolves to the tool's output(s).\n * NOTE: this method is a helper method and should not be called directly.\n */\n _run: function(additional_params) {\n // Create payload.\n var payload = _.extend({\n tool_id: this.id,\n inputs: this.get_inputs_dict()\n }, additional_params);\n\n // Because job may require indexing datasets, use server-side\n // deferred to ensure that job is run. Also use deferred that\n // resolves to outputs from tool.\n var run_deferred = $.Deferred(),\n ss_deferred = new util.ServerStateDeferred({\n ajax_settings: {\n url: this.urlRoot,\n data: JSON.stringify(payload),\n dataType: \"json\",\n contentType: 'application/json',\n type: \"POST\"\n },\n interval: 2000,\n success_fn: function(response) {\n return response !== \"pending\";\n }\n });\n\n // Run job and resolve run_deferred to tool outputs.\n $.when(ss_deferred.go()).then(function(result) {\n run_deferred.resolve(new data.DatasetCollection(result));\n });\n return run_deferred;\n }\n});\n_.extend(Tool.prototype, VisibilityMixin);\n\n/**\n * Tool view.\n */\nvar ToolView = Backbone.View.extend({\n\n});\n\n/**\n * Wrap collection of tools for fast access/manipulation.\n */\nvar ToolCollection = Backbone.Collection.extend({\n model: Tool\n});\n\n/**\n * Label or section header in tool panel.\n */\nvar ToolSectionLabel = Backbone.Model.extend(VisibilityMixin);\n\n/**\n * Section of tool panel with elements (labels and tools).\n */\nvar ToolSection = Backbone.Model.extend({\n defaults: {\n elems: [],\n open: false\n },\n\n clear_search_results: function() {\n _.each(this.attributes.elems, function(elt) {\n elt.show();\n });\n\n this.show();\n this.set(\"open\", false);\n },\n\n apply_search_results: function(results) {\n var all_hidden = true,\n cur_label;\n _.each(this.attributes.elems, function(elt) {\n if (elt instanceof ToolSectionLabel) {\n cur_label = elt;\n cur_label.hide();\n }\n else if (elt instanceof Tool) {\n if (elt.apply_search_results(results)) {\n all_hidden = false;\n if (cur_label) {\n cur_label.show();\n }\n }\n }\n });\n\n if (all_hidden) {\n this.hide();\n }\n else {\n this.show();\n this.set(\"open\", true);\n }\n }\n});\n_.extend(ToolSection.prototype, VisibilityMixin);\n\n/**\n * Tool search that updates results when query is changed. Result value of null\n * indicates that query was not run; if not null, results are from search using\n * query.\n */\nvar ToolSearch = Backbone.Model.extend({\n defaults: {\n search_hint_string: \"search tools\",\n min_chars_for_search: 3,\n spinner_url: \"\",\n clear_btn_url: \"\",\n search_url: \"\",\n visible: true,\n query: \"\",\n results: null,\n // ESC (27) will clear the input field and tool search filters\n clear_key: 27\n },\n\n urlRoot: Galaxy.root + 'api/tools',\n\n initialize: function() {\n this.on(\"change:query\", this.do_search);\n },\n\n /**\n * Do the search and update the results.\n */\n do_search: function() {\n var query = this.attributes.query;\n\n // If query is too short, do not search.\n if (query.length < this.attributes.min_chars_for_search) {\n this.set(\"results\", null);\n return;\n }\n\n // Do search via AJAX.\n var q = query;\n // Stop previous ajax-request\n if (this.timer) {\n clearTimeout(this.timer);\n }\n // Start a new ajax-request in X ms\n $(\"#search-clear-btn\").hide();\n $(\"#search-spinner\").show();\n var self = this;\n this.timer = setTimeout(function () {\n // log the search to analytics if present\n if ( typeof ga !== 'undefined' ) {\n ga( 'send', 'pageview', Galaxy.root + '?q=' + q );\n }\n $.get( self.urlRoot, { q: q }, function (data) {\n self.set(\"results\", data);\n $(\"#search-spinner\").hide();\n $(\"#search-clear-btn\").show();\n }, \"json\" );\n }, 400 );\n },\n\n clear_search: function() {\n this.set(\"query\", \"\");\n this.set(\"results\", null);\n }\n\n});\n_.extend(ToolSearch.prototype, VisibilityMixin);\n\n/**\n * Tool Panel.\n */\nvar ToolPanel = Backbone.Model.extend({\n\n initialize: function(options) {\n this.attributes.tool_search = options.tool_search;\n this.attributes.tool_search.on(\"change:results\", this.apply_search_results, this);\n this.attributes.tools = options.tools;\n this.attributes.layout = new Backbone.Collection( this.parse(options.layout) );\n },\n\n /**\n * Parse tool panel dictionary and return collection of tool panel elements.\n */\n parse: function(response) {\n // Recursive function to parse tool panel elements.\n var self = this,\n // Helper to recursively parse tool panel.\n parse_elt = function(elt_dict) {\n var type = elt_dict.model_class;\n // There are many types of tools; for now, anything that ends in 'Tool'\n // is treated as a generic tool.\n if ( type.indexOf('Tool') === type.length - 4 ) {\n return self.attributes.tools.get(elt_dict.id);\n }\n else if (type === 'ToolSection') {\n // Parse elements.\n var elems = _.map(elt_dict.elems, parse_elt);\n elt_dict.elems = elems;\n return new ToolSection(elt_dict);\n }\n else if (type === 'ToolSectionLabel') {\n return new ToolSectionLabel(elt_dict);\n }\n };\n\n return _.map(response, parse_elt);\n },\n\n clear_search_results: function() {\n this.get('layout').each(function(panel_elt) {\n if (panel_elt instanceof ToolSection) {\n panel_elt.clear_search_results();\n }\n else {\n // Label or tool, so just show.\n panel_elt.show();\n }\n });\n },\n\n apply_search_results: function() {\n var results = this.get('tool_search').get('results');\n if (results === null) {\n this.clear_search_results();\n return;\n }\n\n var cur_label = null;\n this.get('layout').each(function(panel_elt) {\n if (panel_elt instanceof ToolSectionLabel) {\n cur_label = panel_elt;\n cur_label.hide();\n }\n else if (panel_elt instanceof Tool) {\n if (panel_elt.apply_search_results(results)) {\n if (cur_label) {\n cur_label.show();\n }\n }\n }\n else {\n // Starting new section, so clear current label.\n cur_label = null;\n panel_elt.apply_search_results(results);\n }\n });\n }\n});\n\n/**\n * View classes for Galaxy tools and tool panel.\n *\n * Views use precompiled Handlebars templates for rendering. Views update as needed\n * based on (a) model/collection events and (b) user interactions; in this sense,\n * they are controllers are well and the HTML is the real view in the MVC architecture.\n */\n\n/**\n * Base view that handles visibility based on model's hidden attribute.\n */\nvar BaseView = Backbone.View.extend({\n initialize: function() {\n this.model.on(\"change:hidden\", this.update_visible, this);\n this.update_visible();\n },\n update_visible: function() {\n ( this.model.attributes.hidden ? this.$el.hide() : this.$el.show() );\n }\n});\n\n/**\n * Link to a tool.\n */\nvar ToolLinkView = BaseView.extend({\n tagName: 'div',\n\n render: function() {\n // create element\n var $link = $('
');\n $link.append(tool_link_template(this.model.toJSON()));\n\n // open upload dialog for upload tool\n if (this.model.id === 'upload1') {\n $link.find('a').on('click', function(e) {\n e.preventDefault();\n Galaxy.upload.show();\n });\n }\n\n // regular tools\n if ( this.model.id !== 'upload1' && this.model.get( 'model_class' ) === 'Tool' ) {\n var self = this;\n $link.find('a').on('click', function(e) {\n e.preventDefault();\n var form = new ToolsForm.View( { id : self.model.id, version : self.model.get('version') } );\n form.deferred.execute(function() {\n Galaxy.app.display( form );\n });\n });\n }\n\n // add element\n this.$el.append($link);\n return this;\n }\n});\n\n/**\n * Panel label/section header.\n */\nvar ToolSectionLabelView = BaseView.extend({\n tagName: 'div',\n className: 'toolPanelLabel',\n\n render: function() {\n this.$el.append( $(\"\").text(this.model.attributes.text) );\n return this;\n }\n});\n\n/**\n * Panel section.\n */\nvar ToolSectionView = BaseView.extend({\n tagName: 'div',\n className: 'toolSectionWrapper',\n\n initialize: function() {\n BaseView.prototype.initialize.call(this);\n this.model.on(\"change:open\", this.update_open, this);\n },\n\n render: function() {\n // Build using template.\n this.$el.append( panel_section_template(this.model.toJSON()) );\n\n // Add tools to section.\n var section_body = this.$el.find(\".toolSectionBody\");\n _.each(this.model.attributes.elems, function(elt) {\n if (elt instanceof Tool) {\n var tool_view = new ToolLinkView({model: elt, className: \"toolTitle\"});\n tool_view.render();\n section_body.append(tool_view.$el);\n }\n else if (elt instanceof ToolSectionLabel) {\n var label_view = new ToolSectionLabelView({model: elt});\n label_view.render();\n section_body.append(label_view.$el);\n }\n else {\n // TODO: handle nested section bodies?\n }\n });\n return this;\n },\n\n events: {\n 'click .toolSectionTitle > a': 'toggle'\n },\n\n /**\n * Toggle visibility of tool section.\n */\n toggle: function() {\n this.model.set(\"open\", !this.model.attributes.open);\n },\n\n /**\n * Update whether section is open or close.\n */\n update_open: function() {\n (this.model.attributes.open ?\n this.$el.children(\".toolSectionBody\").slideDown(\"fast\") :\n this.$el.children(\".toolSectionBody\").slideUp(\"fast\")\n );\n }\n});\n\nvar ToolSearchView = Backbone.View.extend({\n tagName: 'div',\n id: 'tool-search',\n className: 'bar',\n\n events: {\n 'click': 'focus_and_select',\n 'keyup :input': 'query_changed',\n 'click #search-clear-btn': 'clear'\n },\n\n render: function() {\n this.$el.append( tool_search_template(this.model.toJSON()) );\n if (!this.model.is_visible()) {\n this.$el.hide();\n }\n this.$el.find('[title]').tooltip();\n return this;\n },\n\n focus_and_select: function() {\n this.$el.find(\":input\").focus().select();\n },\n\n clear: function() {\n this.model.clear_search();\n this.$el.find(\":input\").val('');\n this.focus_and_select();\n return false;\n },\n\n query_changed: function( evData ) {\n // check for the 'clear key' (ESC) first\n if( ( this.model.attributes.clear_key ) &&\n ( this.model.attributes.clear_key === evData.which ) ){\n this.clear();\n return false;\n }\n this.model.set(\"query\", this.$el.find(\":input\").val());\n }\n});\n\n/**\n * Tool panel view. Events triggered include:\n * tool_link_click(click event, tool_model)\n */\nvar ToolPanelView = Backbone.View.extend({\n tagName: 'div',\n className: 'toolMenu',\n\n /**\n * Set up view.\n */\n initialize: function() {\n this.model.get('tool_search').on(\"change:results\", this.handle_search_results, this);\n },\n\n render: function() {\n var self = this;\n\n // Render search.\n var search_view = new ToolSearchView( { model: this.model.get('tool_search') } );\n search_view.render();\n self.$el.append(search_view.$el);\n\n // Render panel.\n this.model.get('layout').each(function(panel_elt) {\n if (panel_elt instanceof ToolSection) {\n var section_title_view = new ToolSectionView({model: panel_elt});\n section_title_view.render();\n self.$el.append(section_title_view.$el);\n }\n else if (panel_elt instanceof Tool) {\n var tool_view = new ToolLinkView({model: panel_elt, className: \"toolTitleNoSection\"});\n tool_view.render();\n self.$el.append(tool_view.$el);\n }\n else if (panel_elt instanceof ToolSectionLabel) {\n var label_view = new ToolSectionLabelView({model: panel_elt});\n label_view.render();\n self.$el.append(label_view.$el);\n }\n });\n\n // Setup tool link click eventing.\n self.$el.find(\"a.tool-link\").click(function(e) {\n // Tool id is always the first class.\n var\n tool_id = $(this).attr('class').split(/\\s+/)[0],\n tool = self.model.get('tools').get(tool_id);\n\n self.trigger(\"tool_link_click\", e, tool);\n });\n\n return this;\n },\n\n handle_search_results: function() {\n var results = this.model.get('tool_search').get('results');\n if (results && results.length === 0) {\n $(\"#search-no-results\").show();\n }\n else {\n $(\"#search-no-results\").hide();\n }\n }\n});\n\n/**\n * View for working with a tool: setting parameters and inputs and executing the tool.\n */\nvar ToolFormView = Backbone.View.extend({\n className: 'toolForm',\n\n render: function() {\n this.$el.children().remove();\n this.$el.append( tool_form_template(this.model.toJSON()) );\n }\n});\n\n/**\n * Integrated tool menu + tool execution.\n */\nvar IntegratedToolMenuAndView = Backbone.View.extend({\n className: 'toolMenuAndView',\n\n initialize: function() {\n this.tool_panel_view = new ToolPanelView({collection: this.collection});\n this.tool_form_view = new ToolFormView();\n },\n\n render: function() {\n // Render and append tool panel.\n this.tool_panel_view.render();\n this.tool_panel_view.$el.css(\"float\", \"left\");\n this.$el.append(this.tool_panel_view.$el);\n\n // Append tool form view.\n this.tool_form_view.$el.hide();\n this.$el.append(this.tool_form_view.$el);\n\n // On tool link click, show tool.\n var self = this;\n this.tool_panel_view.on(\"tool_link_click\", function(e, tool) {\n // Prevents click from activating link:\n e.preventDefault();\n // Show tool that was clicked on:\n self.show_tool(tool);\n });\n },\n\n /**\n * Fetch and display tool.\n */\n show_tool: function(tool) {\n var self = this;\n tool.fetch().done( function() {\n self.tool_form_view.model = tool;\n self.tool_form_view.render();\n self.tool_form_view.$el.show();\n $('#left').width(\"650px\");\n });\n }\n});\n\n// Exports\nreturn {\n ToolParameter: ToolParameter,\n IntegerToolParameter: IntegerToolParameter,\n SelectToolParameter: SelectToolParameter,\n Tool: Tool,\n ToolCollection: ToolCollection,\n ToolSearch: ToolSearch,\n ToolPanel: ToolPanel,\n ToolPanelView: ToolPanelView,\n ToolFormView: ToolFormView\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/tool/tools.js\n ** module id = 10\n ** module chunks = 0\n **/","define(function(){\n\n/**\n * Stringifies a number adding commas for digit grouping as per North America.\n */\nfunction commatize( number ) {\n number += ''; // Convert to string\n var rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(number)) {\n number = number.replace(rgx, '$1' + ',' + '$2');\n }\n return number;\n}\n\n/**\n * Helper to determine if object is jQuery deferred.\n */\nvar is_deferred = function ( d ) {\n return ('promise' in d);\n};\n\n/**\n * Implementation of a server-state based deferred. Server is repeatedly polled, and when\n * condition is met, deferred is resolved.\n */\nvar ServerStateDeferred = Backbone.Model.extend({\n defaults: {\n ajax_settings: {},\n interval: 1000,\n success_fn: function(result) { return true; }\n },\n\n /**\n * Returns a deferred that resolves when success function returns true.\n */\n go: function() {\n var deferred = $.Deferred(),\n self = this,\n ajax_settings = self.get('ajax_settings'),\n success_fn = self.get('success_fn'),\n interval = self.get('interval'),\n _go = function() {\n $.ajax(ajax_settings).success(function(result) {\n if (success_fn(result)) {\n // Result is good, so resolve.\n deferred.resolve(result);\n }\n else {\n // Result not good, try again.\n setTimeout(_go, interval);\n }\n });\n };\n _go();\n return deferred;\n }\n});\n\n/**\n * Returns a random color in hexadecimal format that is sufficiently different from a single color\n * or set of colors.\n * @param colors a color or list of colors in the format '#RRGGBB'\n */\nvar get_random_color = function(colors) {\n // Default for colors is white.\n if (!colors) { colors = \"#ffffff\"; }\n\n // If needed, create list of colors.\n if ( typeof(colors) === \"string\" ) {\n colors = [ colors ];\n }\n\n // Convert colors to numbers.\n for (var i = 0; i < colors.length; i++) {\n colors[i] = parseInt( colors[i].slice(1), 16 );\n }\n\n // -- Perceived brightness and difference formulas are from\n // -- http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\n // Compute perceived color brightness (based on RGB-YIQ transformation):\n var brightness = function(r, g, b) {\n return ( (r * 299) + (g * 587) + (b * 114) ) / 1000;\n };\n\n // Compute color difference:\n var difference = function(r1, g1, b1, r2, g2, b2) {\n return ( Math.max(r1, r2) - Math.min(r1, r2) ) +\n ( Math.max(g1, g2) - Math.min(g1, g2) ) +\n ( Math.max(b1, b2) - Math.min(b1, b2) );\n };\n\n // Create new random color.\n var new_color, nr, ng, nb,\n other_color, or, og, ob,\n n_brightness, o_brightness,\n diff, ok = false,\n num_tries = 0;\n do {\n // New color is never white b/c random in [0,1)\n new_color = Math.round( Math.random() * 0xffffff );\n nr = ( new_color & 0xff0000 ) >> 16;\n ng = ( new_color & 0x00ff00 ) >> 8;\n nb = new_color & 0x0000ff;\n n_brightness = brightness(nr, ng, nb);\n ok = true;\n for (i = 0; i < colors.length; i++) {\n other_color = colors[i];\n or = ( other_color & 0xff0000 ) >> 16;\n og = ( other_color & 0x00ff00 ) >> 8;\n ob = other_color & 0x0000ff;\n o_brightness = brightness(or, og, ob);\n diff = difference(nr, ng, nb, or, og, ob);\n // These thresholds may need to be adjusted. Brightness difference range is 125;\n // color difference range is 500.\n if ( ( Math.abs(n_brightness - o_brightness) < 40 ) ||\n ( diff < 200 ) ) {\n ok = false;\n break;\n }\n }\n\n num_tries++\n; } while (!ok && num_tries <= 10 );\n\n // Add 0x1000000 to left pad number with 0s.\n return '#' + ( 0x1000000 + new_color ).toString(16).substr(1,6);\n};\n\nreturn {\n commatize: commatize,\n is_deferred: is_deferred,\n ServerStateDeferred : ServerStateDeferred,\n get_random_color : get_random_color\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/viz/trackster/util.js\n ** module id = 11\n ** module chunks = 0\n **/","// Additional dependencies: jQuery, underscore.\ndefine(['mvc/ui/ui-modal', 'mvc/ui/ui-frames', 'mvc/ui/icon-button'], function(Modal, Frames, mod_icon_btn) {\n\n/**\n * Dataset metedata.\n */\nvar DatasetMetadata = Backbone.Model.extend({});\n\n/**\n * A dataset. In Galaxy, datasets are associated with a history, so\n * this object is also known as a HistoryDatasetAssociation.\n */\nvar Dataset = Backbone.Model.extend({\n defaults: {\n id: '',\n type: '',\n name: '',\n hda_ldda: 'hda',\n metadata: null\n },\n\n initialize: function() {\n // Metadata can be passed in as a model or a set of attributes; if it's\n // already a model, there's no need to set metadata.\n if (!this.get('metadata')) {\n this._set_metadata();\n }\n\n // Update metadata on change.\n this.on('change', this._set_metadata, this);\n },\n\n _set_metadata: function() {\n var metadata = new DatasetMetadata();\n\n // Move metadata from dataset attributes to metadata object.\n _.each(_.keys(this.attributes), function(k) {\n if (k.indexOf('metadata_') === 0) {\n // Found metadata.\n var new_key = k.split('metadata_')[1];\n metadata.set(new_key, this.attributes[k]);\n delete this.attributes[k];\n }\n }, this);\n\n // Because this is an internal change, silence it.\n this.set('metadata', metadata, { 'silent': true });\n },\n\n /**\n * Returns dataset metadata for a given attribute.\n */\n get_metadata: function(attribute) {\n return this.attributes.metadata.get(attribute);\n },\n\n urlRoot: Galaxy.root + \"api/datasets\"\n});\n\n/**\n * A tabular dataset. This object extends dataset to provide incremental chunked data.\n */\nvar TabularDataset = Dataset.extend({\n defaults: _.extend({}, Dataset.prototype.defaults, {\n chunk_url: null,\n first_data_chunk: null,\n chunk_index: -1,\n at_eof: false\n }),\n\n initialize: function(options) {\n Dataset.prototype.initialize.call(this);\n\n // If first data chunk is available, next chunk is 1.\n this.attributes.chunk_index = (this.attributes.first_data_chunk ? 1 : 0);\n this.attributes.chunk_url = Galaxy.root + 'dataset/display?dataset_id=' + this.id;\n this.attributes.url_viz = Galaxy.root + 'visualization';\n },\n\n /**\n * Returns a jQuery Deferred object that resolves to the next data chunk or null if at EOF.\n */\n get_next_chunk: function() {\n // If already at end of file, do nothing.\n if (this.attributes.at_eof) {\n return null;\n }\n\n // Get next chunk.\n var self = this,\n next_chunk = $.Deferred();\n $.getJSON(this.attributes.chunk_url, {\n chunk: self.attributes.chunk_index++\n }).success(function(chunk) {\n var rval;\n if (chunk.ck_data !== '') {\n // Found chunk.\n rval = chunk;\n }\n else {\n // At EOF.\n self.attributes.at_eof = true;\n rval = null;\n }\n next_chunk.resolve(rval);\n });\n\n return next_chunk;\n }\n});\n\nvar DatasetCollection = Backbone.Collection.extend({\n model: Dataset\n});\n\n/**\n * Provides a base for table-based, dynamic view of a tabular dataset.\n * Do not instantiate directly; use either TopLevelTabularDatasetChunkedView\n * or EmbeddedTabularDatasetChunkedView.\n */\nvar TabularDatasetChunkedView = Backbone.View.extend({\n\n /**\n * Initialize view and, importantly, set a scroll element.\n */\n initialize: function(options) {\n // Row count for rendering.\n this.row_count = 0;\n this.loading_chunk = false;\n\n // load trackster button\n new TabularButtonTracksterView({\n model : options.model,\n $el : this.$el\n });\n },\n\n expand_to_container: function(){\n if (this.$el.height() < this.scroll_elt.height()){\n this.attempt_to_fetch();\n }\n },\n\n attempt_to_fetch: function( func ){\n var self = this;\n if ( !this.loading_chunk && this.scrolled_to_bottom() ) {\n this.loading_chunk = true;\n this.loading_indicator.show();\n $.when(self.model.get_next_chunk()).then(function(result) {\n if (result) {\n self._renderChunk(result);\n self.loading_chunk = false;\n }\n self.loading_indicator.hide();\n self.expand_to_container();\n });\n }\n },\n\n render: function() {\n // Add loading indicator.\n this.loading_indicator = $('
').attr('id', 'loading_indicator');\n this.$el.append(this.loading_indicator);\n\n // Add data table and header.\n var data_table = $('').attr({\n id: 'content_table',\n cellpadding: 0\n });\n this.$el.append(data_table);\n var column_names = this.model.get_metadata('column_names'),\n header_container = $('').appendTo(data_table),\n header_row = $('').appendTo(header_container);\n if (column_names) {\n header_row.append('');\n } else {\n for (var j = 1; j <= this.model.get_metadata('columns'); j++) {\n header_row.append('');\n }\n }\n\n // Render first chunk.\n var self = this,\n first_chunk = this.model.get('first_data_chunk');\n if (first_chunk) {\n // First chunk is bootstrapped, so render now.\n this._renderChunk(first_chunk);\n }\n else {\n // No bootstrapping, so get first chunk and then render.\n $.when(self.model.get_next_chunk()).then(function(result) {\n self._renderChunk(result);\n });\n }\n\n // -- Show new chunks during scrolling. --\n\n // Set up chunk loading when scrolling using the scrolling element.\n this.scroll_elt.scroll(function(){\n self.attempt_to_fetch();\n });\n },\n\n /**\n * Returns true if user has scrolled to the bottom of the view.\n */\n scrolled_to_bottom: function() {\n return false;\n },\n\n // -- Helper functions. --\n\n _renderCell: function(cell_contents, index, colspan) {\n var $cell = $(''),\n num_columns = this.model.get_metadata('columns');\n\n if (this.row_count % 2 !== 0) {\n row.addClass('dark_row');\n }\n\n if (cells.length === num_columns) {\n _.each(cells, function(cell_contents, index) {\n row.append(this._renderCell(cell_contents, index));\n }, this);\n }\n else if (cells.length > num_columns) {\n // SAM file or like format with optional metadata included.\n _.each(cells.slice(0, num_columns - 1), function(cell_contents, index) {\n row.append(this._renderCell(cell_contents, index));\n }, this);\n row.append(this._renderCell(cells.slice(num_columns - 1).join('\\t'), num_columns - 1));\n }\n else if (num_columns > 5 && cells.length === num_columns - 1 ) {\n // SAM file or like format with optional metadata missing.\n _.each(cells, function(cell_contents, index) {\n row.append(this._renderCell(cell_contents, index));\n }, this);\n row.append($('');\n wrapper.append($el);\n this.row.append(wrapper);\n },\n \n // header\n appendHeader: function() {\n // append header row\n this.$thead.append(this.row);\n\n // row\n this.row = $('');\n },\n \n // add row cell\n add: function($el, width, align) {\n var wrapper = $('');\n if (width) {\n wrapper.css('width', width);\n }\n if (align) {\n wrapper.css('text-align', align);\n }\n wrapper.append($el);\n this.row.append(wrapper);\n },\n \n // append\n append: function(id, fade) {\n this._commit(id, fade, false);\n },\n \n // prepend\n prepend: function(id, fade) {\n this._commit(id, fade, true);\n },\n \n // get element\n get: function(id) {\n return this.$el.find('#' + id);\n },\n \n // delete\n del: function(id) {\n var item = this.$tbody.find('#' + id);\n if (item.length > 0) {\n item.remove();\n this.row_count--;\n this._refresh();\n }\n },\n\n // delete all\n delAll: function() {\n this.$tbody.empty();\n this.row_count = 0;\n this._refresh();\n },\n \n // value\n value: function(new_value) {\n // get current id/value\n this.before = this.$tbody.find('.current').attr('id');\n \n // check if new_value is defined\n if (new_value !== undefined) {\n this.$tbody.find('tr').removeClass('current');\n if (new_value) {\n this.$tbody.find('#' + new_value).addClass('current');\n }\n }\n \n // get current id/value\n var after = this.$tbody.find('.current').attr('id');\n if(after === undefined) {\n return null;\n } else {\n // fire onchange\n if (after != this.before && this.options.onchange) {\n this.options.onchange(new_value);\n }\n \n // return current value\n return after;\n }\n },\n \n // size\n size: function() {\n return this.$tbody.find('tr').length;\n },\n \n // commit\n _commit: function(id, fade, prepend) {\n // remove previous item with same id\n this.del(id);\n \n // add\n this.row.attr('id', id);\n \n // add row\n if (prepend) {\n this.$tbody.prepend(this.row);\n } else {\n this.$tbody.append(this.row);\n }\n \n // fade mode\n if (fade) {\n this.row.hide();\n this.row.fadeIn();\n }\n \n // row\n this.row = this._row();\n \n // row count\n this.row_count++;\n this._refresh();\n },\n \n // create new row\n _row: function() {\n return $('');\n },\n \n // onclick\n _onclick: function(e) {\n // get values\n var old_value = this.value();\n var new_value = $(e.target).closest('tr').attr('id');\n if (new_value != ''){\n // check equality\n if (new_value && old_value != new_value) {\n if (this.options.onconfirm) {\n this.options.onconfirm(new_value);\n } else {\n this.value(new_value);\n }\n }\n }\n },\n\n // ondblclick\n _ondblclick: function(e) {\n var value = this.value();\n if (value && this.options.ondblclick) {\n this.options.ondblclick(value);\n }\n },\n \n // refresh\n _refresh: function() {\n if (this.row_count == 0) {\n this.$tmessage.show();\n } else {\n this.$tmessage.hide();\n }\n },\n \n // load html template\n _template: function(options) {\n return '
' +\n '
' + column_names.join('') + '' + j + '').text(cell_contents);\n var column_types = this.model.get_metadata('column_types');\n if (colspan !== undefined) {\n $cell.attr('colspan', colspan).addClass('stringalign');\n } else if (column_types) {\n if (index < column_types.length) {\n if (column_types[index] === 'str' || column_types[index] === 'list') {\n /* Left align all str columns, right align the rest */\n $cell.addClass('stringalign');\n }\n }\n }\n return $cell;\n },\n\n _renderRow: function(line) {\n // Check length of cells to ensure this is a complete row.\n var cells = line.split('\\t'),\n row = $('
'));\n }\n else {\n // Comment line, just return the one cell.\n row.append(this._renderCell(line, 0, num_columns));\n }\n\n this.row_count++;\n return row;\n },\n\n _renderChunk: function(chunk) {\n var data_table = this.$el.find('table');\n _.each(chunk.ck_data.split('\\n'), function(line, index) {\n if (line !== ''){\n data_table.append(this._renderRow(line));\n }\n }, this);\n }\n});\n\n/**\n * Tabular view that is placed at the top level of page. Scrolling occurs\n * view top-level elements outside of view.\n */\nvar TopLevelTabularDatasetChunkedView = TabularDatasetChunkedView.extend({\n\n initialize: function(options) {\n TabularDatasetChunkedView.prototype.initialize.call(this, options);\n\n // Scrolling happens in top-level elements.\n scroll_elt = _.find(this.$el.parents(), function(p) {\n return $(p).css('overflow') === 'auto';\n });\n\n // If no scrolling element found, use window.\n if (!scroll_elt) { scroll_elt = window; }\n\n // Wrap scrolling element for easy access.\n this.scroll_elt = $(scroll_elt);\n },\n\n /**\n * Returns true if user has scrolled to the bottom of the view.\n */\n scrolled_to_bottom: function() {\n return (this.$el.height() - this.scroll_elt.scrollTop() - this.scroll_elt.height() <= 0);\n }\n\n});\n\n/**\n * Tabular view tnat is embedded in a page. Scrolling occurs in view's el.\n */\nvar EmbeddedTabularDatasetChunkedView = TabularDatasetChunkedView.extend({\n\n initialize: function(options) {\n TabularDatasetChunkedView.prototype.initialize.call(this, options);\n\n // Because view is embedded, set up div to do scrolling.\n this.scroll_elt = this.$el.css({\n position: 'relative',\n overflow: 'scroll',\n height: options.height || '500px'\n });\n },\n\n /**\n * Returns true if user has scrolled to the bottom of the view.\n */\n scrolled_to_bottom: function() {\n return this.$el.scrollTop() + this.$el.innerHeight() >= this.el.scrollHeight;\n }\n\n});\n\n// button for trackster visualization\nvar TabularButtonTracksterView = Backbone.View.extend({\n\n // gene region columns\n col: {\n chrom : null,\n start : null,\n end : null\n },\n\n // url for trackster\n url_viz : null,\n\n // dataset id\n dataset_id : null,\n\n // database key\n genome_build: null,\n\n // data type\n file_ext : null,\n\n // backbone initialize\n initialize: function (options) {\n // check if environment is available\n var Galaxy = parent.Galaxy;\n\n // link galaxy modal or create one\n if (Galaxy && Galaxy.modal) {\n this.modal = Galaxy.modal;\n }\n\n // link galaxy frames\n if (Galaxy && Galaxy.frame) {\n this.frame = Galaxy.frame;\n }\n\n // check\n if (!this.modal || !this.frame) {\n return;\n }\n\n // model/metadata\n var model = options.model;\n var metadata = model.get('metadata');\n\n // check for datatype\n if (!model.get('file_ext')) {\n return;\n }\n\n // get data type\n this.file_ext = model.get('file_ext');\n\n // check for bed-file format\n if (this.file_ext == 'bed')\n {\n // verify that metadata exists\n if (metadata.get('chromCol') && metadata.get('startCol') && metadata.get('endCol'))\n {\n // read in columns\n this.col.chrom = metadata.get('chromCol') - 1;\n this.col.start = metadata.get('startCol') - 1;\n this.col.end = metadata.get('endCol') - 1;\n } else {\n console.log('TabularButtonTrackster : Bed-file metadata incomplete.');\n return;\n }\n }\n\n // check for vcf-file format\n if (this.file_ext == 'vcf')\n {\n // search array\n function search (str, array) {\n for (var j = 0; j < array.length; j++)\n if (array[j].match(str)) return j;\n return -1;\n };\n\n // load\n this.col.chrom = search('Chrom', metadata.get('column_names'));\n this.col.start = search('Pos', metadata.get('column_names'));\n this.col.end = null;\n\n // verify that metadata exists\n if (this.col.chrom == -1 || this.col.start == -1) {\n console.log('TabularButtonTrackster : VCF-file metadata incomplete.');\n return;\n }\n }\n\n // check\n if(this.col.chrom === undefined) {\n return;\n }\n\n // get dataset id\n if (model.id) {\n this.dataset_id = model.id;\n } else {\n console.log('TabularButtonTrackster : Dataset identification is missing.');\n return;\n }\n\n // get url\n if (model.get('url_viz')) {\n this.url_viz = model.get('url_viz');\n } else {\n console.log('TabularButtonTrackster : Url for visualization controller is missing.');\n return;\n }\n\n // get genome_build / database key\n if (model.get('genome_build')) {\n this.genome_build = model.get('genome_build');\n }\n\n // create the icon\n var btn_viz = new mod_icon_btn.IconButtonView({\n model : new mod_icon_btn.IconButton({\n title : 'Visualize',\n icon_class : 'chart_curve',\n id : 'btn_viz'\n })\n });\n\n // set element\n this.setElement(options.$el);\n\n // add to element\n this.$el.append(btn_viz.render().$el);\n\n // hide the button\n this.hide();\n },\n\n // backbone events\n events:\n {\n 'mouseover tr' : 'show',\n 'mouseleave' : 'hide'\n },\n\n // show button\n show: function (e) {\n // is numeric\n function is_numeric(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n };\n\n // check\n if(this.col.chrom === null)\n return;\n\n // get selected data line\n var row = $(e.target).parent();\n\n // verify that location has been found\n var chrom = row.children().eq(this.col.chrom).html();\n var start = row.children().eq(this.col.start).html();\n\n // end is optional\n var end = this.col.end ? row.children().eq(this.col.end).html() : start;\n\n // double check location\n if (!chrom.match(\"^#\") && chrom !== \"\" && is_numeric(start)) {\n\n // get target gene region\n var btn_viz_pars = {\n dataset_id : this.dataset_id,\n gene_region : chrom + \":\" + start + \"-\" + end\n };\n\n // get button position\n var offset = row.offset();\n var left = offset.left - 10;\n var top = offset.top - $(window).scrollTop() + 3;\n\n // update css\n $('#btn_viz').css({'position': 'fixed', 'top': top + 'px', 'left': left + 'px'});\n $('#btn_viz').off('click');\n $('#btn_viz').click(this.create_trackster_action(this.url_viz, btn_viz_pars, this.genome_build));\n\n // show the button\n $('#btn_viz').show();\n } else {\n // hide the button\n $('#btn_viz').hide();\n }\n },\n\n // hide button\n hide: function () {\n this.$el.find('#btn_viz').hide();\n },\n\n // create action\n create_trackster_action : function (vis_url, dataset_params, dbkey) {\n // link this\n var self = this;\n\n // create function\n return function() {\n var listTracksParams = {};\n if (dbkey) {\n listTracksParams[ 'f-dbkey' ] = dbkey;\n }\n $.ajax({\n url: vis_url + '/list_tracks?' + $.param( listTracksParams ),\n dataType: 'html',\n error: function() {\n // show error message\n self.modal.show({\n title : 'Something went wrong!',\n body : 'Unfortunately we could not add this dataset to the track browser. Please try again or contact us.',\n buttons : {\n 'Cancel': function(){\n self.modal.hide();\n }\n }\n });\n },\n success: function(table_html) {\n self.modal.show({\n title : 'View Data in a New or Saved Visualization',\n buttons :{\n 'Cancel': function(){\n self.modal.hide();\n },\n 'View in saved visualization': function(){\n // show modal with saved visualizations\n self.modal.show(\n {\n title : 'Add Data to Saved Visualization',\n body : table_html,\n buttons : {\n 'Cancel': function(){\n self.modal.hide();\n },\n 'Add to visualization': function(){\n // hide\n self.modal.hide();\n\n // search selected fields\n self.modal.$el.find('input[name=id]:checked').each(function(){\n // get visualization id\n var vis_id = $(this).val();\n dataset_params.id = vis_id;\n\n // add widget\n self.frame.add({\n title : 'Trackster',\n type : 'url',\n content : vis_url + '/trackster?' + $.param(dataset_params)\n });\n });\n }\n }\n });\n },\n 'View in new visualization': function(){\n // hide\n self.modal.hide();\n\n // add widget\n self.frame.add({\n title : 'Trackster',\n type : 'url',\n content : vis_url + '/trackster?' + $.param(dataset_params)\n });\n }\n }\n });\n }\n });\n return false;\n };\n }\n});\n\n// -- Utility functions. --\n\n/**\n * Create a model, attach it to a view, render view, and attach it to a parent element.\n */\nvar createModelAndView = function(model, view, model_config, parent_elt) {\n // Create model, view.\n var a_view = new view({\n model: new model(model_config)\n });\n\n // Render view and add to parent element.\n a_view.render();\n if (parent_elt) {\n parent_elt.append(a_view.$el);\n }\n\n return a_view;\n};\n\n/**\n * Create a tabular dataset chunked view (and requisite tabular dataset model)\n * and appends to parent_elt.\n */\nvar createTabularDatasetChunkedView = function(options) {\n // If no model, create and set model from dataset config.\n if (!options.model) {\n options.model = new TabularDataset(options.dataset_config);\n }\n\n var parent_elt = options.parent_elt;\n var embedded = options.embedded;\n\n // Clean up options so that only needed options are passed to view.\n delete options.embedded;\n delete options.parent_elt;\n delete options.dataset_config;\n\n // Create and set up view.\n var view = (embedded ? new EmbeddedTabularDatasetChunkedView(options) :\n new TopLevelTabularDatasetChunkedView(options));\n view.render();\n\n if (parent_elt) {\n parent_elt.append(view.$el);\n // If we're sticking this in another element, once it's appended check\n // to make sure we've filled enough space.\n // Without this, the scroll elements don't work.\n view.expand_to_container();\n }\n\n return view;\n};\n\nreturn {\n Dataset: Dataset,\n TabularDataset: TabularDataset,\n DatasetCollection: DatasetCollection,\n TabularDatasetChunkedView: TabularDatasetChunkedView,\n createTabularDatasetChunkedView: createTabularDatasetChunkedView\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/dataset/data.js\n ** module id = 12\n ** module chunks = 0\n **/","define([], function() {\n\nvar View = Backbone.View.extend({\n\n // base element\n elMain: 'body',\n \n // defaults options\n optionsDefault: {\n title : 'ui-modal',\n body : '',\n backdrop : true,\n height : null,\n width : null,\n closing_events : false,\n closing_callback : null,\n title_separator : true\n },\n\n // button list\n buttonList: {},\n\n // initialize\n initialize : function(options) {\n if (options){\n this._create(options);\n }\n },\n \n // adds and displays a new frame/window\n show: function(options) {\n // create\n this.initialize(options);\n \n // fix height\n if (this.options.height){\n this.$body.css('height', this.options.height);\n this.$body.css('overflow', 'hidden');\n } else {\n this.$body.css('max-height', $(window).height() / 2);\n }\n\n // fix width\n if (this.options.width) {\n this.$dialog.css('width', this.options.width);\n }\n\n // show\n if (this.visible) {\n this.$el.show();\n } else {\n this.$el.fadeIn('fast');\n }\n\n // set visible flag\n this.visible = true;\n },\n\n // hide\n hide: function() {\n this.visible = false;\n this.$el.fadeOut('fast');\n if (this.options.closing_callback){\n this.options.closing_callback();\n }\n },\n\n // enable buttons\n enableButton: function(name) {\n var button_id = this.buttonList[name];\n this.$buttons.find('#' + button_id).prop('disabled', false);\n },\n\n // disable buttons\n disableButton: function(name) {\n var button_id = this.buttonList[name];\n this.$buttons.find('#' + button_id).prop('disabled', true);\n },\n \n // show buttons\n showButton: function(name) {\n var button_id = this.buttonList[name];\n this.$buttons.find('#' + button_id).show();\n },\n\n // hide buttons\n hideButton: function(name) {\n var button_id = this.buttonList[name];\n this.$buttons.find('#' + button_id).hide();\n },\n \n // get button\n getButton: function(name) {\n var button_id = this.buttonList[name];\n return this.$buttons.find('#' + button_id);\n },\n \n // returns scroll top for body element\n scrollTop: function() {\n return this.$body.scrollTop();\n },\n\n // create\n _create: function(options) {\n // link this\n var self = this;\n \n // configure options\n this.options = _.defaults(options, this.optionsDefault);\n \n // check for progress bar request\n if (this.options.body == 'progress'){\n this.options.body = $('
');\n }\n \n // remove former element\n if (this.$el) {\n // remove element\n this.$el.remove();\n \n // remove escape event\n $(document).off('keyup.ui-modal');\n }\n \n // create new element\n this.setElement(this._template(this.options.title));\n \n // link elements\n this.$dialog = (this.$el).find('.modal-dialog');\n this.$body = (this.$el).find('.modal-body');\n this.$footer = (this.$el).find('.modal-footer');\n this.$buttons = (this.$el).find('.buttons');\n this.$backdrop = (this.$el).find('.modal-backdrop');\n \n // append body\n this.$body.html(this.options.body);\n \n // configure background\n if (!this.options.backdrop){\n this.$backdrop.removeClass('in');\n }\n \n // append buttons\n if (this.options.buttons) {\n // reset button list\n this.buttonList = {};\n var counter = 0;\n $.each(this.options.buttons, function(name, value) {\n var button_id = 'button-' + counter++;\n self.$buttons.append($('').text(name).click(value)).append(\" \");\n self.buttonList[name] = button_id;\n });\n } else {\n // hide footer\n this.$footer.hide();\n }\n \n // append to main element\n $(this.elMain).append($(this.el));\n\n // bind additional closing events\n if (this.options.closing_events) {\n // bind the ESC key to hide() function\n $(document).on('keyup.ui-modal', function(e) {\n if (e.keyCode == 27) {\n self.hide();\n }\n });\n \n // hide modal if background is clicked\n this.$el.find('.modal-backdrop').on('click', function() { self.hide(); });\n }\n\n // removes the default separator line\n if (!this.options.title_separator) {\n this.$('.modal-header').css({ 'border': 'none', 'padding-bottom': '0px' });\n }\n },\n \n // fill regular modal template\n _template: function(title) {\n return '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '' +\n '

' + title + '

' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '' +\n '
';\n }\n});\n\nreturn {\n View : View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-modal.js\n ** module id = 13\n ** module chunks = 0\n **/","// dependencies\ndefine([], function() {\n\n// frame manager\nvar View = Backbone.View.extend({\n // defaults inputs\n options: {\n // default frame size\n frame: {\n cols : 6,\n rows : 3\n },\n\n // maximum number of rows\n rows: 1000,\n\n // cell size in px\n cell: 130,\n\n // margin\n margin: 5,\n\n // scroll speed\n scroll: 5,\n\n // minimum top\n top_min: 40,\n\n // maximum number of frames\n frame_max: 9,\n\n // visible\n visible: true,\n\n // onchange\n onchange: null\n },\n\n // number of columns\n cols: 0,\n\n // scroll/element top\n top: 0,\n\n // viewport scrolling state\n top_max: 0,\n\n // frame z-index\n frame_z : 0,\n\n // frame counter\n frame_counter: 0,\n\n // frame counter\n frame_counter_id: 0,\n\n // frame list\n frame_list: [],\n\n // frame shadow\n frame_shadow: null,\n\n // frame panel visible\n visible: null,\n\n // initialize\n initialize : function(options) {\n // add to masthead menu\n var self = this;\n\n // read in defaults\n if (options) {\n this.options = _.defaults(options, this.options);\n }\n\n // set visibility\n this.visible = this.options.visible;\n\n // initialize top\n this.top = this.top_max = this.options.top_min;\n\n // create\n this.setElement(this._template());\n\n // load background\n $(this.el).append(this._templateBackground());\n\n // load menu buttons\n $(this.el).append(this._templateMenu());\n\n // load to main frame\n $(this.el_main).append($(this.el));\n\n //\n // define shadow frame\n //\n var id_shadow = '#frame-shadow';\n\n // add shadow template\n $(this.el).append(this._templateShadow(id_shadow.substring(1)));\n\n // initialize frame\n this.frame_shadow = {\n id : id_shadow,\n screen_location : {},\n grid_location : {},\n grid_rank : null,\n grid_lock : false\n };\n\n // initialize size\n this._frameResize(this.frame_shadow, {width: 0, height: 0});\n\n // add shadow to frame list\n this.frame_list[id_shadow] = this.frame_shadow;\n\n // initialize panel\n this._panelRefresh();\n\n // apply visibility\n if (!this.visible) {\n this.hide();\n } else {\n this.show();\n }\n\n // catch window resize event\n var self = this;\n $(window).resize(function () {\n if (self.visible)\n self._panelRefresh();\n });\n },\n\n /**\n * Adds and displays a new frame.\n *\n * options:\n * type: 'url' or 'other' ; if 'url', 'content' is treated as a URL and loaded into an iframe; \n * if 'other', content is treated as a function or raw HTML. content function is passed a single \n * argument that is the frame's content DOM element\n * content: the content to be loaded into the frame.\n */\n add: function(options) {\n // frame default options\n var frameOptions = {\n title: '',\n content: null,\n target: '',\n type: null\n };\n\n // read in defaults\n if (options) {\n options = _.defaults(options, frameOptions);\n } else {\n options = frameOptions;\n }\n\n // check for content\n if(!options.content) {\n return;\n }\n\n // check for number of frames\n if (this.frame_counter >= this.options.frame_max) {\n alert(\"You have reached the maximum number of allowed frames (\" + this.options.frame_max + \").\"); \n return;\n }\n\n // generate frame identifier\n var frame_id = '#frame-' + (this.frame_counter_id++);\n\n // check if frame exists\n if ($(frame_id).length !== 0) {\n alert(\"This frame already exists. This page might contain multiple frame managers.\");\n return;\n }\n\n // reset top\n this.top = this.options.top_min;\n\n // append\n var $frame_el = null;\n if (options.type === 'url') {\n $frame_el = $(this._templateFrameUrl(frame_id.substring(1), options.title, options.content));\n } else if (options.type === 'other') {\n $frame_el = $(this._templateFrame(frame_id.substring(1), options.title));\n\n // Load content into frame.\n var content_elt = $frame_el.find('.f-content');\n if (_.isFunction(options.content)) {\n options.content(content_elt);\n }\n else {\n content_elt.append(options.content);\n }\n }\n $(this.el).append($frame_el);\n\n // construct a new frame\n var frame = {\n id : frame_id,\n screen_location : {},\n grid_location : {},\n grid_rank : null,\n grid_lock : false\n };\n\n // set dimensions\n options.width = this._toPixelCoord('width', this.options.frame.cols);\n options.height = this._toPixelCoord('height', this.options.frame.rows);\n\n // default z-index\n this.frame_z = parseInt($(frame.id).css('z-index'));\n\n // add to frame list\n this.frame_list[frame_id] = frame;\n\n // increase frame counter\n this.frame_counter++;\n\n // resize\n this._frameResize(frame, {width: options.width, height: options.height});\n\n // place frame\n this._frameInsert(frame, {top: 0, left: 0}, true);\n\n // show frames if hidden\n if (!this.visible) {\n this.show();\n }\n },\n\n // show panel\n show: function() {\n // show\n this.visible = true;\n\n // show\n this.$el.find(\".frame\").fadeIn('fast');\n\n // hide shadow\n this.$el.find(this.frame_shadow.id).hide();\n\n // show background\n this.$el.find(\".frame-background\").show();\n\n // show panel\n this._panelRefresh();\n\n // refresh\n this._menuRefresh();\n },\n\n // hide panel\n hide: function() {\n // make sure that no event is currently processing\n if (this.event.type !== null)\n return;\n\n // hide\n this.visible = false;\n\n // hide \n this.$el.find(\".frame\").fadeOut('fast');\n\n // hide background\n this.$el.find(\".frame-background\").hide();\n\n // hide menu\n this.$el.find(\".frame-menu\").hide();\n\n // refresh\n this._menuRefresh();\n },\n\n // length\n length: function() {\n return this.frame_counter;\n },\n\n // set onchange event\n setOnChange: function(callback) {\n this.options.onchange = callback;\n },\n\n /*\n EVENT HANDLING\n */\n\n // event\n event: {\n type : null,\n target : null,\n xy : null\n },\n\n // events\n events: {\n // global frame events\n 'mousemove' : '_eventFrameMouseMove',\n 'mouseup' : '_eventFrameMouseUp',\n 'mouseleave' : '_eventFrameMouseUp',\n 'mousewheel' : '_eventPanelScroll',\n 'DOMMouseScroll' : '_eventPanelScroll',\n\n // events fixed to elements\n 'mousedown .frame' : '_eventFrameMouseDown',\n 'mousedown .frame-background' : '_eventHide',\n 'mousedown .frame-scroll-up' : '_eventPanelScroll_up',\n 'mousedown .frame-scroll-down' : '_eventPanelScroll_down',\n 'mousedown .f-close' : '_eventFrameClose',\n 'mousedown .f-pin' : '_eventFrameLock'\n },\n\n // drag start\n _eventFrameMouseDown: function (e) {\n // skip if event is already active\n if (this.event.type !== null) {\n return;\n }\n\n // check for drag event\n if ($(e.target).hasClass('f-header') || $(e.target).hasClass('f-title')) {\n this.event.type = 'drag';\n }\n\n // check for resize event\n if ($(e.target).hasClass('f-resize')) {\n this.event.type = 'resize';\n }\n\n // skip if no event has to be handled\n if (this.event.type === null) {\n return;\n }\n\n // prevent\n e.preventDefault();\n\n // identify frame\n this.event.target = this._frameIdentify(e.target);\n\n // check if frame is locked\n if (this.event.target.grid_lock) {\n this.event.type = null;\n return;\n }\n\n // backup event details\n this.event.xy = {\n x: e.originalEvent.pageX,\n y: e.originalEvent.pageY\n };\n\n // prepare drag/resize\n this._frameDragStart(this.event.target);\n },\n\n // mouse move event\n _eventFrameMouseMove: function (e) {\n // check\n if (this.event.type != 'drag' && this.event.type != 'resize') {\n return;\n }\n\n // current position\n var event_xy_new = {\n x : e.originalEvent.pageX,\n y : e.originalEvent.pageY\n };\n\n // position delta\n var event_xy_delta = {\n x : event_xy_new.x - this.event.xy.x,\n y : event_xy_new.y - this.event.xy.y\n };\n\n // update\n this.event.xy = event_xy_new;\n\n // object position / size\n var p = this._frameScreen (this.event.target);\n\n // resize event\n if (this.event.type == 'resize') {\n // update\n p.width += event_xy_delta.x;\n p.height += event_xy_delta.y;\n\n // check size\n var min_dim = this.options.cell - this.options.margin - 1;\n p.width = Math.max(p.width, min_dim);\n p.height = Math.max(p.height, min_dim);\n\n // apply resize to frame\n this._frameResize(this.event.target, p);\n\n // break down to grid coordinates\n p.width = this._toGridCoord('width', p.width) + 1;\n p.height = this._toGridCoord('height', p.height) + 1;\n\n // transfer back to pixels\n p.width = this._toPixelCoord('width', p.width);\n p.height = this._toPixelCoord('height', p.height);\n\n // apply\n this._frameResize(this.frame_shadow, p);\n\n // fix position\n this._frameInsert(this.frame_shadow, {\n top : this._toGridCoord('top', p.top),\n left : this._toGridCoord('left', p.left)\n });\n }\n\n // drag event\n if (this.event.type == 'drag') {\n // update\n p.left += event_xy_delta.x;\n p.top += event_xy_delta.y;\n\n // apply\n this._frameOffset(this.event.target, p);\n\n // get location of shadow\n var l = {\n top : this._toGridCoord('top', p.top),\n left : this._toGridCoord('left', p.left)\n };\n\n // increase priority of current frame\n if (l.left !== 0) {\n l.left++;\n }\n\n // fix position\n this._frameInsert(this.frame_shadow, l);\n }\n },\n\n // mouse up\n _eventFrameMouseUp: function (e) {\n // check\n if (this.event.type != 'drag' && this.event.type != 'resize') {\n return;\n }\n\n // stop\n this._frameDragStop(this.event.target);\n\n // reset event\n this.event.type = null;\n },\n\n // drag start\n _eventFrameClose: function (e) {\n // check\n if (this.event.type !== null) {\n return;\n }\n\n // prevent\n e.preventDefault();\n\n // get frame\n var frame = this._frameIdentify(e.target);\n var self = this;\n\n // fade out\n $(frame.id).fadeOut('fast', function() {\n // remove element\n $(frame.id).remove();\n\n // remove from dictionary\n delete self.frame_list[frame.id];\n\n // reduce frame counter\n self.frame_counter--;\n\n // reload\n self._panelRefresh(true);\n\n // refresh scroll state once all animations completed\n self._panelAnimationComplete();\n\n // hide if no frames left\n if (self.visible && self.frame_counter == 0)\n self.hide();\n });\n },\n\n // drag start\n _eventFrameLock: function (e) {\n // check\n if (this.event.type !== null) {\n return;\n }\n\n // prevent\n e.preventDefault();\n\n // get frame\n var frame = this._frameIdentify(e.target);\n\n // check\n if (frame.grid_lock) {\n // unlock\n frame.grid_lock = false;\n\n // remove class\n $(frame.id).find('.f-pin').removeClass('toggle');\n $(frame.id).find('.f-header').removeClass('f-not-allowed');\n $(frame.id).find('.f-title').removeClass('f-not-allowed');\n $(frame.id).find('.f-resize').show();\n $(frame.id).find('.f-close').show();\n } else {\n // lock\n frame.grid_lock = true;\n\n // add class\n $(frame.id).find('.f-pin').addClass('toggle');\n $(frame.id).find('.f-header').addClass('f-not-allowed');\n $(frame.id).find('.f-title').addClass('f-not-allowed');\n $(frame.id).find('.f-resize').hide();\n $(frame.id).find('.f-close').hide();\n }\n },\n\n // show/hide panel\n _eventHide: function (e) {\n // check\n if (this.event.type !== null) {\n return;\n }\n\n // hide panel\n this.hide();\n },\n\n /**\n * Fired when scrolling occurs on panel.\n */\n _eventPanelScroll: function(e) {\n // check\n if (this.event.type !== null || !this.visible) {\n return;\n }\n\n // Stop propagation if scrolling is happening inside a frame.\n // TODO: could propagate scrolling if at top/bottom of frame.\n var frames = $(e.srcElement).parents('.frame')\n if (frames.length !== 0) {\n e.stopPropagation();\n return;\n }\n\n // prevent\n e.preventDefault();\n\n // get wheel delta\n var delta = e.originalEvent.detail ? e.originalEvent.detail : e.originalEvent.wheelDelta / -3;\n\n // refresh panel\n this._panelScroll(delta);\n },\n\n // scroll up\n _eventPanelScroll_up: function(e) {\n // check\n if (this.event.type !== null)\n return;\n \n // prevent\n e.preventDefault();\n\n // scroll up\n this._panelScroll(-this.options.scroll);\n },\n\n // scroll down\n _eventPanelScroll_down: function(e) {\n // check\n if (this.event.type !== null)\n return;\n\n // prevent\n e.preventDefault();\n\n // scroll down\n this._panelScroll(this.options.scroll);\n },\n\n /*\n FRAME EVENTS SUPPORT\n */\n\n // identify\n _frameIdentify: function(target) {\n return this.frame_list['#' + $(target).closest('.frame').attr('id')];\n },\n\n // drag start\n _frameDragStart : function (frame) {\n // set focus\n this._frameFocus(frame, true);\n\n // get current dimensions\n var p = this._frameScreen (frame);\n\n // initialize shadow\n this._frameResize(this.frame_shadow, p);\n this._frameGrid(this.frame_shadow, frame.grid_location);\n\n // reset location\n frame.grid_location = null;\n\n // show shadow\n $(this.frame_shadow.id).show();\n\n // load frame cover\n $('.f-cover').show();\n },\n\n // drag stop\n _frameDragStop : function (frame) {\n // remove focus\n this._frameFocus(frame, false);\n\n // get new dimensions\n var p = this._frameScreen(this.frame_shadow);\n\n // update frame\n this._frameResize(frame, p);\n this._frameGrid(frame, this.frame_shadow.grid_location, true);\n\n // reset location of shadow\n this.frame_shadow.grid_location = null;\n\n // hide shadow\n $(this.frame_shadow.id).hide();\n\n // hide frame cover\n $('.f-cover').hide();\n\n // refresh scroll state once all animations completed\n this._panelAnimationComplete();\n },\n\n /*\n GRID/PIXEL CONVERTER\n */\n\n // converts a pixel coordinate to grids\n _toGridCoord: function (type, px) {\n var sign = (type == 'width' || type == 'height') ? 1 : -1;\n if (type == 'top') px -= this.top;\n return parseInt((px + sign * this.options.margin) / this.options.cell, 10);\n },\n \n // converts a grid coordinate to pixels\n _toPixelCoord: function (type, g) {\n var sign = (type == 'width' || type == 'height') ? 1 : -1;\n var px = (g * this.options.cell) - sign * this.options.margin;\n if (type == 'top') px += this.top;\n return px;\n },\n\n // get grid coordinates\n _toGrid: function (px) {\n return {\n top : this._toGridCoord('top', px.top),\n left : this._toGridCoord('left', px.left),\n width : this._toGridCoord('width', px.width),\n height : this._toGridCoord('height', px.height)\n };\n },\n\n // get pixel coordinates\n _toPixel: function(g) {\n return {\n top : this._toPixelCoord('top', g.top),\n left : this._toPixelCoord('left', g.left),\n width : this._toPixelCoord('width', g.width),\n height : this._toPixelCoord('height', g.height)\n };\n },\n\n /* \n COLLISION DETECTION\n */\n\n // check collision\n _isCollision: function(g) {\n // is collision pair\n function is_collision_pair (a, b) {\n return !(a.left > b.left + b.width - 1 || a.left + a.width - 1 < b.left ||\n a.top > b.top + b.height - 1 || a.top + a.height - 1 < b.top);\n }\n\n // search\n for (var i in this.frame_list) {\n // get frame\n var frame = this.frame_list[i];\n\n // skip\n if (frame.grid_location === null)\n continue;\n\n // check if g collides with frame\n if (is_collision_pair (g, frame.grid_location))\n return true;\n }\n\n // return\n return false;\n },\n\n // location/grid rank\n _locationRank: function(loc) {\n return (loc.top * this.cols) + loc.left;\n },\n\n /*\n ONSCREEN MENU\n */\n\n // update frame counter\n _menuRefresh: function() {\n // scroll up possible?\n if (this.visible) {\n if (this.top == this.options.top_min)\n $(\".frame-scroll-up\").hide();\n else\n $(\".frame-scroll-up\").show();\n\n // scroll down possible?\n if (this.top == this.top_max)\n $(\".frame-scroll-down\").hide();\n else\n $(\".frame-scroll-down\").show();\n }\n\n // trigger onchange\n if (this.options.onchange) {\n this.options.onchange();\n }\n },\n\n /*\n PANEL/WINDOW FUNCTIONS\n */\n\n // panel on animation complete / frames not moving\n _panelAnimationComplete: function() {\n var self = this;\n $(\".frame\").promise().done(function() {self._panelScroll(0, true)});\n },\n\n // refresh panel\n _panelRefresh: function(animate) {\n // get current size\n this.cols = parseInt($(window).width() / this.options.cell, 10) + 1;\n\n // recalculate frame positions\n this._frameInsert(null, null, animate);\n },\n\n // update scroll\n _panelScroll: function(delta, animate) {\n // new top value\n var top_new = this.top - this.options.scroll * delta;\n\n // update top\n top_new = Math.max(top_new, this.top_max);\n top_new = Math.min(top_new, this.options.top_min);\n\n // update screen if necessary\n if (this.top != top_new) {\n // update screen\n for (var i in this.frame_list) {\n // get frame\n var frame = this.frame_list[i];\n\n // skip\n if (frame.grid_location !== null) {\n var screen_location = {\n top : frame.screen_location.top - (this.top - top_new),\n left : frame.screen_location.left\n }\n this._frameOffset(frame, screen_location, animate);\n }\n }\n\n // update top value\n this.top = top_new;\n }\n\n // refresh\n this._menuRefresh();\n },\n\n /*\n FRAME FUNCTIONS\n */\n\n // frame insert at given location\n _frameInsert: function(frame, new_loc, animate) {\n // define\n var place_list = [];\n\n // frame to place\n if (frame) {\n // reset grid location\n frame.grid_location = null;\n\n // set first one to be placed\n place_list.push([frame, this._locationRank(new_loc)]);\n }\n\n // search\n var i = null;\n for (i in this.frame_list) {\n // get frame\n var f = this.frame_list[i];\n\n // check\n if (f.grid_location !== null && !f.grid_lock) {\n // reset grid location\n f.grid_location = null;\n\n // set up for placement\n place_list.push([f, f.grid_rank]);\n }\n }\n\n // sort place list by rank\n place_list.sort(function(a, b) {\n var i = a[1];\n var j = b[1];\n return i < j ? -1 : (i > j ? 1 : 0);\n });\n\n // place\n for (i = 0; i < place_list.length; i++) {\n this._framePlace(place_list[i][0], animate);\n }\n\n // identify maximum viewport size\n this.top_max = 0;\n for (var i in this.frame_list) {\n // get frame\n var frame = this.frame_list[i];\n\n // skip\n if (frame.grid_location !== null)\n this.top_max = Math.max(this.top_max, frame.grid_location.top + frame.grid_location.height);\n }\n\n // mesh maximum top with window size and margin\n this.top_max = $(window).height() - this.top_max * this.options.cell - 2 * this.options.margin;\n\n // fix value\n this.top_max = Math.min(this.top_max, this.options.top_min);\n\n // panel menu\n this._menuRefresh();\n },\n\n // naive frame place\n _framePlace: function(frame, animate) {\n // reset grid location\n frame.grid_location = null;\n\n // grid coordinates of new frame\n var g = this._toGrid(this._frameScreen(frame));\n\n // try grid coordinates\n var done = false;\n for (var i = 0; i < this.options.rows; i++) {\n // ensure that the first grid column is checked despite limited window space\n for (var j = 0; j < Math.max(1, this.cols - g.width); j++) {\n // coordinates\n g.top = i;\n g.left = j;\n\n // no collision\n if (!this._isCollision(g)) {\n done = true;\n break;\n }\n }\n\n // break\n if (done) {\n break;\n }\n }\n\n // check if valid spot was found\n if (done) {\n this._frameGrid(frame, g, animate);\n } else {\n console.log(\"Grid dimensions exceeded.\");\n }\n },\n\n // focus\n _frameFocus: function(frame, has_focus) {\n // get new z-value\n var z = this.frame_z + (has_focus ? 1 : 0);\n\n // update\n $(frame.id).css('z-index', z);\n },\n\n // new left/top position frame\n _frameOffset: function(frame, p, animate) {\n // update screen location\n frame.screen_location.left = p.left;\n frame.screen_location.top = p.top;\n\n // animate\n if (animate) {\n // set focus on animated\n this._frameFocus(frame, true);\n\n // prepare for callback\n var self = this;\n\n // animate and remove focus\n $(frame.id).animate({top: p.top, left: p.left}, 'fast', function() {\n self._frameFocus(frame, false);\n });\n } else {\n $(frame.id).css({top: p.top, left: p.left});\n }\n },\n\n // resize frame\n _frameResize: function(frame, p) {\n // update css\n $(frame.id).css({width: p.width, height: p.height});\n\n // update descriptor\n frame.screen_location.width = p.width;\n frame.screen_location.height = p.height;\n },\n\n // new grid location\n _frameGrid: function (frame, l, animate) {\n // update grid location\n frame.grid_location = l;\n\n // place frame\n this._frameOffset(frame, this._toPixel(l), animate);\n\n // update grid rank\n frame.grid_rank = this._locationRank(l);\n },\n\n // get frame dimensions\n _frameScreen: function(frame) {\n var p = frame.screen_location;\n return {top: p.top, left: p.left, width: p.width, height: p.height};\n },\n\n /*\n HTML TEMPLATES\n */\n\n // main element\n _template: function() {\n return '
';\n },\n\n // fill regular frame template\n _templateFrame: function(id, title) {\n // check title\n if (!title)\n title = '';\n\n // load template\n return '
' +\n '
' +\n '' + title + '' +\n '' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '' +\n '
';\n },\n\n // fill regular frame template\n _templateFrameUrl: function(id, title, url) {\n // url\n if (url.indexOf('?') == -1)\n url += '?';\n else\n url += '&';\n url += 'widget=True';\n\n // element\n var $el = $(this._templateFrame(id, title));\n $el.find('.f-content').append('');\n\n // load template\n return $el;\n },\n\n // fill shadow template\n _templateShadow: function(id) {\n return '
';\n },\n\n // fill background template in order to cover underlying iframes\n _templateBackground: function() {\n return '
';\n },\n\n // fill menu button template\n _templateMenu: function() {\n return '
' +\n '
';\n }\n});\n\n// return\nreturn {\n View: View\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-frames.js\n ** module id = 14\n ** module chunks = 0\n **/","define([\n //jquery\n //backbone\n], function(){\n//=============================================================================\n/**\n * backbone model for icon buttons\n */\nvar IconButton = Backbone.Model.extend({\n defaults: {\n title : \"\",\n icon_class : \"\",\n on_click : null,\n menu_options : null,\n is_menu_button : true,\n id : null,\n href : null,\n target : null,\n enabled : true,\n visible : true,\n tooltip_config : {}\n }\n});\n\n/**\n * backbone view for icon buttons\n */\nvar IconButtonView = Backbone.View.extend({\n\n initialize : function(){\n // better rendering this way\n this.model.attributes.tooltip_config = { placement : 'bottom' };\n this.model.bind( 'change', this.render, this );\n },\n\n render : function( ){\n // hide tooltip\n this.$el.tooltip( 'hide' );\n\n var new_elem = this.template( this.model.toJSON() );\n // configure tooltip\n new_elem.tooltip( this.model.get( 'tooltip_config' ));\n this.$el.replaceWith( new_elem );\n this.setElement( new_elem );\n return this;\n },\n\n events : {\n 'click' : 'click'\n },\n\n click : function( event ){\n // if on_click pass to that function\n if( _.isFunction( this.model.get( 'on_click' ) ) ){\n this.model.get( 'on_click' )( event );\n return false;\n }\n // otherwise, bubble up ( to href or whatever )\n return true;\n },\n\n // generate html element\n template: function( options ){\n var buffer = 'title=\"' + options.title + '\" class=\"icon-button';\n\n if( options.is_menu_button ){\n buffer += ' menu-button';\n }\n\n buffer += ' ' + options.icon_class;\n\n if( !options.enabled ){\n buffer += '_disabled';\n }\n\n // close class tag\n buffer += '\"';\n\n if( options.id ){\n buffer += ' id=\"' + options.id + '\"';\n }\n\n buffer += ' href=\"' + options.href + '\"';\n // add target for href\n if( options.target ){\n buffer += ' target=\"' + options.target + '\"';\n }\n // set visibility\n if( !options.visible ){\n buffer += ' style=\"display: none;\"';\n }\n\n // enabled/disabled\n if ( options.enabled ){\n buffer = '';\n } else {\n buffer = '';\n }\n\n // return element\n return $( buffer );\n }\n} );\n\n// define collection\nvar IconButtonCollection = Backbone.Collection.extend({\n model: IconButton\n});\n\n/**\n * menu with multiple icon buttons\n * views are not needed nor used for individual buttons\n */\nvar IconButtonMenuView = Backbone.View.extend({\n\n tagName: 'div',\n\n initialize: function(){\n this.render();\n },\n\n render: function(){\n // initialize icon buttons\n var self = this;\n this.collection.each(function(button){\n // create and add icon button to menu\n var elt = $('')\n .attr('href', 'javascript:void(0)')\n .attr('title', button.attributes.title)\n .addClass('icon-button menu-button')\n .addClass(button.attributes.icon_class)\n .appendTo(self.$el)\n .click(button.attributes.on_click);\n\n // configure tooltip\n if (button.attributes.tooltip_config){\n elt.tooltip(button.attributes.tooltip_config);\n }\n\n // add popup menu to icon\n var menu_options = button.get('options');\n if (menu_options){\n make_popupmenu(elt, menu_options);\n }\n });\n\n // return\n return this;\n }\n});\n\n/**\n * Returns an IconButtonMenuView for the provided configuration.\n * Configuration is a list of dictionaries where each dictionary\n * defines an icon button. Each dictionary must have the following\n * elements: icon_class, title, and on_click.\n */\nvar create_icon_buttons_menu = function(config, global_config)\n{\n // initialize global configuration\n if (!global_config) global_config = {};\n\n // create and initialize menu\n var buttons = new IconButtonCollection(\n _.map(config, function(button_config){\n return new IconButton(_.extend(button_config, global_config));\n })\n );\n\n // return menu\n return new IconButtonMenuView( {collection: buttons} );\n};\n\n\n//=============================================================================\n return {\n IconButton : IconButton,\n IconButtonView : IconButtonView,\n IconButtonCollection : IconButtonCollection,\n IconButtonMenuView : IconButtonMenuView,\n create_icon_buttons_menu: create_icon_buttons_menu\n };\n})\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/icon-button.js\n ** module id = 15\n ** module chunks = 0\n **/","/**\n This is the regular tool form.\n*/\ndefine(['utils/utils', 'mvc/ui/ui-misc', 'mvc/tool/tools-form-base', 'mvc/tool/tools-jobs'],\n function( Utils, Ui, ToolFormBase, ToolJobs ) {\n var View = ToolFormBase.extend({\n initialize: function( options ) {\n var self = this;\n ToolFormBase.prototype.initialize.call( this, Utils.merge({\n customize : function( options ) {\n // build execute button\n options.buttons = {\n execute : execute_btn = new Ui.Button({\n icon : 'fa-check',\n tooltip : 'Execute: ' + options.name + ' (' + options.version + ')',\n title : 'Execute',\n cls : 'btn btn-primary',\n floating : 'clear',\n onclick : function() {\n execute_btn.wait();\n self.form.portlet.disable();\n ToolJobs.submit( self.form, options, function() {\n execute_btn.unwait();\n self.form.portlet.enable();\n } );\n }\n })\n };\n\n // remap feature\n if ( options.job_id && options.job_remap ) {\n options.inputs[ 'rerun_remap_job_id' ] = {\n label : 'Resume dependencies from this job',\n name : 'rerun_remap_job_id',\n type : 'select',\n display : 'radio',\n ignore : '__ignore__',\n value : '__ignore__',\n options : [ [ 'Yes', options.job_id ], [ 'No', '__ignore__' ] ],\n help : 'The previous run of this tool failed and other tools were waiting for it to finish successfully. Use this option to resume those tools using the new output(s) of this tool run.'\n }\n }\n }\n }, options ) );\n }\n });\n\n return {\n View: View\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/tool/tools-form.js\n ** module id = 16\n ** module chunks = 0\n **/","/**\n * Galaxy utilities comprises small functions, which at this point\n * do not require their own classes/files\n*/\n\n// dependencies\ndefine([], function() {\n\n/** Traverse through json\n*/\nfunction deepeach(dict, callback) {\n for (var i in dict) {\n var d = dict[i];\n if (d && typeof(d) == \"object\") {\n callback(d);\n deepeach(d, callback);\n }\n }\n}\n\n/**\n * Check if a string is a json string\n * @param{String} text - Content to be validated\n */\nfunction isJSON(text) {\n return /^[\\],:{}\\s]*$/.test(text.replace(/\\\\[\"\\\\\\/bfnrtu]/g, '@').\n replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']').\n replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''));\n};\n\n/**\n * Sanitize/escape a string\n * @param{String} content - Content to be sanitized\n */\nfunction sanitize(content) {\n return $('
').text(content).html();\n};\n\n/**\n * Validate atomic values or list of values\n * usually used for selectable options\n * @param{String} value - Value or list to be validated\n */\nfunction validate (value) {\n if (!(value instanceof Array)) {\n value = [value];\n }\n if (value.length === 0) {\n return false;\n }\n for (var i in value) {\n if (['__null__', '__undefined__', null, undefined].indexOf(value[i]) > -1) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Convert list to pretty string\n * @param{String} lst - List of strings to be converted in human readable list sentence\n */\nfunction textify(lst) {\n var lst = lst.toString();\n if (lst) {\n lst = lst.replace(/,/g, ', ');\n var pos = lst.lastIndexOf(', ');\n if (pos != -1) {\n lst = lst.substr(0, pos) + ' or ' + lst.substr(pos+1);\n }\n return lst;\n }\n return '';\n};\n\n/**\n * Request handler for GET\n * @param{String} url - Url request is made to\n * @param{Function} success - Callback on success\n * @param{Function} error - Callback on error\n * @param{Boolean} cache - Use cached data if available\n */\nfunction get (options) {\n top.__utils__get__ = top.__utils__get__ || {};\n if (options.cache && top.__utils__get__[options.url]) {\n options.success && options.success(top.__utils__get__[options.url]);\n console.debug('utils.js::get() - Fetching from cache [' + options.url + '].');\n } else {\n request({\n url : options.url,\n data : options.data,\n success : function(response) {\n top.__utils__get__[options.url] = response;\n options.success && options.success(response);\n },\n error : function(response) {\n options.error && options.error(response);\n }\n });\n }\n};\n\n/**\n * Request handler\n * @param{String} method - Request method ['GET', 'POST', 'DELETE', 'PUT']\n * @param{String} url - Url request is made to\n * @param{Object} data - Data send to url\n * @param{Function} success - Callback on success\n * @param{Function} error - Callback on error\n */\nfunction request (options) {\n // prepare ajax\n var ajaxConfig = {\n contentType : 'application/json',\n type : options.type || 'GET',\n data : options.data || {},\n url : options.url\n }\n\n // encode data into url\n if (ajaxConfig.type == 'GET' || ajaxConfig.type == 'DELETE') {\n if (ajaxConfig.url.indexOf('?') == -1) {\n ajaxConfig.url += '?';\n } else {\n ajaxConfig.url += '&';\n }\n ajaxConfig.url = ajaxConfig.url + $.param(ajaxConfig.data, true);\n ajaxConfig.data = null;\n } else {\n ajaxConfig.dataType = 'json';\n ajaxConfig.url = ajaxConfig.url;\n ajaxConfig.data = JSON.stringify(ajaxConfig.data);\n }\n\n // make request\n $.ajax(ajaxConfig)\n .done(function(response) {\n if (typeof response === 'string') {\n try {\n response = response.replace('Infinity,', '\"Infinity\",');\n response = jQuery.parseJSON(response);\n } catch (e) {\n console.debug(e);\n }\n }\n options.success && options.success(response);\n })\n .fail(function(response) {\n var response_text = null;\n try {\n response_text = jQuery.parseJSON(response.responseText);\n } catch (e) {\n response_text = response.responseText;\n }\n options.error && options.error(response_text, response);\n });\n};\n\n/**\n * Read a property value from CSS\n * @param{String} classname - CSS class\n * @param{String} name - CSS property\n */\nfunction cssGetAttribute (classname, name) {\n var el = $('
');\n el.appendTo(':eq(0)');\n var value = el.css(name);\n el.remove();\n return value;\n};\n\n/**\n * Load a CSS file\n * @param{String} url - Url of CSS file\n */\nfunction cssLoadFile (url) {\n if (!$('link[href^=\"' + url + '\"]').length) {\n $('').appendTo('head');\n }\n};\n\n/**\n * Safely merge to dictionaries\n * @param{Object} options - Target dictionary\n * @param{Object} optionsDefault - Source dictionary\n */\nfunction merge (options, optionsDefault) {\n if (options) {\n return _.defaults(options, optionsDefault);\n } else {\n return optionsDefault;\n }\n};\n\n\n/**\n * Round floaing point 'number' to 'numPlaces' number of decimal places.\n * @param{Object} number a floaing point number\n * @param{Object} numPlaces number of decimal places\n */\nfunction roundToDecimalPlaces( number, numPlaces ){\n var placesMultiplier = 1;\n for( var i=0; i= tb){ size = size / tb; unit = 'TB'; } else\n if (size >= gb){ size = size / gb; unit = 'GB'; } else\n if (size >= mb){ size = size / mb; unit = 'MB'; } else\n if (size >= kb){ size = size / kb; unit = 'KB'; } else\n if (size > 0){ unit = 'b'; }\n else { return normal_font? '0 b': '-'; }\n // return formatted string\n var rounded = unit == 'b'? size: roundToDecimalPlaces( size, numberPlaces );\n if (normal_font) {\n return rounded + ' ' + unit;\n } else {\n return '' + rounded + ' ' + unit;\n }\n};\n\n/**\n * Create a unique id\n */\nfunction uid(){\n top.__utils__uid__ = top.__utils__uid__ || 0;\n return 'uid-' + top.__utils__uid__++;\n};\n\n/**\n * Create a time stamp\n */\nfunction time() {\n var d = new Date();\n var hours = (d.getHours() < 10 ? \"0\" : \"\") + d.getHours();\n var minutes = (d.getMinutes() < 10 ? \"0\" : \"\") + d.getMinutes()\n return datetime = d.getDate() + \"/\"\n + (d.getMonth() + 1) + \"/\"\n + d.getFullYear() + \", \"\n + hours + \":\"\n + minutes;\n};\n\nreturn {\n cssLoadFile: cssLoadFile,\n cssGetAttribute: cssGetAttribute,\n get: get,\n merge: merge,\n bytesToString: bytesToString,\n uid: uid,\n time: time,\n request: request,\n sanitize: sanitize,\n textify: textify,\n validate: validate,\n deepeach: deepeach,\n isJSON: isJSON\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/utils/utils.js\n ** module id = 17\n ** module chunks = 0\n **/","/**\n * This class contains backbone wrappers for basic ui elements such as Images, Labels, Buttons, Input fields etc.\n */\ndefine(['utils/utils',\n 'mvc/ui/ui-select-default',\n 'mvc/ui/ui-slider',\n 'mvc/ui/ui-options',\n 'mvc/ui/ui-drilldown',\n 'mvc/ui/ui-buttons',\n 'mvc/ui/ui-modal'],\n function( Utils, Select, Slider, Options, Drilldown, Buttons, Modal ) {\n\n /** Image wrapper */\n var Image = Backbone.View.extend({\n initialize : function(options) {\n this.options = Utils.merge(options, {\n url : '',\n cls : ''\n });\n this.setElement(this._template(this.options));\n },\n _template: function(options) {\n return '';\n }\n });\n\n /** Label wrapper */\n var Label = Backbone.View.extend({\n initialize : function(options) {\n this.options = Utils.merge(options, {\n title : '',\n cls : ''\n });\n this.setElement(this._template(this.options));\n },\n title: function(new_title) {\n this.$el.html(new_title);\n },\n value: function() {\n return options.title;\n },\n _template: function(options) {\n return '';\n }\n });\n\n /** Displays an icon with title */\n var Icon = Backbone.View.extend({\n initialize : function(options) {\n this.options = Utils.merge(options, {\n floating : 'right',\n icon : '',\n tooltip : '',\n placement : 'bottom',\n title : '',\n cls : ''\n });\n this.setElement(this._template(this.options));\n $(this.el).tooltip({title: options.tooltip, placement: 'bottom'});\n },\n _template: function(options) {\n return '
' +\n ' ' +\n options.title +\n '
';\n }\n });\n\n /** Renders an anchor element */\n var Anchor = Backbone.View.extend({\n initialize : function(options) {\n this.options = Utils.merge(options, {\n title : '',\n cls : ''\n });\n this.setElement(this._template(this.options));\n $(this.el).on('click', options.onclick);\n },\n _template: function(options) {\n return '
';\n }\n });\n\n /** Displays messages used e.g. in the tool form */\n var Message = Backbone.View.extend({\n initialize : function(options) {\n this.options = Utils.merge(options, {\n message : null,\n status : 'info',\n cls : '',\n persistent : false\n });\n this.setElement('
');\n this.options.message && this.update(this.options);\n },\n\n // update\n update: function(options) {\n // get options\n this.options = Utils.merge(options, this.options);\n\n // show message\n if (options.message != '') {\n this.$el.html(this._template(this.options));\n this.$el.fadeIn();\n\n // clear previous timeouts\n if (this.timeout) {\n window.clearTimeout(this.timeout);\n }\n\n // set timeout if message is not persistent\n if (!options.persistent) {\n var self = this;\n this.timeout = window.setTimeout(function() {\n if (self.$el.is(':visible')) {\n self.$el.fadeOut();\n } else {\n self.$el.hide();\n }\n }, 3000);\n }\n } else {\n this.$el.fadeOut();\n }\n },\n\n // template\n _template: function(options) {\n var cls_status = 'ui-message alert alert-' + options.status;\n if (options.large) {\n cls_status = ( ( options.status == 'success' && 'done' ) ||\n ( options.status == 'danger' && 'error' ) ||\n options.status ) + 'messagelarge';\n }\n return '
' +\n options.message +\n '
';\n }\n });\n\n /** Render a search box */\n var Searchbox = Backbone.View.extend({\n initialize : function(options) {\n this.options = Utils.merge(options, {\n onclick : null,\n searchword : ''\n });\n this.setElement(this._template(this.options));\n var self = this;\n if (this.options.onclick) {\n this.$el.on('submit', function(e) {\n var search_field = self.$el.find('#search');\n self.options.onclick(search_field.val());\n });\n }\n },\n _template: function(options) {\n return '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
';\n }\n });\n\n /** Renders an input element used e.g. in the tool form */\n var Input = Backbone.View.extend({\n initialize : function(options) {\n // configure options\n this.options = Utils.merge(options, {\n type : 'text',\n placeholder : '',\n disabled : false,\n visible : true,\n cls : '',\n area : false\n });\n\n // create new element\n this.setElement(this._template(this.options));\n\n // set initial value\n if (this.options.value !== undefined) {\n this.value(this.options.value);\n }\n\n // disable input field\n if (this.options.disabled) {\n this.$el.prop('disabled', true);\n }\n\n // hide input field\n if (!this.options.visible) {\n this.$el.hide();\n }\n\n // onchange event handler. fires on user activity.\n var self = this;\n this.$el.on('input', function() {\n if (self.options.onchange) {\n self.options.onchange(self.$el.val());\n }\n });\n },\n\n // value\n value : function (new_val) {\n if (new_val !== undefined) {\n this.$el.val(new_val);\n }\n return this.$el.val();\n },\n\n // template\n _template: function(options) {\n if (options.area) {\n return '';\n } else {\n return '';\n }\n }\n });\n\n /** Creates a hidden element input field used e.g. in the tool form */\n var Hidden = Backbone.View.extend({\n initialize : function(options) {\n this.options = options;\n this.setElement(this._template(this.options));\n if (this.options.value !== undefined) {\n this.value(this.options.value);\n }\n },\n value : function (new_val) {\n if (new_val !== undefined) {\n this.$('hidden').val(new_val);\n }\n return this.$('hidden').val();\n },\n _template: function(options) {\n var tmpl = '
';\n if (options.info) {\n tmpl += '
' + options.info + '
';\n }\n tmpl += '' +\n '
';\n return tmpl;\n }\n });\n\n return {\n Anchor : Anchor,\n Button : Buttons.ButtonDefault,\n ButtonIcon : Buttons.ButtonIcon,\n ButtonCheck : Buttons.ButtonCheck,\n ButtonMenu : Buttons.ButtonMenu,\n ButtonLink : Buttons.ButtonLink,\n Icon : Icon,\n Image : Image,\n Input : Input,\n Label : Label,\n Message : Message,\n Modal : Modal,\n RadioButton : Options.RadioButton,\n Checkbox : Options.Checkbox,\n Radio : Options.Radio,\n Searchbox : Searchbox,\n Select : Select,\n Hidden : Hidden,\n Slider : Slider,\n Drilldown : Drilldown\n }\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-misc.js\n ** module id = 18\n ** module chunks = 0\n **/","/**\n * This class creates/wraps a default html select field as backbone class.\n */\ndefine(['utils/utils', 'mvc/ui/ui-buttons'], function(Utils, Buttons) {\nvar View = Backbone.View.extend({\n // options\n optionsDefault: {\n id : Utils.uid(),\n cls : 'ui-select',\n error_text : 'No options available',\n empty_text : 'Nothing selected',\n visible : true,\n wait : false,\n multiple : false,\n searchable : true,\n optional : false\n },\n\n // initialize\n initialize: function(options) {\n // link this\n var self = this;\n\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n\n // create new element\n this.setElement(this._template(this.options));\n\n // link elements\n this.$select = this.$el.find('.select');\n this.$icon_dropdown = this.$el.find('.icon-dropdown');\n\n // allow regular multi-select field to be resized\n var minHeight = null;\n this.$('.icon-resize').on('mousedown', function(event) {\n var currentY = event.pageY;\n var currentHeight = self.$select.height();\n minHeight = minHeight || currentHeight;\n $('#dd-helper').show().on('mousemove', function(event) {\n self.$select.height(Math.max(currentHeight + (event.pageY - currentY), minHeight));\n }).on('mouseup mouseleave', function() {\n $('#dd-helper').hide().off();\n });\n });\n\n // multiple select fields have an additional button and other custom properties\n if (this.options.multiple) {\n // create select all button\n if (this.options.searchable) {\n this.all_button = new Buttons.ButtonCheck({\n onclick: function() {\n var new_value = [];\n if (self.all_button.value() !== 0) {\n new_value = self._availableOptions();\n }\n self.value(new_value);\n self.trigger('change');\n }\n });\n this.$el.prepend(this.all_button.$el);\n } else {\n this.$el.addClass('ui-select-multiple');\n }\n this.$select.prop('multiple', true);\n this.$icon_dropdown.remove();\n }\n\n // update initial options\n this.update(this.options.data);\n\n // set initial value\n if (this.options.value !== undefined) {\n this.value(this.options.value);\n }\n\n // show/hide\n if (!this.options.visible) {\n this.hide();\n }\n\n // wait\n if (this.options.wait) {\n this.wait();\n } else {\n this.show();\n }\n\n // add change event. fires only on user activity\n this.$select.on('change', function() {\n self.trigger('change');\n });\n\n // add change event. fires on trigger\n this.on('change', function() {\n self.options.onchange && self.options.onchange(this.value());\n });\n },\n\n /** Return/Set current selection\n */\n value: function (new_value) {\n // set new value\n if (new_value !== undefined) {\n if (new_value === null) {\n new_value = '__null__';\n }\n if (this.exists(new_value) || this.options.multiple) {\n this.$select.val(new_value);\n if (this.$select.select2) {\n this.$select.select2('val', new_value);\n }\n }\n }\n // get current value\n var current = this._getValue();\n if (this.all_button) {\n this.all_button.value($.isArray(current) && current.length || 0, this._size());\n }\n return current;\n },\n\n /** Return the first select option\n */\n first: function() {\n var options = this.$select.find('option').first();\n if (options.length > 0) {\n return options.val();\n } else {\n return null;\n }\n },\n\n /** Return the label/text of the current selection\n */\n text: function () {\n return this.$select.find('option:selected').text();\n },\n\n /** Show the select field\n */\n show: function() {\n this.unwait();\n this.$select.show();\n this.$el.show();\n },\n\n /** Hide the select field\n */\n hide: function() {\n this.$el.hide();\n },\n\n /** Show a spinner indicating that the select options are currently loaded\n */\n wait: function() {\n this.$icon_dropdown.removeClass();\n this.$icon_dropdown.addClass('icon-dropdown fa fa-spinner fa-spin');\n },\n\n /** Hide spinner indicating that the request has been completed\n */\n unwait: function() {\n this.$icon_dropdown.removeClass();\n this.$icon_dropdown.addClass('icon-dropdown fa fa-caret-down');\n },\n\n /** Returns true if the field is disabled\n */\n disabled: function() {\n return this.$select.is(':disabled');\n },\n\n /** Enable the select field\n */\n enable: function() {\n this.$select.prop('disabled', false);\n },\n\n /** Disable the select field\n */\n disable: function() {\n this.$select.prop('disabled', true);\n },\n\n /** Update all available options at once\n */\n update: function(options) {\n // backup current value\n var current = this._getValue();\n\n // remove all options\n this.$select.find('option').remove();\n\n // add optional field\n if (!this.options.multiple && this.options.optional) {\n this.$select.append(this._templateOption({value : '__null__', label : this.options.empty_text}));\n }\n\n // add new options\n for (var key in options) {\n this.$select.append(this._templateOption(options[key]));\n }\n\n // count remaining entries\n if (this._size() == 0) {\n // disable select field\n this.disable();\n\n // create placeholder\n this.$select.append(this._templateOption({value : '__null__', label : this.options.error_text}));\n } else {\n // enable select field\n this.enable();\n }\n\n // update to searchable field (in this case select2)\n if (this.options.searchable) {\n this.$select.select2('destroy');\n this.$select.select2({ closeOnSelect: !this.options.multiple });\n this.$( '.select2-container .select2-search input' ).off( 'blur' );\n }\n\n // set previous value\n this.value(current);\n\n // check if any value was set\n if (this._getValue() === null && !(this.options.multiple && this.options.optional)) {\n this.value(this.first());\n }\n },\n\n /** Set the custom onchange callback function\n */\n setOnChange: function(callback) {\n this.options.onchange = callback;\n },\n\n /** Check if a value is an existing option\n */\n exists: function(value) {\n return this.$select.find('option[value=\"' + value + '\"]').length > 0;\n },\n\n /** Get current value from dom\n */\n _getValue: function() {\n var val = this.$select.val();\n if (!Utils.validate(val)) {\n return null;\n }\n return val;\n },\n\n /** Returns all currently available options\n */\n _availableOptions: function() {\n var available = [];\n this.$select.find('option').each(function(i, e){\n available.push($(e).attr('value'));\n });\n return available;\n },\n\n /** Number of available options\n */\n _size: function() {\n return this.$select.find('option').length;\n },\n\n /** Template for select options\n */\n _templateOption: function(options) {\n return '';\n },\n\n /** Template for select view\n */\n _template: function(options) {\n return '
' +\n '' +\n '
' +\n '
';\n }\n});\n\nreturn {\n View : View\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-slider.js\n ** module id = 21\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-buttons'], function(Utils, Buttons) {\n\n/** Base class for options based ui elements **/\nvar Base = Backbone.View.extend({\n // initialize\n initialize: function(options) {\n // link this\n var self = this;\n\n // configure options\n this.options = Utils.merge(options, {\n visible : true,\n data : [],\n id : Utils.uid(),\n error_text : 'No options available.',\n wait_text : 'Please wait...',\n multiple : false\n });\n\n // create new element\n this.setElement('
');\n\n // create elements\n this.$message = $('
');\n this.$options = $(this._template(options));\n this.$menu = $('
');\n\n // append\n this.$el.append(this.$message);\n this.$el.append(this.$menu);\n this.$el.append(this.$options);\n\n // add select/unselect all button\n if (this.options.multiple) {\n this.all_button = new Buttons.ButtonCheck({\n onclick: function() {\n self.$('input').prop('checked', self.all_button.value() !== 0);\n self.trigger('change');\n }\n });\n this.$menu.append(this.all_button.$el);\n }\n\n // hide input field\n if (!this.options.visible) {\n this.$el.hide();\n }\n\n // initialize data\n this.update(this.options.data);\n\n // set initial value\n if (this.options.value !== undefined) {\n this.value(this.options.value);\n }\n\n // add change event. fires on trigger\n this.on('change', function() {\n this.options.onchange && this.options.onchange(this.value());\n });\n },\n\n /** Update options\n */\n update: function(options) {\n // backup current value\n var current = this._getValue();\n\n // remove all options\n this.$options.empty();\n\n // add new options using single option templates or full template\n if (this._templateOptions) {\n // rebuild options using full template\n this.$options.append(this._templateOptions(options));\n } else {\n // rebuild options using single option templates\n for (var key in options) {\n var $option = $(this._templateOption(options[key]));\n $option.addClass('ui-option');\n $option.tooltip({title: options[key].tooltip, placement: 'bottom'});\n this.$options.append($option);\n }\n }\n\n // add change events\n var self = this;\n this.$('input').on('change', function() {\n self.value(self._getValue());\n self.trigger('change');\n });\n\n // set previous value\n this.value(current);\n\n // data initialization has been completed\n this.unwait();\n },\n\n /** Return/Set current value\n */\n value: function (new_value) {\n // set new value if available\n if (new_value !== undefined) {\n // reset selection\n this.$('input').prop('checked', false);\n // set value\n if (new_value !== null) {\n // check if its an array\n if (!(new_value instanceof Array)) {\n new_value = [new_value];\n }\n // update to new selection\n for (var i in new_value) {\n this.$('input[value=\"' + new_value[i] + '\"]').first().prop('checked', true);\n }\n };\n }\n // get current value\n var current = this._getValue();\n if (this.all_button) {\n var value = current;\n if (!(value instanceof Array)) {\n value = 0;\n } else {\n value = value.length;\n }\n this.all_button.value(value, this._size());\n }\n return current;\n },\n\n /** Check if selected value exists (or any if multiple)\n */\n exists: function(value) {\n if (value !== undefined) {\n if (!(value instanceof Array)) {\n value = [value];\n }\n for (var i in value) {\n if (this.$('input[value=\"' + value[i] + '\"]').length > 0) {\n return true;\n }\n }\n }\n return false;\n },\n\n /** Return first available option\n */\n first: function() {\n var options = this.$('input').first();\n if (options.length > 0) {\n return options.val();\n } else {\n return null;\n }\n },\n\n /** Wait message during request processing\n */\n wait: function() {\n if (this._size() == 0) {\n this._messageShow(this.options.wait_text, 'info');\n this.$options.hide();\n this.$menu.hide();\n }\n },\n\n /** Hide wait message\n */\n unwait: function() {\n var total = this._size();\n if (total == 0) {\n this._messageShow(this.options.error_text, 'danger');\n this.$options.hide();\n this.$menu.hide();\n } else {\n this._messageHide();\n this.$options.css('display', 'inline-block');\n this.$menu.show();\n }\n },\n\n /** Return current selection\n */\n _getValue: function() {\n // track values in array\n var selected = [];\n this.$(':checked').each(function() {\n selected.push($(this).val());\n });\n\n // get selected elements\n if (!Utils.validate(selected)) {\n return null;\n }\n\n // return multiple or single value\n if (this.options.multiple) {\n return selected;\n } else {\n return selected[0];\n }\n },\n\n /** Returns the number of options\n */\n _size: function() {\n return this.$('.ui-option').length;\n },\n\n /** Show message instead if options\n */\n _messageShow: function(text, status) {\n this.$message.show();\n this.$message.removeClass();\n this.$message.addClass('ui-message alert alert-' + status);\n this.$message.html(text);\n },\n\n /** Hide message\n */\n _messageHide: function() {\n this.$message.hide();\n },\n\n /** Main template function\n */\n _template: function() {\n return '
';\n }\n});\n\n/** Iconized **/\nvar BaseIcons = Base.extend({\n _templateOption: function(pair) {\n var id = Utils.uid();\n return '
' +\n '' +\n '' +\n '
';\n }\n});\n\n/** Radio button field **/\nvar Radio = {};\nRadio.View = BaseIcons.extend({\n initialize: function(options) {\n options.type = 'radio';\n BaseIcons.prototype.initialize.call(this, options);\n }\n});\n\n/** Checkbox options field **/\nvar Checkbox = {};\nCheckbox.View = BaseIcons.extend({\n initialize: function(options) {\n options.multiple = true;\n options.type = 'checkbox';\n BaseIcons.prototype.initialize.call(this, options);\n }\n});\n\n/** Radio button options field styled as classic buttons **/\nvar RadioButton = {};\nRadioButton.View = Base.extend({\n // initialize\n initialize: function(options) {\n Base.prototype.initialize.call(this, options);\n },\n\n /** Return/Set current value\n */\n value: function (new_value) {\n // set new value\n if (new_value !== undefined) {\n this.$('input').prop('checked', false);\n this.$('label').removeClass('active');\n this.$('[value=\"' + new_value + '\"]').prop('checked', true).closest('label').addClass('active');\n }\n\n // get and return value\n return this._getValue();\n },\n\n /** Template for a single option\n */\n _templateOption: function(pair) {\n var cls = 'fa ' + pair.icon;\n if (!pair.label) {\n cls += ' no-padding';\n }\n var tmpl = '';\n return tmpl;\n },\n\n /** Main template function\n */\n _template: function() {\n return '
';\n }\n});\n\nreturn {\n Base : Base,\n BaseIcons : BaseIcons,\n Radio : Radio,\n RadioButton : RadioButton,\n Checkbox : Checkbox\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-options.js\n ** module id = 22\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-options'], function(Utils, Options) {\n\n/**\n * This class creates/wraps a drill down element.\n */\nvar View = Options.BaseIcons.extend({\n // initialize\n initialize: function(options) {\n options.type = options.display || 'checkbox';\n options.multiple = (options.display == 'checkbox');\n Options.BaseIcons.prototype.initialize.call(this, options);\n this.initial = true;\n },\n\n // set expand states for initial value\n value: function (new_val) {\n var val = Options.BaseIcons.prototype.value.call(this, new_val);\n if (this.initial && val !== null && this.header_index) {\n this.initial = false;\n var values = val;\n if (!$.isArray(values)) {\n values = [values];\n }\n for (var i in values) {\n var list = this.header_index[values[i]];\n for (var j in list) {\n this._setState(list[j], true);\n }\n }\n }\n return val;\n },\n\n /** Expand/collapse a sub group\n */\n _setState: function (header_id, is_expanded) {\n var $button = this.$('.button-' + header_id);\n var $subgroup = this.$('.subgroup-' + header_id);\n $button.data('is_expanded', is_expanded);\n if (is_expanded) {\n $subgroup.fadeIn('fast')\n $button.removeClass('toggle-expand');\n $button.addClass('toggle');\n } else {\n $subgroup.hide();\n $button.removeClass('toggle');\n $button.addClass('toggle-expand');\n }\n },\n\n /** Template to create options tree\n */\n _templateOptions: function(options) {\n // link this\n var self = this;\n\n // link data\n this.header_index = {};\n \n // attach event handler\n function attach($el, header_id) {\n var $button = $el.find('.button-' + header_id);\n $button.on('click', function() {\n self._setState(header_id, !$button.data('is_expanded'));\n });\n }\n\n // recursive function which iterates through options\n function iterate ($tmpl, options, header) {\n header = header || [];\n for (i in options) {\n // current option level in hierarchy\n var level = options[i];\n\n // check for options\n var has_options = level.options.length > 0;\n\n // copy current header list\n var new_header = header.slice(0);\n\n // keep track of header list\n self.header_index[level.value] = new_header.slice(0);\n\n // build template\n var $group = $('
');\n if (has_options) {\n // create button and subgroup\n var header_id = Utils.uid();\n var $button = $('');\n var $subgroup = $('
');\n\n // keep track of button and subgroup\n new_header.push(header_id);\n\n // create expandable header section\n var $buttongroup = $('
');\n $buttongroup.append($button);\n $buttongroup.append(self._templateOption({\n label: level.name,\n value: level.value\n }));\n $group.append($buttongroup);\n iterate($subgroup, level.options, new_header);\n $group.append($subgroup);\n\n // attach expand/collapse events\n attach($group, header_id);\n } else {\n // append child options\n $group.append(self._templateOption({\n label: level.name,\n value: level.value\n }));\n }\n $tmpl.append($group);\n }\n }\n\n // iterate through options and create dom\n var $tmpl = $('
');\n iterate($tmpl, options);\n\n // return template\n return $tmpl;\n },\n\n /** Template for drill down view\n */\n _template: function(options) {\n return '
';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-drilldown.js\n ** module id = 23\n ** module chunks = 0\n **/","/**\n This is the base class of the tool form plugin. This class is e.g. inherited by the regular and the workflow tool form.\n*/\ndefine(['utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view',\n 'mvc/tool/tools-template', 'mvc/citation/citation-model', 'mvc/citation/citation-view'],\n function(Utils, Deferred, Ui, Form, ToolTemplate, CitationModel, CitationView) {\n\n // create form view\n return Backbone.View.extend({\n // initialize\n initialize: function(options) {\n this.options = Utils.merge(options, {});\n this.setElement('
');\n\n // create deferred processing queue handler\n // this handler reduces the number of requests to the api by filtering redundant requests\n this.deferred = new Deferred();\n\n // create form\n if (options.inputs) {\n this._buildForm(options);\n } else {\n var self = this;\n this.deferred.execute(function(process) {\n self._buildModel(process, options, true);\n });\n }\n },\n\n /** Wait for deferred build processes before removal */\n remove: function() {\n var self = this;\n this.$el.hide();\n this.deferred.execute(function(){\n Backbone.View.prototype.remove.call(self);\n Galaxy.emit.debug('tools-form-base::remove()', 'Destroy view.');\n });\n },\n\n /** Build form */\n _buildForm: function(options) {\n // link this\n var self = this;\n\n // merge form options\n this.options = Utils.merge(options, this.options);\n this.options = Utils.merge({\n icon : 'fa-wrench',\n title : '' + options.name + ' ' + options.description + ' (Galaxy Tool Version ' + options.version + ')',\n operations : this._operations(),\n onchange : function() {\n self.deferred.reset();\n self.deferred.execute(function(process) {\n self._updateModel(process);\n });\n }\n }, this.options);\n\n // allow option customization\n this.options.customize && this.options.customize( this.options );\n\n // create form\n this.form = new Form(this.options);\n\n // create footer\n this._footer();\n\n // create element\n this.$el.empty();\n this.$el.append(this.form.$el);\n },\n\n /** Builds a new model through api call and recreates the entire form\n */\n _buildModel: function(process, options, hide_message) {\n var self = this;\n this.options.id = options.id;\n this.options.version = options.version;\n\n // build request url\n var build_url = '';\n var build_data = {};\n if ( options.job_id ) {\n build_url = Galaxy.root + 'api/jobs/' + options.job_id + '/build_for_rerun';\n } else {\n build_url = Galaxy.root + 'api/tools/' + options.id + '/build';\n if ( Galaxy.params && Galaxy.params.tool_id == options.id ) {\n build_data = $.extend( {}, Galaxy.params );\n options.version && ( build_data[ 'tool_version' ] = options.version );\n }\n }\n\n // get initial model\n Utils.request({\n type : 'GET',\n url : build_url,\n data : build_data,\n success : function(new_model) {\n self._buildForm(new_model['tool_model'] || new_model);\n !hide_message && self.form.message.update({\n status : 'success',\n message : 'Now you are using \\'' + self.options.name + '\\' version ' + self.options.version + '.',\n persistent : false\n });\n Galaxy.emit.debug('tools-form-base::initialize()', 'Initial tool model ready.', new_model);\n process.resolve();\n\n },\n error : function(response) {\n var error_message = ( response && response.err_msg ) || 'Uncaught error.';\n if ( self.$el.is(':empty') ) {\n self.$el.prepend((new Ui.Message({\n message : error_message,\n status : 'danger',\n persistent : true,\n large : true\n })).$el);\n } else {\n Galaxy.modal.show({\n title : 'Tool request failed',\n body : error_message,\n buttons : {\n 'Close' : function() {\n Galaxy.modal.hide();\n }\n }\n });\n }\n Galaxy.emit.debug('tools-form::initialize()', 'Initial tool model request failed.', response);\n process.reject();\n }\n });\n },\n\n /** Request a new model for an already created tool form and updates the form inputs\n */\n _updateModel: function(process) {\n // model url for request\n var model_url = this.options.update_url || Galaxy.root + 'api/tools/' + this.options.id + '/build';\n\n // link this\n var self = this;\n\n // create the request dictionary\n var form = this.form;\n\n // create the request dictionary\n var current_state = {\n tool_id : this.options.id,\n tool_version : this.options.version,\n inputs : $.extend(true, {}, self.form.data.create())\n }\n\n // set wait mode\n form.wait(true);\n\n // log tool state\n Galaxy.emit.debug('tools-form-base::_updateModel()', 'Sending current state.', current_state);\n\n // post job\n Utils.request({\n type : 'POST',\n url : model_url,\n data : current_state,\n success : function(new_model) {\n self.form.update(new_model['tool_model'] || new_model);\n self.options.update && self.options.update(new_model);\n form.wait(false);\n Galaxy.emit.debug('tools-form-base::_updateModel()', 'Received new model.', new_model);\n process.resolve();\n },\n error : function(response) {\n Galaxy.emit.debug('tools-form-base::_updateModel()', 'Refresh request failed.', response);\n process.reject();\n }\n });\n },\n\n // create tool operation menu\n _operations: function() {\n // link this\n var self = this;\n var options = this.options;\n\n // button for version selection\n var versions_button = new Ui.ButtonMenu({\n icon : 'fa-cubes',\n title : (!options.narrow && 'Versions') || null,\n tooltip : 'Select another tool version'\n });\n if (!options.is_workflow && options.versions && options.versions.length > 1) {\n for (var i in options.versions) {\n var version = options.versions[i];\n if (version != options.version) {\n versions_button.addMenu({\n title : 'Switch to ' + version,\n version : version,\n icon : 'fa-cube',\n onclick : function() {\n // here we update the tool version (some tools encode the version also in the id)\n var id = options.id.replace(options.version, this.version);\n var version = this.version;\n // queue model request\n self.deferred.reset();\n self.deferred.execute(function(process) {\n self._buildModel(process, {id: id, version: version})\n });\n }\n });\n }\n }\n } else {\n versions_button.$el.hide();\n }\n\n // button menu\n var menu_button = new Ui.ButtonMenu({\n icon : 'fa-caret-down',\n title : (!options.narrow && 'Options') || null,\n tooltip : 'View available options'\n });\n\n // configure button selection\n if(options.biostar_url) {\n // add question option\n menu_button.addMenu({\n icon : 'fa-question-circle',\n title : 'Question?',\n tooltip : 'Ask a question about this tool (Biostar)',\n onclick : function() {\n window.open(options.biostar_url + '/p/new/post/');\n }\n });\n\n // create search button\n menu_button.addMenu({\n icon : 'fa-search',\n title : 'Search',\n tooltip : 'Search help for this tool (Biostar)',\n onclick : function() {\n window.open(options.biostar_url + '/local/search/page/?q=' + options.name);\n }\n });\n };\n\n // create share button\n menu_button.addMenu({\n icon : 'fa-share',\n title : 'Share',\n tooltip : 'Share this tool',\n onclick : function() {\n prompt('Copy to clipboard: Ctrl+C, Enter', window.location.origin + Galaxy.root + 'root?tool_id=' + options.id);\n }\n });\n\n // add admin operations\n if (Galaxy.user && Galaxy.user.get('is_admin')) {\n // create download button\n menu_button.addMenu({\n icon : 'fa-download',\n title : 'Download',\n tooltip : 'Download this tool',\n onclick : function() {\n window.location.href = Galaxy.root + 'api/tools/' + options.id + '/download';\n }\n });\n }\n\n // button for version selection\n if (options.requirements && options.requirements.length > 0) {\n menu_button.addMenu({\n icon : 'fa-info-circle',\n title : 'Requirements',\n tooltip : 'Display tool requirements',\n onclick : function() {\n if (!this.visible) {\n this.visible = true;\n self.form.message.update({\n persistent : true,\n message : ToolTemplate.requirements(options),\n status : 'info'\n });\n } else {\n this.visible = false;\n self.form.message.update({\n message : ''\n });\n }\n }\n });\n }\n\n // add toolshed url\n if (options.sharable_url) {\n menu_button.addMenu({\n icon : 'fa-external-link',\n title : 'See in Tool Shed',\n tooltip : 'Access the repository',\n onclick : function() {\n window.open(options.sharable_url);\n }\n });\n }\n\n // return operations\n return {\n menu : menu_button,\n versions : versions_button\n }\n },\n\n // create footer\n _footer: function() {\n // link options\n var options = this.options;\n\n // append help\n if (options.help != '') {\n this.form.$el.append(ToolTemplate.help(options));\n }\n\n // create and append tool citations\n if (options.citations) {\n var $citations = $('
');\n var citations = new CitationModel.ToolCitationCollection();\n citations.tool_id = options.id;\n var citation_list_view = new CitationView.CitationListView({ el: $citations, collection: citations } );\n citation_list_view.render();\n citations.fetch();\n this.form.$el.append($citations);\n }\n }\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/tool/tools-form-base.js\n ** module id = 24\n ** module chunks = 0\n **/","/**\n * This class defines a queue to ensure that multiple deferred callbacks are executed sequentially.\n */\ndefine(['utils/utils'], function( Utils ) {\nreturn Backbone.Model.extend({\n initialize: function(){\n this.active = {};\n this.last = null;\n },\n\n /** Adds a callback to the queue. Upon execution a deferred object is parsed to the callback i.e. callback( deferred ).\n * If the callback does not take any arguments, the deferred is resolved instantly.\n */\n execute: function( callback ) {\n var self = this;\n var id = Utils.uid();\n var has_deferred = callback.length > 0;\n\n // register process\n this.active[ id ] = true;\n\n // deferred process\n var process = $.Deferred();\n process.promise().always(function() {\n delete self.active[ id ];\n has_deferred && Galaxy.emit.debug( 'deferred::execute()', this.state().charAt(0).toUpperCase() + this.state().slice(1) + ' ' + id );\n });\n\n // deferred queue\n $.when( this.last ).always(function() {\n if ( self.active[ id ] ) {\n has_deferred && Galaxy.emit.debug( 'deferred::execute()', 'Running ' + id );\n callback( process );\n !has_deferred && process.resolve();\n } else {\n process.reject();\n }\n });\n this.last = process.promise();\n },\n\n /** Resets the promise queue. All currently queued but unexecuted callbacks/promises will be rejected.\n */\n reset: function() {\n Galaxy.emit.debug('deferred::execute()', 'Reset');\n for ( var i in this.active ) {\n this.active[ i ] = false;\n }\n },\n\n /** Returns true if all processes are done.\n */\n ready: function() {\n return $.isEmptyObject( this.active );\n }\n});\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/utils/deferred.js\n ** module id = 25\n ** module chunks = 0\n **/","/**\n This is the main class of the form plugin. It is referenced as 'app' in all lower level modules.\n*/\ndefine(['utils/utils', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc',\n 'mvc/form/form-section', 'mvc/form/form-data'],\n function(Utils, Portlet, Ui, FormSection, FormData) {\n\n // create form view\n return Backbone.View.extend({\n // initialize\n initialize: function(options) {\n // options\n this.optionsDefault = {\n // uses workflow editor mode i.e. text instead of select fields\n is_workflow : false,\n // shows errors on start\n initial_errors : false,\n // portlet style\n cls : 'ui-portlet-limited'\n };\n\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n\n // log options\n Galaxy.emit.debug('form-view::initialize()', 'Ready to build form.', this.options);\n\n // link galaxy modal or create one\n var galaxy = parent.Galaxy;\n if (galaxy && galaxy.modal) {\n this.modal = galaxy.modal;\n } else {\n this.modal = new Ui.Modal.View();\n }\n\n // set element\n this.setElement('
');\n\n // build this form\n this._build();\n },\n\n /** Update available options */\n update: function(new_model){\n var self = this;\n this.data.matchModel(new_model, function(input_id, node) {\n var input = self.input_list[input_id];\n if (input && input.options) {\n if (!_.isEqual(input.options, node.options)) {\n // backup new options\n input.options = node.options;\n\n // get/update field\n var field = self.field_list[input_id];\n if (field.update) {\n var new_options = [];\n if ((['data', 'data_collection', 'drill_down']).indexOf(input.type) != -1) {\n new_options = input.options;\n } else {\n for (var i in node.options) {\n var opt = node.options[i];\n if (opt.length > 2) {\n new_options.push({\n 'label': opt[0],\n 'value': opt[1]\n });\n }\n }\n }\n field.update(new_options);\n field.trigger('change');\n Galaxy.emit.debug('form-view::update()', 'Updating options for ' + input_id);\n }\n }\n }\n });\n },\n\n /** Set form into wait mode */\n wait: function(active) {\n for (var i in this.input_list) {\n var field = this.field_list[i];\n var input = this.input_list[i];\n if (input.is_dynamic && field.wait && field.unwait) {\n if (active) {\n field.wait();\n } else {\n field.unwait();\n }\n }\n }\n },\n\n /** Highlight and scroll to input element (currently only used for error notifications)\n */\n highlight: function (input_id, message, silent) {\n // get input field\n var input_element = this.element_list[input_id];\n\n // check input element\n if (input_element) {\n // mark error\n input_element.error(message || 'Please verify this parameter.');\n\n // trigger expand event for parent containers\n this.trigger('expand', input_id);\n\n // scroll to first input element\n if (!silent) {\n if (self==top) {\n var $panel = this.$el.parents().filter(function() {\n return $(this).css('overflow') == 'auto';\n }).first();\n $panel.animate({ scrollTop : $panel.scrollTop() + input_element.$el.offset().top - 50 }, 500);\n } else {\n $('html, body').animate({ scrollTop : input_element.$el.offset().top - 20 }, 500);\n }\n }\n }\n },\n\n /** Highlights errors\n */\n errors: function(options) {\n // hide previous error statements\n this.trigger('reset');\n\n // highlight all errors\n if (options && options.errors) {\n var error_messages = this.data.matchResponse(options.errors);\n for (var input_id in this.element_list) {\n var input = this.element_list[input_id];\n if (error_messages[input_id]) {\n this.highlight(input_id, error_messages[input_id], true);\n }\n }\n }\n },\n\n /** Main tool form build function. This function is called once a new model is available.\n */\n _build: function() {\n // link this\n var self = this;\n\n // reset events\n this.off('change');\n this.off('reset');\n\n // reset field list, which contains the input field elements\n this.field_list = {};\n\n // reset sequential input definition list, which contains the input definitions as provided from the api\n this.input_list = {};\n\n // reset input element list, which contains the dom elements of each input element (includes also the input field)\n this.element_list = {};\n\n // creates a json data structure from the input form\n this.data = new FormData(this);\n\n // create ui elements\n this._renderForm();\n\n // refresh data\n this.data.create();\n\n // show errors on startup\n if (this.options.initial_errors) {\n this.errors(this.options);\n }\n\n // add listener which triggers on checksum change\n var current_check = this.data.checksum();\n this.on('change', function() {\n var new_check = self.data.checksum();\n if (new_check != current_check) {\n current_check = new_check;\n self.options.onchange && self.options.onchange();\n }\n });\n\n // add reset listener\n this.on('reset', function() {\n for (var i in this.element_list) {\n this.element_list[i].reset();\n }\n });\n },\n\n /** Renders the UI elements required for the form\n */\n _renderForm: function() {\n // create message view\n this.message = new Ui.Message();\n\n // create tool form section\n this.section = new FormSection.View(this, {\n inputs : this.options.inputs\n });\n\n // remove tooltips\n $( '.tooltip' ).remove();\n\n // create portlet\n this.portlet = new Portlet.View({\n icon : 'fa-wrench',\n title : this.options.title,\n cls : this.options.cls,\n operations : this.options.operations,\n buttons : this.options.buttons\n });\n\n // append message\n this.portlet.append(this.message.$el.addClass('ui-margin-top'));\n\n // append tool section\n this.portlet.append(this.section.$el);\n\n // start form\n this.$el.empty();\n this.$el.append(this.portlet.$el);\n\n // show message if available in model\n if (this.options.message) {\n this.message.update({\n persistent : true,\n status : 'warning',\n message : this.options.message\n });\n }\n\n // log\n Galaxy.emit.debug('form-view::initialize()', 'Completed');\n }\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-view.js\n ** module id = 26\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils'], function(Utils) {\n\n// portlet view class\nvar View = Backbone.View.extend({\n // visibility\n visible: false,\n \n // defaults options\n optionsDefault: {\n id : Utils.uid(),\n title : '',\n icon : '',\n buttons : null,\n body : null,\n scrollable : true,\n nopadding : false,\n operations : null,\n placement : 'bottom',\n cls : 'ui-portlet',\n operations_flt : 'right'\n },\n \n // elements\n $title : null,\n $content : null,\n $buttons : null,\n $operations : null,\n $header : null,\n \n // initialize\n initialize : function(options) {\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n \n // create new element\n this.setElement(this._template(this.options));\n \n // link content\n this.$content = this.$el.find('.content');\n \n // link title\n this.$title = this.$el.find('.portlet-title-text');\n \n // link header\n this.$header = this.$el.find('.portlet-header');\n \n // link portlet content (wraps 'content')\n var $portlet_content = this.$el.find('.portlet-content');\n \n // set content padding\n if (this.options.nopadding) {\n $portlet_content.css('padding', '0px');\n this.$content.css('padding', '0px');\n }\n \n // append buttons\n this.$buttons = $(this.el).find('.buttons');\n if (this.options.buttons) {\n // link functions\n var self = this;\n $.each(this.options.buttons, function(name, item) {\n item.$el.prop('id', name);\n self.$buttons.append(item.$el);\n });\n } else {\n this.$buttons.remove();\n }\n \n // append operations\n this.$operations = $(this.el).find('.portlet-operations');\n if (this.options.operations) {\n // link functions\n var self = this;\n $.each(this.options.operations, function(name, item) {\n item.$el.prop('id', name);\n self.$operations.append(item.$el);\n });\n }\n \n // add body\n if(this.options.body) {\n this.append(this.options.body);\n }\n },\n \n // append\n append: function($el) {\n this.$content.append($el);\n },\n\n // remove all content\n empty: function() {\n this.$content.empty();\n },\n\n // content\n content: function() {\n return this.$content;\n },\n \n // show\n show: function(){\n // fade in\n this.$el.fadeIn('fast');\n \n // set flag\n this.visible = true;\n },\n \n // hide\n hide: function(){\n // fade out\n this.$el.fadeOut('fast');\n \n // set flag\n this.visible = false;\n },\n\n // enable buttons\n enableButton: function(id) {\n this.$buttons.find('#' + id).prop('disabled', false);\n },\n\n // disable buttons\n disableButton: function(id) {\n this.$buttons.find('#' + id).prop('disabled', true);\n },\n \n // hide operation\n hideOperation: function(id) {\n this.$operations.find('#' + id).hide();\n },\n\n // show operation\n showOperation: function(id) {\n this.$operations.find('#' + id).show();\n },\n \n // set operation\n setOperation: function(id, callback) {\n var $el = this.$operations.find('#' + id);\n $el.off('click');\n $el.on('click', callback);\n },\n \n // title\n title: function(new_title) {\n var $el = this.$title;\n if (new_title) {\n $el.html(new_title);\n }\n return $el.html();\n },\n\n // disable content access\n disable: function() {\n this.$('.portlet-backdrop').show();\n },\n\n // enable content access\n enable: function() {\n this.$('.portlet-backdrop').hide();\n },\n\n // fill regular modal template\n _template: function(options) {\n var tmpl = '
';\n \n if (options.title) {\n tmpl += '
' +\n '
' +\n '
';\n \n if (options.icon)\n tmpl += ' ';\n \n tmpl += '' + options.title + '' +\n '
' +\n '
';\n }\n tmpl += '
';\n \n if (options.placement == 'top') {\n tmpl += '
';\n }\n \n tmpl += '
';\n \n if (options.placement == 'bottom') {\n tmpl += '
';\n }\n \n tmpl += '
' +\n '
' +\n '
';\n return tmpl;\n }\n});\n\nreturn {\n View : View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-portlet.js\n ** module id = 27\n ** module chunks = 0\n **/","/**\n This class creates a form section and populates it with input elements. It also handles repeat blocks and conditionals by recursively creating new sub sections.\n*/\ndefine(['utils/utils',\n 'mvc/ui/ui-table',\n 'mvc/ui/ui-misc',\n 'mvc/ui/ui-portlet',\n 'mvc/form/form-repeat',\n 'mvc/form/form-input',\n 'mvc/form/form-parameters'],\n function(Utils, Table, Ui, Portlet, Repeat, InputElement, Parameters) {\n\n // create form view\n var View = Backbone.View.extend({\n // initialize\n initialize: function(app, options) {\n // link app\n this.app = app;\n\n // link inputs\n this.inputs = options.inputs;\n\n // fix table style\n options.cls = 'ui-table-plain';\n\n // add table class for tr tag\n // this assist in transforming the form into a json structure\n options.cls_tr = 'section-row';\n\n // create table\n this.table = new Table.View(options);\n\n // create parameter handler\n this.parameters = new Parameters(app, options);\n\n // configure portlet and form table\n this.setElement(this.table.$el);\n\n // render section\n this.render();\n },\n\n /** Render section view\n */\n render: function() {\n // reset table\n this.table.delAll();\n\n // load settings elements into table\n for (var i in this.inputs) {\n this.add(this.inputs[i]);\n }\n },\n\n /** Add a new input element\n */\n add: function(input) {\n // link this\n var self = this;\n\n // clone definition\n var input_def = jQuery.extend(true, {}, input);\n\n // create unique id\n input_def.id = input.id = Utils.uid();\n\n // add to sequential list of inputs\n this.app.input_list[input_def.id] = input_def;\n\n // identify field type\n var type = input_def.type;\n switch(type) {\n // conditional field\n case 'conditional':\n this._addConditional(input_def);\n break;\n // repeat block\n case 'repeat':\n this._addRepeat(input_def);\n break;\n // customized section\n case 'section':\n this._addSection(input_def);\n break;\n // default single element row\n default:\n this._addRow(input_def);\n }\n },\n\n /** Add a conditional block\n */\n _addConditional: function(input_def) {\n // link this\n var self = this;\n\n // copy identifier\n input_def.test_param.id = input_def.id;\n\n // build test parameter\n var field = this._addRow(input_def.test_param);\n\n // set onchange event for test parameter\n field.options.onchange = function(value) {\n // identify the selected case\n var selectedCase = self.app.data.matchCase(input_def, value);\n\n // check value in order to hide/show options\n for (var i in input_def.cases) {\n // get case\n var case_def = input_def.cases[i];\n\n // identify subsection name\n var section_id = input_def.id + '-section-' + i;\n\n // identify row\n var section_row = self.table.get(section_id);\n\n // check if non-hidden elements exist\n var nonhidden = false;\n for (var j in case_def.inputs) {\n if (!case_def.inputs[j].hidden) {\n nonhidden = true;\n break;\n }\n }\n\n // show/hide sub form\n if (i == selectedCase && nonhidden) {\n section_row.fadeIn('fast');\n } else {\n section_row.hide();\n }\n }\n\n // refresh form inputs\n self.app.trigger('change');\n };\n\n // add conditional sub sections\n for (var i in input_def.cases) {\n // create id tag\n var sub_section_id = input_def.id + '-section-' + i;\n\n // create sub section\n var sub_section = new View(this.app, {\n inputs : input_def.cases[i].inputs\n });\n\n // displays as grouped subsection\n sub_section.$el.addClass('ui-table-section');\n\n // create table row\n this.table.add(sub_section.$el);\n\n // append to table\n this.table.append(sub_section_id);\n }\n\n // trigger refresh on conditional input field after all input elements have been created\n field.trigger('change');\n },\n\n /** Add a repeat block\n */\n _addRepeat: function(input_def) {\n // link this\n var self = this;\n\n // block index\n var block_index = 0;\n\n // create repeat block element\n var repeat = new Repeat.View({\n title : input_def.title,\n title_new : input_def.title,\n min : input_def.min,\n max : input_def.max,\n onnew : function() {\n // create\n create(input_def.inputs);\n\n // trigger refresh\n self.app.trigger('change');\n }\n });\n\n // helper function to create new repeat blocks\n function create (inputs) {\n // create id tag\n var sub_section_id = input_def.id + '-section-' + (block_index++);\n\n // create sub section\n var sub_section = new View(self.app, {\n inputs : inputs\n });\n\n // add tab\n repeat.add({\n id : sub_section_id,\n $el : sub_section.$el,\n ondel : function() {\n // delete repeat block\n repeat.del(sub_section_id);\n\n // trigger refresh\n self.app.trigger('change');\n }\n });\n }\n\n //\n // add parsed/minimum number of repeat blocks\n //\n var n_min = input_def.min;\n var n_cache = _.size(input_def.cache);\n for (var i = 0; i < Math.max(n_cache, n_min); i++) {\n var inputs = null;\n if (i < n_cache) {\n inputs = input_def.cache[i];\n } else {\n inputs = input_def.inputs;\n }\n\n // create repeat block\n create(inputs);\n }\n\n // create input field wrapper\n var input_element = new InputElement(this.app, {\n label : input_def.title,\n help : input_def.help,\n field : repeat\n });\n\n // create table row\n this.table.add(input_element.$el);\n\n // append row to table\n this.table.append(input_def.id);\n },\n\n /** Add a customized section\n */\n _addSection: function(input_def) {\n // link this\n var self = this;\n\n // create sub section\n var sub_section = new View(self.app, {\n inputs : input_def.inputs\n });\n\n // delete button\n var button_visible = new Ui.ButtonIcon({\n icon : 'fa-eye-slash',\n tooltip : 'Show/hide section',\n cls : 'ui-button-icon-plain'\n });\n\n // create portlet for sub section\n var portlet = new Portlet.View({\n title : input_def.title,\n cls : 'ui-portlet-section',\n operations : {\n button_visible: button_visible\n }\n });\n portlet.append(sub_section.$el);\n portlet.append($('
').addClass('ui-table-form-info').html(input_def.help));\n\n // add event handler visibility button\n var visible = false;\n portlet.$content.hide();\n portlet.$header.css('cursor', 'pointer');\n portlet.$header.on('click', function() {\n if (visible) {\n visible = false;\n portlet.$content.hide();\n button_visible.setIcon('fa-eye-slash');\n } else {\n visible = true;\n portlet.$content.fadeIn('fast');\n button_visible.setIcon('fa-eye');\n }\n });\n\n // add expansion event handler\n this.app.on('expand', function(input_id) {\n (portlet.$el.find('#' + input_id).length > 0) && !visible && portlet.$header.trigger('click');\n });\n\n // show sub section if requested\n if (input_def.expanded) {\n portlet.$header.trigger('click');\n }\n\n // create table row\n this.table.add(portlet.$el);\n\n // append row to table\n this.table.append(input_def.id);\n },\n\n /** Add a single input field element\n */\n _addRow: function(input_def) {\n // get id\n var id = input_def.id;\n\n // create input field\n var field = this.parameters.create(input_def);\n\n // add to field list\n this.app.field_list[id] = field;\n\n // create input field wrapper\n var input_element = new InputElement(this.app, {\n name : input_def.name,\n label : input_def.label || input_def.name,\n value : input_def.value,\n default_value : input_def.default_value,\n collapsible : input_def.collapsible,\n collapsible_value : input_def.collapsible_value,\n help : input_def.help,\n argument : input_def.argument,\n field : field\n });\n\n // add to element list\n this.app.element_list[id] = input_element;\n\n // create table row\n this.table.add(input_element.$el);\n\n // append to table\n this.table.append(id);\n\n // hide row if neccessary\n if (input_def.hidden) {\n this.table.get(id).hide();\n }\n\n // return created field\n return field;\n }\n });\n\n return {\n View: View\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-section.js\n ** module id = 28\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils'], function(Utils) {\n\n/**\n * This class creates a ui table element.\n */\nvar View = Backbone.View.extend({\n // current row\n row: null,\n \n // count rows\n row_count: 0,\n \n // defaults options\n optionsDefault: {\n content : 'No content available.',\n onchange : null,\n ondblclick : null,\n onconfirm : null,\n cls : 'ui-table',\n cls_tr : ''\n },\n \n // events\n events : {\n 'click' : '_onclick',\n 'dblclick' : '_ondblclick'\n },\n \n // initialize\n initialize : function(options) {\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n \n // create new element\n var $el = $(this._template(this.options));\n \n // link sub-elements\n this.$thead = $el.find('thead');\n this.$tbody = $el.find('tbody');\n this.$tmessage = $el.find('tmessage');\n \n // set element\n this.setElement($el);\n \n // initialize row\n this.row = this._row();\n },\n \n // add header cell\n addHeader: function($el) {\n var wrapper = $('
' +\n '' +\n '' +\n '
' +\n '' + options.content + '' +\n '
';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-table.js\n ** module id = 29\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-table', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc'],\n function(Utils, Table, Portlet, Ui) {\n\n/** This class creates a ui component which enables the dynamic creation of portlets\n*/\nvar View = Backbone.View.extend({\n // default options\n optionsDefault : {\n title : 'Section',\n max : null,\n min : null\n },\n\n /** Initialize\n */\n initialize : function(options) {\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n\n // create new element\n this.setElement('
');\n\n // link this\n var self = this;\n\n // create button\n this.button_new = new Ui.ButtonIcon({\n icon : 'fa-plus',\n title : 'Insert ' + options.title_new,\n tooltip : 'Add new ' + options.title_new + ' block',\n floating: 'clear',\n onclick : function() {\n if (options.onnew) {\n options.onnew();\n }\n }\n });\n\n // create table\n this.table = new Table.View({\n cls : 'ui-table-plain',\n content : ''\n });\n\n // append button\n this.$el.append(this.table.$el);\n\n // add button\n this.$el.append($('
').append(this.button_new.$el));\n\n // clear list\n this.list = {};\n\n // number of available repeats\n this.n = 0;\n },\n\n /** Number of repeat blocks\n */\n size: function() {\n return this.n;\n },\n\n /** Add new repeat block\n */\n add: function(options) {\n // repeat block already exists\n if (!options.id || this.list[options.id]) {\n Galaxy.emit.debug('form-repeat::add()', 'Duplicate repeat block id.');\n return;\n }\n\n // increase repeat block counter\n this.n++;\n\n // delete button\n var button_delete = new Ui.ButtonIcon({\n icon : 'fa-trash-o',\n tooltip : 'Delete this repeat block',\n cls : 'ui-button-icon-plain',\n onclick : function() {\n if (options.ondel) {\n options.ondel();\n }\n }\n });\n\n // create portlet\n var portlet = new Portlet.View({\n id : options.id,\n title : 'placeholder',\n cls : 'ui-portlet-repeat',\n operations : {\n button_delete : button_delete\n }\n });\n\n // append content\n portlet.append(options.$el);\n\n // tag as section row\n portlet.$el.addClass('section-row');\n\n // append to dom\n this.list[options.id] = portlet;\n\n // append to dom\n this.table.add(portlet.$el);\n this.table.append('row_' + options.id, true);\n\n // validate maximum\n if (this.options.max > 0 && this.n >= this.options.max) {\n this.button_new.disable();\n }\n\n // refresh view\n this._refresh();\n },\n\n /** Delete repeat block\n */\n del: function(id) {\n // could not find element\n if (!this.list[id]) {\n Galaxy.emit.debug('form-repeat::del()', 'Invalid repeat block id.');\n return;\n }\n\n // decrease repeat block counter\n this.n--;\n\n // delete table row\n var table_row = this.table.get('row_' + id);\n table_row.remove();\n\n // remove from list\n delete this.list[id];\n\n // enable new button\n this.button_new.enable();\n\n // refresh delete button visibility\n this._refresh();\n },\n\n /** Refresh view\n */\n _refresh: function() {\n var index = 0;\n for (var id in this.list) {\n var portlet = this.list[id];\n portlet.title(++index + ': ' + this.options.title);\n if (this.n > this.options.min) {\n portlet.showOperation('button_delete');\n } else {\n portlet.hideOperation('button_delete');\n }\n }\n }\n});\n\nreturn {\n View : View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-repeat.js\n ** module id = 30\n ** module chunks = 0\n **/","/**\n This class creates a form input element wrapper\n*/\ndefine([], function() {\n return Backbone.View.extend({\n initialize: function(app, options) {\n // link app\n this.app = app;\n\n // set text labels and icons for optional button\n this.text_enable = app.options.text_enable || 'Enable';\n this.text_disable = app.options.text_disable || 'Disable';\n this.cls_enable = app.options.cls_enable || 'fa fa-caret-square-o-down';\n this.cls_disable = app.options.cls_disable || 'fa fa-caret-square-o-up';\n\n // link field\n this.field = options.field;\n this.default_value = options.default_value;\n\n // set element\n this.setElement(this._template(options));\n\n // link elements\n this.$field = this.$el.find('.ui-table-form-field');\n this.$optional = this.$el.find('.ui-table-form-optional');\n this.$optional_icon = this.$el.find('.ui-table-form-optional').find('.icon');\n this.$error_text = this.$el.find('.ui-table-form-error-text');\n this.$error = this.$el.find('.ui-table-form-error');\n\n // add field element\n this.$field.prepend(this.field.$el);\n\n // decide wether to expand or collapse optional fields\n this.field.collapsed = options.collapsible && options.value &&\n JSON.stringify(options.value) == JSON.stringify(options.collapsible_value);\n\n // refresh view\n this._refresh();\n\n // add optional hide/show\n var self = this;\n this.$optional.on('click', function() {\n // flip flag\n self.field.collapsed = !self.field.collapsed;\n\n // refresh view\n self._refresh();\n\n // refresh state\n self.app.trigger('change');\n });\n },\n\n /** Set error text\n */\n error: function(text) {\n this.$error_text.html(text);\n this.$error.show();\n this.$el.addClass('ui-error');\n },\n\n /** Reset this view\n */\n reset: function() {\n this.$error.hide();\n this.$el.removeClass('ui-error');\n },\n\n /** Refresh element\n */\n _refresh: function() {\n // reset optional button\n this.$optional_icon.removeClass().addClass('icon');\n\n // identify state\n if (!this.field.collapsed) {\n // enable input field\n this.$field.fadeIn('fast');\n this._tooltip(this.text_disable, this.cls_disable);\n this.app.trigger('change');\n } else {\n // disable input field\n this.$field.hide();\n this._tooltip(this.text_enable, this.cls_enable);\n this.field.value && this.field.value(this.default_value);\n }\n },\n\n /** Set tooltip text\n */\n _tooltip: function(title, cls) {\n if (this.$optional.length) {\n this.$optional_icon.addClass(cls)\n .tooltip({ placement: 'bottom' })\n .attr('data-original-title', title)\n .tooltip('fixTitle').tooltip('hide');\n }\n },\n\n /** Main Template\n */\n _template: function(options) {\n var tmp = '
' +\n '
' +\n '' +\n '
' +\n '
';\n if (options.collapsible) {\n tmp += '
' +\n '' + options.label +\n '
';\n } else {\n tmp += options.label;\n }\n tmp += '
' +\n '
';\n tmp += '
';\n if (options.help) {\n tmp += options.help;\n if (options.argument && options.help.indexOf('(' + options.argument + ')') == -1) {\n tmp += ' (' + options.argument + ')';\n }\n }\n tmp += '
';\n tmp += '
' +\n '
';\n return tmp;\n }\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-input.js\n ** module id = 31\n ** module chunks = 0\n **/","/**\n This class creates input elements. New input parameter types should be added to the types dictionary.\n*/\ndefine(['utils/utils',\n 'mvc/ui/ui-misc',\n 'mvc/form/form-select-content',\n 'mvc/ui/ui-select-library',\n 'mvc/ui/ui-select-ftp',\n 'mvc/ui/ui-color-picker'],\n function(Utils, Ui, SelectContent, SelectLibrary, SelectFtp, ColorPicker) {\n\n // create form view\n return Backbone.Model.extend({\n /** Available parameter types */\n types: {\n 'text' : '_fieldText',\n 'select' : '_fieldSelect',\n 'data_column' : '_fieldSelect',\n 'genomebuild' : '_fieldSelect',\n 'data' : '_fieldData',\n 'data_collection' : '_fieldData',\n 'integer' : '_fieldSlider',\n 'float' : '_fieldSlider',\n 'boolean' : '_fieldBoolean',\n 'drill_down' : '_fieldDrilldown',\n 'color' : '_fieldColor',\n 'hidden' : '_fieldHidden',\n 'hidden_data' : '_fieldHidden',\n 'baseurl' : '_fieldHidden',\n 'library_data' : '_fieldLibrary',\n 'ftpfile' : '_fieldFtp'\n },\n\n // initialize\n initialize: function(app, options) {\n this.app = app;\n },\n\n /** Returns an input field for a given field type\n */\n create: function(input_def) {\n // add regular/default value if missing\n if (input_def.value === undefined) {\n input_def.value = null;\n }\n if (input_def.default_value === undefined) {\n input_def.default_value = input_def.value;\n }\n\n // field wrapper\n var field = null;\n\n // get field class\n var fieldClass = this.types[input_def.type];\n if (fieldClass && typeof(this[fieldClass]) === 'function') {\n field = this[fieldClass].call(this, input_def);\n }\n\n // identify field type\n if (!field) {\n // flag\n this.app.incompatible = true;\n\n // with or without options\n if (input_def.options) {\n // assign select field\n field = this._fieldSelect(input_def);\n } else {\n // assign text field\n field = this._fieldText(input_def);\n }\n\n // log\n Galaxy.emit.debug('form-parameters::_addRow()', 'Auto matched field type (' + input_def.type + ').');\n }\n\n // set field value\n if (input_def.value !== undefined) {\n field.value(input_def.value);\n }\n\n // return field element\n return field;\n },\n\n /** Data input field\n */\n _fieldData: function(input_def) {\n if (this.app.options.is_workflow) {\n input_def.info = 'Data input \\'' + input_def.name + '\\' (' + Utils.textify(input_def.extensions.toString()) + ')';\n input_def.value = null;\n return this._fieldHidden(input_def);\n }\n var self = this;\n return new SelectContent.View(this.app, {\n id : 'field-' + input_def.id,\n extensions : input_def.extensions,\n optional : input_def.optional,\n multiple : input_def.multiple,\n type : input_def.type,\n data : input_def.options,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Select/Checkbox/Radio options field\n */\n _fieldSelect: function (input_def) {\n // show text field in if dynamic fields are disabled e.g. in workflow editor\n if (input_def.options.length == 0 && this.app.options.is_workflow) {\n return this._fieldText(input_def);\n }\n\n // customize properties\n if (input_def.type == 'data_column') {\n input_def.error_text = 'Missing columns in referenced dataset.'\n }\n\n // configure options fields\n var options = [];\n for (var i in input_def.options) {\n var option = input_def.options[i];\n options.push({\n label: option[0],\n value: option[1]\n });\n }\n\n // identify display type\n var SelectClass = Ui.Select;\n switch (input_def.display) {\n case 'checkboxes':\n SelectClass = Ui.Checkbox;\n break;\n case 'radio':\n SelectClass = Ui.Radio;\n break;\n }\n\n // select field\n var self = this;\n return new SelectClass.View({\n id : 'field-' + input_def.id,\n data : options,\n error_text : input_def.error_text || 'No options available',\n optional : input_def.optional && input_def.default_value === null,\n multiple : input_def.multiple,\n optional : input_def.optional,\n searchable : input_def.searchable,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Drill down options field\n */\n _fieldDrilldown: function (input_def) {\n // show text field in if dynamic fields are disabled e.g. in workflow editor\n if (input_def.options.length == 0 && this.app.options.is_workflow) {\n return this._fieldText(input_def);\n }\n\n // create drill down field\n var self = this;\n return new Ui.Drilldown.View({\n id : 'field-' + input_def.id,\n data : input_def.options,\n display : input_def.display,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Text input field\n */\n _fieldText: function(input_def) {\n // field replaces e.g. a select field\n if (input_def.options) {\n // show text area if selecting multiple entries is allowed\n input_def.area = input_def.multiple;\n\n // validate value\n if (!Utils.validate(input_def.value)) {\n input_def.value = '';\n } else {\n if ($.isArray(input_def.value)) {\n var str_value = '';\n for (var i in input_def.value) {\n str_value += String(input_def.value[i]);\n if (!input_def.multiple) {\n break;\n }\n str_value += '\\n';\n }\n input_def.value = str_value;\n }\n }\n }\n\n // create input element\n var self = this;\n return new Ui.Input({\n id : 'field-' + input_def.id,\n area : input_def.area,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Slider field\n */\n _fieldSlider: function(input_def) {\n var self = this;\n return new Ui.Slider.View({\n id : 'field-' + input_def.id,\n precise : input_def.type == 'float',\n min : input_def.min,\n max : input_def.max,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Hidden field\n */\n _fieldHidden: function(input_def) {\n return new Ui.Hidden({\n id : 'field-' + input_def.id,\n info : input_def.info\n });\n },\n\n /** Boolean field\n */\n _fieldBoolean: function(input_def) {\n var self = this;\n return new Ui.RadioButton.View({\n id : 'field-' + input_def.id,\n data : [ { label : 'Yes', value : 'true' },\n { label : 'No', value : 'false' }],\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Color picker field\n */\n _fieldColor: function(input_def) {\n var self = this;\n return new ColorPicker({\n id : 'field-' + input_def.id,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Library dataset field\n */\n _fieldLibrary: function(input_def) {\n var self = this;\n return new SelectLibrary.View({\n id : 'field-' + input_def.id,\n optional : input_def.optional,\n multiple : input_def.multiple,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** FTP file field\n */\n _fieldFtp: function(input_def) {\n var self = this;\n return new SelectFtp.View({\n id : 'field-' + input_def.id,\n optional : input_def.optional,\n multiple : input_def.multiple,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n }\n });\n\n return {\n View: View\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-parameters.js\n ** module id = 32\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-misc', 'mvc/ui/ui-tabs', 'mvc/tool/tools-template'],\n function(Utils, Ui, Tabs, ToolTemplate) {\n\n// hda/hdca content selector ui element\nvar View = Backbone.View.extend({\n // initialize\n initialize : function(app, options) {\n // link app and options\n this.app = app;\n this.options = options;\n\n // track current history elements\n this.history = {};\n\n\n // link this\n var self = this;\n\n // add element\n this.setElement('
');\n\n // list of select fieldsFormSection\n this.list = {};\n\n // radio button options\n var radio_buttons = [];\n\n // identify selector type\n if (options.type == 'data_collection') {\n this.mode = 'collection';\n } else {\n if (options.multiple) {\n this.mode = 'multiple';\n } else {\n this.mode = 'single';\n }\n }\n\n // set initial state\n this.current = this.mode;\n this.list = {};\n\n // error messages\n var extensions = Utils.textify(options.extensions);\n var hda_error = 'No dataset available.';\n if (extensions) {\n hda_error = 'No ' + extensions + ' dataset available.';\n }\n var hdca_error = 'No dataset list available.';\n if (extensions) {\n hdca_error = 'No ' + extensions + ' dataset collection available.';\n }\n\n // add single dataset selector\n if (this.mode == 'single') {\n radio_buttons.push({\n icon : 'fa-file-o',\n value : 'single',\n tooltip : 'Single dataset'\n });\n this.select_single = new Ui.Select.View({\n optional : options.optional,\n error_text : hda_error,\n onchange : function() {\n self.trigger('change');\n }\n });\n this.list['single'] = {\n field: this.select_single,\n type : 'hda'\n };\n }\n\n // add multiple dataset selector\n if (this.mode == 'single' || this.mode == 'multiple') {\n radio_buttons.push({\n icon : 'fa-files-o',\n value : 'multiple',\n tooltip : 'Multiple datasets'\n });\n this.select_multiple = new Ui.Select.View({\n multiple : true,\n searchable : false,\n optional : options.optional,\n error_text : hda_error,\n onchange : function() {\n self.trigger('change');\n }\n });\n this.list['multiple'] = {\n field: this.select_multiple,\n type : 'hda'\n };\n }\n\n // add collection selector\n if (this.mode == 'single' || this.mode == 'multiple' || this.mode == 'collection') {\n radio_buttons.push({\n icon : 'fa-folder-o',\n value : 'collection',\n tooltip : 'Dataset collection'\n });\n this.select_collection = new Ui.Select.View({\n error_text : hdca_error,\n optional : options.optional,\n onchange : function() {\n self.trigger('change');\n }\n });\n this.list['collection'] = {\n field: this.select_collection,\n type : 'hdca'\n };\n }\n\n // create button\n this.button_type = new Ui.RadioButton.View({\n value : this.current,\n data : radio_buttons,\n onchange: function(value) {\n self.current = value;\n self.refresh();\n self.trigger('change');\n }\n });\n\n // add batch mode information\n this.$batch = $(this.template_batch());\n\n // number of radio buttons\n var n_buttons = _.size(this.list);\n\n // add button to dom\n var button_width = 0;\n if (n_buttons > 1) {\n this.$el.append(this.button_type.$el);\n button_width = Math.max(0, _.size(this.list) * 35) + 'px';\n }\n\n // append field elements\n for (var i in this.list) {\n this.$el.append(this.list[i].field.$el.css({\n 'margin-left': button_width\n }));\n }\n\n // append batch message\n this.$el.append(this.$batch.css({\n 'margin-left': button_width\n }));\n\n // update options\n this.update(options.data);\n\n // set initial value\n if (this.options.value !== undefined) {\n this.value(this.options.value);\n }\n\n // refresh view\n this.refresh();\n\n // add change event. fires on trigger\n this.on('change', function() {\n if (options.onchange) {\n options.onchange(self.value());\n }\n });\n },\n\n /** Indicate that select fields are being updated */\n wait: function() {\n for (var i in this.list) {\n this.list[i].field.wait();\n }\n },\n\n /** Indicate that the options update has been completed */\n unwait: function() {\n for (var i in this.list) {\n this.list[i].field.unwait();\n }\n },\n\n /** Update content selector */\n update: function(options) {\n // update a particular select field\n var self = this;\n function _update(field, options) {\n if (field) {\n // identify available options\n var select_options = [];\n for (var i in options) {\n var item = options[i];\n select_options.push({\n label: item.hid + ': ' + item.name,\n value: item.id\n });\n // backup to local history\n self.history[item.id + '_' + item.src] = item;\n }\n // update field\n field.update(select_options);\n }\n }\n\n // update available options\n _update(this.select_single, options.hda);\n _update(this.select_multiple, options.hda);\n _update(this.select_collection, options.hdca);\n },\n\n /** Return the currently selected dataset values */\n value : function (new_value) {\n // update current value\n if (new_value !== undefined) {\n if (new_value && new_value.values) {\n try {\n // create list with values\n var list = [];\n for (var i in new_value.values) {\n list.push(new_value.values[i].id);\n }\n\n // identify suitable select field\n if (new_value && new_value.values.length > 0 && new_value.values[0].src == 'hdca') {\n this.current = 'collection';\n this.select_collection.value(list[0]);\n } else {\n if (this.mode == 'multiple') {\n this.current = 'multiple';\n this.select_multiple.value(list);\n } else {\n this.current = 'single';\n this.select_single.value(list[0]);\n }\n }\n } catch (err) {\n Galaxy.emit.debug('tools-select-content::value()', 'Skipped.');\n }\n } else {\n for (var i in this.list) {\n this.list[i].field.value(null);\n }\n }\n }\n\n // refresh view\n this.refresh();\n\n // validate value\n var id_list = this._select().value();\n if (id_list === null) {\n return null;\n }\n\n // transform into an array\n if (!(id_list instanceof Array)) {\n id_list = [id_list];\n }\n\n // check if value exists\n if (id_list.length === 0) {\n return null;\n }\n\n // prepare result dict\n var result = {\n batch : this._batch(),\n values : []\n }\n\n // append to dataset ids\n for (var i in id_list) {\n var details = this.history[id_list[i] + '_' + this.list[this.current].type];\n if (details) {\n result.values.push(details);\n } else {\n return null;\n }\n }\n\n // sort by history ids\n result.values.sort(function(a, b){\n return a.hid - b.hid;\n });\n\n // return\n return result;\n },\n\n /** Refreshes data selection view */\n refresh: function() {\n this.button_type.value(this.current);\n for (var i in this.list) {\n var $el = this.list[i].field.$el;\n if (this.current == i) {\n $el.show();\n } else {\n $el.hide();\n }\n }\n if (this._batch()) {\n this.$batch.show();\n } else {\n this.$batch.hide();\n }\n },\n\n /** Assists in selecting the current field */\n _select: function() {\n return this.list[this.current].field;\n },\n\n /** Assists in identifying the batch mode */\n _batch: function() {\n if (this.current == 'collection') {\n var hdca = this.history[this._select().value() + '_hdca'];\n if (hdca && hdca.map_over_type) {\n return true;\n }\n }\n if (this.current != 'single') {\n if (this.mode == 'single') {\n return true;\n }\n }\n return false;\n },\n\n /** Batch message template */\n template_batch: function() {\n return '
' +\n '' +\n 'This is a batch mode input field. A separate job will be triggered for each dataset.' +\n '
';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-select-content.js\n ** module id = 33\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils'], function(Utils) {\n\n// return\nvar View = Backbone.View.extend({\n // defaults options\n optionsDefault: {\n title_new : '',\n operations : null,\n onnew : null,\n max : null,\n onchange : null\n },\n \n // initialize\n initialize : function(options) {\n // configure\n this.visible = false;\n this.$nav = null;\n this.$content = null;\n this.first_tab = null;\n this.current_id = null;\n \n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n \n // create tabs\n var $tabs = $(this._template(this.options));\n \n // link elements\n this.$nav = $tabs.find('.tab-navigation');\n this.$content = $tabs.find('.tab-content');\n \n // create new element\n this.setElement($tabs);\n \n // clear list\n this.list = {};\n \n // link this\n var self = this;\n \n // append operations\n if (this.options.operations) {\n $.each(this.options.operations, function(name, item) {\n item.$el.prop('id', name);\n self.$nav.find('.operations').append(item.$el);\n });\n }\n \n // add built-in add-new-tab tab\n if (this.options.onnew) {\n // create tab object\n var $tab_new = $(this._template_tab_new(this.options));\n \n // append to navbar\n this.$nav.append($tab_new);\n \n // add tooltip\n $tab_new.tooltip({title: 'Add a new tab', placement: 'bottom', container: self.$el});\n \n // link click event\n $tab_new.on('click', function(e) {\n $tab_new.tooltip('hide');\n self.options.onnew();\n });\n }\n },\n \n // size\n size: function() {\n return _.size(this.list);\n },\n \n // front\n current: function() {\n return this.$el.find('.tab-pane.active').attr('id');\n },\n \n // append\n add: function(options) {\n // self\n var self = this;\n \n // get tab id\n var id = options.id;\n\n // create tab object\n var $tab_title = $(this._template_tab(options));\n var $tab_content = $(this._template_tab_content(options));\n \n // add to list\n this.list[id] = options.ondel ? true : false;\n \n // add a new tab either before the add-new-tab tab or behind the last tab\n if (this.options.onnew) {\n this.$nav.find('#new-tab').before($tab_title);\n } else {\n this.$nav.append($tab_title);\n }\n \n // add content\n $tab_content.append(options.$el);\n this.$content.append($tab_content);\n \n // activate this tab if this is the first tab\n if (this.size() == 1) {\n $tab_title.addClass('active');\n $tab_content.addClass('active');\n this.first_tab = id;\n }\n \n // hide add tab\n if (this.options.max && this.size() >= this.options.max) {\n this.$el.find('#new-tab').hide();\n }\n \n // add click event to remove tab\n if (options.ondel) {\n var $del_icon = $tab_title.find('#delete');\n $del_icon.tooltip({title: 'Delete this tab', placement: 'bottom', container: self.$el});\n $del_icon.on('click', function() {\n $del_icon.tooltip('destroy');\n self.$el.find('.tooltip').remove();\n options.ondel();\n return false;\n });\n }\n \n // add custom click event handler\n $tab_title.on('click', function(e) {\n // prevent default\n e.preventDefault();\n \n // click\n if (options.onclick) {\n options.onclick();\n } else {\n self.show(id);\n }\n });\n \n // initialize current id\n if (!this.current_id) {\n this.current_id = id;\n }\n },\n \n // delete tab\n del: function(id) {\n // delete tab from dom\n this.$el.find('#tab-' + id).remove();\n this.$el.find('#' + id).remove();\n \n // check if first tab has been deleted\n if (this.first_tab == id) {\n this.first_tab = null;\n }\n \n // show first tab\n if (this.first_tab != null) {\n this.show(this.first_tab);\n }\n \n // delete from list\n if (this.list[id]) {\n delete this.list[id];\n }\n \n // show add tab\n if (this.size() < this.options.max) {\n this.$el.find('#new-tab').show();\n }\n },\n \n // delete tab\n delRemovable: function() {\n for (var id in this.list) {\n this.del(id);\n }\n },\n \n // show\n show: function(id){\n // show tab view\n this.$el.fadeIn('fast');\n this.visible = true;\n \n // show selected tab\n if (id) {\n // reassign active class\n this.$el.find('#tab-' + this.current_id).removeClass('active');\n this.$el.find('#' + this.current_id).removeClass('active');\n this.$el.find('#tab-' + id).addClass('active');\n this.$el.find('#' + id).addClass('active');\n \n // update current id\n this.current_id = id;\n }\n \n // change\n if (this.options.onchange) {\n this.options.onchange(id);\n }\n },\n \n // hide\n hide: function(){\n this.$el.fadeOut('fast');\n this.visible = false;\n },\n\n // hide operation\n hideOperation: function(id) {\n this.$nav.find('#' + id).hide();\n },\n\n // show operation\n showOperation: function(id) {\n this.$nav.find('#' + id).show();\n },\n \n // set operation\n setOperation: function(id, callback) {\n var $el = this.$nav.find('#' + id);\n $el.off('click');\n $el.on('click', callback);\n },\n \n // title\n title: function(id, new_title) {\n var $el = this.$el.find('#tab-title-text-' + id);\n if (new_title) {\n $el.html(new_title);\n }\n return $el.html();\n },\n \n // retitle\n retitle: function(new_title) {\n var index = 0;\n for (var id in this.list) {\n this.title(id, ++index + ': ' + new_title);\n }\n },\n \n // fill template\n _template: function(options) {\n return '
' +\n '
    ' +\n '
    ' +\n '
'+\n '
' +\n '
';\n },\n \n // fill template tab\n _template_tab_new: function(options) {\n return '
  • ' +\n '' +\n '' +\n options.title_new +\n '' +\n '
  • ';\n },\n \n // fill template tab\n _template_tab: function(options) {\n var tmpl = '
  • ' +\n '' +\n '' + options.title + '';\n \n if (options.ondel) {\n tmpl += '';\n }\n \n tmpl += '' +\n '
  • ';\n \n return tmpl;\n },\n \n // fill template tab content\n _template_tab_content: function(options) {\n return '
    ';\n }\n});\n\nreturn {\n View : View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-tabs.js\n ** module id = 34\n ** module chunks = 0\n **/","// dependencies\ndefine([], function() {\n\n// tool form templates\nreturn {\n help: function(options) {\n var $tmpl = $('
    ')\n .append( $('
    ').append(options.help) );\n $tmpl.find('a').attr('target', '_blank');\n return $tmpl;\n },\n\n success: function(response) {\n // check\n if (!response.jobs || !response.jobs.length) {\n return this.error(response);\n }\n\n // number of jobs\n var njobs = response.jobs.length;\n\n // job count info text\n var njobs_text = '';\n if (njobs == 1) {\n njobs_text = '1 job has';\n } else {\n njobs_text = njobs + ' jobs have';\n }\n\n // create template string\n var tmpl = '
    ' +\n '

    ' + njobs_text + ' been successfully added to the queue - resulting in the following datasets:

    ';\n for (var i in response.outputs) {\n tmpl += '

    ' + response.outputs[i].hid + ': ' + response.outputs[i].name + '

    ';\n }\n tmpl += '

    You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from \\'running\\' to \\'finished\\' if completed successfully or \\'error\\' if problems were encountered.

    ' +\n '
    ';\n\n // return success message element\n return tmpl;\n },\n\n error: function(response) {\n return '
    ' +\n '

    ' +\n 'The server could not complete the request. Please contact the Galaxy Team if this error persists.' +\n '

    ' +\n '' +\n '
    ';\n },\n\n requirements: function(options) {\n var requirements_message = 'This tool requires ';\n for (var i in options.requirements) {\n var req = options.requirements[i];\n requirements_message += req.name;\n if (req.version) {\n requirements_message += ' (Version ' + req.version + ')';\n }\n if (i < options.requirements.length - 2) {\n requirements_message += ', ';\n }\n if (i == options.requirements.length - 2) {\n requirements_message += ' and ';\n }\n }\n return requirements_message + '. Click here for more information.';\n }\n};\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/tool/tools-template.js\n ** module id = 35\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-misc', 'mvc/ui/ui-table', 'mvc/ui/ui-list'],\n function(Utils, Ui, Table, List) {\n\n// collection of libraries\nvar Libraries = Backbone.Collection.extend({\n url: Galaxy.root + 'api/libraries?deleted=false'\n});\n\n// collection of dataset\nvar LibraryDatasets = Backbone.Collection.extend({\n initialize: function() {\n var self = this;\n this.config = new Backbone.Model({ library_id: null });\n this.config.on('change', function() {\n self.fetch({ reset: true });\n });\n },\n url: function() {\n return Galaxy.root + 'api/libraries/' + this.config.get('library_id') + '/contents';\n }\n});\n\n// hda/hdca content selector ui element\nvar View = Backbone.View.extend({\n // initialize\n initialize : function(options) {\n // link this\n var self = this;\n\n // collections\n this.libraries = new Libraries();\n this.datasets = new LibraryDatasets();\n\n // link app and options\n this.options = options;\n\n // select field for the library\n // TODO: Remove this once the library API supports searching for library datasets\n this.library_select = new Ui.Select.View({\n onchange : function(value) {\n self.datasets.config.set('library_id', value);\n }\n });\n\n // create ui-list view to keep track of selected data libraries\n this.dataset_list = new List.View({\n name : 'dataset',\n optional : options.optional,\n multiple : options.multiple,\n onchange : function() {\n self.trigger('change');\n }\n });\n\n // add reset handler for fetched libraries\n this.libraries.on('reset', function() {\n var data = [];\n self.libraries.each(function(model) {\n data.push({\n value : model.id,\n label : model.get('name')\n });\n });\n self.library_select.update(data);\n });\n\n // add reset handler for fetched library datasets\n this.datasets.on('reset', function() {\n var data = [];\n var library_current = self.library_select.text();\n if (library_current !== null) {\n self.datasets.each(function(model) {\n if (model.get('type') === 'file') {\n data.push({\n value : model.id,\n label : model.get('name')\n });\n }\n });\n }\n self.dataset_list.update(data);\n });\n\n // add change event. fires on trigger\n this.on('change', function() {\n options.onchange && options.onchange(self.value());\n });\n\n // create elements\n this.setElement(this._template());\n this.$('.library-select').append(this.library_select.$el);\n this.$el.append(this.dataset_list.$el);\n\n // initial fetch of libraries\n this.libraries.fetch({\n reset: true,\n success: function() {\n self.library_select.trigger('change');\n if (self.options.value !== undefined) {\n self.value(self.options.value);\n }\n }\n });\n },\n\n /** Return/Set currently selected library datasets */\n value: function(val) {\n return this.dataset_list.value(val);\n },\n\n /** Template */\n _template: function() {\n return '
    ' +\n '
    ' +\n 'Select Library' +\n '' +\n '
    ' +\n '
    ';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-select-library.js\n ** module id = 36\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc'], function(Utils, Portlet, Ui) {\n\n// ui list element\nvar View = Backbone.View.extend({\n // create portlet to keep track of selected list elements\n initialize : function(options) {\n // link this\n var self = this;\n\n // initialize options\n this.options = options;\n this.name = options.name || 'element';\n this.multiple = options.multiple || false;\n\n // create message handler\n this.message = new Ui.Message({ cls: 'ui-margin-top' });\n\n // create portlet\n this.portlet = new Portlet.View({ cls: 'ui-portlet-section' });\n\n // create select field containing the options which can be inserted into the list\n this.select = new Ui.Select.View({ optional : options.optional });\n\n // create insert new list element button\n this.button = new Ui.ButtonIcon({\n icon : 'fa fa-sign-in',\n floating : 'left',\n tooltip : 'Insert new ' + this.name,\n onclick : function() {\n self.add({\n id : self.select.value(),\n name : self.select.text()\n });\n }\n });\n\n // build main element\n this.setElement(this._template(options));\n this.$('.ui-list-message').append(this.message.$el);\n this.$('.ui-list-portlet').append(this.portlet.$el);\n this.$('.ui-list-button').append(this.button.$el);\n this.$('.ui-list-select').append(this.select.$el);\n },\n\n /** Return/Set currently selected list elements */\n value: function(val) {\n // set new value\n if (val !== undefined) {\n this.portlet.empty();\n if ($.isArray(val)) {\n for (var i in val) {\n var v = val[i];\n var v_id = null;\n var v_name = null;\n if ($.type(v) != 'string') {\n v_id = v.id;\n v_name = v.name;\n } else {\n v_id = v_name = v;\n }\n if (v_id != null) {\n this.add({\n id : v_id,\n name : v_name\n });\n }\n }\n }\n this._refresh();\n }\n // get current value\n var lst = [];\n this.$('.ui-list-id').each(function() {\n lst.push({\n id : $(this).prop('id'),\n name : $(this).find('.ui-list-name').html()\n });\n });\n if (lst.length == 0) {\n return null;\n }\n return lst;\n },\n\n /** Add row */\n add: function(options) {\n var self = this;\n if (this.$('[id=\"' + options.id + '\"]').length === 0) {\n if (Utils.validate(options.id)) {\n var $el = $(this._templateRow({\n id : options.id,\n name : options.name\n }));\n $el.on('click', function() {\n $el.remove();\n self._refresh();\n });\n $el.on('mouseover', function() {\n $el.addClass('portlet-highlight');\n });\n $el.on('mouseout', function() {\n $el.removeClass('portlet-highlight');\n });\n this.portlet.append($el);\n this._refresh();\n } else {\n this.message.update({ message: 'Please select a valid ' + this.name + '.', status: 'danger' });\n }\n } else {\n this.message.update({ message: 'This ' + this.name + ' is already in the list.' });\n }\n },\n\n /** Update available options */\n update: function(options) {\n this.select.update(options);\n },\n\n /** Refresh view */\n _refresh: function() {\n if (this.$('.ui-list-id').length > 0) {\n !this.multiple && this.button.disable();\n this.$('.ui-list-portlet').show();\n } else {\n this.button.enable();\n this.$('.ui-list-portlet').hide();\n }\n this.options.onchange && this.options.onchange();\n },\n\n /** Main Template */\n _template: function(options) {\n return '
    ' +\n '
    ' +\n '' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n },\n\n /** Row Template */\n _templateRow: function(options) {\n return '
    ' +\n '' +\n '' + options.name + '' +\n '
    ';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-list.js\n ** module id = 37\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-list'],\n function(Utils, List) {\n\n/**\n * FTP file selector\n */\nvar View = Backbone.View.extend({\n // initialize\n initialize : function(options) {\n // link this\n var self = this;\n\n // create ui-list view to keep track of selected ftp files\n this.ftpfile_list = new List.View({\n name : 'file',\n optional : options.optional,\n multiple : options.multiple,\n onchange : function() {\n options.onchange && options.onchange(self.value());\n }\n });\n\n // create elements\n this.setElement(this.ftpfile_list.$el);\n\n // initial fetch of ftps\n Utils.get({\n url : Galaxy.root + 'api/remote_files',\n success : function(response) {\n var data = [];\n for (var i in response) {\n data.push({\n value : response[i]['path'],\n label : response[i]['path']\n });\n }\n self.ftpfile_list.update(data);\n }\n });\n },\n\n /** Return/Set currently selected ftp datasets */\n value: function(val) {\n return this.ftpfile_list.value(val);\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-select-ftp.js\n ** module id = 38\n ** module chunks = 0\n **/","/** Renders the color picker used e.g. in the tool form **/\ndefine(['utils/utils'], function( Utils ) {\n return Backbone.View.extend({\n colors: {\n standard: ['c00000','ff0000','ffc000','ffff00','92d050','00b050','00b0f0','0070c0','002060','7030a0'],\n base : ['ffffff','000000','eeece1','1f497d','4f81bd','c0504d','9bbb59','8064a2','4bacc6','f79646'],\n theme :[['f2f2f2','7f7f7f','ddd9c3','c6d9f0','dbe5f1','f2dcdb','ebf1dd','e5e0ec','dbeef3','fdeada'],\n ['d8d8d8','595959','c4bd97','8db3e2','b8cce4','e5b9b7','d7e3bc','ccc1d9','b7dde8','fbd5b5'],\n ['bfbfbf','3f3f3f','938953','548dd4','95b3d7','d99694','c3d69b','b2a2c7','92cddc','fac08f'],\n ['a5a5a5','262626','494429','17365d','366092','953734','76923c','5f497a','31859b','e36c09'],\n ['7f7f7e','0c0c0c','1d1b10','0f243e','244061','632423','4f6128','3f3151','205867','974806']]\n },\n initialize : function( options ) {\n this.options = Utils.merge( options, {} );\n this.setElement( this._template() );\n\n // link components\n this.$panel = this.$( '.ui-color-picker-panel' );\n this.$view = this.$( '.ui-color-picker-view' );\n this.$value = this.$( '.ui-color-picker-value' );\n this.$header = this.$( '.ui-color-picker-header' );\n\n // build panel\n this._build();\n\n // hide panel on start up\n this.visible = false;\n\n // set initial value\n this.value( this.options.value );\n\n // link boxes\n this.$boxes = this.$( '.ui-color-picker-box' );\n\n // add event handler\n var self = this;\n this.$boxes.on( 'click', function() {\n self.value( $( this ).css( 'background-color' ) );\n self.$header.trigger( 'click' );\n } );\n this.$header.on( 'click', function() {\n self.visible = !self.visible;\n if ( self.visible ) {\n self.$view.fadeIn( 'fast' );\n } else {\n self.$view.fadeOut( 'fast' );\n }\n } );\n },\n\n // value\n value : function ( new_val ) {\n if ( new_val !== undefined && new_val !== null ) {\n // update color value\n this.$value.css( 'background-color', new_val );\n \n // check selected color in panel\n this.$( '.ui-color-picker-box' ).empty();\n this.$( this._getValue() ).html( this._templateCheck() );\n\n // trigger custom event\n this.options.onchange && this.options.onchange( new_val );\n }\n\n // return current value\n return this._getValue();\n },\n\n // get value from dom\n _getValue: function() {\n var rgb = this.$value.css( 'background-color' );\n rgb = rgb.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n if ( rgb ) {\n function hex( x ) {\n return ( '0' + parseInt( x ).toString( 16 ) ).slice( -2 );\n }\n return '#' + hex( rgb[ 1] ) + hex( rgb[ 2 ] ) + hex( rgb[ 3 ] );\n } else {\n return null;\n }\n },\n\n // build panel\n _build: function() {\n var $content = this._content({\n label : 'Theme Colors',\n colors : this.colors.base,\n padding : 10\n });\n for ( var i in this.colors.theme ) {\n var line_def = {};\n if ( i == 0 ) {\n line_def[ 'bottom' ] = true;\n } else {\n if ( i != this.colors.theme.length - 1 ) {\n line_def[ 'top' ] = true;\n line_def[ 'bottom' ] = true;\n } else {\n line_def[ 'top' ] = true;\n line_def[ 'padding' ] = 5;\n }\n }\n line_def[ 'colors' ] = this.colors.theme[ i ];\n this._content( line_def );\n }\n this._content({\n label : 'Standard Colors',\n colors : this.colors.standard,\n padding : 5\n });\n },\n\n // create content\n _content: function( options ) {\n // get parameters\n var label = options.label;\n var colors = options.colors;\n var padding = options.padding;\n var top = options.top;\n var bottom = options.bottom;\n\n // create lines\n var $content = $( this._templateContent() );\n\n // set label\n var $label = $content.find( '.label' );\n if ( options.label ) {\n $label.html( options.label );\n } else {\n $label.hide();\n }\n\n // build line\n var $line = $content.find( '.line' );\n this.$panel.append( $content );\n for ( var i in colors ) {\n var $box = $( this._templateBox( colors[ i ] ) );\n if ( top ) {\n $box.css( 'border-top', 'none' );\n $box.css( 'border-top-left-radius', '0px' );\n $box.css( 'border-top-right-radius', '0px' );\n }\n if ( bottom ) {\n $box.css( 'border-bottom', 'none' );\n $box.css( 'border-bottom-left-radius', '0px' );\n $box.css( 'border-bottom-right-radius', '0px' );\n }\n $line.append( $box );\n }\n if (padding) {\n $line.css( 'padding-bottom', padding );\n }\n return $content;\n },\n\n // check icon\n _templateCheck: function() {\n return '
    ';\n },\n\n // content template\n _templateContent: function() {\n return '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n },\n\n // box template\n _templateBox: function( color ) {\n return '
    ';\n },\n\n // template\n _template: function() {\n return '
    ' +\n '
    ' +\n '
    ' +\n '
    Select a color
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    '\n '
    ';\n }\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-color-picker.js\n ** module id = 39\n ** module chunks = 0\n **/","/*\n This class maps the form dom to an api compatible javascript dictionary.\n*/\ndefine(['utils/utils'], function(Utils) {\nreturn Backbone.Model.extend({\n // initialize\n initialize: function(app) {\n this.app = app;\n },\n\n /** Creates a checksum.\n */\n checksum: function() {\n var sum = '';\n var self = this;\n this.app.section.$el.find('.section-row').each(function() {\n var id = $(this).attr('id');\n var field = self.app.field_list[id];\n if (field) {\n sum += id + ':' + JSON.stringify(field.value && field.value()) + ':' + field.collapsed + ';';\n }\n });\n return sum;\n },\n\n /** Convert dom into dictionary.\n */\n create: function() {\n // link this\n var self = this;\n\n // get raw dictionary from dom\n var dict = {};\n this._iterate(this.app.section.$el, dict);\n\n // add to result dictionary\n var result_dict = {};\n this.map_dict = {};\n function add(job_input_id, input_id, input_value) {\n self.map_dict[job_input_id] = input_id;\n result_dict[job_input_id] = input_value;\n };\n\n // converter between raw dictionary and job dictionary\n function convert(identifier, head) {\n for (var index in head) {\n var node = head[index];\n if (node.input) {\n // get node\n var input = node.input;\n\n // create identifier\n var job_input_id = identifier;\n if (identifier != '') {\n job_input_id += '|';\n }\n job_input_id += input.name;\n\n // process input type\n switch (input.type) {\n // handle repeats\n case 'repeat':\n // section identifier\n var section_label = 'section-';\n\n // collect repeat block identifiers\n var block_indices = [];\n var block_prefix = null;\n for (var block_label in node) {\n var pos = block_label.indexOf(section_label);\n if (pos != -1) {\n pos += section_label.length;\n block_indices.push(parseInt(block_label.substr(pos)));\n if (!block_prefix) {\n block_prefix = block_label.substr(0, pos);\n }\n }\n }\n\n // sort repeat blocks\n block_indices.sort(function(a,b) { return a - b; });\n\n // add to response dictionary in created order\n var index = 0;\n for (var i in block_indices) {\n convert(job_input_id + '_' + index++, node[block_prefix + block_indices[i]]);\n }\n break;\n // handle conditionals\n case 'conditional':\n // get conditional value\n var value = self.app.field_list[input.id].value();\n \n // add conditional value\n add (job_input_id + '|' + input.test_param.name, input.id, value);\n\n // identify selected case\n var selectedCase = self.matchCase(input, value);\n if (selectedCase != -1) {\n convert(job_input_id, head[input.id + '-section-' + selectedCase]);\n }\n break;\n // handle sections\n case 'section':\n convert(!input.flat && job_input_id || '', node);\n break;\n default:\n // get field\n var field = self.app.field_list[input.id];\n if (field && field.value) {\n // validate field value\n var value = field.value();\n\n // ignore certain values\n if (input.ignore === undefined || input.ignore != value) {\n // replace value by collapsible value\n if (field.collapsed && input.collapsible_value) {\n value = input.collapsible_value;\n }\n\n // add value to submission\n add (job_input_id, input.id, value);\n\n // add payload to submission\n if (input.payload) {\n for (var p_id in input.payload) {\n add (p_id, input.id, input.payload[p_id]);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // start conversion\n convert('', dict);\n \n // return result\n return result_dict;\n },\n\n /** Match job definition identifier to input element identifier\n */\n match: function (job_input_id) {\n return this.map_dict && this.map_dict[job_input_id];\n },\n\n /** Match conditional values to selected cases\n */\n matchCase: function(input, value) {\n // format value for boolean inputs\n if (input.test_param.type == 'boolean') {\n if (value == 'true') {\n value = input.test_param.truevalue || 'true';\n } else {\n value = input.test_param.falsevalue || 'false';\n }\n }\n\n // find selected case\n for (var i in input.cases) {\n if (input.cases[i].value == value) {\n return i;\n }\n }\n\n // selected case not found\n return -1;\n },\n\n /** Matches identifier from api model to input elements\n */\n matchModel: function(model, callback) {\n // final result dictionary\n var result = {};\n\n // link this\n var self = this;\n\n // search throughout response\n function search (id, head) {\n for (var i in head) {\n var node = head[i];\n var index = node.name;\n if (id != '') {\n index = id + '|' + index;\n }\n switch (node.type) {\n case 'repeat':\n for (var j in node.cache) {\n search (index + '_' + j, node.cache[j]);\n }\n break;\n case 'conditional':\n var value = node.test_param && node.test_param.value;\n var selectedCase = self.matchCase(node, value);\n if (selectedCase != -1) {\n search (index, node.cases[selectedCase].inputs);\n }\n break;\n case 'section':\n search (index, node.inputs);\n break;\n default:\n var input_id = self.map_dict[index];\n if (input_id) {\n callback(input_id, node);\n }\n }\n }\n }\n\n // match all ids and return messages\n search('', model.inputs);\n\n // return matched results\n return result;\n },\n\n /** Matches identifier from api response to input elements\n */\n matchResponse: function(response) {\n // final result dictionary\n var result = {};\n\n // link this\n var self = this;\n\n // search throughout response\n function search (id, head) {\n if (typeof head === 'string') {\n var input_id = self.map_dict[id];\n if (input_id) {\n result[input_id] = head;\n }\n } else {\n for (var i in head) {\n var new_id = i;\n if (id !== '') {\n var separator = '|';\n if (head instanceof Array) {\n separator = '_';\n }\n new_id = id + separator + new_id;\n }\n search (new_id, head[i]);\n }\n }\n }\n\n // match all ids and return messages\n search('', response);\n\n // return matched results\n return result;\n },\n\n /** Iterate through the form dom and map it to the dictionary.\n */\n _iterate: function(parent, dict) {\n // get child nodes\n var self = this;\n var children = $(parent).children();\n children.each(function() {\n // get child element\n var child = this;\n\n // get id\n var id = $(child).attr('id');\n\n // create new branch\n if ($(child).hasClass('section-row')) {\n // create sub dictionary\n dict[id] = {};\n\n // add input element if it exists\n var input = self.app.input_list[id];\n if (input) {\n dict[id] = {\n input : input\n }\n }\n\n // fill sub dictionary\n self._iterate(child, dict[id]);\n } else {\n self._iterate(child, dict);\n }\n });\n }\n});\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-data.js\n ** module id = 40\n ** module chunks = 0\n **/","define([\n \"libs/bibtex\",\n \"mvc/base-mvc\",\n \"utils/localization\"\n], function( bibtex, baseMVC, _l ){\n/* global Backbone */\n\nvar logNamespace = 'citation';\n//==============================================================================\n/** @class model for tool citations.\n * @name Citation\n * @augments Backbone.Model\n */\nvar Citation = Backbone.Model.extend( baseMVC.LoggableMixin ).extend( {\n _logNamespace : logNamespace,\n\n initialize: function( ) {\n var bibtex = this.attributes.content;\n var entry = new bibtex.BibtexParser(bibtex).entries[0];\n this.entry = entry;\n this._fields = {};\n var rawFields = entry.Fields;\n for(var key in rawFields) {\n var value = rawFields[ key ];\n var lowerKey = key.toLowerCase();\n this._fields[ lowerKey ] = value;\n }\n },\n entryType: function() {\n return this.entry.EntryType;\n },\n fields: function() {\n return this._fields;\n }\n} );\n\n//==============================================================================\n/** @class Backbone collection of citations.\n */\nvar BaseCitationCollection = Backbone.Collection.extend( baseMVC.LoggableMixin ).extend( {\n _logNamespace : logNamespace,\n\n /** root api url */\n urlRoot : Galaxy.root + 'api',\n partial : true, // Assume some tools in history/workflow may not be properly annotated yet.\n model : Citation,\n} );\n\nvar HistoryCitationCollection = BaseCitationCollection.extend( {\n /** complete api url */\n url : function() {\n return this.urlRoot + '/histories/' + this.history_id + '/citations';\n }\n} );\n\nvar ToolCitationCollection = BaseCitationCollection.extend( {\n /** complete api url */\n url : function() {\n return this.urlRoot + '/tools/' + this.tool_id + '/citations';\n },\n partial : false, // If a tool has citations, assume they are complete.\n} );\n\n//==============================================================================\nreturn {\n Citation : Citation,\n HistoryCitationCollection : HistoryCitationCollection,\n ToolCitationCollection: ToolCitationCollection\n};\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/citation/citation-model.js\n ** module id = 41\n ** module chunks = 0\n **/","/**\n * Parser.js\n * Copyright 2012-13 Mayank Lahiri\n * mlahiri@gmail.com\n * Released under the BSD License.\n *\n * A forgiving Bibtex parser that can:\n * \n * (1) operate in streaming or block mode, extracting entries as dictionaries. \n * (2) convert Latex special characters to UTF-8.\n * (3) best-effort parse malformed entries.\n * (4) run in a CommonJS environment or a browser, without any dependencies.\n * (5) be advanced-compiled by Google Closure Compiler.\n * \n * Handwritten as a labor of love, not auto-generated from a grammar. \n *\n * Modes of usage:\n *\n * (1) Synchronous, string\n *\n * var entries = BibtexParser(text);\n * console.log(entries);\n *\n * (2) Asynchronous, stream\n *\n * var entryCallback = function(entry) { console.log(entry); }\n * var parser = new BibtexParser(entryCallback);\n * parser.parse(chunk1);\n * parser.parse(chunk2);\n * ...\n * \n * @param {text|function(Object)} arg Either a Bibtex string or callback \n * function for processing parsed entries.\n * @constructor\n */\nfunction BibtexParser(arg0) {\n // Determine how this function is to be used\n if (typeof arg0 == 'string') {\n // Passed a string, synchronous call without 'new'\n var tempStorage = {};\n var entries = [];\n function accumulator(entry) {\n entries.push(entry);\n }\n var parser = BibtexParser.call(tempStorage, accumulator);\n parser.parse(arg0);\n return {\n 'entries': entries,\n 'errors': parser.getErrors()\n }\n }\n if (typeof arg0 != 'function') {\n throw 'Invalid parser construction.';\n }\n\n /** @enum {number} */\n this.STATES_ = {\n ENTRY_OR_JUNK: 0,\n OBJECT_TYPE: 1,\n ENTRY_KEY: 2, \n KV_KEY: 3, \n EQUALS: 4,\n KV_VALUE: 5 \n }\n /** @private */ this.DATA_ = {};\n /** @private */ this.CALLBACK_ = arg0;\n /** @private */ this.CHAR_ = 0;\n /** @private */ this.LINE_ = 1;\n /** @private */ this.CHAR_IN_LINE_ = 0;\n /** @private */ this.SKIPWS_ = true;\n /** @private */ this.SKIPCOMMENT_ = true;\n /** @private */ this.PARSETMP_ = {};\n /** @private */ this.SKIPTILLEOL_ = false;\n /** @private */ this.VALBRACES_ = null;\n /** @private */ this.BRACETYPE_ = null;\n /** @private */ this.BRACECOUNT_ = 0;\n /** @private */ this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n /** @private */ this.ERRORS_ = [];\n /** @private */ this.ENTRY_TYPES_ = {\n 'inproceedings' : 1,\n 'proceedings' : 2,\n 'article' : 3,\n 'techreport' : 4,\n 'misc' : 5,\n 'mastersthesis' : 6,\n 'book' : 7,\n 'phdthesis' : 8,\n 'incollection' : 9,\n 'unpublished' : 10,\n 'inbook' : 11,\n 'manual' : 12,\n 'periodical' : 13,\n 'booklet' : 14,\n 'masterthesis' : 15,\n 'conference' : 16\n ,'online' : 998 // Galaxy MOD: Handle @online entries for preprints.\n ,'data' : 999 // Galaxy MOD: Handle @data citations coming from figshare.\n }\n /** @private */ this.MACROS_ = {\n 'jan' : 'January',\n 'feb' : 'February',\n 'mar' : 'March',\n 'apr' : 'April',\n 'may' : 'May',\n 'jun' : 'June',\n 'jul' : 'July',\n 'aug' : 'August',\n 'sep' : 'September',\n 'oct' : 'October',\n 'nov' : 'November',\n 'dec' : 'December',\n 'Jan' : 'January',\n 'Feb' : 'February',\n 'Mar' : 'March',\n 'Apr' : 'April',\n 'May' : 'May',\n 'Jun' : 'June',\n 'Jul' : 'July',\n 'Aug' : 'August',\n 'Sep' : 'September',\n 'Oct' : 'October',\n 'Nov' : 'November',\n 'Dec' : 'December'\n }\n\n /**\n * Gets an array of all errors encountered during parsing.\n * Array entries are of the format:\n * [ line number, character in line, character in stream, error text ]\n *\n * @returns Array\n * @public\n */\n this.getErrors = function() {\n return this.ERRORS_;\n }\n\n /**\n * Processes a chunk of data\n * @public\n */\n this.parse = function(chunk) {\n for (var i = 0; i < chunk.length; i++)\n this.processCharacter_(chunk[i]);\n }\n\n /**\n * Logs error at current stream position.\n *\n * @private\n */\n this.error_ = function(text) {\n this.ERRORS_.push([ this.LINE_, \n this.CHAR_IN_LINE_,\n this.CHAR_,\n text ])\n }\n\n /**\n * Called after an entire entry has been parsed from the stream.\n * Performs post-processing and invokes the entry callback pointed to by\n * this.CALLBACK_. Parsed (but unprocessed) entry data is in this.DATA_.\n */\n this.processEntry_ = function() {\n var data = this.DATA_;\n if (data.Fields) \n for (var f in data.Fields) {\n var raw = data.Fields[f];\n\n // Convert Latex/Bibtex special characters to UTF-8 equivalents\n for (var i = 0; i < this.CHARCONV_.length; i++) {\n var re = this.CHARCONV_[i][0];\n var rep = this.CHARCONV_[i][1];\n raw = raw.replace(re, rep);\n }\n\n // Basic substitutions\n raw = raw.replace(/[\\n\\r\\t]/g, ' ')\n .replace(/\\s\\s+/g, ' ')\n .replace(/^\\s+|\\s+$/g, '')\n\n // Remove braces and backslashes\n var len = raw.length;\n var processed = '';\n for (var i = 0; i < len; i++) {\n var c = raw[i];\n var skip = false;\n if (c == '\\\\' && i < len-1) \n c = raw[++i];\n else {\n if (c == '{' || c == '}')\n skip = true;\n }\n if (!skip)\n processed += c;\n }\n data.Fields[f] = processed\n }\n\n if (data.ObjectType == 'string') {\n for (var f in data.Fields) { \n this.MACROS_[f] = data.Fields[f];\n }\n } else {\n // Parsed a new Bibtex entry\n this.CALLBACK_(data);\n }\n }\n\n\n /**\n * Processes next character in the stream, invoking the callback after \n * each entry has been found and processed.\n * \n * @private\n * @param {string} c Next character in input stream\n */\n this.processCharacter_ = function(c) {\n // Housekeeping\n this.CHAR_++;\n this.CHAR_IN_LINE_++;\n if (c == '\\n') {\n this.LINE_++;\n this.CHAR_IN_LINE_ = 1;\n }\n\n // Convenience states for skipping whitespace when needed\n if (this.SKIPTILLEOL_) {\n if (c == '\\n')\n this.SKIPTILLEOL_ = false;\n return;\n }\n if (this.SKIPCOMMENT_ && c == '%') {\n this.SKIPTILLEOL_ = true;\n return;\n }\n if (this.SKIPWS_ && /\\s/.test(c))\n return;\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n this.SKIPTILLEOL_ = false;\n\n // Main state machine\n var AnotherIteration = true;\n while (AnotherIteration) {\n //console.log(this.LINE_, this.CHAR_IN_LINE_, this.STATE_, c)\n AnotherIteration = false;\n switch(this.STATE_) {\n // -- Scan for an object marker ('@')\n // -- Reset temporary data structure in case previous entry was garbled\n case this.STATES_.ENTRY_OR_JUNK:\n if (c == '@') {\n // SUCCESS: Parsed a valid start-of-object marker.\n // NEXT_STATE: OBJECT_TYPE\n this.STATE_ = this.STATES_.OBJECT_TYPE;\n this.DATA_ = {\n ObjectType : ''\n };\n }\n this.BRACETYPE_ = null;\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n break;\n\n // Start at first non-whitespace character after start-of-object '@'\n // -- Accept [A-Za-z], break on non-matching character\n // -- Populate this.DATA_.EntryType and this.DATA_.ObjectType\n case this.STATES_.OBJECT_TYPE:\n if (/[A-Za-z]/.test(c)) {\n this.DATA_.ObjectType += c.toLowerCase();\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n } else {\n // Break from state and validate object type\n var ot = this.DATA_.ObjectType;\n if (ot == 'comment') {\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n } else {\n if (ot == 'string') {\n this.DATA_.ObjectType = ot;\n this.DATA_.Fields = {};\n this.BRACETYPE_ = c;\n this.BRACECOUNT_ = 1;\n this.STATE_ = this.STATES_.KV_KEY;\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.PARSETMP_ = {\n Key: ''\n }\n } else {\n if (ot == 'preamble') {\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n } else {\n if (ot in this.ENTRY_TYPES_) {\n // SUCCESS: Parsed a valid object type.\n // NEXT_STATE: ENTRY_KEY\n this.DATA_.ObjectType = 'entry';\n this.DATA_.EntryType = ot;\n this.DATA_.EntryKey = '';\n this.STATE_ = this.STATES_.ENTRY_KEY;\n AnotherIteration = true;\n } else {\n // ERROR: Unrecognized object type.\n // NEXT_STATE: ENTRY_OR_JUNK\n this.error_('Unrecognized object type: \"' +\n this.DATA_.ObjectType + '\"')\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n }\n }\n }\n }\n }\n break;\n\n // Start at first non-alphabetic character after an entry type\n // -- Populate this.DATA_.EntryKey\n case this.STATES_.ENTRY_KEY:\n if ((c === '{' || c === '(') && this.BRACETYPE_ == null) {\n this.BRACETYPE_ = c;\n this.BRACECOUNT_ = 1;\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n break;\n }\n if (/[,%\\s]/.test(c)) {\n if (this.DATA_.EntryKey.length < 1) { \n // Skip comments and whitespace before entry key\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n } else {\n if (this.BRACETYPE_ == null) {\n // ERROR: No opening brace for object\n // NEXT_STATE: ENTRY_OR_JUNK\n this.error_('No opening brace for object.');\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n } else {\n // SUCCESS: Parsed an entry key\n // NEXT_STATE: KV_KEY\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n AnotherIteration = true;\n this.STATE_ = this.STATES_.KV_KEY;\n this.PARSETMP_.Key= '';\n this.DATA_.Fields = {};\n }\n }\n } else {\n this.DATA_.EntryKey += c;\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n }\n break;\n\n // Start at first non-whitespace/comment character after entry key.\n // -- Populate this.PARSETMP_.Key\n case this.STATES_.KV_KEY:\n // Test for end of entry\n if ((c == '}' && this.BRACETYPE_ == '{') ||\n (c == ')' && this.BRACETYPE_ == '(')) {\n // SUCCESS: Parsed an entry, possible incomplete\n // NEXT_STATE: ENTRY_OR_JUNK\n this.processEntry_();\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n break;\n }\n if (/[\\-A-Za-z:]/.test(c)) {\n // Add to key\n this.PARSETMP_.Key += c;\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n } else {\n // Either end of key or we haven't encountered start of key\n if (this.PARSETMP_.Key.length < 1) {\n // Keep going till we see a key\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n } else {\n // SUCCESS: Found full key in K/V pair\n // NEXT_STATE: EQUALS\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.EQUALS;\n AnotherIteration = true;\n }\n }\n break;\n\n // Start at first non-alphabetic character after K/V pair key.\n case this.STATES_.EQUALS:\n if ((c == '}' && this.BRACETYPE_ == '{') ||\n (c == ')' && this.BRACETYPE_ == '(')) {\n // ERROR: K/V pair with key but no value\n // NEXT_STATE: ENTRY_OR_JUNK\n this.error_('Key-value pair has key \"' +\n this.PARSETMP_.Key + '\", but no value.');\n this.processEntry_();\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n break;\n }\n if (c == '=') {\n // SUCCESS: found an equal signs separating key and value\n // NEXT_STATE: KV_VALUE\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.KV_VALUE;\n this.PARSETMP_.Value = '';\n this.VALBRACES_ = { '\"' : [], '{' : [] };\n }\n break;\n\n // Start at first non-whitespace/comment character after '=' \n // -- Populate this.PARSETMP_.Value\n case this.STATES_.KV_VALUE:\n var delim = this.VALBRACES_;\n var val = this.PARSETMP_.Value;\n var doneParsingValue = false;\n\n // Test for special characters\n if (c == '\"' || c == '{' || c == '}' || c == ',') {\n if (c == ',') {\n // This comma can mean:\n // (1) just another comma literal\n // (2) end of a macro reference\n if (0 === delim['\"'].length + delim['{'].length) {\n // end of a macro reference\n var macro = this.PARSETMP_.Value.trim();\n if (macro in this.MACROS_) {\n // Successful macro reference\n this.PARSETMP_.Value = this.MACROS_[macro];\n } else {\n // Reference to an undefined macro\n this.error_('Reference to an undefined macro: '+macro);\n }\n doneParsingValue = true;\n }\n }\n if (c == '\"') {\n // This quote can mean:\n // (1) opening delimiter\n // (2) closing delimiter\n // (3) literal, if we have a '{' on the stack\n if (0 === delim['\"'].length + delim['{'].length) {\n // opening delimiter\n delim['\"'].push(this.CHAR_)\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n break;\n }\n if (delim['\"'].length == 1 && delim['{'].length == 0 &&\n (val.length==0 || val[val.length-1] != '\\\\')) {\n // closing delimiter\n doneParsingValue = true;\n } else {\n // literal, add to value\n }\n }\n if (c == '{') {\n // This brace can mean:\n // (1) opening delimiter\n // (2) stacked verbatim delimiter\n if (val.length == 0 || val[val.length-1] != '\\\\') {\n delim['{'].push(this.CHAR_)\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n } else {\n // literal, add to value\n }\n }\n if (c == '}') {\n // This brace can mean:\n // (1) closing delimiter\n // (2) closing stacked verbatim delimiter\n // (3) end of object definition if value was a macro\n if (0 === delim['\"'].length + delim['{'].length) {\n // end of object definition, after macro\n var macro = this.PARSETMP_.Value.trim();\n if (macro in this.MACROS_) {\n // Successful macro reference\n this.PARSETMP_.Value = this.MACROS_[macro];\n } else {\n // Reference to an undefined macro\n this.error_('Reference to an undefined macro: '+macro);\n }\n AnotherIteration = true;\n doneParsingValue = true;\n } else {\n if (val.length == 0 || val[val.length-1] != '\\\\') {\n if (delim['{'].length > 0) {\n // pop stack for stacked verbatim delimiter\n delim['{'].splice(delim['{'].length-1, 1)\n if (0 == delim['{'].length + delim['\"'].length) {\n // closing delimiter\n doneParsingValue = true;\n } else {\n // end verbatim block\n }\n }\n } else {\n // literal, add to value\n }\n }\n }\n }\n\n // If here, then we are either done parsing the value or \n // have a literal that should be added to the value.\n if (doneParsingValue) {\n // SUCCESS: value parsed\n // NEXT_STATE: KV_KEY\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.KV_KEY;\n this.DATA_.Fields[this.PARSETMP_.Key] = this.PARSETMP_.Value;\n this.PARSETMP_ = { Key: '' };\n this.VALBRACES_ = null;\n } else {\n this.PARSETMP_.Value += c;\n }\n break;\n } // end switch (this.STATE_)\n } // end while(AnotherIteration)\n } // end function processCharacter \n\n /** @private */ this.CHARCONV_ = [\n [ /\\\\space /g, '\\u0020' ],\n [ /\\\\textdollar /g, '\\u0024' ],\n [ /\\\\textquotesingle /g, '\\u0027' ],\n [ /\\\\ast /g, '\\u002A' ],\n [ /\\\\textbackslash /g, '\\u005C' ],\n [ /\\\\\\^\\{\\}/g, '\\u005E' ],\n [ /\\\\textasciigrave /g, '\\u0060' ],\n [ /\\\\lbrace /g, '\\u007B' ],\n [ /\\\\vert /g, '\\u007C' ],\n [ /\\\\rbrace /g, '\\u007D' ],\n [ /\\\\textasciitilde /g, '\\u007E' ],\n [ /\\\\textexclamdown /g, '\\u00A1' ],\n [ /\\\\textcent /g, '\\u00A2' ],\n [ /\\\\textsterling /g, '\\u00A3' ],\n [ /\\\\textcurrency /g, '\\u00A4' ],\n [ /\\\\textyen /g, '\\u00A5' ],\n [ /\\\\textbrokenbar /g, '\\u00A6' ],\n [ /\\\\textsection /g, '\\u00A7' ],\n [ /\\\\textasciidieresis /g, '\\u00A8' ],\n [ /\\\\textcopyright /g, '\\u00A9' ],\n [ /\\\\textordfeminine /g, '\\u00AA' ],\n [ /\\\\guillemotleft /g, '\\u00AB' ],\n [ /\\\\lnot /g, '\\u00AC' ],\n [ /\\\\textregistered /g, '\\u00AE' ],\n [ /\\\\textasciimacron /g, '\\u00AF' ],\n [ /\\\\textdegree /g, '\\u00B0' ],\n [ /\\\\pm /g, '\\u00B1' ],\n [ /\\\\textasciiacute /g, '\\u00B4' ],\n [ /\\\\mathrm\\{\\\\mu\\}/g, '\\u00B5' ],\n [ /\\\\textparagraph /g, '\\u00B6' ],\n [ /\\\\cdot /g, '\\u00B7' ],\n [ /\\\\c\\{\\}/g, '\\u00B8' ],\n [ /\\\\textordmasculine /g, '\\u00BA' ],\n [ /\\\\guillemotright /g, '\\u00BB' ],\n [ /\\\\textonequarter /g, '\\u00BC' ],\n [ /\\\\textonehalf /g, '\\u00BD' ],\n [ /\\\\textthreequarters /g, '\\u00BE' ],\n [ /\\\\textquestiondown /g, '\\u00BF' ],\n [ /\\\\`\\{A\\}/g, '\\u00C0' ],\n [ /\\\\'\\{A\\}/g, '\\u00C1' ],\n [ /\\\\\\^\\{A\\}/g, '\\u00C2' ],\n [ /\\\\~\\{A\\}/g, '\\u00C3' ],\n [ /\\\\\"\\{A\\}/g, '\\u00C4' ],\n [ /\\\\AA /g, '\\u00C5' ],\n [ /\\\\AE /g, '\\u00C6' ],\n [ /\\\\c\\{C\\}/g, '\\u00C7' ],\n [ /\\\\`\\{E\\}/g, '\\u00C8' ],\n [ /\\\\'\\{E\\}/g, '\\u00C9' ],\n [ /\\\\\\^\\{E\\}/g, '\\u00CA' ],\n [ /\\\\\"\\{E\\}/g, '\\u00CB' ],\n [ /\\\\`\\{I\\}/g, '\\u00CC' ],\n [ /\\\\'\\{I\\}/g, '\\u00CD' ],\n [ /\\\\\\^\\{I\\}/g, '\\u00CE' ],\n [ /\\\\\"\\{I\\}/g, '\\u00CF' ],\n [ /\\\\DH /g, '\\u00D0' ],\n [ /\\\\~\\{N\\}/g, '\\u00D1' ],\n [ /\\\\`\\{O\\}/g, '\\u00D2' ],\n [ /\\\\'\\{O\\}/g, '\\u00D3' ],\n [ /\\\\\\^\\{O\\}/g, '\\u00D4' ],\n [ /\\\\~\\{O\\}/g, '\\u00D5' ],\n [ /\\\\\"\\{O\\}/g, '\\u00D6' ],\n [ /\\\\texttimes /g, '\\u00D7' ],\n [ /\\\\O /g, '\\u00D8' ],\n [ /\\\\`\\{U\\}/g, '\\u00D9' ],\n [ /\\\\'\\{U\\}/g, '\\u00DA' ],\n [ /\\\\\\^\\{U\\}/g, '\\u00DB' ],\n [ /\\\\\"\\{U\\}/g, '\\u00DC' ],\n [ /\\\\'\\{Y\\}/g, '\\u00DD' ],\n [ /\\\\TH /g, '\\u00DE' ],\n [ /\\\\ss /g, '\\u00DF' ],\n [ /\\\\`\\{a\\}/g, '\\u00E0' ],\n [ /\\\\'\\{a\\}/g, '\\u00E1' ],\n [ /\\\\\\^\\{a\\}/g, '\\u00E2' ],\n [ /\\\\~\\{a\\}/g, '\\u00E3' ],\n [ /\\\\\"\\{a\\}/g, '\\u00E4' ],\n [ /\\\\aa /g, '\\u00E5' ],\n [ /\\\\ae /g, '\\u00E6' ],\n [ /\\\\c\\{c\\}/g, '\\u00E7' ],\n [ /\\\\`\\{e\\}/g, '\\u00E8' ],\n [ /\\\\'\\{e\\}/g, '\\u00E9' ],\n [ /\\\\\\^\\{e\\}/g, '\\u00EA' ],\n [ /\\\\\"\\{e\\}/g, '\\u00EB' ],\n [ /\\\\`\\{\\\\i\\}/g, '\\u00EC' ],\n [ /\\\\'\\{\\\\i\\}/g, '\\u00ED' ],\n [ /\\\\\\^\\{\\\\i\\}/g, '\\u00EE' ],\n [ /\\\\\"\\{\\\\i\\}/g, '\\u00EF' ],\n [ /\\\\dh /g, '\\u00F0' ],\n [ /\\\\~\\{n\\}/g, '\\u00F1' ],\n [ /\\\\`\\{o\\}/g, '\\u00F2' ],\n [ /\\\\'\\{o\\}/g, '\\u00F3' ],\n [ /\\\\\\^\\{o\\}/g, '\\u00F4' ],\n [ /\\\\~\\{o\\}/g, '\\u00F5' ],\n [ /\\\\\"\\{o\\}/g, '\\u00F6' ],\n [ /\\\\div /g, '\\u00F7' ],\n [ /\\\\o /g, '\\u00F8' ],\n [ /\\\\`\\{u\\}/g, '\\u00F9' ],\n [ /\\\\'\\{u\\}/g, '\\u00FA' ],\n [ /\\\\\\^\\{u\\}/g, '\\u00FB' ],\n [ /\\\\\"\\{u\\}/g, '\\u00FC' ],\n [ /\\\\'\\{y\\}/g, '\\u00FD' ],\n [ /\\\\th /g, '\\u00FE' ],\n [ /\\\\\"\\{y\\}/g, '\\u00FF' ],\n [ /\\\\=\\{A\\}/g, '\\u0100' ],\n [ /\\\\=\\{a\\}/g, '\\u0101' ],\n [ /\\\\u\\{A\\}/g, '\\u0102' ],\n [ /\\\\u\\{a\\}/g, '\\u0103' ],\n [ /\\\\k\\{A\\}/g, '\\u0104' ],\n [ /\\\\k\\{a\\}/g, '\\u0105' ],\n [ /\\\\'\\{C\\}/g, '\\u0106' ],\n [ /\\\\'\\{c\\}/g, '\\u0107' ],\n [ /\\\\\\^\\{C\\}/g, '\\u0108' ],\n [ /\\\\\\^\\{c\\}/g, '\\u0109' ],\n [ /\\\\.\\{C\\}/g, '\\u010A' ],\n [ /\\\\.\\{c\\}/g, '\\u010B' ],\n [ /\\\\v\\{C\\}/g, '\\u010C' ],\n [ /\\\\v\\{c\\}/g, '\\u010D' ],\n [ /\\\\v\\{D\\}/g, '\\u010E' ],\n [ /\\\\v\\{d\\}/g, '\\u010F' ],\n [ /\\\\DJ /g, '\\u0110' ],\n [ /\\\\dj /g, '\\u0111' ],\n [ /\\\\=\\{E\\}/g, '\\u0112' ],\n [ /\\\\=\\{e\\}/g, '\\u0113' ],\n [ /\\\\u\\{E\\}/g, '\\u0114' ],\n [ /\\\\u\\{e\\}/g, '\\u0115' ],\n [ /\\\\.\\{E\\}/g, '\\u0116' ],\n [ /\\\\.\\{e\\}/g, '\\u0117' ],\n [ /\\\\k\\{E\\}/g, '\\u0118' ],\n [ /\\\\k\\{e\\}/g, '\\u0119' ],\n [ /\\\\v\\{E\\}/g, '\\u011A' ],\n [ /\\\\v\\{e\\}/g, '\\u011B' ],\n [ /\\\\\\^\\{G\\}/g, '\\u011C' ],\n [ /\\\\\\^\\{g\\}/g, '\\u011D' ],\n [ /\\\\u\\{G\\}/g, '\\u011E' ],\n [ /\\\\u\\{g\\}/g, '\\u011F' ],\n [ /\\\\.\\{G\\}/g, '\\u0120' ],\n [ /\\\\.\\{g\\}/g, '\\u0121' ],\n [ /\\\\c\\{G\\}/g, '\\u0122' ],\n [ /\\\\c\\{g\\}/g, '\\u0123' ],\n [ /\\\\\\^\\{H\\}/g, '\\u0124' ],\n [ /\\\\\\^\\{h\\}/g, '\\u0125' ],\n [ /\\\\Elzxh /g, '\\u0127' ],\n [ /\\\\~\\{I\\}/g, '\\u0128' ],\n [ /\\\\~\\{\\\\i\\}/g, '\\u0129' ],\n [ /\\\\=\\{I\\}/g, '\\u012A' ],\n [ /\\\\=\\{\\\\i\\}/g, '\\u012B' ],\n [ /\\\\u\\{I\\}/g, '\\u012C' ],\n [ /\\\\u\\{\\\\i\\}/g, '\\u012D' ],\n [ /\\\\k\\{I\\}/g, '\\u012E' ],\n [ /\\\\k\\{i\\}/g, '\\u012F' ],\n [ /\\\\.\\{I\\}/g, '\\u0130' ],\n [ /\\\\i /g, '\\u0131' ],\n [ /\\\\\\^\\{J\\}/g, '\\u0134' ],\n [ /\\\\\\^\\{\\\\j\\}/g, '\\u0135' ],\n [ /\\\\c\\{K\\}/g, '\\u0136' ],\n [ /\\\\c\\{k\\}/g, '\\u0137' ],\n [ /\\\\'\\{L\\}/g, '\\u0139' ],\n [ /\\\\'\\{l\\}/g, '\\u013A' ],\n [ /\\\\c\\{L\\}/g, '\\u013B' ],\n [ /\\\\c\\{l\\}/g, '\\u013C' ],\n [ /\\\\v\\{L\\}/g, '\\u013D' ],\n [ /\\\\v\\{l\\}/g, '\\u013E' ],\n [ /\\\\L /g, '\\u0141' ],\n [ /\\\\l /g, '\\u0142' ],\n [ /\\\\'\\{N\\}/g, '\\u0143' ],\n [ /\\\\'\\{n\\}/g, '\\u0144' ],\n [ /\\\\c\\{N\\}/g, '\\u0145' ],\n [ /\\\\c\\{n\\}/g, '\\u0146' ],\n [ /\\\\v\\{N\\}/g, '\\u0147' ],\n [ /\\\\v\\{n\\}/g, '\\u0148' ],\n [ /\\\\NG /g, '\\u014A' ],\n [ /\\\\ng /g, '\\u014B' ],\n [ /\\\\=\\{O\\}/g, '\\u014C' ],\n [ /\\\\=\\{o\\}/g, '\\u014D' ],\n [ /\\\\u\\{O\\}/g, '\\u014E' ],\n [ /\\\\u\\{o\\}/g, '\\u014F' ],\n [ /\\\\H\\{O\\}/g, '\\u0150' ],\n [ /\\\\H\\{o\\}/g, '\\u0151' ],\n [ /\\\\OE /g, '\\u0152' ],\n [ /\\\\oe /g, '\\u0153' ],\n [ /\\\\'\\{R\\}/g, '\\u0154' ],\n [ /\\\\'\\{r\\}/g, '\\u0155' ],\n [ /\\\\c\\{R\\}/g, '\\u0156' ],\n [ /\\\\c\\{r\\}/g, '\\u0157' ],\n [ /\\\\v\\{R\\}/g, '\\u0158' ],\n [ /\\\\v\\{r\\}/g, '\\u0159' ],\n [ /\\\\'\\{S\\}/g, '\\u015A' ],\n [ /\\\\'\\{s\\}/g, '\\u015B' ],\n [ /\\\\\\^\\{S\\}/g, '\\u015C' ],\n [ /\\\\\\^\\{s\\}/g, '\\u015D' ],\n [ /\\\\c\\{S\\}/g, '\\u015E' ],\n [ /\\\\c\\{s\\}/g, '\\u015F' ],\n [ /\\\\v\\{S\\}/g, '\\u0160' ],\n [ /\\\\v\\{s\\}/g, '\\u0161' ],\n [ /\\\\c\\{T\\}/g, '\\u0162' ],\n [ /\\\\c\\{t\\}/g, '\\u0163' ],\n [ /\\\\v\\{T\\}/g, '\\u0164' ],\n [ /\\\\v\\{t\\}/g, '\\u0165' ],\n [ /\\\\~\\{U\\}/g, '\\u0168' ],\n [ /\\\\~\\{u\\}/g, '\\u0169' ],\n [ /\\\\=\\{U\\}/g, '\\u016A' ],\n [ /\\\\=\\{u\\}/g, '\\u016B' ],\n [ /\\\\u\\{U\\}/g, '\\u016C' ],\n [ /\\\\u\\{u\\}/g, '\\u016D' ],\n [ /\\\\r\\{U\\}/g, '\\u016E' ],\n [ /\\\\r\\{u\\}/g, '\\u016F' ],\n [ /\\\\H\\{U\\}/g, '\\u0170' ],\n [ /\\\\H\\{u\\}/g, '\\u0171' ],\n [ /\\\\k\\{U\\}/g, '\\u0172' ],\n [ /\\\\k\\{u\\}/g, '\\u0173' ],\n [ /\\\\\\^\\{W\\}/g, '\\u0174' ],\n [ /\\\\\\^\\{w\\}/g, '\\u0175' ],\n [ /\\\\\\^\\{Y\\}/g, '\\u0176' ],\n [ /\\\\\\^\\{y\\}/g, '\\u0177' ],\n [ /\\\\\"\\{Y\\}/g, '\\u0178' ],\n [ /\\\\'\\{Z\\}/g, '\\u0179' ],\n [ /\\\\'\\{z\\}/g, '\\u017A' ],\n [ /\\\\.\\{Z\\}/g, '\\u017B' ],\n [ /\\\\.\\{z\\}/g, '\\u017C' ],\n [ /\\\\v\\{Z\\}/g, '\\u017D' ],\n [ /\\\\v\\{z\\}/g, '\\u017E' ],\n [ /\\\\texthvlig /g, '\\u0195' ],\n [ /\\\\textnrleg /g, '\\u019E' ],\n [ /\\\\eth /g, '\\u01AA' ],\n [ /\\\\textdoublepipe /g, '\\u01C2' ],\n [ /\\\\'\\{g\\}/g, '\\u01F5' ],\n [ /\\\\Elztrna /g, '\\u0250' ],\n [ /\\\\Elztrnsa /g, '\\u0252' ],\n [ /\\\\Elzopeno /g, '\\u0254' ],\n [ /\\\\Elzrtld /g, '\\u0256' ],\n [ /\\\\Elzschwa /g, '\\u0259' ],\n [ /\\\\varepsilon /g, '\\u025B' ],\n [ /\\\\Elzpgamma /g, '\\u0263' ],\n [ /\\\\Elzpbgam /g, '\\u0264' ],\n [ /\\\\Elztrnh /g, '\\u0265' ],\n [ /\\\\Elzbtdl /g, '\\u026C' ],\n [ /\\\\Elzrtll /g, '\\u026D' ],\n [ /\\\\Elztrnm /g, '\\u026F' ],\n [ /\\\\Elztrnmlr /g, '\\u0270' ],\n [ /\\\\Elzltlmr /g, '\\u0271' ],\n [ /\\\\Elzltln /g, '\\u0272' ],\n [ /\\\\Elzrtln /g, '\\u0273' ],\n [ /\\\\Elzclomeg /g, '\\u0277' ],\n [ /\\\\textphi /g, '\\u0278' ],\n [ /\\\\Elztrnr /g, '\\u0279' ],\n [ /\\\\Elztrnrl /g, '\\u027A' ],\n [ /\\\\Elzrttrnr /g, '\\u027B' ],\n [ /\\\\Elzrl /g, '\\u027C' ],\n [ /\\\\Elzrtlr /g, '\\u027D' ],\n [ /\\\\Elzfhr /g, '\\u027E' ],\n [ /\\\\Elzrtls /g, '\\u0282' ],\n [ /\\\\Elzesh /g, '\\u0283' ],\n [ /\\\\Elztrnt /g, '\\u0287' ],\n [ /\\\\Elzrtlt /g, '\\u0288' ],\n [ /\\\\Elzpupsil /g, '\\u028A' ],\n [ /\\\\Elzpscrv /g, '\\u028B' ],\n [ /\\\\Elzinvv /g, '\\u028C' ],\n [ /\\\\Elzinvw /g, '\\u028D' ],\n [ /\\\\Elztrny /g, '\\u028E' ],\n [ /\\\\Elzrtlz /g, '\\u0290' ],\n [ /\\\\Elzyogh /g, '\\u0292' ],\n [ /\\\\Elzglst /g, '\\u0294' ],\n [ /\\\\Elzreglst /g, '\\u0295' ],\n [ /\\\\Elzinglst /g, '\\u0296' ],\n [ /\\\\textturnk /g, '\\u029E' ],\n [ /\\\\Elzdyogh /g, '\\u02A4' ],\n [ /\\\\Elztesh /g, '\\u02A7' ],\n [ /\\\\textasciicaron /g, '\\u02C7' ],\n [ /\\\\Elzverts /g, '\\u02C8' ],\n [ /\\\\Elzverti /g, '\\u02CC' ],\n [ /\\\\Elzlmrk /g, '\\u02D0' ],\n [ /\\\\Elzhlmrk /g, '\\u02D1' ],\n [ /\\\\Elzsbrhr /g, '\\u02D2' ],\n [ /\\\\Elzsblhr /g, '\\u02D3' ],\n [ /\\\\Elzrais /g, '\\u02D4' ],\n [ /\\\\Elzlow /g, '\\u02D5' ],\n [ /\\\\textasciibreve /g, '\\u02D8' ],\n [ /\\\\textperiodcentered /g, '\\u02D9' ],\n [ /\\\\r\\{\\}/g, '\\u02DA' ],\n [ /\\\\k\\{\\}/g, '\\u02DB' ],\n [ /\\\\texttildelow /g, '\\u02DC' ],\n [ /\\\\H\\{\\}/g, '\\u02DD' ],\n [ /\\\\tone\\{55\\}/g, '\\u02E5' ],\n [ /\\\\tone\\{44\\}/g, '\\u02E6' ],\n [ /\\\\tone\\{33\\}/g, '\\u02E7' ],\n [ /\\\\tone\\{22\\}/g, '\\u02E8' ],\n [ /\\\\tone\\{11\\}/g, '\\u02E9' ],\n [ /\\\\cyrchar\\\\C/g, '\\u030F' ],\n [ /\\\\Elzpalh /g, '\\u0321' ],\n [ /\\\\Elzrh /g, '\\u0322' ],\n [ /\\\\Elzsbbrg /g, '\\u032A' ],\n [ /\\\\Elzxl /g, '\\u0335' ],\n [ /\\\\Elzbar /g, '\\u0336' ],\n [ /\\\\'\\{A\\}/g, '\\u0386' ],\n [ /\\\\'\\{E\\}/g, '\\u0388' ],\n [ /\\\\'\\{H\\}/g, '\\u0389' ],\n [ /\\\\'\\{\\}\\{I\\}/g, '\\u038A' ],\n [ /\\\\'\\{\\}O/g, '\\u038C' ],\n [ /\\\\mathrm\\{'Y\\}/g, '\\u038E' ],\n [ /\\\\mathrm\\{'\\\\Omega\\}/g, '\\u038F' ],\n [ /\\\\acute\\{\\\\ddot\\{\\\\iota\\}\\}/g, '\\u0390' ],\n [ /\\\\Alpha /g, '\\u0391' ],\n [ /\\\\Beta /g, '\\u0392' ],\n [ /\\\\Gamma /g, '\\u0393' ],\n [ /\\\\Delta /g, '\\u0394' ],\n [ /\\\\Epsilon /g, '\\u0395' ],\n [ /\\\\Zeta /g, '\\u0396' ],\n [ /\\\\Eta /g, '\\u0397' ],\n [ /\\\\Theta /g, '\\u0398' ],\n [ /\\\\Iota /g, '\\u0399' ],\n [ /\\\\Kappa /g, '\\u039A' ],\n [ /\\\\Lambda /g, '\\u039B' ],\n [ /\\\\Xi /g, '\\u039E' ],\n [ /\\\\Pi /g, '\\u03A0' ],\n [ /\\\\Rho /g, '\\u03A1' ],\n [ /\\\\Sigma /g, '\\u03A3' ],\n [ /\\\\Tau /g, '\\u03A4' ],\n [ /\\\\Upsilon /g, '\\u03A5' ],\n [ /\\\\Phi /g, '\\u03A6' ],\n [ /\\\\Chi /g, '\\u03A7' ],\n [ /\\\\Psi /g, '\\u03A8' ],\n [ /\\\\Omega /g, '\\u03A9' ],\n [ /\\\\mathrm\\{\\\\ddot\\{I\\}\\}/g, '\\u03AA' ],\n [ /\\\\mathrm\\{\\\\ddot\\{Y\\}\\}/g, '\\u03AB' ],\n [ /\\\\'\\{\\$\\\\alpha\\$\\}/g, '\\u03AC' ],\n [ /\\\\acute\\{\\\\epsilon\\}/g, '\\u03AD' ],\n [ /\\\\acute\\{\\\\eta\\}/g, '\\u03AE' ],\n [ /\\\\acute\\{\\\\iota\\}/g, '\\u03AF' ],\n [ /\\\\acute\\{\\\\ddot\\{\\\\upsilon\\}\\}/g, '\\u03B0' ],\n [ /\\\\alpha /g, '\\u03B1' ],\n [ /\\\\beta /g, '\\u03B2' ],\n [ /\\\\gamma /g, '\\u03B3' ],\n [ /\\\\delta /g, '\\u03B4' ],\n [ /\\\\epsilon /g, '\\u03B5' ],\n [ /\\\\zeta /g, '\\u03B6' ],\n [ /\\\\eta /g, '\\u03B7' ],\n [ /\\\\texttheta /g, '\\u03B8' ],\n [ /\\\\iota /g, '\\u03B9' ],\n [ /\\\\kappa /g, '\\u03BA' ],\n [ /\\\\lambda /g, '\\u03BB' ],\n [ /\\\\mu /g, '\\u03BC' ],\n [ /\\\\nu /g, '\\u03BD' ],\n [ /\\\\xi /g, '\\u03BE' ],\n [ /\\\\pi /g, '\\u03C0' ],\n [ /\\\\rho /g, '\\u03C1' ],\n [ /\\\\varsigma /g, '\\u03C2' ],\n [ /\\\\sigma /g, '\\u03C3' ],\n [ /\\\\tau /g, '\\u03C4' ],\n [ /\\\\upsilon /g, '\\u03C5' ],\n [ /\\\\varphi /g, '\\u03C6' ],\n [ /\\\\chi /g, '\\u03C7' ],\n [ /\\\\psi /g, '\\u03C8' ],\n [ /\\\\omega /g, '\\u03C9' ],\n [ /\\\\ddot\\{\\\\iota\\}/g, '\\u03CA' ],\n [ /\\\\ddot\\{\\\\upsilon\\}/g, '\\u03CB' ],\n [ /\\\\'\\{o\\}/g, '\\u03CC' ],\n [ /\\\\acute\\{\\\\upsilon\\}/g, '\\u03CD' ],\n [ /\\\\acute\\{\\\\omega\\}/g, '\\u03CE' ],\n [ /\\\\Pisymbol\\{ppi022\\}\\{87\\}/g, '\\u03D0' ],\n [ /\\\\textvartheta /g, '\\u03D1' ],\n [ /\\\\Upsilon /g, '\\u03D2' ],\n [ /\\\\phi /g, '\\u03D5' ],\n [ /\\\\varpi /g, '\\u03D6' ],\n [ /\\\\Stigma /g, '\\u03DA' ],\n [ /\\\\Digamma /g, '\\u03DC' ],\n [ /\\\\digamma /g, '\\u03DD' ],\n [ /\\\\Koppa /g, '\\u03DE' ],\n [ /\\\\Sampi /g, '\\u03E0' ],\n [ /\\\\varkappa /g, '\\u03F0' ],\n [ /\\\\varrho /g, '\\u03F1' ],\n [ /\\\\textTheta /g, '\\u03F4' ],\n [ /\\\\backepsilon /g, '\\u03F6' ],\n [ /\\\\cyrchar\\\\CYRYO /g, '\\u0401' ],\n [ /\\\\cyrchar\\\\CYRDJE /g, '\\u0402' ],\n [ /\\\\cyrchar\\{\\\\'\\\\CYRG\\}/g, '\\u0403' ],\n [ /\\\\cyrchar\\\\CYRIE /g, '\\u0404' ],\n [ /\\\\cyrchar\\\\CYRDZE /g, '\\u0405' ],\n [ /\\\\cyrchar\\\\CYRII /g, '\\u0406' ],\n [ /\\\\cyrchar\\\\CYRYI /g, '\\u0407' ],\n [ /\\\\cyrchar\\\\CYRJE /g, '\\u0408' ],\n [ /\\\\cyrchar\\\\CYRLJE /g, '\\u0409' ],\n [ /\\\\cyrchar\\\\CYRNJE /g, '\\u040A' ],\n [ /\\\\cyrchar\\\\CYRTSHE /g, '\\u040B' ],\n [ /\\\\cyrchar\\{\\\\'\\\\CYRK\\}/g, '\\u040C' ],\n [ /\\\\cyrchar\\\\CYRUSHRT /g, '\\u040E' ],\n [ /\\\\cyrchar\\\\CYRDZHE /g, '\\u040F' ],\n [ /\\\\cyrchar\\\\CYRA /g, '\\u0410' ],\n [ /\\\\cyrchar\\\\CYRB /g, '\\u0411' ],\n [ /\\\\cyrchar\\\\CYRV /g, '\\u0412' ],\n [ /\\\\cyrchar\\\\CYRG /g, '\\u0413' ],\n [ /\\\\cyrchar\\\\CYRD /g, '\\u0414' ],\n [ /\\\\cyrchar\\\\CYRE /g, '\\u0415' ],\n [ /\\\\cyrchar\\\\CYRZH /g, '\\u0416' ],\n [ /\\\\cyrchar\\\\CYRZ /g, '\\u0417' ],\n [ /\\\\cyrchar\\\\CYRI /g, '\\u0418' ],\n [ /\\\\cyrchar\\\\CYRISHRT /g, '\\u0419' ],\n [ /\\\\cyrchar\\\\CYRK /g, '\\u041A' ],\n [ /\\\\cyrchar\\\\CYRL /g, '\\u041B' ],\n [ /\\\\cyrchar\\\\CYRM /g, '\\u041C' ],\n [ /\\\\cyrchar\\\\CYRN /g, '\\u041D' ],\n [ /\\\\cyrchar\\\\CYRO /g, '\\u041E' ],\n [ /\\\\cyrchar\\\\CYRP /g, '\\u041F' ],\n [ /\\\\cyrchar\\\\CYRR /g, '\\u0420' ],\n [ /\\\\cyrchar\\\\CYRS /g, '\\u0421' ],\n [ /\\\\cyrchar\\\\CYRT /g, '\\u0422' ],\n [ /\\\\cyrchar\\\\CYRU /g, '\\u0423' ],\n [ /\\\\cyrchar\\\\CYRF /g, '\\u0424' ],\n [ /\\\\cyrchar\\\\CYRH /g, '\\u0425' ],\n [ /\\\\cyrchar\\\\CYRC /g, '\\u0426' ],\n [ /\\\\cyrchar\\\\CYRCH /g, '\\u0427' ],\n [ /\\\\cyrchar\\\\CYRSH /g, '\\u0428' ],\n [ /\\\\cyrchar\\\\CYRSHCH /g, '\\u0429' ],\n [ /\\\\cyrchar\\\\CYRHRDSN /g, '\\u042A' ],\n [ /\\\\cyrchar\\\\CYRERY /g, '\\u042B' ],\n [ /\\\\cyrchar\\\\CYRSFTSN /g, '\\u042C' ],\n [ /\\\\cyrchar\\\\CYREREV /g, '\\u042D' ],\n [ /\\\\cyrchar\\\\CYRYU /g, '\\u042E' ],\n [ /\\\\cyrchar\\\\CYRYA /g, '\\u042F' ],\n [ /\\\\cyrchar\\\\cyra /g, '\\u0430' ],\n [ /\\\\cyrchar\\\\cyrb /g, '\\u0431' ],\n [ /\\\\cyrchar\\\\cyrv /g, '\\u0432' ],\n [ /\\\\cyrchar\\\\cyrg /g, '\\u0433' ],\n [ /\\\\cyrchar\\\\cyrd /g, '\\u0434' ],\n [ /\\\\cyrchar\\\\cyre /g, '\\u0435' ],\n [ /\\\\cyrchar\\\\cyrzh /g, '\\u0436' ],\n [ /\\\\cyrchar\\\\cyrz /g, '\\u0437' ],\n [ /\\\\cyrchar\\\\cyri /g, '\\u0438' ],\n [ /\\\\cyrchar\\\\cyrishrt /g, '\\u0439' ],\n [ /\\\\cyrchar\\\\cyrk /g, '\\u043A' ],\n [ /\\\\cyrchar\\\\cyrl /g, '\\u043B' ],\n [ /\\\\cyrchar\\\\cyrm /g, '\\u043C' ],\n [ /\\\\cyrchar\\\\cyrn /g, '\\u043D' ],\n [ /\\\\cyrchar\\\\cyro /g, '\\u043E' ],\n [ /\\\\cyrchar\\\\cyrp /g, '\\u043F' ],\n [ /\\\\cyrchar\\\\cyrr /g, '\\u0440' ],\n [ /\\\\cyrchar\\\\cyrs /g, '\\u0441' ],\n [ /\\\\cyrchar\\\\cyrt /g, '\\u0442' ],\n [ /\\\\cyrchar\\\\cyru /g, '\\u0443' ],\n [ /\\\\cyrchar\\\\cyrf /g, '\\u0444' ],\n [ /\\\\cyrchar\\\\cyrh /g, '\\u0445' ],\n [ /\\\\cyrchar\\\\cyrc /g, '\\u0446' ],\n [ /\\\\cyrchar\\\\cyrch /g, '\\u0447' ],\n [ /\\\\cyrchar\\\\cyrsh /g, '\\u0448' ],\n [ /\\\\cyrchar\\\\cyrshch /g, '\\u0449' ],\n [ /\\\\cyrchar\\\\cyrhrdsn /g, '\\u044A' ],\n [ /\\\\cyrchar\\\\cyrery /g, '\\u044B' ],\n [ /\\\\cyrchar\\\\cyrsftsn /g, '\\u044C' ],\n [ /\\\\cyrchar\\\\cyrerev /g, '\\u044D' ],\n [ /\\\\cyrchar\\\\cyryu /g, '\\u044E' ],\n [ /\\\\cyrchar\\\\cyrya /g, '\\u044F' ],\n [ /\\\\cyrchar\\\\cyryo /g, '\\u0451' ],\n [ /\\\\cyrchar\\\\cyrdje /g, '\\u0452' ],\n [ /\\\\cyrchar\\{\\\\'\\\\cyrg\\}/g, '\\u0453' ],\n [ /\\\\cyrchar\\\\cyrie /g, '\\u0454' ],\n [ /\\\\cyrchar\\\\cyrdze /g, '\\u0455' ],\n [ /\\\\cyrchar\\\\cyrii /g, '\\u0456' ],\n [ /\\\\cyrchar\\\\cyryi /g, '\\u0457' ],\n [ /\\\\cyrchar\\\\cyrje /g, '\\u0458' ],\n [ /\\\\cyrchar\\\\cyrlje /g, '\\u0459' ],\n [ /\\\\cyrchar\\\\cyrnje /g, '\\u045A' ],\n [ /\\\\cyrchar\\\\cyrtshe /g, '\\u045B' ],\n [ /\\\\cyrchar\\{\\\\'\\\\cyrk\\}/g, '\\u045C' ],\n [ /\\\\cyrchar\\\\cyrushrt /g, '\\u045E' ],\n [ /\\\\cyrchar\\\\cyrdzhe /g, '\\u045F' ],\n [ /\\\\cyrchar\\\\CYROMEGA /g, '\\u0460' ],\n [ /\\\\cyrchar\\\\cyromega /g, '\\u0461' ],\n [ /\\\\cyrchar\\\\CYRYAT /g, '\\u0462' ],\n [ /\\\\cyrchar\\\\CYRIOTE /g, '\\u0464' ],\n [ /\\\\cyrchar\\\\cyriote /g, '\\u0465' ],\n [ /\\\\cyrchar\\\\CYRLYUS /g, '\\u0466' ],\n [ /\\\\cyrchar\\\\cyrlyus /g, '\\u0467' ],\n [ /\\\\cyrchar\\\\CYRIOTLYUS /g, '\\u0468' ],\n [ /\\\\cyrchar\\\\cyriotlyus /g, '\\u0469' ],\n [ /\\\\cyrchar\\\\CYRBYUS /g, '\\u046A' ],\n [ /\\\\cyrchar\\\\CYRIOTBYUS /g, '\\u046C' ],\n [ /\\\\cyrchar\\\\cyriotbyus /g, '\\u046D' ],\n [ /\\\\cyrchar\\\\CYRKSI /g, '\\u046E' ],\n [ /\\\\cyrchar\\\\cyrksi /g, '\\u046F' ],\n [ /\\\\cyrchar\\\\CYRPSI /g, '\\u0470' ],\n [ /\\\\cyrchar\\\\cyrpsi /g, '\\u0471' ],\n [ /\\\\cyrchar\\\\CYRFITA /g, '\\u0472' ],\n [ /\\\\cyrchar\\\\CYRIZH /g, '\\u0474' ],\n [ /\\\\cyrchar\\\\CYRUK /g, '\\u0478' ],\n [ /\\\\cyrchar\\\\cyruk /g, '\\u0479' ],\n [ /\\\\cyrchar\\\\CYROMEGARND /g, '\\u047A' ],\n [ /\\\\cyrchar\\\\cyromegarnd /g, '\\u047B' ],\n [ /\\\\cyrchar\\\\CYROMEGATITLO /g, '\\u047C' ],\n [ /\\\\cyrchar\\\\cyromegatitlo /g, '\\u047D' ],\n [ /\\\\cyrchar\\\\CYROT /g, '\\u047E' ],\n [ /\\\\cyrchar\\\\cyrot /g, '\\u047F' ],\n [ /\\\\cyrchar\\\\CYRKOPPA /g, '\\u0480' ],\n [ /\\\\cyrchar\\\\cyrkoppa /g, '\\u0481' ],\n [ /\\\\cyrchar\\\\cyrthousands /g, '\\u0482' ],\n [ /\\\\cyrchar\\\\cyrhundredthousands /g, '\\u0488' ],\n [ /\\\\cyrchar\\\\cyrmillions /g, '\\u0489' ],\n [ /\\\\cyrchar\\\\CYRSEMISFTSN /g, '\\u048C' ],\n [ /\\\\cyrchar\\\\cyrsemisftsn /g, '\\u048D' ],\n [ /\\\\cyrchar\\\\CYRRTICK /g, '\\u048E' ],\n [ /\\\\cyrchar\\\\cyrrtick /g, '\\u048F' ],\n [ /\\\\cyrchar\\\\CYRGUP /g, '\\u0490' ],\n [ /\\\\cyrchar\\\\cyrgup /g, '\\u0491' ],\n [ /\\\\cyrchar\\\\CYRGHCRS /g, '\\u0492' ],\n [ /\\\\cyrchar\\\\cyrghcrs /g, '\\u0493' ],\n [ /\\\\cyrchar\\\\CYRGHK /g, '\\u0494' ],\n [ /\\\\cyrchar\\\\cyrghk /g, '\\u0495' ],\n [ /\\\\cyrchar\\\\CYRZHDSC /g, '\\u0496' ],\n [ /\\\\cyrchar\\\\cyrzhdsc /g, '\\u0497' ],\n [ /\\\\cyrchar\\\\CYRZDSC /g, '\\u0498' ],\n [ /\\\\cyrchar\\\\cyrzdsc /g, '\\u0499' ],\n [ /\\\\cyrchar\\\\CYRKDSC /g, '\\u049A' ],\n [ /\\\\cyrchar\\\\cyrkdsc /g, '\\u049B' ],\n [ /\\\\cyrchar\\\\CYRKVCRS /g, '\\u049C' ],\n [ /\\\\cyrchar\\\\cyrkvcrs /g, '\\u049D' ],\n [ /\\\\cyrchar\\\\CYRKHCRS /g, '\\u049E' ],\n [ /\\\\cyrchar\\\\cyrkhcrs /g, '\\u049F' ],\n [ /\\\\cyrchar\\\\CYRKBEAK /g, '\\u04A0' ],\n [ /\\\\cyrchar\\\\cyrkbeak /g, '\\u04A1' ],\n [ /\\\\cyrchar\\\\CYRNDSC /g, '\\u04A2' ],\n [ /\\\\cyrchar\\\\cyrndsc /g, '\\u04A3' ],\n [ /\\\\cyrchar\\\\CYRNG /g, '\\u04A4' ],\n [ /\\\\cyrchar\\\\cyrng /g, '\\u04A5' ],\n [ /\\\\cyrchar\\\\CYRPHK /g, '\\u04A6' ],\n [ /\\\\cyrchar\\\\cyrphk /g, '\\u04A7' ],\n [ /\\\\cyrchar\\\\CYRABHHA /g, '\\u04A8' ],\n [ /\\\\cyrchar\\\\cyrabhha /g, '\\u04A9' ],\n [ /\\\\cyrchar\\\\CYRSDSC /g, '\\u04AA' ],\n [ /\\\\cyrchar\\\\cyrsdsc /g, '\\u04AB' ],\n [ /\\\\cyrchar\\\\CYRTDSC /g, '\\u04AC' ],\n [ /\\\\cyrchar\\\\cyrtdsc /g, '\\u04AD' ],\n [ /\\\\cyrchar\\\\CYRY /g, '\\u04AE' ],\n [ /\\\\cyrchar\\\\cyry /g, '\\u04AF' ],\n [ /\\\\cyrchar\\\\CYRYHCRS /g, '\\u04B0' ],\n [ /\\\\cyrchar\\\\cyryhcrs /g, '\\u04B1' ],\n [ /\\\\cyrchar\\\\CYRHDSC /g, '\\u04B2' ],\n [ /\\\\cyrchar\\\\cyrhdsc /g, '\\u04B3' ],\n [ /\\\\cyrchar\\\\CYRTETSE /g, '\\u04B4' ],\n [ /\\\\cyrchar\\\\cyrtetse /g, '\\u04B5' ],\n [ /\\\\cyrchar\\\\CYRCHRDSC /g, '\\u04B6' ],\n [ /\\\\cyrchar\\\\cyrchrdsc /g, '\\u04B7' ],\n [ /\\\\cyrchar\\\\CYRCHVCRS /g, '\\u04B8' ],\n [ /\\\\cyrchar\\\\cyrchvcrs /g, '\\u04B9' ],\n [ /\\\\cyrchar\\\\CYRSHHA /g, '\\u04BA' ],\n [ /\\\\cyrchar\\\\cyrshha /g, '\\u04BB' ],\n [ /\\\\cyrchar\\\\CYRABHCH /g, '\\u04BC' ],\n [ /\\\\cyrchar\\\\cyrabhch /g, '\\u04BD' ],\n [ /\\\\cyrchar\\\\CYRABHCHDSC /g, '\\u04BE' ],\n [ /\\\\cyrchar\\\\cyrabhchdsc /g, '\\u04BF' ],\n [ /\\\\cyrchar\\\\CYRpalochka /g, '\\u04C0' ],\n [ /\\\\cyrchar\\\\CYRKHK /g, '\\u04C3' ],\n [ /\\\\cyrchar\\\\cyrkhk /g, '\\u04C4' ],\n [ /\\\\cyrchar\\\\CYRNHK /g, '\\u04C7' ],\n [ /\\\\cyrchar\\\\cyrnhk /g, '\\u04C8' ],\n [ /\\\\cyrchar\\\\CYRCHLDSC /g, '\\u04CB' ],\n [ /\\\\cyrchar\\\\cyrchldsc /g, '\\u04CC' ],\n [ /\\\\cyrchar\\\\CYRAE /g, '\\u04D4' ],\n [ /\\\\cyrchar\\\\cyrae /g, '\\u04D5' ],\n [ /\\\\cyrchar\\\\CYRSCHWA /g, '\\u04D8' ],\n [ /\\\\cyrchar\\\\cyrschwa /g, '\\u04D9' ],\n [ /\\\\cyrchar\\\\CYRABHDZE /g, '\\u04E0' ],\n [ /\\\\cyrchar\\\\cyrabhdze /g, '\\u04E1' ],\n [ /\\\\cyrchar\\\\CYROTLD /g, '\\u04E8' ],\n [ /\\\\cyrchar\\\\cyrotld /g, '\\u04E9' ],\n [ /\\\\hspace\\{0.6em\\}/g, '\\u2002' ],\n [ /\\\\hspace\\{1em\\}/g, '\\u2003' ],\n [ /\\\\hspace\\{0.33em\\}/g, '\\u2004' ],\n [ /\\\\hspace\\{0.25em\\}/g, '\\u2005' ],\n [ /\\\\hspace\\{0.166em\\}/g, '\\u2006' ],\n [ /\\\\hphantom\\{0\\}/g, '\\u2007' ],\n [ /\\\\hphantom\\{,\\}/g, '\\u2008' ],\n [ /\\\\hspace\\{0.167em\\}/g, '\\u2009' ],\n [ /\\\\mkern1mu /g, '\\u200A' ],\n [ /\\\\textendash /g, '\\u2013' ],\n [ /\\\\textemdash /g, '\\u2014' ],\n [ /\\\\rule\\{1em\\}\\{1pt\\}/g, '\\u2015' ],\n [ /\\\\Vert /g, '\\u2016' ],\n [ /\\\\Elzreapos /g, '\\u201B' ],\n [ /\\\\textquotedblleft /g, '\\u201C' ],\n [ /\\\\textquotedblright /g, '\\u201D' ],\n [ /\\\\textdagger /g, '\\u2020' ],\n [ /\\\\textdaggerdbl /g, '\\u2021' ],\n [ /\\\\textbullet /g, '\\u2022' ],\n [ /\\\\ldots /g, '\\u2026' ],\n [ /\\\\textperthousand /g, '\\u2030' ],\n [ /\\\\textpertenthousand /g, '\\u2031' ],\n [ /\\\\backprime /g, '\\u2035' ],\n [ /\\\\guilsinglleft /g, '\\u2039' ],\n [ /\\\\guilsinglright /g, '\\u203A' ],\n [ /\\\\mkern4mu /g, '\\u205F' ],\n [ /\\\\nolinebreak /g, '\\u2060' ],\n [ /\\\\ensuremath\\{\\\\Elzpes\\}/g, '\\u20A7' ],\n [ /\\\\mbox\\{\\\\texteuro\\} /g, '\\u20AC' ],\n [ /\\\\dddot /g, '\\u20DB' ],\n [ /\\\\ddddot /g, '\\u20DC' ],\n [ /\\\\mathbb\\{C\\}/g, '\\u2102' ],\n [ /\\\\mathscr\\{g\\}/g, '\\u210A' ],\n [ /\\\\mathscr\\{H\\}/g, '\\u210B' ],\n [ /\\\\mathfrak\\{H\\}/g, '\\u210C' ],\n [ /\\\\mathbb\\{H\\}/g, '\\u210D' ],\n [ /\\\\hslash /g, '\\u210F' ],\n [ /\\\\mathscr\\{I\\}/g, '\\u2110' ],\n [ /\\\\mathfrak\\{I\\}/g, '\\u2111' ],\n [ /\\\\mathscr\\{L\\}/g, '\\u2112' ],\n [ /\\\\mathscr\\{l\\}/g, '\\u2113' ],\n [ /\\\\mathbb\\{N\\}/g, '\\u2115' ],\n [ /\\\\cyrchar\\\\textnumero /g, '\\u2116' ],\n [ /\\\\wp /g, '\\u2118' ],\n [ /\\\\mathbb\\{P\\}/g, '\\u2119' ],\n [ /\\\\mathbb\\{Q\\}/g, '\\u211A' ],\n [ /\\\\mathscr\\{R\\}/g, '\\u211B' ],\n [ /\\\\mathfrak\\{R\\}/g, '\\u211C' ],\n [ /\\\\mathbb\\{R\\}/g, '\\u211D' ],\n [ /\\\\Elzxrat /g, '\\u211E' ],\n [ /\\\\texttrademark /g, '\\u2122' ],\n [ /\\\\mathbb\\{Z\\}/g, '\\u2124' ],\n [ /\\\\Omega /g, '\\u2126' ],\n [ /\\\\mho /g, '\\u2127' ],\n [ /\\\\mathfrak\\{Z\\}/g, '\\u2128' ],\n [ /\\\\ElsevierGlyph\\{2129\\}/g, '\\u2129' ],\n [ /\\\\AA /g, '\\u212B' ],\n [ /\\\\mathscr\\{B\\}/g, '\\u212C' ],\n [ /\\\\mathfrak\\{C\\}/g, '\\u212D' ],\n [ /\\\\mathscr\\{e\\}/g, '\\u212F' ],\n [ /\\\\mathscr\\{E\\}/g, '\\u2130' ],\n [ /\\\\mathscr\\{F\\}/g, '\\u2131' ],\n [ /\\\\mathscr\\{M\\}/g, '\\u2133' ],\n [ /\\\\mathscr\\{o\\}/g, '\\u2134' ],\n [ /\\\\aleph /g, '\\u2135' ],\n [ /\\\\beth /g, '\\u2136' ],\n [ /\\\\gimel /g, '\\u2137' ],\n [ /\\\\daleth /g, '\\u2138' ],\n [ /\\\\textfrac\\{1\\}\\{3\\}/g, '\\u2153' ],\n [ /\\\\textfrac\\{2\\}\\{3\\}/g, '\\u2154' ],\n [ /\\\\textfrac\\{1\\}\\{5\\}/g, '\\u2155' ],\n [ /\\\\textfrac\\{2\\}\\{5\\}/g, '\\u2156' ],\n [ /\\\\textfrac\\{3\\}\\{5\\}/g, '\\u2157' ],\n [ /\\\\textfrac\\{4\\}\\{5\\}/g, '\\u2158' ],\n [ /\\\\textfrac\\{1\\}\\{6\\}/g, '\\u2159' ],\n [ /\\\\textfrac\\{5\\}\\{6\\}/g, '\\u215A' ],\n [ /\\\\textfrac\\{1\\}\\{8\\}/g, '\\u215B' ],\n [ /\\\\textfrac\\{3\\}\\{8\\}/g, '\\u215C' ],\n [ /\\\\textfrac\\{5\\}\\{8\\}/g, '\\u215D' ],\n [ /\\\\textfrac\\{7\\}\\{8\\}/g, '\\u215E' ],\n [ /\\\\leftarrow /g, '\\u2190' ],\n [ /\\\\uparrow /g, '\\u2191' ],\n [ /\\\\rightarrow /g, '\\u2192' ],\n [ /\\\\downarrow /g, '\\u2193' ],\n [ /\\\\leftrightarrow /g, '\\u2194' ],\n [ /\\\\updownarrow /g, '\\u2195' ],\n [ /\\\\nwarrow /g, '\\u2196' ],\n [ /\\\\nearrow /g, '\\u2197' ],\n [ /\\\\searrow /g, '\\u2198' ],\n [ /\\\\swarrow /g, '\\u2199' ],\n [ /\\\\nleftarrow /g, '\\u219A' ],\n [ /\\\\nrightarrow /g, '\\u219B' ],\n [ /\\\\arrowwaveright /g, '\\u219C' ],\n [ /\\\\arrowwaveright /g, '\\u219D' ],\n [ /\\\\twoheadleftarrow /g, '\\u219E' ],\n [ /\\\\twoheadrightarrow /g, '\\u21A0' ],\n [ /\\\\leftarrowtail /g, '\\u21A2' ],\n [ /\\\\rightarrowtail /g, '\\u21A3' ],\n [ /\\\\mapsto /g, '\\u21A6' ],\n [ /\\\\hookleftarrow /g, '\\u21A9' ],\n [ /\\\\hookrightarrow /g, '\\u21AA' ],\n [ /\\\\looparrowleft /g, '\\u21AB' ],\n [ /\\\\looparrowright /g, '\\u21AC' ],\n [ /\\\\leftrightsquigarrow /g, '\\u21AD' ],\n [ /\\\\nleftrightarrow /g, '\\u21AE' ],\n [ /\\\\Lsh /g, '\\u21B0' ],\n [ /\\\\Rsh /g, '\\u21B1' ],\n [ /\\\\ElsevierGlyph\\{21B3\\}/g, '\\u21B3' ],\n [ /\\\\curvearrowleft /g, '\\u21B6' ],\n [ /\\\\curvearrowright /g, '\\u21B7' ],\n [ /\\\\circlearrowleft /g, '\\u21BA' ],\n [ /\\\\circlearrowright /g, '\\u21BB' ],\n [ /\\\\leftharpoonup /g, '\\u21BC' ],\n [ /\\\\leftharpoondown /g, '\\u21BD' ],\n [ /\\\\upharpoonright /g, '\\u21BE' ],\n [ /\\\\upharpoonleft /g, '\\u21BF' ],\n [ /\\\\rightharpoonup /g, '\\u21C0' ],\n [ /\\\\rightharpoondown /g, '\\u21C1' ],\n [ /\\\\downharpoonright /g, '\\u21C2' ],\n [ /\\\\downharpoonleft /g, '\\u21C3' ],\n [ /\\\\rightleftarrows /g, '\\u21C4' ],\n [ /\\\\dblarrowupdown /g, '\\u21C5' ],\n [ /\\\\leftrightarrows /g, '\\u21C6' ],\n [ /\\\\leftleftarrows /g, '\\u21C7' ],\n [ /\\\\upuparrows /g, '\\u21C8' ],\n [ /\\\\rightrightarrows /g, '\\u21C9' ],\n [ /\\\\downdownarrows /g, '\\u21CA' ],\n [ /\\\\leftrightharpoons /g, '\\u21CB' ],\n [ /\\\\rightleftharpoons /g, '\\u21CC' ],\n [ /\\\\nLeftarrow /g, '\\u21CD' ],\n [ /\\\\nLeftrightarrow /g, '\\u21CE' ],\n [ /\\\\nRightarrow /g, '\\u21CF' ],\n [ /\\\\Leftarrow /g, '\\u21D0' ],\n [ /\\\\Uparrow /g, '\\u21D1' ],\n [ /\\\\Rightarrow /g, '\\u21D2' ],\n [ /\\\\Downarrow /g, '\\u21D3' ],\n [ /\\\\Leftrightarrow /g, '\\u21D4' ],\n [ /\\\\Updownarrow /g, '\\u21D5' ],\n [ /\\\\Lleftarrow /g, '\\u21DA' ],\n [ /\\\\Rrightarrow /g, '\\u21DB' ],\n [ /\\\\rightsquigarrow /g, '\\u21DD' ],\n [ /\\\\DownArrowUpArrow /g, '\\u21F5' ],\n [ /\\\\forall /g, '\\u2200' ],\n [ /\\\\complement /g, '\\u2201' ],\n [ /\\\\partial /g, '\\u2202' ],\n [ /\\\\exists /g, '\\u2203' ],\n [ /\\\\nexists /g, '\\u2204' ],\n [ /\\\\varnothing /g, '\\u2205' ],\n [ /\\\\nabla /g, '\\u2207' ],\n [ /\\\\in /g, '\\u2208' ],\n [ /\\\\not\\\\in /g, '\\u2209' ],\n [ /\\\\ni /g, '\\u220B' ],\n [ /\\\\not\\\\ni /g, '\\u220C' ],\n [ /\\\\prod /g, '\\u220F' ],\n [ /\\\\coprod /g, '\\u2210' ],\n [ /\\\\sum /g, '\\u2211' ],\n [ /\\\\mp /g, '\\u2213' ],\n [ /\\\\dotplus /g, '\\u2214' ],\n [ /\\\\setminus /g, '\\u2216' ],\n [ /\\\\circ /g, '\\u2218' ],\n [ /\\\\bullet /g, '\\u2219' ],\n [ /\\\\surd /g, '\\u221A' ],\n [ /\\\\propto /g, '\\u221D' ],\n [ /\\\\infty /g, '\\u221E' ],\n [ /\\\\rightangle /g, '\\u221F' ],\n [ /\\\\angle /g, '\\u2220' ],\n [ /\\\\measuredangle /g, '\\u2221' ],\n [ /\\\\sphericalangle /g, '\\u2222' ],\n [ /\\\\mid /g, '\\u2223' ],\n [ /\\\\nmid /g, '\\u2224' ],\n [ /\\\\parallel /g, '\\u2225' ],\n [ /\\\\nparallel /g, '\\u2226' ],\n [ /\\\\wedge /g, '\\u2227' ],\n [ /\\\\vee /g, '\\u2228' ],\n [ /\\\\cap /g, '\\u2229' ],\n [ /\\\\cup /g, '\\u222A' ],\n [ /\\\\int /g, '\\u222B' ],\n [ /\\\\int\\\\!\\\\int /g, '\\u222C' ],\n [ /\\\\int\\\\!\\\\int\\\\!\\\\int /g, '\\u222D' ],\n [ /\\\\oint /g, '\\u222E' ],\n [ /\\\\surfintegral /g, '\\u222F' ],\n [ /\\\\volintegral /g, '\\u2230' ],\n [ /\\\\clwintegral /g, '\\u2231' ],\n [ /\\\\ElsevierGlyph\\{2232\\}/g, '\\u2232' ],\n [ /\\\\ElsevierGlyph\\{2233\\}/g, '\\u2233' ],\n [ /\\\\therefore /g, '\\u2234' ],\n [ /\\\\because /g, '\\u2235' ],\n [ /\\\\Colon /g, '\\u2237' ],\n [ /\\\\ElsevierGlyph\\{2238\\}/g, '\\u2238' ],\n [ /\\\\mathbin\\{\\{:\\}\\\\!\\\\!\\{\\-\\}\\\\!\\\\!\\{:\\}\\}/g, '\\u223A' ],\n [ /\\\\homothetic /g, '\\u223B' ],\n [ /\\\\sim /g, '\\u223C' ],\n [ /\\\\backsim /g, '\\u223D' ],\n [ /\\\\lazysinv /g, '\\u223E' ],\n [ /\\\\wr /g, '\\u2240' ],\n [ /\\\\not\\\\sim /g, '\\u2241' ],\n [ /\\\\ElsevierGlyph\\{2242\\}/g, '\\u2242' ],\n [ /\\\\NotEqualTilde /g, '\\u2242-00338' ],\n [ /\\\\simeq /g, '\\u2243' ],\n [ /\\\\not\\\\simeq /g, '\\u2244' ],\n [ /\\\\cong /g, '\\u2245' ],\n [ /\\\\approxnotequal /g, '\\u2246' ],\n [ /\\\\not\\\\cong /g, '\\u2247' ],\n [ /\\\\approx /g, '\\u2248' ],\n [ /\\\\not\\\\approx /g, '\\u2249' ],\n [ /\\\\approxeq /g, '\\u224A' ],\n [ /\\\\tildetrpl /g, '\\u224B' ],\n [ /\\\\not\\\\apid /g, '\\u224B-00338' ],\n [ /\\\\allequal /g, '\\u224C' ],\n [ /\\\\asymp /g, '\\u224D' ],\n [ /\\\\Bumpeq /g, '\\u224E' ],\n [ /\\\\NotHumpDownHump /g, '\\u224E-00338' ],\n [ /\\\\bumpeq /g, '\\u224F' ],\n [ /\\\\NotHumpEqual /g, '\\u224F-00338' ],\n [ /\\\\doteq /g, '\\u2250' ],\n [ /\\\\not\\\\doteq/g, '\\u2250-00338' ],\n [ /\\\\doteqdot /g, '\\u2251' ],\n [ /\\\\fallingdotseq /g, '\\u2252' ],\n [ /\\\\risingdotseq /g, '\\u2253' ],\n [ /\\\\eqcirc /g, '\\u2256' ],\n [ /\\\\circeq /g, '\\u2257' ],\n [ /\\\\estimates /g, '\\u2259' ],\n [ /\\\\ElsevierGlyph\\{225A\\}/g, '\\u225A' ],\n [ /\\\\starequal /g, '\\u225B' ],\n [ /\\\\triangleq /g, '\\u225C' ],\n [ /\\\\ElsevierGlyph\\{225F\\}/g, '\\u225F' ],\n [ /\\\\not =/g, '\\u2260' ],\n [ /\\\\equiv /g, '\\u2261' ],\n [ /\\\\not\\\\equiv /g, '\\u2262' ],\n [ /\\\\leq /g, '\\u2264' ],\n [ /\\\\geq /g, '\\u2265' ],\n [ /\\\\leqq /g, '\\u2266' ],\n [ /\\\\geqq /g, '\\u2267' ],\n [ /\\\\lneqq /g, '\\u2268' ],\n [ /\\\\lvertneqq /g, '\\u2268-0FE00' ],\n [ /\\\\gneqq /g, '\\u2269' ],\n [ /\\\\gvertneqq /g, '\\u2269-0FE00' ],\n [ /\\\\ll /g, '\\u226A' ],\n [ /\\\\NotLessLess /g, '\\u226A-00338' ],\n [ /\\\\gg /g, '\\u226B' ],\n [ /\\\\NotGreaterGreater /g, '\\u226B-00338' ],\n [ /\\\\between /g, '\\u226C' ],\n [ /\\\\not\\\\kern\\-0.3em\\\\times /g, '\\u226D' ],\n [ /\\\\not/g, '\\u226F' ],\n [ /\\\\not\\\\leq /g, '\\u2270' ],\n [ /\\\\not\\\\geq /g, '\\u2271' ],\n [ /\\\\lessequivlnt /g, '\\u2272' ],\n [ /\\\\greaterequivlnt /g, '\\u2273' ],\n [ /\\\\ElsevierGlyph\\{2274\\}/g, '\\u2274' ],\n [ /\\\\ElsevierGlyph\\{2275\\}/g, '\\u2275' ],\n [ /\\\\lessgtr /g, '\\u2276' ],\n [ /\\\\gtrless /g, '\\u2277' ],\n [ /\\\\notlessgreater /g, '\\u2278' ],\n [ /\\\\notgreaterless /g, '\\u2279' ],\n [ /\\\\prec /g, '\\u227A' ],\n [ /\\\\succ /g, '\\u227B' ],\n [ /\\\\preccurlyeq /g, '\\u227C' ],\n [ /\\\\succcurlyeq /g, '\\u227D' ],\n [ /\\\\precapprox /g, '\\u227E' ],\n [ /\\\\NotPrecedesTilde /g, '\\u227E-00338' ],\n [ /\\\\succapprox /g, '\\u227F' ],\n [ /\\\\NotSucceedsTilde /g, '\\u227F-00338' ],\n [ /\\\\not\\\\prec /g, '\\u2280' ],\n [ /\\\\not\\\\succ /g, '\\u2281' ],\n [ /\\\\subset /g, '\\u2282' ],\n [ /\\\\supset /g, '\\u2283' ],\n [ /\\\\not\\\\subset /g, '\\u2284' ],\n [ /\\\\not\\\\supset /g, '\\u2285' ],\n [ /\\\\subseteq /g, '\\u2286' ],\n [ /\\\\supseteq /g, '\\u2287' ],\n [ /\\\\not\\\\subseteq /g, '\\u2288' ],\n [ /\\\\not\\\\supseteq /g, '\\u2289' ],\n [ /\\\\subsetneq /g, '\\u228A' ],\n [ /\\\\varsubsetneqq /g, '\\u228A-0FE00' ],\n [ /\\\\supsetneq /g, '\\u228B' ],\n [ /\\\\varsupsetneq /g, '\\u228B-0FE00' ],\n [ /\\\\uplus /g, '\\u228E' ],\n [ /\\\\sqsubset /g, '\\u228F' ],\n [ /\\\\NotSquareSubset /g, '\\u228F-00338' ],\n [ /\\\\sqsupset /g, '\\u2290' ],\n [ /\\\\NotSquareSuperset /g, '\\u2290-00338' ],\n [ /\\\\sqsubseteq /g, '\\u2291' ],\n [ /\\\\sqsupseteq /g, '\\u2292' ],\n [ /\\\\sqcap /g, '\\u2293' ],\n [ /\\\\sqcup /g, '\\u2294' ],\n [ /\\\\oplus /g, '\\u2295' ],\n [ /\\\\ominus /g, '\\u2296' ],\n [ /\\\\otimes /g, '\\u2297' ],\n [ /\\\\oslash /g, '\\u2298' ],\n [ /\\\\odot /g, '\\u2299' ],\n [ /\\\\circledcirc /g, '\\u229A' ],\n [ /\\\\circledast /g, '\\u229B' ],\n [ /\\\\circleddash /g, '\\u229D' ],\n [ /\\\\boxplus /g, '\\u229E' ],\n [ /\\\\boxminus /g, '\\u229F' ],\n [ /\\\\boxtimes /g, '\\u22A0' ],\n [ /\\\\boxdot /g, '\\u22A1' ],\n [ /\\\\vdash /g, '\\u22A2' ],\n [ /\\\\dashv /g, '\\u22A3' ],\n [ /\\\\top /g, '\\u22A4' ],\n [ /\\\\perp /g, '\\u22A5' ],\n [ /\\\\truestate /g, '\\u22A7' ],\n [ /\\\\forcesextra /g, '\\u22A8' ],\n [ /\\\\Vdash /g, '\\u22A9' ],\n [ /\\\\Vvdash /g, '\\u22AA' ],\n [ /\\\\VDash /g, '\\u22AB' ],\n [ /\\\\nvdash /g, '\\u22AC' ],\n [ /\\\\nvDash /g, '\\u22AD' ],\n [ /\\\\nVdash /g, '\\u22AE' ],\n [ /\\\\nVDash /g, '\\u22AF' ],\n [ /\\\\vartriangleleft /g, '\\u22B2' ],\n [ /\\\\vartriangleright /g, '\\u22B3' ],\n [ /\\\\trianglelefteq /g, '\\u22B4' ],\n [ /\\\\trianglerighteq /g, '\\u22B5' ],\n [ /\\\\original /g, '\\u22B6' ],\n [ /\\\\image /g, '\\u22B7' ],\n [ /\\\\multimap /g, '\\u22B8' ],\n [ /\\\\hermitconjmatrix /g, '\\u22B9' ],\n [ /\\\\intercal /g, '\\u22BA' ],\n [ /\\\\veebar /g, '\\u22BB' ],\n [ /\\\\rightanglearc /g, '\\u22BE' ],\n [ /\\\\ElsevierGlyph\\{22C0\\}/g, '\\u22C0' ],\n [ /\\\\ElsevierGlyph\\{22C1\\}/g, '\\u22C1' ],\n [ /\\\\bigcap /g, '\\u22C2' ],\n [ /\\\\bigcup /g, '\\u22C3' ],\n [ /\\\\diamond /g, '\\u22C4' ],\n [ /\\\\cdot /g, '\\u22C5' ],\n [ /\\\\star /g, '\\u22C6' ],\n [ /\\\\divideontimes /g, '\\u22C7' ],\n [ /\\\\bowtie /g, '\\u22C8' ],\n [ /\\\\ltimes /g, '\\u22C9' ],\n [ /\\\\rtimes /g, '\\u22CA' ],\n [ /\\\\leftthreetimes /g, '\\u22CB' ],\n [ /\\\\rightthreetimes /g, '\\u22CC' ],\n [ /\\\\backsimeq /g, '\\u22CD' ],\n [ /\\\\curlyvee /g, '\\u22CE' ],\n [ /\\\\curlywedge /g, '\\u22CF' ],\n [ /\\\\Subset /g, '\\u22D0' ],\n [ /\\\\Supset /g, '\\u22D1' ],\n [ /\\\\Cap /g, '\\u22D2' ],\n [ /\\\\Cup /g, '\\u22D3' ],\n [ /\\\\pitchfork /g, '\\u22D4' ],\n [ /\\\\lessdot /g, '\\u22D6' ],\n [ /\\\\gtrdot /g, '\\u22D7' ],\n [ /\\\\verymuchless /g, '\\u22D8' ],\n [ /\\\\verymuchgreater /g, '\\u22D9' ],\n [ /\\\\lesseqgtr /g, '\\u22DA' ],\n [ /\\\\gtreqless /g, '\\u22DB' ],\n [ /\\\\curlyeqprec /g, '\\u22DE' ],\n [ /\\\\curlyeqsucc /g, '\\u22DF' ],\n [ /\\\\not\\\\sqsubseteq /g, '\\u22E2' ],\n [ /\\\\not\\\\sqsupseteq /g, '\\u22E3' ],\n [ /\\\\Elzsqspne /g, '\\u22E5' ],\n [ /\\\\lnsim /g, '\\u22E6' ],\n [ /\\\\gnsim /g, '\\u22E7' ],\n [ /\\\\precedesnotsimilar /g, '\\u22E8' ],\n [ /\\\\succnsim /g, '\\u22E9' ],\n [ /\\\\ntriangleleft /g, '\\u22EA' ],\n [ /\\\\ntriangleright /g, '\\u22EB' ],\n [ /\\\\ntrianglelefteq /g, '\\u22EC' ],\n [ /\\\\ntrianglerighteq /g, '\\u22ED' ],\n [ /\\\\vdots /g, '\\u22EE' ],\n [ /\\\\cdots /g, '\\u22EF' ],\n [ /\\\\upslopeellipsis /g, '\\u22F0' ],\n [ /\\\\downslopeellipsis /g, '\\u22F1' ],\n [ /\\\\barwedge /g, '\\u2305' ],\n [ /\\\\perspcorrespond /g, '\\u2306' ],\n [ /\\\\lceil /g, '\\u2308' ],\n [ /\\\\rceil /g, '\\u2309' ],\n [ /\\\\lfloor /g, '\\u230A' ],\n [ /\\\\rfloor /g, '\\u230B' ],\n [ /\\\\recorder /g, '\\u2315' ],\n [ /\\\\mathchar\"2208/g, '\\u2316' ],\n [ /\\\\ulcorner /g, '\\u231C' ],\n [ /\\\\urcorner /g, '\\u231D' ],\n [ /\\\\llcorner /g, '\\u231E' ],\n [ /\\\\lrcorner /g, '\\u231F' ],\n [ /\\\\frown /g, '\\u2322' ],\n [ /\\\\smile /g, '\\u2323' ],\n [ /\\\\langle /g, '\\u2329' ],\n [ /\\\\rangle /g, '\\u232A' ],\n [ /\\\\ElsevierGlyph\\{E838\\}/g, '\\u233D' ],\n [ /\\\\Elzdlcorn /g, '\\u23A3' ],\n [ /\\\\lmoustache /g, '\\u23B0' ],\n [ /\\\\rmoustache /g, '\\u23B1' ],\n [ /\\\\textvisiblespace /g, '\\u2423' ],\n [ /\\\\ding\\{172\\}/g, '\\u2460' ],\n [ /\\\\ding\\{173\\}/g, '\\u2461' ],\n [ /\\\\ding\\{174\\}/g, '\\u2462' ],\n [ /\\\\ding\\{175\\}/g, '\\u2463' ],\n [ /\\\\ding\\{176\\}/g, '\\u2464' ],\n [ /\\\\ding\\{177\\}/g, '\\u2465' ],\n [ /\\\\ding\\{178\\}/g, '\\u2466' ],\n [ /\\\\ding\\{179\\}/g, '\\u2467' ],\n [ /\\\\ding\\{180\\}/g, '\\u2468' ],\n [ /\\\\ding\\{181\\}/g, '\\u2469' ],\n [ /\\\\circledS /g, '\\u24C8' ],\n [ /\\\\Elzdshfnc /g, '\\u2506' ],\n [ /\\\\Elzsqfnw /g, '\\u2519' ],\n [ /\\\\diagup /g, '\\u2571' ],\n [ /\\\\ding\\{110\\}/g, '\\u25A0' ],\n [ /\\\\square /g, '\\u25A1' ],\n [ /\\\\blacksquare /g, '\\u25AA' ],\n [ /\\\\fbox\\{~~\\}/g, '\\u25AD' ],\n [ /\\\\Elzvrecto /g, '\\u25AF' ],\n [ /\\\\ElsevierGlyph\\{E381\\}/g, '\\u25B1' ],\n [ /\\\\ding\\{115\\}/g, '\\u25B2' ],\n [ /\\\\bigtriangleup /g, '\\u25B3' ],\n [ /\\\\blacktriangle /g, '\\u25B4' ],\n [ /\\\\vartriangle /g, '\\u25B5' ],\n [ /\\\\blacktriangleright /g, '\\u25B8' ],\n [ /\\\\triangleright /g, '\\u25B9' ],\n [ /\\\\ding\\{116\\}/g, '\\u25BC' ],\n [ /\\\\bigtriangledown /g, '\\u25BD' ],\n [ /\\\\blacktriangledown /g, '\\u25BE' ],\n [ /\\\\triangledown /g, '\\u25BF' ],\n [ /\\\\blacktriangleleft /g, '\\u25C2' ],\n [ /\\\\triangleleft /g, '\\u25C3' ],\n [ /\\\\ding\\{117\\}/g, '\\u25C6' ],\n [ /\\\\lozenge /g, '\\u25CA' ],\n [ /\\\\bigcirc /g, '\\u25CB' ],\n [ /\\\\ding\\{108\\}/g, '\\u25CF' ],\n [ /\\\\Elzcirfl /g, '\\u25D0' ],\n [ /\\\\Elzcirfr /g, '\\u25D1' ],\n [ /\\\\Elzcirfb /g, '\\u25D2' ],\n [ /\\\\ding\\{119\\}/g, '\\u25D7' ],\n [ /\\\\Elzrvbull /g, '\\u25D8' ],\n [ /\\\\Elzsqfl /g, '\\u25E7' ],\n [ /\\\\Elzsqfr /g, '\\u25E8' ],\n [ /\\\\Elzsqfse /g, '\\u25EA' ],\n [ /\\\\bigcirc /g, '\\u25EF' ],\n [ /\\\\ding\\{72\\}/g, '\\u2605' ],\n [ /\\\\ding\\{73\\}/g, '\\u2606' ],\n [ /\\\\ding\\{37\\}/g, '\\u260E' ],\n [ /\\\\ding\\{42\\}/g, '\\u261B' ],\n [ /\\\\ding\\{43\\}/g, '\\u261E' ],\n [ /\\\\rightmoon /g, '\\u263E' ],\n [ /\\\\mercury /g, '\\u263F' ],\n [ /\\\\venus /g, '\\u2640' ],\n [ /\\\\male /g, '\\u2642' ],\n [ /\\\\jupiter /g, '\\u2643' ],\n [ /\\\\saturn /g, '\\u2644' ],\n [ /\\\\uranus /g, '\\u2645' ],\n [ /\\\\neptune /g, '\\u2646' ],\n [ /\\\\pluto /g, '\\u2647' ],\n [ /\\\\aries /g, '\\u2648' ],\n [ /\\\\taurus /g, '\\u2649' ],\n [ /\\\\gemini /g, '\\u264A' ],\n [ /\\\\cancer /g, '\\u264B' ],\n [ /\\\\leo /g, '\\u264C' ],\n [ /\\\\virgo /g, '\\u264D' ],\n [ /\\\\libra /g, '\\u264E' ],\n [ /\\\\scorpio /g, '\\u264F' ],\n [ /\\\\sagittarius /g, '\\u2650' ],\n [ /\\\\capricornus /g, '\\u2651' ],\n [ /\\\\aquarius /g, '\\u2652' ],\n [ /\\\\pisces /g, '\\u2653' ],\n [ /\\\\ding\\{171\\}/g, '\\u2660' ],\n [ /\\\\diamond /g, '\\u2662' ],\n [ /\\\\ding\\{168\\}/g, '\\u2663' ],\n [ /\\\\ding\\{170\\}/g, '\\u2665' ],\n [ /\\\\ding\\{169\\}/g, '\\u2666' ],\n [ /\\\\quarternote /g, '\\u2669' ],\n [ /\\\\eighthnote /g, '\\u266A' ],\n [ /\\\\flat /g, '\\u266D' ],\n [ /\\\\natural /g, '\\u266E' ],\n [ /\\\\sharp /g, '\\u266F' ],\n [ /\\\\ding\\{33\\}/g, '\\u2701' ],\n [ /\\\\ding\\{34\\}/g, '\\u2702' ],\n [ /\\\\ding\\{35\\}/g, '\\u2703' ],\n [ /\\\\ding\\{36\\}/g, '\\u2704' ],\n [ /\\\\ding\\{38\\}/g, '\\u2706' ],\n [ /\\\\ding\\{39\\}/g, '\\u2707' ],\n [ /\\\\ding\\{40\\}/g, '\\u2708' ],\n [ /\\\\ding\\{41\\}/g, '\\u2709' ],\n [ /\\\\ding\\{44\\}/g, '\\u270C' ],\n [ /\\\\ding\\{45\\}/g, '\\u270D' ],\n [ /\\\\ding\\{46\\}/g, '\\u270E' ],\n [ /\\\\ding\\{47\\}/g, '\\u270F' ],\n [ /\\\\ding\\{48\\}/g, '\\u2710' ],\n [ /\\\\ding\\{49\\}/g, '\\u2711' ],\n [ /\\\\ding\\{50\\}/g, '\\u2712' ],\n [ /\\\\ding\\{51\\}/g, '\\u2713' ],\n [ /\\\\ding\\{52\\}/g, '\\u2714' ],\n [ /\\\\ding\\{53\\}/g, '\\u2715' ],\n [ /\\\\ding\\{54\\}/g, '\\u2716' ],\n [ /\\\\ding\\{55\\}/g, '\\u2717' ],\n [ /\\\\ding\\{56\\}/g, '\\u2718' ],\n [ /\\\\ding\\{57\\}/g, '\\u2719' ],\n [ /\\\\ding\\{58\\}/g, '\\u271A' ],\n [ /\\\\ding\\{59\\}/g, '\\u271B' ],\n [ /\\\\ding\\{60\\}/g, '\\u271C' ],\n [ /\\\\ding\\{61\\}/g, '\\u271D' ],\n [ /\\\\ding\\{62\\}/g, '\\u271E' ],\n [ /\\\\ding\\{63\\}/g, '\\u271F' ],\n [ /\\\\ding\\{64\\}/g, '\\u2720' ],\n [ /\\\\ding\\{65\\}/g, '\\u2721' ],\n [ /\\\\ding\\{66\\}/g, '\\u2722' ],\n [ /\\\\ding\\{67\\}/g, '\\u2723' ],\n [ /\\\\ding\\{68\\}/g, '\\u2724' ],\n [ /\\\\ding\\{69\\}/g, '\\u2725' ],\n [ /\\\\ding\\{70\\}/g, '\\u2726' ],\n [ /\\\\ding\\{71\\}/g, '\\u2727' ],\n [ /\\\\ding\\{73\\}/g, '\\u2729' ],\n [ /\\\\ding\\{74\\}/g, '\\u272A' ],\n [ /\\\\ding\\{75\\}/g, '\\u272B' ],\n [ /\\\\ding\\{76\\}/g, '\\u272C' ],\n [ /\\\\ding\\{77\\}/g, '\\u272D' ],\n [ /\\\\ding\\{78\\}/g, '\\u272E' ],\n [ /\\\\ding\\{79\\}/g, '\\u272F' ],\n [ /\\\\ding\\{80\\}/g, '\\u2730' ],\n [ /\\\\ding\\{81\\}/g, '\\u2731' ],\n [ /\\\\ding\\{82\\}/g, '\\u2732' ],\n [ /\\\\ding\\{83\\}/g, '\\u2733' ],\n [ /\\\\ding\\{84\\}/g, '\\u2734' ],\n [ /\\\\ding\\{85\\}/g, '\\u2735' ],\n [ /\\\\ding\\{86\\}/g, '\\u2736' ],\n [ /\\\\ding\\{87\\}/g, '\\u2737' ],\n [ /\\\\ding\\{88\\}/g, '\\u2738' ],\n [ /\\\\ding\\{89\\}/g, '\\u2739' ],\n [ /\\\\ding\\{90\\}/g, '\\u273A' ],\n [ /\\\\ding\\{91\\}/g, '\\u273B' ],\n [ /\\\\ding\\{92\\}/g, '\\u273C' ],\n [ /\\\\ding\\{93\\}/g, '\\u273D' ],\n [ /\\\\ding\\{94\\}/g, '\\u273E' ],\n [ /\\\\ding\\{95\\}/g, '\\u273F' ],\n [ /\\\\ding\\{96\\}/g, '\\u2740' ],\n [ /\\\\ding\\{97\\}/g, '\\u2741' ],\n [ /\\\\ding\\{98\\}/g, '\\u2742' ],\n [ /\\\\ding\\{99\\}/g, '\\u2743' ],\n [ /\\\\ding\\{100\\}/g, '\\u2744' ],\n [ /\\\\ding\\{101\\}/g, '\\u2745' ],\n [ /\\\\ding\\{102\\}/g, '\\u2746' ],\n [ /\\\\ding\\{103\\}/g, '\\u2747' ],\n [ /\\\\ding\\{104\\}/g, '\\u2748' ],\n [ /\\\\ding\\{105\\}/g, '\\u2749' ],\n [ /\\\\ding\\{106\\}/g, '\\u274A' ],\n [ /\\\\ding\\{107\\}/g, '\\u274B' ],\n [ /\\\\ding\\{109\\}/g, '\\u274D' ],\n [ /\\\\ding\\{111\\}/g, '\\u274F' ],\n [ /\\\\ding\\{112\\}/g, '\\u2750' ],\n [ /\\\\ding\\{113\\}/g, '\\u2751' ],\n [ /\\\\ding\\{114\\}/g, '\\u2752' ],\n [ /\\\\ding\\{118\\}/g, '\\u2756' ],\n [ /\\\\ding\\{120\\}/g, '\\u2758' ],\n [ /\\\\ding\\{121\\}/g, '\\u2759' ],\n [ /\\\\ding\\{122\\}/g, '\\u275A' ],\n [ /\\\\ding\\{123\\}/g, '\\u275B' ],\n [ /\\\\ding\\{124\\}/g, '\\u275C' ],\n [ /\\\\ding\\{125\\}/g, '\\u275D' ],\n [ /\\\\ding\\{126\\}/g, '\\u275E' ],\n [ /\\\\ding\\{161\\}/g, '\\u2761' ],\n [ /\\\\ding\\{162\\}/g, '\\u2762' ],\n [ /\\\\ding\\{163\\}/g, '\\u2763' ],\n [ /\\\\ding\\{164\\}/g, '\\u2764' ],\n [ /\\\\ding\\{165\\}/g, '\\u2765' ],\n [ /\\\\ding\\{166\\}/g, '\\u2766' ],\n [ /\\\\ding\\{167\\}/g, '\\u2767' ],\n [ /\\\\ding\\{182\\}/g, '\\u2776' ],\n [ /\\\\ding\\{183\\}/g, '\\u2777' ],\n [ /\\\\ding\\{184\\}/g, '\\u2778' ],\n [ /\\\\ding\\{185\\}/g, '\\u2779' ],\n [ /\\\\ding\\{186\\}/g, '\\u277A' ],\n [ /\\\\ding\\{187\\}/g, '\\u277B' ],\n [ /\\\\ding\\{188\\}/g, '\\u277C' ],\n [ /\\\\ding\\{189\\}/g, '\\u277D' ],\n [ /\\\\ding\\{190\\}/g, '\\u277E' ],\n [ /\\\\ding\\{191\\}/g, '\\u277F' ],\n [ /\\\\ding\\{192\\}/g, '\\u2780' ],\n [ /\\\\ding\\{193\\}/g, '\\u2781' ],\n [ /\\\\ding\\{194\\}/g, '\\u2782' ],\n [ /\\\\ding\\{195\\}/g, '\\u2783' ],\n [ /\\\\ding\\{196\\}/g, '\\u2784' ],\n [ /\\\\ding\\{197\\}/g, '\\u2785' ],\n [ /\\\\ding\\{198\\}/g, '\\u2786' ],\n [ /\\\\ding\\{199\\}/g, '\\u2787' ],\n [ /\\\\ding\\{200\\}/g, '\\u2788' ],\n [ /\\\\ding\\{201\\}/g, '\\u2789' ],\n [ /\\\\ding\\{202\\}/g, '\\u278A' ],\n [ /\\\\ding\\{203\\}/g, '\\u278B' ],\n [ /\\\\ding\\{204\\}/g, '\\u278C' ],\n [ /\\\\ding\\{205\\}/g, '\\u278D' ],\n [ /\\\\ding\\{206\\}/g, '\\u278E' ],\n [ /\\\\ding\\{207\\}/g, '\\u278F' ],\n [ /\\\\ding\\{208\\}/g, '\\u2790' ],\n [ /\\\\ding\\{209\\}/g, '\\u2791' ],\n [ /\\\\ding\\{210\\}/g, '\\u2792' ],\n [ /\\\\ding\\{211\\}/g, '\\u2793' ],\n [ /\\\\ding\\{212\\}/g, '\\u2794' ],\n [ /\\\\ding\\{216\\}/g, '\\u2798' ],\n [ /\\\\ding\\{217\\}/g, '\\u2799' ],\n [ /\\\\ding\\{218\\}/g, '\\u279A' ],\n [ /\\\\ding\\{219\\}/g, '\\u279B' ],\n [ /\\\\ding\\{220\\}/g, '\\u279C' ],\n [ /\\\\ding\\{221\\}/g, '\\u279D' ],\n [ /\\\\ding\\{222\\}/g, '\\u279E' ],\n [ /\\\\ding\\{223\\}/g, '\\u279F' ],\n [ /\\\\ding\\{224\\}/g, '\\u27A0' ],\n [ /\\\\ding\\{225\\}/g, '\\u27A1' ],\n [ /\\\\ding\\{226\\}/g, '\\u27A2' ],\n [ /\\\\ding\\{227\\}/g, '\\u27A3' ],\n [ /\\\\ding\\{228\\}/g, '\\u27A4' ],\n [ /\\\\ding\\{229\\}/g, '\\u27A5' ],\n [ /\\\\ding\\{230\\}/g, '\\u27A6' ],\n [ /\\\\ding\\{231\\}/g, '\\u27A7' ],\n [ /\\\\ding\\{232\\}/g, '\\u27A8' ],\n [ /\\\\ding\\{233\\}/g, '\\u27A9' ],\n [ /\\\\ding\\{234\\}/g, '\\u27AA' ],\n [ /\\\\ding\\{235\\}/g, '\\u27AB' ],\n [ /\\\\ding\\{236\\}/g, '\\u27AC' ],\n [ /\\\\ding\\{237\\}/g, '\\u27AD' ],\n [ /\\\\ding\\{238\\}/g, '\\u27AE' ],\n [ /\\\\ding\\{239\\}/g, '\\u27AF' ],\n [ /\\\\ding\\{241\\}/g, '\\u27B1' ],\n [ /\\\\ding\\{242\\}/g, '\\u27B2' ],\n [ /\\\\ding\\{243\\}/g, '\\u27B3' ],\n [ /\\\\ding\\{244\\}/g, '\\u27B4' ],\n [ /\\\\ding\\{245\\}/g, '\\u27B5' ],\n [ /\\\\ding\\{246\\}/g, '\\u27B6' ],\n [ /\\\\ding\\{247\\}/g, '\\u27B7' ],\n [ /\\\\ding\\{248\\}/g, '\\u27B8' ],\n [ /\\\\ding\\{249\\}/g, '\\u27B9' ],\n [ /\\\\ding\\{250\\}/g, '\\u27BA' ],\n [ /\\\\ding\\{251\\}/g, '\\u27BB' ],\n [ /\\\\ding\\{252\\}/g, '\\u27BC' ],\n [ /\\\\ding\\{253\\}/g, '\\u27BD' ],\n [ /\\\\ding\\{254\\}/g, '\\u27BE' ],\n [ /\\\\longleftarrow /g, '\\u27F5' ],\n [ /\\\\longrightarrow /g, '\\u27F6' ],\n [ /\\\\longleftrightarrow /g, '\\u27F7' ],\n [ /\\\\Longleftarrow /g, '\\u27F8' ],\n [ /\\\\Longrightarrow /g, '\\u27F9' ],\n [ /\\\\Longleftrightarrow /g, '\\u27FA' ],\n [ /\\\\longmapsto /g, '\\u27FC' ],\n [ /\\\\sim\\\\joinrel\\\\leadsto/g, '\\u27FF' ],\n [ /\\\\ElsevierGlyph\\{E212\\}/g, '\\u2905' ],\n [ /\\\\UpArrowBar /g, '\\u2912' ],\n [ /\\\\DownArrowBar /g, '\\u2913' ],\n [ /\\\\ElsevierGlyph\\{E20C\\}/g, '\\u2923' ],\n [ /\\\\ElsevierGlyph\\{E20D\\}/g, '\\u2924' ],\n [ /\\\\ElsevierGlyph\\{E20B\\}/g, '\\u2925' ],\n [ /\\\\ElsevierGlyph\\{E20A\\}/g, '\\u2926' ],\n [ /\\\\ElsevierGlyph\\{E211\\}/g, '\\u2927' ],\n [ /\\\\ElsevierGlyph\\{E20E\\}/g, '\\u2928' ],\n [ /\\\\ElsevierGlyph\\{E20F\\}/g, '\\u2929' ],\n [ /\\\\ElsevierGlyph\\{E210\\}/g, '\\u292A' ],\n [ /\\\\ElsevierGlyph\\{E21C\\}/g, '\\u2933' ],\n [ /\\\\ElsevierGlyph\\{E21D\\}/g, '\\u2933-00338' ],\n [ /\\\\ElsevierGlyph\\{E21A\\}/g, '\\u2936' ],\n [ /\\\\ElsevierGlyph\\{E219\\}/g, '\\u2937' ],\n [ /\\\\Elolarr /g, '\\u2940' ],\n [ /\\\\Elorarr /g, '\\u2941' ],\n [ /\\\\ElzRlarr /g, '\\u2942' ],\n [ /\\\\ElzrLarr /g, '\\u2944' ],\n [ /\\\\Elzrarrx /g, '\\u2947' ],\n [ /\\\\LeftRightVector /g, '\\u294E' ],\n [ /\\\\RightUpDownVector /g, '\\u294F' ],\n [ /\\\\DownLeftRightVector /g, '\\u2950' ],\n [ /\\\\LeftUpDownVector /g, '\\u2951' ],\n [ /\\\\LeftVectorBar /g, '\\u2952' ],\n [ /\\\\RightVectorBar /g, '\\u2953' ],\n [ /\\\\RightUpVectorBar /g, '\\u2954' ],\n [ /\\\\RightDownVectorBar /g, '\\u2955' ],\n [ /\\\\DownLeftVectorBar /g, '\\u2956' ],\n [ /\\\\DownRightVectorBar /g, '\\u2957' ],\n [ /\\\\LeftUpVectorBar /g, '\\u2958' ],\n [ /\\\\LeftDownVectorBar /g, '\\u2959' ],\n [ /\\\\LeftTeeVector /g, '\\u295A' ],\n [ /\\\\RightTeeVector /g, '\\u295B' ],\n [ /\\\\RightUpTeeVector /g, '\\u295C' ],\n [ /\\\\RightDownTeeVector /g, '\\u295D' ],\n [ /\\\\DownLeftTeeVector /g, '\\u295E' ],\n [ /\\\\DownRightTeeVector /g, '\\u295F' ],\n [ /\\\\LeftUpTeeVector /g, '\\u2960' ],\n [ /\\\\LeftDownTeeVector /g, '\\u2961' ],\n [ /\\\\UpEquilibrium /g, '\\u296E' ],\n [ /\\\\ReverseUpEquilibrium /g, '\\u296F' ],\n [ /\\\\RoundImplies /g, '\\u2970' ],\n [ /\\\\ElsevierGlyph\\{E214\\}/g, '\\u297C' ],\n [ /\\\\ElsevierGlyph\\{E215\\}/g, '\\u297D' ],\n [ /\\\\Elztfnc /g, '\\u2980' ],\n [ /\\\\ElsevierGlyph\\{3018\\}/g, '\\u2985' ],\n [ /\\\\Elroang /g, '\\u2986' ],\n [ /\\\\ElsevierGlyph\\{E291\\}/g, '\\u2994' ],\n [ /\\\\Elzddfnc /g, '\\u2999' ],\n [ /\\\\Angle /g, '\\u299C' ],\n [ /\\\\Elzlpargt /g, '\\u29A0' ],\n [ /\\\\ElsevierGlyph\\{E260\\}/g, '\\u29B5' ],\n [ /\\\\ElsevierGlyph\\{E61B\\}/g, '\\u29B6' ],\n [ /\\\\ElzLap /g, '\\u29CA' ],\n [ /\\\\Elzdefas /g, '\\u29CB' ],\n [ /\\\\LeftTriangleBar /g, '\\u29CF' ],\n [ /\\\\NotLeftTriangleBar /g, '\\u29CF-00338' ],\n [ /\\\\RightTriangleBar /g, '\\u29D0' ],\n [ /\\\\NotRightTriangleBar /g, '\\u29D0-00338' ],\n [ /\\\\ElsevierGlyph\\{E372\\}/g, '\\u29DC' ],\n [ /\\\\blacklozenge /g, '\\u29EB' ],\n [ /\\\\RuleDelayed /g, '\\u29F4' ],\n [ /\\\\Elxuplus /g, '\\u2A04' ],\n [ /\\\\ElzThr /g, '\\u2A05' ],\n [ /\\\\Elxsqcup /g, '\\u2A06' ],\n [ /\\\\ElzInf /g, '\\u2A07' ],\n [ /\\\\ElzSup /g, '\\u2A08' ],\n [ /\\\\ElzCint /g, '\\u2A0D' ],\n [ /\\\\clockoint /g, '\\u2A0F' ],\n [ /\\\\ElsevierGlyph\\{E395\\}/g, '\\u2A10' ],\n [ /\\\\sqrint /g, '\\u2A16' ],\n [ /\\\\ElsevierGlyph\\{E25A\\}/g, '\\u2A25' ],\n [ /\\\\ElsevierGlyph\\{E25B\\}/g, '\\u2A2A' ],\n [ /\\\\ElsevierGlyph\\{E25C\\}/g, '\\u2A2D' ],\n [ /\\\\ElsevierGlyph\\{E25D\\}/g, '\\u2A2E' ],\n [ /\\\\ElzTimes /g, '\\u2A2F' ],\n [ /\\\\ElsevierGlyph\\{E25E\\}/g, '\\u2A34' ],\n [ /\\\\ElsevierGlyph\\{E25E\\}/g, '\\u2A35' ],\n [ /\\\\ElsevierGlyph\\{E259\\}/g, '\\u2A3C' ],\n [ /\\\\amalg /g, '\\u2A3F' ],\n [ /\\\\ElzAnd /g, '\\u2A53' ],\n [ /\\\\ElzOr /g, '\\u2A54' ],\n [ /\\\\ElsevierGlyph\\{E36E\\}/g, '\\u2A55' ],\n [ /\\\\ElOr /g, '\\u2A56' ],\n [ /\\\\perspcorrespond /g, '\\u2A5E' ],\n [ /\\\\Elzminhat /g, '\\u2A5F' ],\n [ /\\\\ElsevierGlyph\\{225A\\}/g, '\\u2A63' ],\n [ /\\\\stackrel\\{*\\}\\{=\\}/g, '\\u2A6E' ],\n [ /\\\\Equal /g, '\\u2A75' ],\n [ /\\\\leqslant /g, '\\u2A7D' ],\n [ /\\\\nleqslant /g, '\\u2A7D-00338' ],\n [ /\\\\geqslant /g, '\\u2A7E' ],\n [ /\\\\ngeqslant /g, '\\u2A7E-00338' ],\n [ /\\\\lessapprox /g, '\\u2A85' ],\n [ /\\\\gtrapprox /g, '\\u2A86' ],\n [ /\\\\lneq /g, '\\u2A87' ],\n [ /\\\\gneq /g, '\\u2A88' ],\n [ /\\\\lnapprox /g, '\\u2A89' ],\n [ /\\\\gnapprox /g, '\\u2A8A' ],\n [ /\\\\lesseqqgtr /g, '\\u2A8B' ],\n [ /\\\\gtreqqless /g, '\\u2A8C' ],\n [ /\\\\eqslantless /g, '\\u2A95' ],\n [ /\\\\eqslantgtr /g, '\\u2A96' ],\n [ /\\\\Pisymbol\\{ppi020\\}\\{117\\}/g, '\\u2A9D' ],\n [ /\\\\Pisymbol\\{ppi020\\}\\{105\\}/g, '\\u2A9E' ],\n [ /\\\\NestedLessLess /g, '\\u2AA1' ],\n [ /\\\\NotNestedLessLess /g, '\\u2AA1-00338' ],\n [ /\\\\NestedGreaterGreater /g, '\\u2AA2' ],\n [ /\\\\NotNestedGreaterGreater /g, '\\u2AA2-00338' ],\n [ /\\\\preceq /g, '\\u2AAF' ],\n [ /\\\\not\\\\preceq /g, '\\u2AAF-00338' ],\n [ /\\\\succeq /g, '\\u2AB0' ],\n [ /\\\\not\\\\succeq /g, '\\u2AB0-00338' ],\n [ /\\\\precneqq /g, '\\u2AB5' ],\n [ /\\\\succneqq /g, '\\u2AB6' ],\n [ /\\\\precapprox /g, '\\u2AB7' ],\n [ /\\\\succapprox /g, '\\u2AB8' ],\n [ /\\\\precnapprox /g, '\\u2AB9' ],\n [ /\\\\succnapprox /g, '\\u2ABA' ],\n [ /\\\\subseteqq /g, '\\u2AC5' ],\n [ /\\\\nsubseteqq /g, '\\u2AC5-00338' ],\n [ /\\\\supseteqq /g, '\\u2AC6' ],\n [ /\\\\nsupseteqq/g, '\\u2AC6-00338' ],\n [ /\\\\subsetneqq /g, '\\u2ACB' ],\n [ /\\\\supsetneqq /g, '\\u2ACC' ],\n [ /\\\\ElsevierGlyph\\{E30D\\}/g, '\\u2AEB' ],\n [ /\\\\Elztdcol /g, '\\u2AF6' ],\n [ /\\\\ElsevierGlyph\\{300A\\}/g, '\\u300A' ],\n [ /\\\\ElsevierGlyph\\{300B\\}/g, '\\u300B' ],\n [ /\\\\ElsevierGlyph\\{3018\\}/g, '\\u3018' ],\n [ /\\\\ElsevierGlyph\\{3019\\}/g, '\\u3019' ],\n [ /\\\\openbracketleft /g, '\\u301A' ],\n [ /\\\\openbracketright /g, '\\u301B' ]\n ]\n\n return this;\n} // end function BibtexParser\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = BibtexParser;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/libs/bibtex.js\n ** module id = 42\n ** module chunks = 0\n **/","define([\n \"mvc/base-mvc\",\n \"mvc/citation/citation-model\",\n \"utils/localization\"\n], function( baseMVC, citationModel, _l ){\n\nvar CitationView = Backbone.View.extend({\n tagName: 'div',\n className: 'citations',\n render: function() {\n this.$el.append( \"

    \" + this.formattedReference() + \"

    \" );\n return this;\n },\n formattedReference: function() {\n var model = this.model;\n var entryType = model.entryType();\n var fields = model.fields();\n\n var ref = \"\";\n // Code inspired by...\n // https://github.com/vkaravir/bib-publication-list/blob/master/src/bib-publication-list.js\n var authorsAndYear = this._asSentence( (fields.author ? fields.author : \"\") + (fields.year ? (\" (\" + fields.year + \")\") : \"\") ) + \" \";\n var title = fields.title || \"\";\n var pages = fields.pages ? (\"pp. \" + fields.pages) : \"\";\n var address = fields.address;\n if( entryType == \"article\" ) {\n var volume = (fields.volume ? fields.volume : \"\") +\n (fields.number ? ( \" (\" + fields.number + \")\" ) : \"\") +\n (pages ? \", \" + pages : \"\");\n ref = authorsAndYear + this._asSentence(title) +\n (fields.journal ? (\"In \" + fields.journal + \", \") : \"\") +\n this._asSentence(volume) + \n this._asSentence(fields.address) +\n \"<\\/em>\";\n } else if( entryType == \"inproceedings\" || entryType == \"proceedings\" ) {\n ref = authorsAndYear + \n this._asSentence(title) + \n (fields.booktitle ? (\"In \" + fields.booktitle + \", \") : \"\") +\n (pages ? pages : \"\") +\n (address ? \", \" + address : \"\") + \n \".<\\/em>\";\n } else if( entryType == \"mastersthesis\" || entryType == \"phdthesis\" ) {\n ref = authorsAndYear + this._asSentence(title) +\n (fields.howpublished ? fields.howpublished + \". \" : \"\") +\n (fields.note ? fields.note + \".\" : \"\");\n } else if( entryType == \"techreport\" ) {\n ref = authorsAndYear + this._asSentence(title) +\n this._asSentence(fields.institution) +\n this._asSentence(fields.number) +\n this._asSentence(fields.type);\n } else if( entryType == \"book\" || entryType == \"inbook\" || entryType == \"incollection\" ) {\n ref = authorsAndYear + \" \" + this._formatBookInfo(fields);\n } else {\n ref = authorsAndYear + \" \" + this._asSentence(title) +\n this._asSentence(fields.howpublished) +\n this._asSentence(fields.note);\n }\n var doiUrl = \"\";\n if( fields.doi ) {\n doiUrl = 'http://dx.doi.org/' + fields.doi;\n ref += '[doi:' + fields.doi + \"]\";\n }\n var url = fields.url || doiUrl;\n if( url ) {\n ref += '[Link]';\n }\n return ref;\n },\n _formatBookInfo: function(fields) {\n var info = \"\";\n if( fields.chapter ) {\n info += fields.chapter + \" in \";\n }\n if( fields.title ) {\n info += \"\" + fields.title + \"<\\/em>\";\n }\n if( fields.editor ) {\n info += \", Edited by \" + fields.editor + \", \";\n }\n if( fields.publisher) {\n info += \", \" + fields.publisher;\n }\n if( fields.pages ) {\n info += \", pp. \" + fields.pages + \"\";\n }\n if( fields.series ) {\n info += \", \" + fields.series + \"<\\/em>\";\n }\n if( fields.volume ) {\n info += \", Vol.\" + fields.volume;\n }\n if( fields.issn ) {\n info += \", ISBN: \" + fields.issn;\n }\n return info + \".\";\n },\n _asSentence: function(str) {\n return (str && str.trim()) ? str + \". \" : \"\";\n }\n});\n\nvar CitationListView = Backbone.View.extend({\n el: '#citations',\n /**\n * Set up view.\n */\n initialize: function() {\n this.listenTo( this.collection, 'add', this.renderCitation );\n },\n\n events: {\n 'click .citations-to-bibtex': 'showBibtex',\n 'click .citations-to-formatted': 'showFormatted'\n },\n\n renderCitation: function( citation ) {\n var citationView = new CitationView( { model: citation } );\n this.$(\".citations-formatted\").append( citationView.render().el );\n var rawTextarea = this.$(\".citations-bibtex-text\");\n rawTextarea.val( rawTextarea.val() + \"\\n\\r\" + citation.attributes.content );\n },\n\n render: function() {\n this.$el.html(this.citationsElement());\n this.collection.each(function( item ){\n this.renderCitation( item );\n }, this);\n this.showFormatted();\n },\n\n showBibtex: function() {\n this.$(\".citations-to-formatted\").show();\n this.$(\".citations-to-bibtex\").hide();\n this.$(\".citations-bibtex\").show();\n this.$(\".citations-formatted\").hide();\n this.$(\".citations-bibtex-text\").select();\n },\n\n showFormatted: function() {\n this.$(\".citations-to-formatted\").hide();\n this.$(\".citations-to-bibtex\").show();\n this.$(\".citations-bibtex\").hide();\n this.$(\".citations-formatted\").show();\n },\n\n partialWarningElement: function() {\n if( this.collection.partial ) {\n return [\n '
    ',\n 'Warning: This is a experimental feature. Most Galaxy tools will not annotate',\n ' citations explicitly at this time. When writing up your analysis, please manually',\n ' review your histories and find all references',\n ' that should be cited in order to completely describe your work. Also, please remember to',\n ' cite Galaxy.',\n '
    ',\n ].join('');\n } else {\n return '';\n }\n },\n\n citationsElement: function() {\n return [\n '
    ',\n '
    ',\n _l(\"Citations\"),\n ' ',\n ' ',\n '
    ',\n '
    ',\n this.partialWarningElement(),\n '',\n '
    ',\n '
    ',\n '',\n '
    ',\n '
    '\n ].join( '' );\n }\n});\n\n//==============================================================================\nreturn {\n CitationView : CitationView,\n CitationListView : CitationListView\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/citation/citation-view.js\n ** module id = 43\n ** module chunks = 0\n **/","/**\n This class handles job submissions and validations.\n*/\ndefine(['utils/utils', 'mvc/tool/tools-template'], function(Utils, ToolTemplate) {\nreturn {\n submit: function(form, options, callback) {\n // link this\n var self = this;\n\n // create job definition for submission to tools api\n var job_def = {\n tool_id : options.id,\n tool_version : options.version,\n inputs : form.data.create()\n }\n\n // reset\n form.trigger('reset');\n\n // validate job definition\n if (!this._validation(form, job_def)) {\n Galaxy.emit.debug('tools-jobs::submit()', 'Submission canceled. Validation failed.');\n callback && callback();\n return;\n }\n\n // debug\n Galaxy.emit.debug('tools-jobs::submit()', 'Validation complete.', job_def);\n\n // post job\n Utils.request({\n type : 'POST',\n url : Galaxy.root + 'api/tools',\n data : job_def,\n success : function(response) {\n callback && callback();\n form.$el.replaceWith( ToolTemplate.success( response ) );\n // begin checking the history for updates\n self._refreshHdas();\n },\n error : function(response) {\n callback && callback();\n Galaxy.emit.debug('tools-jobs::submit', 'Submission failed.', response);\n if (response && response.err_data) {\n var error_messages = form.data.matchResponse(response.err_data);\n for (var input_id in error_messages) {\n form.highlight(input_id, error_messages[input_id]);\n break;\n }\n } else {\n form.modal.show({\n title : 'Job submission failed',\n body : ( response && response.err_msg ) || ToolTemplate.error( job_def ),\n buttons : {\n 'Close' : function() {\n form.modal.hide();\n }\n }\n });\n }\n }\n });\n },\n\n /** Validate job definition\n */\n _validation: function(form, job_def) {\n // get input parameters\n var job_inputs = job_def.inputs;\n\n // counter for values declared in batch mode\n var batch_n = -1;\n var batch_src = null;\n\n // validation\n for (var job_input_id in job_inputs) {\n // get current value\n var input_value = job_inputs[job_input_id];\n\n // collect input field properties\n var input_id = form.data.match(job_input_id);\n var input_field = form.field_list[input_id];\n var input_def = form.input_list[input_id];\n\n // check if objects where properly identified\n if (!input_id || !input_def || !input_field) {\n Galaxy.emit.debug('tools-jobs::_validation()', 'Retrieving input objects failed.');\n continue;\n }\n\n // validate non-optional fields\n if (!input_def.optional && input_value == null) {\n form.highlight(input_id);\n return false;\n }\n\n // check if input field is in batch mode\n if (input_value && input_value.batch) {\n // get values\n var n = input_value.values.length;\n\n // get source\n var src = null;\n if (n > 0) {\n src = input_value.values[0] && input_value.values[0].src;\n }\n\n // check source type\n if (src) {\n if (batch_src === null) {\n batch_src = src;\n } else {\n if (batch_src !== src) {\n form.highlight(input_id, 'Please select either dataset or dataset list fields for all batch mode fields.');\n return false;\n }\n }\n }\n\n // check number of inputs\n if (batch_n === -1) {\n batch_n = n;\n } else {\n if (batch_n !== n) {\n form.highlight(input_id, 'Please make sure that you select the same number of inputs for all batch mode fields. This field contains ' + n + ' selection(s) while a previous field contains ' + batch_n + '.');\n return false;\n }\n }\n }\n }\n\n // return validation result\n return true;\n },\n\n /** Refreshes the history panel\n */\n _refreshHdas: function(detailIds, options) {\n if (parent.Galaxy && parent.Galaxy.currHistoryPanel) {\n parent.Galaxy.currHistoryPanel.refreshContents(detailIds, options);\n }\n }\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/tool/tools-jobs.js\n ** module id = 44\n ** module chunks = 0\n **/","var Handlebars = require(\"/Users/carleberhard/galaxy/client-build/client/node_modules/handlebars/runtime.js\");\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"
    \\n \\n
    \\n \"\n + ((stack1 = ((helper = (helper = helpers.html || (depth0 != null ? depth0.html : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"html\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n + \"\\n
    \\n
    \\n \"\n + alias4(((helper = (helper = helpers.help || (depth0 != null ? depth0.help : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"help\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n
    \\n
    \\n
    \\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"
    \"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \" (version \"\n + alias4(((helper = (helper = helpers.version || (depth0 != null ? depth0.version : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"version\",\"hash\":{},\"data\":data}) : helper)))\n + \")
    \\n
    \\n\"\n + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.inputs : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"
    \\n
    \\n \\n
    \\n
    \\n
    \"\n + alias4(((helper = (helper = helpers.help || (depth0 != null ? depth0.help : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"help\",\"hash\":{},\"data\":data}) : helper)))\n + \"
    \\n
    \";\n},\"useData\":true});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/templates/tool_form.handlebars\n ** module id = 45\n ** module chunks = 0\n **/","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/runtime.js\n ** module id = 46\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7Ozs7SUFBN0IsSUFBSTs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7OztBQUdqRCxTQUFTLE1BQU0sR0FBRztBQUNoQixNQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDOztBQUUxQyxPQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QixJQUFFLENBQUMsVUFBVSxvQ0FBYSxDQUFDO0FBQzNCLElBQUUsQ0FBQyxTQUFTLG1DQUFZLENBQUM7QUFDekIsSUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDakIsSUFBRSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzs7QUFFN0MsSUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDaEIsSUFBRSxDQUFDLFFBQVEsR0FBRyxVQUFTLElBQUksRUFBRTtBQUMzQixXQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0dBQ25DLENBQUM7O0FBRUYsU0FBTyxFQUFFLENBQUM7Q0FDWDs7QUFFRCxJQUFJLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQzs7QUFFckIsa0NBQVcsSUFBSSxDQUFDLENBQUM7O0FBRWpCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7O3FCQUVSLElBQUkiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMucnVudGltZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJhc2UgZnJvbSAnLi9oYW5kbGViYXJzL2Jhc2UnO1xuXG4vLyBFYWNoIG9mIHRoZXNlIGF1Z21lbnQgdGhlIEhhbmRsZWJhcnMgb2JqZWN0LiBObyBuZWVkIHRvIHNldHVwIGhlcmUuXG4vLyAoVGhpcyBpcyBkb25lIHRvIGVhc2lseSBzaGFyZSBjb2RlIGJldHdlZW4gY29tbW9uanMgYW5kIGJyb3dzZSBlbnZzKVxuaW1wb3J0IFNhZmVTdHJpbmcgZnJvbSAnLi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9oYW5kbGViYXJzL2V4Y2VwdGlvbic7XG5pbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL2hhbmRsZWJhcnMvdXRpbHMnO1xuaW1wb3J0ICogYXMgcnVudGltZSBmcm9tICcuL2hhbmRsZWJhcnMvcnVudGltZSc7XG5cbmltcG9ydCBub0NvbmZsaWN0IGZyb20gJy4vaGFuZGxlYmFycy9uby1jb25mbGljdCc7XG5cbi8vIEZvciBjb21wYXRpYmlsaXR5IGFuZCB1c2FnZSBvdXRzaWRlIG9mIG1vZHVsZSBzeXN0ZW1zLCBtYWtlIHRoZSBIYW5kbGViYXJzIG9iamVjdCBhIG5hbWVzcGFjZVxuZnVuY3Rpb24gY3JlYXRlKCkge1xuICBsZXQgaGIgPSBuZXcgYmFzZS5IYW5kbGViYXJzRW52aXJvbm1lbnQoKTtcblxuICBVdGlscy5leHRlbmQoaGIsIGJhc2UpO1xuICBoYi5TYWZlU3RyaW5nID0gU2FmZVN0cmluZztcbiAgaGIuRXhjZXB0aW9uID0gRXhjZXB0aW9uO1xuICBoYi5VdGlscyA9IFV0aWxzO1xuICBoYi5lc2NhcGVFeHByZXNzaW9uID0gVXRpbHMuZXNjYXBlRXhwcmVzc2lvbjtcblxuICBoYi5WTSA9IHJ1bnRpbWU7XG4gIGhiLnRlbXBsYXRlID0gZnVuY3Rpb24oc3BlYykge1xuICAgIHJldHVybiBydW50aW1lLnRlbXBsYXRlKHNwZWMsIGhiKTtcbiAgfTtcblxuICByZXR1cm4gaGI7XG59XG5cbmxldCBpbnN0ID0gY3JlYXRlKCk7XG5pbnN0LmNyZWF0ZSA9IGNyZWF0ZTtcblxubm9Db25mbGljdChpbnN0KTtcblxuaW5zdFsnZGVmYXVsdCddID0gaW5zdDtcblxuZXhwb3J0IGRlZmF1bHQgaW5zdDtcbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars.runtime.js\n ** module id = 47\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar VERSION = '4.0.4';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 7;\n\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQTRDLFNBQVM7O3lCQUMvQixhQUFhOzs7O3VCQUNFLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNuQyxVQUFVOzs7O0FBRXRCLElBQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFDeEIsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7OztBQUU1QixJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxVQUFVO0NBQ2QsQ0FBQzs7O0FBRUYsSUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7O0FBRTlCLFNBQVMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7QUFDbkUsTUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzdCLE1BQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUMvQixNQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFLENBQUM7O0FBRW5DLFdBeEJNLHNCQUFzQixDQXdCTCxJQUFJLENBQUMsQ0FBQztBQUM3QixjQXhCTSx5QkFBeUIsQ0F3QkwsSUFBSSxDQUFDLENBQUM7Q0FDakM7O0FBRUQscUJBQXFCLENBQUMsU0FBUyxHQUFHO0FBQ2hDLGFBQVcsRUFBRSxxQkFBcUI7O0FBRWxDLFFBQU0scUJBQVE7QUFDZCxLQUFHLEVBQUUsb0JBQU8sR0FBRzs7QUFFZixnQkFBYyxFQUFFLHdCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDakMsUUFBSSxPQXJDcUIsUUFBUSxDQXFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUN0QyxVQUFJLEVBQUUsRUFBRTtBQUFFLGNBQU0sMkJBQWMseUNBQXlDLENBQUMsQ0FBQztPQUFFO0FBQzNFLGFBdkNlLE1BQU0sQ0F1Q2QsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM1QixNQUFNO0FBQ0wsVUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDekI7R0FDRjtBQUNELGtCQUFnQixFQUFFLDBCQUFTLElBQUksRUFBRTtBQUMvQixXQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDM0I7O0FBRUQsaUJBQWUsRUFBRSx5QkFBUyxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLFFBQUksT0FqRHFCLFFBQVEsQ0FpRHBCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsYUFsRGUsTUFBTSxDQWtEZCxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzdCLE1BQU07QUFDTCxVQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtBQUNsQyxjQUFNLHlFQUEwRCxJQUFJLG9CQUFpQixDQUFDO09BQ3ZGO0FBQ0QsVUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDL0I7R0FDRjtBQUNELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRTtBQUNoQyxXQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDNUI7O0FBRUQsbUJBQWlCLEVBQUUsMkJBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNwQyxRQUFJLE9BL0RxQixRQUFRLENBK0RwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQUUsY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQUU7QUFDOUUsYUFqRWUsTUFBTSxDQWlFZCxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQy9CLE1BQU07QUFDTCxVQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUM1QjtHQUNGO0FBQ0QscUJBQW1CLEVBQUUsNkJBQVMsSUFBSSxFQUFFO0FBQ2xDLFdBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUM5QjtDQUNGLENBQUM7O0FBRUssSUFBSSxHQUFHLEdBQUcsb0JBQU8sR0FBRyxDQUFDOzs7UUFFcEIsV0FBVyxVQTdFWCxXQUFXO1FBNkVFLE1BQU0iLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvYmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlRnJhbWUsIGV4dGVuZCwgdG9TdHJpbmd9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdEhlbHBlcnN9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnN9IGZyb20gJy4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnNC4wLjQnO1xuZXhwb3J0IGNvbnN0IENPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAnXG59O1xuXG5jb25zdCBvYmplY3RUeXBlID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBIYW5kbGViYXJzRW52aXJvbm1lbnQoaGVscGVycywgcGFydGlhbHMsIGRlY29yYXRvcnMpIHtcbiAgdGhpcy5oZWxwZXJzID0gaGVscGVycyB8fCB7fTtcbiAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9O1xuICB0aGlzLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzIHx8IHt9O1xuXG4gIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyk7XG4gIHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnModGhpcyk7XG59XG5cbkhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsXG5cbiAgbG9nZ2VyOiBsb2dnZXIsXG4gIGxvZzogbG9nZ2VyLmxvZyxcblxuICByZWdpc3RlckhlbHBlcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgaGVscGVycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5oZWxwZXJzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWxwZXJzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuaGVscGVyc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUsIHBhcnRpYWwpIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oYEF0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCBcIiR7bmFtZX1cIiBhcyB1bmRlZmluZWRgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5kZWNvcmF0b3JzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWNvcmF0b3JzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1lXTtcbiAgfVxufTtcblxuZXhwb3J0IGxldCBsb2cgPSBsb2dnZXIubG9nO1xuXG5leHBvcnQge2NyZWF0ZUZyYW1lLCBsb2dnZXJ9O1xuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/base.js\n ** module id = 48\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nexports.toString = toString;\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexports.isArray = isArray;\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQ3ZCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRTdCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQUlNLFVBQVUsR0FKaEIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssbUJBQW1CLENBQUM7R0FDcEYsQ0FBQztDQUNIO1FBQ08sVUFBVSxHQUFWLFVBQVU7Ozs7O0FBSVgsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxVQUFTLEtBQUssRUFBRTtBQUN0RCxTQUFPLEFBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsR0FBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUFHLEtBQUssQ0FBQztDQUNqRyxDQUFDOzs7OztBQUdLLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUdNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUFFLFdBQU8sTUFBTSxDQUFDO0dBQUU7QUFDOUMsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gICAgICBwb3NzaWJsZSA9IC9bJjw+XCInYD1dLztcblxuZnVuY3Rpb24gZXNjYXBlQ2hhcihjaHIpIHtcbiAgcmV0dXJuIGVzY2FwZVtjaHJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKG9iaiAvKiAsIC4uLnNvdXJjZSAqLykge1xuICBmb3IgKGxldCBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAobGV0IGtleSBpbiBhcmd1bWVudHNbaV0pIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXJndW1lbnRzW2ldLCBrZXkpKSB7XG4gICAgICAgIG9ialtrZXldID0gYXJndW1lbnRzW2ldW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZXhwb3J0IGxldCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8vIFNvdXJjZWQgZnJvbSBsb2Rhc2hcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9sb2Rhc2gvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHRcbi8qIGVzbGludC1kaXNhYmxlIGZ1bmMtc3R5bGUgKi9cbmxldCBpc0Z1bmN0aW9uID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn07XG4vLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgQ2hyb21lIGFuZCBTYWZhcmlcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoaXNGdW5jdGlvbigveC8pKSB7XG4gIGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG4gIH07XG59XG5leHBvcnQge2lzRnVuY3Rpb259O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSA/IHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nIDogZmFsc2U7XG59O1xuXG4vLyBPbGRlciBJRSB2ZXJzaW9ucyBkbyBub3QgZGlyZWN0bHkgc3VwcG9ydCBpbmRleE9mIHNvIHdlIG11c3QgaW1wbGVtZW50IG91ciBvd24sIHNhZGx5LlxuZXhwb3J0IGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGVzY2FwZSBTYWZlU3RyaW5ncywgc2luY2UgdGhleSdyZSBhbHJlYWR5IHNhZmVcbiAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHtcbiAgICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7XG4gICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSBpZiAoIXN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZyArICcnO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhlIGFwcGVuZCByZWdhcmRsZXNzIGFuZFxuICAgIC8vIHRoZSByZWdleCB0ZXN0IHdpbGwgZG8gdGhpcyB0cmFuc3BhcmVudGx5IGJlaGluZCB0aGUgc2NlbmVzLCBjYXVzaW5nIGlzc3VlcyBpZlxuICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0LlxuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nO1xuICB9XG5cbiAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHsgcmV0dXJuIHN0cmluZzsgfVxuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoYmFkQ2hhcnMsIGVzY2FwZUNoYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlICYmIHZhbHVlICE9PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcmFtZShvYmplY3QpIHtcbiAgbGV0IGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpO1xuICBmcmFtZS5fcGFyZW50ID0gb2JqZWN0O1xuICByZXR1cm4gZnJhbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibG9ja1BhcmFtcyhwYXJhbXMsIGlkcykge1xuICBwYXJhbXMucGF0aCA9IGlkcztcbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZENvbnRleHRQYXRoKGNvbnRleHRQYXRoLCBpZCkge1xuICByZXR1cm4gKGNvbnRleHRQYXRoID8gY29udGV4dFBhdGggKyAnLicgOiAnJykgKyBpZDtcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/utils.js\n ** module id = 49\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n column = undefined;\n if (loc) {\n line = loc.start.line;\n column = loc.start.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n if (loc) {\n this.lineNumber = line;\n this.column = column;\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsSUFBTSxVQUFVLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFbkcsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDdEIsSUFBSSxZQUFBO01BQ0osTUFBTSxZQUFBLENBQUM7QUFDWCxNQUFJLEdBQUcsRUFBRTtBQUNQLFFBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUN0QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7O0FBRTFCLFdBQU8sSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7R0FDeEM7O0FBRUQsTUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzs7O0FBRzFELE9BQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ2hELFFBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7R0FDOUM7OztBQUdELE1BQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQzNCLFNBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7R0FDMUM7O0FBRUQsTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUN2QixRQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztHQUN0QjtDQUNGOztBQUVELFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQzs7cUJBRW5CLFNBQVMiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvZXhjZXB0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5jb25zdCBlcnJvclByb3BzID0gWydkZXNjcmlwdGlvbicsICdmaWxlTmFtZScsICdsaW5lTnVtYmVyJywgJ21lc3NhZ2UnLCAnbmFtZScsICdudW1iZXInLCAnc3RhY2snXTtcblxuZnVuY3Rpb24gRXhjZXB0aW9uKG1lc3NhZ2UsIG5vZGUpIHtcbiAgbGV0IGxvYyA9IG5vZGUgJiYgbm9kZS5sb2MsXG4gICAgICBsaW5lLFxuICAgICAgY29sdW1uO1xuICBpZiAobG9jKSB7XG4gICAgbGluZSA9IGxvYy5zdGFydC5saW5lO1xuICAgIGNvbHVtbiA9IGxvYy5zdGFydC5jb2x1bW47XG5cbiAgICBtZXNzYWdlICs9ICcgLSAnICsgbGluZSArICc6JyArIGNvbHVtbjtcbiAgfVxuXG4gIGxldCB0bXAgPSBFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBtZXNzYWdlKTtcblxuICAvLyBVbmZvcnR1bmF0ZWx5IGVycm9ycyBhcmUgbm90IGVudW1lcmFibGUgaW4gQ2hyb21lIChhdCBsZWFzdCksIHNvIGBmb3IgcHJvcCBpbiB0bXBgIGRvZXNuJ3Qgd29yay5cbiAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgZXJyb3JQcm9wcy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgdGhpc1tlcnJvclByb3BzW2lkeF1dID0gdG1wW2Vycm9yUHJvcHNbaWR4XV07XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBFeGNlcHRpb24pO1xuICB9XG5cbiAgaWYgKGxvYykge1xuICAgIHRoaXMubGluZU51bWJlciA9IGxpbmU7XG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/exception.js\n ** module id = 50\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7eUNBQXVDLGdDQUFnQzs7OzsyQkFDOUMsZ0JBQWdCOzs7O29DQUNQLDBCQUEwQjs7Ozt5QkFDckMsY0FBYzs7OzswQkFDYixlQUFlOzs7OzZCQUNaLGtCQUFrQjs7OzsyQkFDcEIsZ0JBQWdCOzs7O0FBRWxDLFNBQVMsc0JBQXNCLENBQUMsUUFBUSxFQUFFO0FBQy9DLHlDQUEyQixRQUFRLENBQUMsQ0FBQztBQUNyQywyQkFBYSxRQUFRLENBQUMsQ0FBQztBQUN2QixvQ0FBc0IsUUFBUSxDQUFDLENBQUM7QUFDaEMseUJBQVcsUUFBUSxDQUFDLENBQUM7QUFDckIsMEJBQVksUUFBUSxDQUFDLENBQUM7QUFDdEIsNkJBQWUsUUFBUSxDQUFDLENBQUM7QUFDekIsMkJBQWEsUUFBUSxDQUFDLENBQUM7Q0FDeEIiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvaGVscGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWdpc3RlckJsb2NrSGVscGVyTWlzc2luZyBmcm9tICcuL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcnO1xuaW1wb3J0IHJlZ2lzdGVyRWFjaCBmcm9tICcuL2hlbHBlcnMvZWFjaCc7XG5pbXBvcnQgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJJZiBmcm9tICcuL2hlbHBlcnMvaWYnO1xuaW1wb3J0IHJlZ2lzdGVyTG9nIGZyb20gJy4vaGVscGVycy9sb2cnO1xuaW1wb3J0IHJlZ2lzdGVyTG9va3VwIGZyb20gJy4vaGVscGVycy9sb29rdXAnO1xuaW1wb3J0IHJlZ2lzdGVyV2l0aCBmcm9tICcuL2hlbHBlcnMvd2l0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRIZWxwZXJzKGluc3RhbmNlKSB7XG4gIHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJFYWNoKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJJZihpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyTG9nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb29rdXAoaW5zdGFuY2UpO1xuICByZWdpc3RlcldpdGgoaW5zdGFuY2UpO1xufVxuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers.js\n ** module id = 51\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBc0QsVUFBVTs7cUJBRWpELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQ3pCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksT0FYeUIsT0FBTyxDQVd4QixPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxPQXZCUSxXQUFXLENBdUJQLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxZQUFJLENBQUMsV0FBVyxHQUFHLE9BeEJuQixpQkFBaUIsQ0F3Qm9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RSxlQUFPLEdBQUcsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7T0FDeEI7O0FBRUQsYUFBTyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzdCO0dBQ0YsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGNyZWF0ZUZyYW1lLCBpc0FycmF5fSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgbGV0IGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTtcbiAgICAgICAgb3B0aW9ucyA9IHtkYXRhOiBkYXRhfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js\n ** module id = 52\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else {\n var priorKey = undefined;\n\n for (var key in context) {\n if (context.hasOwnProperty(key)) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n }\n }\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQUErRSxVQUFVOzt5QkFDbkUsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixZQUFNLDJCQUFjLDZCQUE2QixDQUFDLENBQUM7S0FDcEQ7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDZixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87UUFDekIsQ0FBQyxHQUFHLENBQUM7UUFDTCxHQUFHLEdBQUcsRUFBRTtRQUNSLElBQUksWUFBQTtRQUNKLFdBQVcsWUFBQSxDQUFDOztBQUVoQixRQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixpQkFBVyxHQUFHLE9BakJaLGlCQUFpQixDQWlCYSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ2pGOztBQUVELFFBQUksT0FwQnNELFVBQVUsQ0FvQnJELE9BQU8sQ0FBQyxFQUFFO0FBQUUsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FBRTs7QUFFMUQsUUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ2hCLFVBQUksR0FBRyxPQXZCMkIsV0FBVyxDQXVCMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDN0IsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLE9BeENNLFdBQVcsQ0F3Q0wsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO09BQy9FLENBQUMsQ0FBQztLQUNKOztBQUVELFFBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtBQUMxQyxVQUFJLE9BN0MyQyxPQUFPLENBNkMxQyxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNO0FBQ0wsWUFBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixhQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtBQUN2QixjQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Ozs7QUFJL0IsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0w7U0FDRjtBQUNELFlBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQix1QkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RDO09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvaGVscGVycy9lYWNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthcHBlbmRDb250ZXh0UGF0aCwgYmxvY2tQYXJhbXMsIGNyZWF0ZUZyYW1lLCBpc0FycmF5LCBpc0Z1bmN0aW9ufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdlYWNoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTXVzdCBwYXNzIGl0ZXJhdG9yIHRvICNlYWNoJyk7XG4gICAgfVxuXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbixcbiAgICAgICAgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgICAgaSA9IDAsXG4gICAgICAgIHJldCA9ICcnLFxuICAgICAgICBkYXRhLFxuICAgICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID0gYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHsgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0aGlzKTsgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID0gcmV0ICsgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgYmxvY2tQYXJhbXM6IGJsb2NrUGFyYW1zKFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLCBbY29udGV4dFBhdGggKyBmaWVsZCwgbnVsbF0pXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcmlvcktleTtcblxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gY29udGV4dCkge1xuICAgICAgICAgIGlmIChjb250ZXh0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdFxuICAgICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYW4gaXRlcm1lZGlhdGUga2V5cyBhcnJheS5cbiAgICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByaW9yS2V5ID0ga2V5O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICByZXQgPSBpbnZlcnNlKHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/each.js\n ** module id = 53\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFBYyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDdkY7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9oZWxwZXJzL2hlbHBlci1taXNzaW5nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKC8qIFthcmdzLCBdb3B0aW9ucyAqLykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBBIG1pc3NpbmcgZmllbGQgaW4gYSB7e2Zvb319IGNvbnN0cnVjdC5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNvbWVvbmUgaXMgYWN0dWFsbHkgdHJ5aW5nIHRvIGNhbGwgc29tZXRoaW5nLCBibG93IHVwLlxuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTWlzc2luZyBoZWxwZXI6IFwiJyArIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0ubmFtZSArICdcIicpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/helper-missing.js\n ** module id = 54\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBa0MsVUFBVTs7cUJBRTdCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLE9BSlMsVUFBVSxDQUlSLFdBQVcsQ0FBQyxFQUFFO0FBQUUsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQUU7Ozs7O0FBS3RFLFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLE9BVC9DLE9BQU8sQ0FTZ0QsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFdBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztHQUN2SCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9oZWxwZXJzL2lmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0VtcHR5LCBpc0Z1bmN0aW9ufSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdpZicsIGZ1bmN0aW9uKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7IGNvbmRpdGlvbmFsID0gY29uZGl0aW9uYWwuY2FsbCh0aGlzKTsgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaW5zdGFuY2UuaGVscGVyc1snaWYnXS5jYWxsKHRoaXMsIGNvbmRpdGlvbmFsLCB7Zm46IG9wdGlvbnMuaW52ZXJzZSwgaW52ZXJzZTogb3B0aW9ucy5mbiwgaGFzaDogb3B0aW9ucy5oYXNofSk7XG4gIH0pO1xufVxuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/if.js\n ** module id = 55\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVMsSUFBSSxDQUFDLENBQUM7R0FDeEIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvaGVscGVycy9sb2cuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9nJywgZnVuY3Rpb24oLyogbWVzc2FnZSwgb3B0aW9ucyAqLykge1xuICAgIGxldCBhcmdzID0gW3VuZGVmaW5lZF0sXG4gICAgICAgIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgfVxuXG4gICAgbGV0IGxldmVsID0gMTtcbiAgICBpZiAob3B0aW9ucy5oYXNoLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5oYXNoLmxldmVsO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YS5sZXZlbCAhPSBudWxsKSB7XG4gICAgICBsZXZlbCA9IG9wdGlvbnMuZGF0YS5sZXZlbDtcbiAgICB9XG4gICAgYXJnc1swXSA9IGxldmVsO1xuXG4gICAgaW5zdGFuY2UubG9nKC4uLiBhcmdzKTtcbiAgfSk7XG59XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/log.js\n ** module id = 56\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field) {\n return obj && obj[field];\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3JELFdBQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztHQUMxQixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9oZWxwZXJzL2xvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmpbZmllbGRdO1xuICB9KTtcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/lookup.js\n ** module id = 57\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUErRSxVQUFVOztxQkFFMUUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksT0FKc0QsVUFBVSxDQUlyRCxPQUFPLENBQUMsRUFBRTtBQUFFLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQUU7O0FBRTFELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7O0FBRXBCLFFBQUksQ0FBQyxPQVI0QyxPQUFPLENBUTNDLE9BQU8sQ0FBQyxFQUFFO0FBQ3JCLFVBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEIsVUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsWUFBSSxHQUFHLE9BWHlCLFdBQVcsQ0FXeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcsT0FabkIsaUJBQWlCLENBWW9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUNoRjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLE9BakJNLFdBQVcsQ0FpQkwsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7T0FDaEUsQ0FBQyxDQUFDO0tBQ0osTUFBTTtBQUNMLGFBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QjtHQUNGLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGJsb2NrUGFyYW1zLCBjcmVhdGVGcmFtZSwgaXNFbXB0eSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignd2l0aCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoaXNGdW5jdGlvbihjb250ZXh0KSkgeyBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpOyB9XG5cbiAgICBsZXQgZm4gPSBvcHRpb25zLmZuO1xuXG4gICAgaWYgKCFpc0VtcHR5KGNvbnRleHQpKSB7XG4gICAgICBsZXQgZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBhcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMuaWRzWzBdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgYmxvY2tQYXJhbXM6IGJsb2NrUGFyYW1zKFtjb250ZXh0XSwgW2RhdGEgJiYgZGF0YS5jb250ZXh0UGF0aF0pXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/with.js\n ** module id = 58\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9kZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG5cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/decorators.js\n ** module id = 59\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXFCLFVBQVU7O3FCQUVoQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsT0FWckIsTUFBTSxDQVVzQixFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImxpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtleHRlbmR9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/decorators/inline.js\n ** module id = 60\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n if (!console[method]) {\n // eslint-disable-line no-console\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUFzQixTQUFTOztBQUUvQixJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxPQVRiLE9BQU8sQ0FTYyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzlELFVBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtBQUNqQixhQUFLLEdBQUcsUUFBUSxDQUFDO09BQ2xCLE1BQU07QUFDTCxhQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztPQUM3QjtLQUNGOztBQUVELFdBQU8sS0FBSyxDQUFDO0dBQ2Q7OztBQUdELEtBQUcsRUFBRSxhQUFTLEtBQUssRUFBYztBQUMvQixTQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7QUFFbEMsUUFBSSxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFO0FBQy9FLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsVUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBUG1CLE9BQU87QUFBUCxlQUFPOzs7QUFRM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9sb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luZGV4T2Z9IGZyb20gJy4vdXRpbHMnO1xuXG5sZXQgbG9nZ2VyID0ge1xuICBtZXRob2RNYXA6IFsnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJ10sXG4gIGxldmVsOiAnaW5mbycsXG5cbiAgLy8gTWFwcyBhIGdpdmVuIGxldmVsIHZhbHVlIHRvIHRoZSBgbWV0aG9kTWFwYCBpbmRleGVzIGFib3ZlLlxuICBsb29rdXBMZXZlbDogZnVuY3Rpb24obGV2ZWwpIHtcbiAgICBpZiAodHlwZW9mIGxldmVsID09PSAnc3RyaW5nJykge1xuICAgICAgbGV0IGxldmVsTWFwID0gaW5kZXhPZihsb2dnZXIubWV0aG9kTWFwLCBsZXZlbC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGlmIChsZXZlbE1hcCA+PSAwKSB7XG4gICAgICAgIGxldmVsID0gbGV2ZWxNYXA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXZlbCA9IHBhcnNlSW50KGxldmVsLCAxMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxldmVsO1xuICB9LFxuXG4gIC8vIENhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBob3N0IGVudmlyb25tZW50XG4gIGxvZzogZnVuY3Rpb24obGV2ZWwsIC4uLm1lc3NhZ2UpIHtcbiAgICBsZXZlbCA9IGxvZ2dlci5sb29rdXBMZXZlbChsZXZlbCk7XG5cbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGxvZ2dlci5sb29rdXBMZXZlbChsb2dnZXIubGV2ZWwpIDw9IGxldmVsKSB7XG4gICAgICBsZXQgbWV0aG9kID0gbG9nZ2VyLm1ldGhvZE1hcFtsZXZlbF07XG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkgeyAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/logger.js\n ** module id = 61\n ** module chunks = 0\n **/","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvc2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/safe-string.js\n ** module id = 62\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision !== currentRevision) {\n if (compilerRevision < currentRevision) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as psuedo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n var result = env.VM.invokePartial.call(this, partial, context, options);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, options);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name) {\n if (!(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj);\n }\n return obj[name];\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n if (depths[i] && depths[i][name] != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n merge: function merge(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context !== options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n container.helpers = container.merge(options.helpers, env.helpers);\n\n if (templateSpec.usePartial) {\n container.partials = container.merge(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = container.merge(options.decorators, env.decorators);\n }\n } else {\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context !== depths[0]) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n options.data = _base.createFrame(options.data);\n partialBlock = options.data['partial-block'] = options.fn;\n\n if (partialBlock.partials) {\n options.partials = Utils.extend({}, options.partials, partialBlock.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBQzhCLFFBQVE7O0FBRWxFLFNBQVMsYUFBYSxDQUFDLFlBQVksRUFBRTtBQUMxQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztNQUN2RCxlQUFlLFNBSmQsaUJBQWlCLEFBSWlCLENBQUM7O0FBRTFDLE1BQUksZ0JBQWdCLEtBQUssZUFBZSxFQUFFO0FBQ3hDLFFBQUksZ0JBQWdCLEdBQUcsZUFBZSxFQUFFO0FBQ3RDLFVBQU0sZUFBZSxHQUFHLE1BUkYsZ0JBQWdCLENBUUcsZUFBZSxDQUFDO1VBQ25ELGdCQUFnQixHQUFHLE1BVEgsZ0JBQWdCLENBU0ksZ0JBQWdCLENBQUMsQ0FBQztBQUM1RCxZQUFNLDJCQUFjLHlGQUF5RixHQUN2RyxxREFBcUQsR0FBRyxlQUFlLEdBQUcsbURBQW1ELEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDaEssTUFBTTs7QUFFTCxZQUFNLDJCQUFjLHdGQUF3RixHQUN0RyxpREFBaUQsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDbkY7R0FDRjtDQUNGOztBQUVNLFNBQVMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7O0FBRTFDLE1BQUksQ0FBQyxHQUFHLEVBQUU7QUFDUixVQUFNLDJCQUFjLG1DQUFtQyxDQUFDLENBQUM7R0FDMUQ7QUFDRCxNQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRTtBQUN2QyxVQUFNLDJCQUFjLDJCQUEyQixHQUFHLE9BQU8sWUFBWSxDQUFDLENBQUM7R0FDeEU7O0FBRUQsY0FBWSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQzs7OztBQUlsRCxLQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7O0FBRTVDLFdBQVMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDdkQsUUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ2hCLGFBQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xELFVBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGVBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO09BQ3ZCO0tBQ0Y7O0FBRUQsV0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0RSxRQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7O0FBRXhFLFFBQUksTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQ2pDLGFBQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDekYsWUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMzRDtBQUNELFFBQUksTUFBTSxJQUFJLElBQUksRUFBRTtBQUNsQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDbEIsWUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixhQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLGNBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDNUIsa0JBQU07V0FDUDs7QUFFRCxlQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEM7QUFDRCxjQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUMzQjtBQUNELGFBQU8sTUFBTSxDQUFDO0tBQ2YsTUFBTTtBQUNMLFlBQU0sMkJBQWMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsMERBQTBELENBQUMsQ0FBQztLQUNqSDtHQUNGOzs7QUFHRCxNQUFJLFNBQVMsR0FBRztBQUNkLFVBQU0sRUFBRSxnQkFBUyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQzFCLFVBQUksRUFBRSxJQUFJLElBQUksR0FBRyxDQUFBLEFBQUMsRUFBRTtBQUNsQixjQUFNLDJCQUFjLEdBQUcsR0FBRyxJQUFJLEdBQUcsbUJBQW1CLEdBQUcsR0FBRyxDQUFDLENBQUM7T0FDN0Q7QUFDRCxhQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQjtBQUNELFVBQU0sRUFBRSxnQkFBUyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQzdCLFVBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDMUIsV0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QixZQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQ3hDLGlCQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtPQUNGO0tBQ0Y7QUFDRCxVQUFNLEVBQUUsZ0JBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUNqQyxhQUFPLE9BQU8sT0FBTyxLQUFLLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztLQUN4RTs7QUFFRCxvQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO0FBQ3hDLGlCQUFhLEVBQUUsb0JBQW9COztBQUVuQyxNQUFFLEVBQUUsWUFBUyxDQUFDLEVBQUU7QUFDZCxVQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsU0FBRyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLGFBQU8sR0FBRyxDQUFDO0tBQ1o7O0FBRUQsWUFBUSxFQUFFLEVBQUU7QUFDWixXQUFPLEVBQUUsaUJBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQ25FLFVBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1VBQ2pDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFVBQUksSUFBSSxJQUFJLE1BQU0sSUFBSSxXQUFXLElBQUksbUJBQW1CLEVBQUU7QUFDeEQsc0JBQWMsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUMzRixNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUU7QUFDMUIsc0JBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzlEO0FBQ0QsYUFBTyxjQUFjLENBQUM7S0FDdkI7O0FBRUQsUUFBSSxFQUFFLGNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUMzQixhQUFPLEtBQUssSUFBSSxLQUFLLEVBQUUsRUFBRTtBQUN2QixhQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztPQUN2QjtBQUNELGFBQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDRCxTQUFLLEVBQUUsZUFBUyxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQzdCLFVBQUksR0FBRyxHQUFHLEtBQUssSUFBSSxNQUFNLENBQUM7O0FBRTFCLFVBQUksS0FBSyxJQUFJLE1BQU0sSUFBSyxLQUFLLEtBQUssTUFBTSxBQUFDLEVBQUU7QUFDekMsV0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztPQUN2Qzs7QUFFRCxhQUFPLEdBQUcsQ0FBQztLQUNaOztBQUVELFFBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDakIsZ0JBQVksRUFBRSxZQUFZLENBQUMsUUFBUTtHQUNwQyxDQUFDOztBQUVGLFdBQVMsR0FBRyxDQUFDLE9BQU8sRUFBZ0I7UUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ2hDLFFBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7O0FBRXhCLE9BQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEIsUUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUM1QyxVQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNoQztBQUNELFFBQUksTUFBTSxZQUFBO1FBQ04sV0FBVyxHQUFHLFlBQVksQ0FBQyxjQUFjLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztBQUMvRCxRQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUU7QUFDMUIsVUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGNBQU0sR0FBRyxPQUFPLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztPQUM1RixNQUFNO0FBQ0wsY0FBTSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7T0FDcEI7S0FDRjs7QUFFRCxhQUFTLElBQUksQ0FBQyxPQUFPLGdCQUFlO0FBQ2xDLGFBQU8sRUFBRSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNySDtBQUNELFFBQUksR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3RHLFdBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztHQUMvQjtBQUNELEtBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDOztBQUVqQixLQUFHLENBQUMsTUFBTSxHQUFHLFVBQVMsT0FBTyxFQUFFO0FBQzdCLFFBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO0FBQ3BCLGVBQVMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFbEUsVUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFO0FBQzNCLGlCQUFTLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7T0FDdEU7QUFDRCxVQUFJLFlBQVksQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDLGFBQWEsRUFBRTtBQUN6RCxpQkFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO09BQzVFO0tBQ0YsTUFBTTtBQUNMLGVBQVMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUNwQyxlQUFTLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDdEMsZUFBUyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0tBQzNDO0dBQ0YsQ0FBQzs7QUFFRixLQUFHLENBQUMsTUFBTSxHQUFHLFVBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQ2xELFFBQUksWUFBWSxDQUFDLGNBQWMsSUFBSSxDQUFDLFdBQVcsRUFBRTtBQUMvQyxZQUFNLDJCQUFjLHdCQUF3QixDQUFDLENBQUM7S0FDL0M7QUFDRCxRQUFJLFlBQVksQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckMsWUFBTSwyQkFBYyx5QkFBeUIsQ0FBQyxDQUFDO0tBQ2hEOztBQUVELFdBQU8sV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0dBQ2pGLENBQUM7QUFDRixTQUFPLEdBQUcsQ0FBQztDQUNaOztBQUVNLFNBQVMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQzVGLFdBQVMsSUFBSSxDQUFDLE9BQU8sRUFBZ0I7UUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ2pDLFFBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUMzQixRQUFJLE1BQU0sSUFBSSxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ25DLG1CQUFhLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDMUM7O0FBRUQsV0FBTyxFQUFFLENBQUMsU0FBUyxFQUNmLE9BQU8sRUFDUCxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQ3JDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxFQUNwQixXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUN4RCxhQUFhLENBQUMsQ0FBQztHQUNwQjs7QUFFRCxNQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQzs7QUFFekUsTUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDakIsTUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEMsTUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLENBQUM7QUFDNUMsU0FBTyxJQUFJLENBQUM7Q0FDYjs7QUFFTSxTQUFTLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN4RCxNQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osUUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFO0FBQ3JDLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3pDLE1BQU07QUFDTCxhQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDMUM7R0FDRixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTs7QUFFekMsV0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7QUFDdkIsV0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7R0FDckM7QUFDRCxTQUFPLE9BQU8sQ0FBQztDQUNoQjs7QUFFTSxTQUFTLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN2RCxTQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUN2QixNQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDZixXQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0dBQ3ZFOztBQUVELE1BQUksWUFBWSxZQUFBLENBQUM7QUFDakIsTUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFO0FBQ3JDLFdBQU8sQ0FBQyxJQUFJLEdBQUcsTUF0TzJCLFdBQVcsQ0FzTzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxnQkFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFMUQsUUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFO0FBQ3pCLGFBQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDOUU7R0FDRjs7QUFFRCxNQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksWUFBWSxFQUFFO0FBQ3pDLFdBQU8sR0FBRyxZQUFZLENBQUM7R0FDeEI7O0FBRUQsTUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQ3pCLFVBQU0sMkJBQWMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUMsQ0FBQztHQUM1RSxNQUFNLElBQUksT0FBTyxZQUFZLFFBQVEsRUFBRTtBQUN0QyxXQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7R0FDbEM7Q0FDRjs7QUFFTSxTQUFTLElBQUksR0FBRztBQUFFLFNBQU8sRUFBRSxDQUFDO0NBQUU7O0FBRXJDLFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDL0IsTUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUEsQUFBQyxFQUFFO0FBQzlCLFFBQUksR0FBRyxJQUFJLEdBQUcsTUE3UDRCLFdBQVcsQ0E2UDNCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNyQyxRQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztHQUNyQjtBQUNELFNBQU8sSUFBSSxDQUFDO0NBQ2I7O0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUN6RSxNQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUU7QUFDaEIsUUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2YsUUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVGLFNBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNCO0FBQ0QsU0FBTyxJQUFJLENBQUM7Q0FDYiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9ydW50aW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0aW9uJztcbmltcG9ydCB7IENPTVBJTEVSX1JFVklTSU9OLCBSRVZJU0lPTl9DSEFOR0VTLCBjcmVhdGVGcmFtZSB9IGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1JldmlzaW9uKGNvbXBpbGVySW5mbykge1xuICBjb25zdCBjb21waWxlclJldmlzaW9uID0gY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSB8fCAxLFxuICAgICAgICBjdXJyZW50UmV2aXNpb24gPSBDT01QSUxFUl9SRVZJU0lPTjtcblxuICBpZiAoY29tcGlsZXJSZXZpc2lvbiAhPT0gY3VycmVudFJldmlzaW9uKSB7XG4gICAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBjdXJyZW50UmV2aXNpb24pIHtcbiAgICAgIGNvbnN0IHJ1bnRpbWVWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY3VycmVudFJldmlzaW9uXSxcbiAgICAgICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2NvbXBpbGVyUmV2aXNpb25dO1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYW4gb2xkZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIHJ1bnRpbWVWZXJzaW9ucyArICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVyVmVyc2lvbnMgKyAnKS4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhlIHJ1bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAgICAgJ1BsZWFzZSB1cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVySW5mb1sxXSArICcpLicpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHN1ZWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYXJ0aWFsID0gZW52LlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9ucyk7XG4gICAgbGV0IHJlc3VsdCA9IGVudi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9ucyk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKHBhcnRpYWwsIHRlbXBsYXRlU3BlYy5jb21waWxlck9wdGlvbnMsIGVudik7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7XG4gICAgICAgIGxldCBsaW5lcyA9IHJlc3VsdC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25zLmluZGVudCArIGxpbmVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIGxldCBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbihvYmosIG5hbWUpIHtcbiAgICAgIGlmICghKG5hbWUgaW4gb2JqKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdcIicgKyBuYW1lICsgJ1wiIG5vdCBkZWZpbmVkIGluICcgKyBvYmopO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBpZiAoZGVwdGhzW2ldICYmIGRlcHRoc1tpXVtuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFtYmRhOiBmdW5jdGlvbihjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uKGkpIHtcbiAgICAgIGxldCByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbihpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgICBsZXQgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLFxuICAgICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0odGhpcywgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpO1xuICAgICAgfSBlbHNlIGlmICghcHJvZ3JhbVdyYXBwZXIpIHtcbiAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldID0gd3JhcFByb2dyYW0odGhpcywgaSwgZm4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb2dyYW1XcmFwcGVyO1xuICAgIH0sXG5cbiAgICBkYXRhOiBmdW5jdGlvbih2YWx1ZSwgZGVwdGgpIHtcbiAgICAgIHdoaWxlICh2YWx1ZSAmJiBkZXB0aC0tKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuX3BhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG1lcmdlOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIChwYXJhbSAhPT0gY29tbW9uKSkge1xuICAgICAgICBvYmogPSBVdGlscy5leHRlbmQoe30sIGNvbW1vbiwgcGFyYW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG5cbiAgICBub29wOiBlbnYuVk0ubm9vcCxcbiAgICBjb21waWxlckluZm86IHRlbXBsYXRlU3BlYy5jb21waWxlclxuICB9O1xuXG4gIGZ1bmN0aW9uIHJldChjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgZGF0YSA9IG9wdGlvbnMuZGF0YTtcblxuICAgIHJldC5fc2V0dXAob3B0aW9ucyk7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwgJiYgdGVtcGxhdGVTcGVjLnVzZURhdGEpIHtcbiAgICAgIGRhdGEgPSBpbml0RGF0YShjb250ZXh0LCBkYXRhKTtcbiAgICB9XG4gICAgbGV0IGRlcHRocyxcbiAgICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykge1xuICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7XG4gICAgICAgIGRlcHRocyA9IGNvbnRleHQgIT09IG9wdGlvbnMuZGVwdGhzWzBdID8gW2NvbnRleHRdLmNvbmNhdChvcHRpb25zLmRlcHRocykgOiBvcHRpb25zLmRlcHRocztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gJycgKyB0ZW1wbGF0ZVNwZWMubWFpbihjb250YWluZXIsIGNvbnRleHQsIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpO1xuICAgIH1cbiAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnModGVtcGxhdGVTcGVjLm1haW4sIG1haW4sIGNvbnRhaW5lciwgb3B0aW9ucy5kZXB0aHMgfHwgW10sIGRhdGEsIGJsb2NrUGFyYW1zKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuaGVscGVycywgZW52LmhlbHBlcnMpO1xuXG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHtcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMucGFydGlhbHMsIGVudi5wYXJ0aWFscyk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5kZWNvcmF0b3JzLCBlbnYuZGVjb3JhdG9ycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgIH1cbiAgfTtcblxuICByZXQuX2NoaWxkID0gZnVuY3Rpb24oaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgJiYgIWJsb2NrUGFyYW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgYmxvY2sgcGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzICYmICFkZXB0aHMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBwYXJlbnQgZGVwdGhzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgdGVtcGxhdGVTcGVjW2ldLCBkYXRhLCAwLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgY3VycmVudERlcHRocyA9IGRlcHRocztcbiAgICBpZiAoZGVwdGhzICYmIGNvbnRleHQgIT09IGRlcHRoc1swXSkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oY29udGFpbmVyLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLFxuICAgICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgICAgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksXG4gICAgICAgIGN1cnJlbnREZXB0aHMpO1xuICB9XG5cbiAgcHJvZyA9IGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpO1xuXG4gIHByb2cucHJvZ3JhbSA9IGk7XG4gIHByb2cuZGVwdGggPSBkZXB0aHMgPyBkZXB0aHMubGVuZ3RoIDogMDtcbiAgcHJvZy5ibG9ja1BhcmFtcyA9IGRlY2xhcmVkQmxvY2tQYXJhbXMgfHwgMDtcbiAgcmV0dXJuIHByb2c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIGlmICghcGFydGlhbCkge1xuICAgIGlmIChvcHRpb25zLm5hbWUgPT09ICdAcGFydGlhbC1ibG9jaycpIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIXBhcnRpYWwuY2FsbCAmJiAhb3B0aW9ucy5uYW1lKSB7XG4gICAgLy8gVGhpcyBpcyBhIGR5bmFtaWMgcGFydGlhbCB0aGF0IHJldHVybmVkIGEgc3RyaW5nXG4gICAgb3B0aW9ucy5uYW1lID0gcGFydGlhbDtcbiAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1twYXJ0aWFsXTtcbiAgfVxuICByZXR1cm4gcGFydGlhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICBsZXQgcGFydGlhbEJsb2NrO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAocGFydGlhbEJsb2NrLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBwYXJ0aWFsQmxvY2sucGFydGlhbHMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQgJiYgcGFydGlhbEJsb2NrKSB7XG4gICAgcGFydGlhbCA9IHBhcnRpYWxCbG9jaztcbiAgfVxuXG4gIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgZm91bmQnKTtcbiAgfSBlbHNlIGlmIChwYXJ0aWFsIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICByZXR1cm4gcGFydGlhbChjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpIHsgcmV0dXJuICcnOyB9XG5cbmZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGEgPyBjcmVhdGVGcmFtZShkYXRhKSA6IHt9O1xuICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHtcbiAgaWYgKGZuLmRlY29yYXRvcikge1xuICAgIGxldCBwcm9wcyA9IHt9O1xuICAgIHByb2cgPSBmbi5kZWNvcmF0b3IocHJvZywgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGhzICYmIGRlcHRoc1swXSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgVXRpbHMuZXh0ZW5kKHByb2csIHByb3BzKTtcbiAgfVxuICByZXR1cm4gcHJvZztcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/runtime.js\n ** module id = 63\n ** module chunks = 0\n **/","/* global window */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOztBQUVsQyxNQUFJLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxHQUFHLE1BQU07TUFDdEQsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRWxDLFlBQVUsQ0FBQyxVQUFVLEdBQUcsWUFBVztBQUNqQyxRQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO0FBQ2xDLFVBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQy9CO0dBQ0YsQ0FBQztDQUNIIiwiZmlsZSI6ImxpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oSGFuZGxlYmFycykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBsZXQgcm9vdCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93LFxuICAgICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/no-conflict.js\n ** module id = 64\n ** module chunks = 0\n **/","var Handlebars = require(\"/Users/carleberhard/galaxy/client-build/client/node_modules/handlebars/runtime.js\");\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression;\n\n return \"\"\n + alias2(alias1(depth0, depth0))\n + \" \";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"\"\n + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.labels : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\n\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n\"\n + alias4(((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"description\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n\";\n},\"useData\":true});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/templates/tool_link.handlebars\n ** module id = 65\n ** module chunks = 0\n **/","var Handlebars = require(\"/Users/carleberhard/galaxy/client-build/client/node_modules/handlebars/runtime.js\");\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"\\n
    \\n
    \\n
    \";\n},\"useData\":true});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/templates/panel_section.handlebars\n ** module id = 66\n ** module chunks = 0\n **/","var Handlebars = require(\"/Users/carleberhard/galaxy/client-build/client/node_modules/handlebars/runtime.js\");\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"\\n \\n\\n\";\n},\"useData\":true});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/templates/tool_search.handlebars\n ** module id = 67\n ** module chunks = 0\n **/","/** Upload app contains the upload progress button and upload modal, compiles model data for API request **/\ndefine(['utils/utils',\n 'mvc/ui/ui-modal',\n 'mvc/ui/ui-tabs',\n 'mvc/upload/upload-button',\n 'mvc/upload/default/default-view',\n 'mvc/upload/composite/composite-view'],\n function( Utils,\n Modal,\n Tabs,\n UploadButton,\n UploadViewDefault,\n UploadViewComposite ) {\nreturn Backbone.View.extend({\n // default options\n options : {\n nginx_upload_path : '',\n ftp_upload_site : 'n/a',\n default_genome : '?',\n default_extension : 'auto',\n height : 500,\n width : 900,\n auto : {\n id : 'auto',\n text : 'Auto-detect',\n description : 'This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed.'\n }\n },\n\n // upload modal container\n modal: null,\n\n // progress button in panel\n ui_button: null,\n\n // current history identifier\n current_history: null,\n\n // contains all available dataset extensions/types\n list_extensions: [],\n\n // contains all available genomes\n list_genomes: [],\n\n // initialize\n initialize: function( options ) {\n // link this\n var self = this;\n\n // merge parsed options\n this.options = Utils.merge( options, this.options );\n\n // create model for upload/progress button\n this.ui_button = new UploadButton.Model();\n\n // create view for upload/progress button\n this.ui_button_view = new UploadButton.View({\n model : this.ui_button,\n onclick : function(e) {\n e.preventDefault();\n self.show()\n },\n onunload : function() {\n var percentage = self.ui_button.get('percentage', 0);\n if (percentage > 0 && percentage < 100) {\n return 'Several uploads are queued.';\n }\n }\n });\n\n // set element to button view\n this.setElement( this.ui_button_view.$el );\n\n // load extensions\n var self = this;\n Utils.get({\n url : Galaxy.root + 'api/datatypes?extension_only=False',\n success : function( datatypes ) {\n for ( key in datatypes ) {\n self.list_extensions.push({\n id : datatypes[ key ].extension,\n text : datatypes[ key ].extension,\n description : datatypes[ key ].description,\n description_url : datatypes[ key ].description_url,\n composite_files : datatypes[ key ].composite_files\n });\n }\n self.list_extensions.sort( function( a, b ) {\n var a_text = a.text && a.text.toLowerCase();\n var b_text = b.text && b.text.toLowerCase();\n return a_text > b_text ? 1 : a_text < b_text ? -1 : 0;\n });\n if ( !self.options.datatypes_disable_auto ) {\n self.list_extensions.unshift( self.options.auto );\n }\n }\n });\n\n // load genomes\n Utils.get({\n url : Galaxy.root + 'api/genomes',\n success : function( genomes ) {\n for ( key in genomes ) {\n self.list_genomes.push({\n id : genomes[ key ][ 1 ],\n text : genomes[ key ][ 0 ]\n });\n }\n self.list_genomes.sort( function( a, b ) {\n if ( a.id == self.options.default_genome ) { return -1; }\n if ( b.id == self.options.default_genome ) { return 1; }\n return a.text > b.text ? 1 : a.text < b.text ? -1 : 0;\n });\n }\n });\n },\n\n //\n // event triggered by upload button\n //\n\n // show/hide upload frame\n show: function () {\n // wait for galaxy history panel\n var self = this;\n if ( !Galaxy.currHistoryPanel || !Galaxy.currHistoryPanel.model ) {\n window.setTimeout(function() { self.show() }, 500)\n return;\n }\n\n // set current user\n this.current_user = Galaxy.user.id;\n\n // create modal\n if ( !this.modal ) {\n // build tabs\n this.tabs = new Tabs.View();\n\n // add tabs\n this.default_view = new UploadViewDefault( this );\n this.tabs.add({\n id : 'regular',\n title : 'Regular',\n $el : this.default_view.$el\n });\n this.composite_view = new UploadViewComposite( this );\n this.tabs.add({\n id : 'composite',\n title : 'Composite',\n $el : this.composite_view.$el\n });\n\n // make modal\n this.modal = new Modal.View({\n title : 'Download from web or upload from disk',\n body : this.tabs.$el,\n height : this.options.height,\n width : this.options.width,\n closing_events : true,\n title_separator : false\n });\n }\n\n // show modal\n this.modal.show();\n },\n\n // refresh user and current history\n currentHistory: function() {\n return this.current_user && Galaxy.currHistoryPanel.model.get( 'id' );\n },\n\n // get ftp configuration\n currentFtp: function() {\n return this.current_user && this.options.ftp_upload_site;\n },\n\n /**\n * Package API data from array of models\n * @param{Array} items - Upload items/rows filtered from a collection\n */\n toData: function( items, history_id ) {\n // create dictionary for data submission\n var data = {\n payload: {\n 'tool_id' : 'upload1',\n 'history_id' : history_id || this.currentHistory(),\n 'inputs' : {}\n },\n files: [],\n error_message: null\n }\n // add upload tools input data\n if ( items && items.length > 0 ) {\n var inputs = {};\n inputs[ 'dbkey' ] = items[0].get( 'genome', null );\n inputs[ 'file_type' ] = items[0].get( 'extension', null );\n for ( var index in items ) {\n var it = items[ index ];\n it.set( 'status', 'running' );\n if ( it.get( 'file_size' ) > 0 ) {\n var prefix = 'files_' + index + '|';\n inputs[ prefix + 'type' ] = 'upload_dataset';\n inputs[ prefix + 'space_to_tab' ] = it.get( 'space_to_tab' ) && 'Yes' || null;\n inputs[ prefix + 'to_posix_lines' ] = it.get( 'to_posix_lines' ) && 'Yes' || null;\n switch ( it.get( 'file_mode' ) ) {\n case 'new':\n inputs[ prefix + 'url_paste' ] = it.get( 'url_paste' );\n break;\n case 'ftp':\n inputs[ prefix + 'ftp_files' ] = it.get( 'file_path' );\n break;\n case 'local':\n data.files.push( { name: prefix + 'file_data', file: it.get( 'file_data' ) } );\n }\n } else {\n data.error_message = 'Upload content incomplete.';\n it.set( 'status', 'error' );\n it.set( 'info', data.error_message );\n break;\n }\n }\n data.payload.inputs = JSON.stringify( inputs );\n }\n return data;\n }\n});\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/upload/upload-view.js\n ** module id = 68\n ** module chunks = 0\n **/","// dependencies\ndefine([], function() {\n\n// model for upload/progress bar button\nvar Model = Backbone.Model.extend({\n defaults: {\n icon : 'fa-upload',\n tooltip : 'Download from URL or upload files from disk',\n label : 'Load Data',\n percentage : 0,\n status : ''\n }\n});\n\n// view for upload/progress bar button\nvar View = Backbone.View.extend({\n // model\n model : null,\n\n // initialize\n initialize : function( options ) {\n // link this\n var self = this;\n\n // create model\n var model = options.model;\n\n // create new element\n this.setElement( this._template() );\n\n // add event\n this.$el.on( 'click', function( e ) { options.onclick( e ); });\n\n // add tooltip\n this.$el.tooltip( { title: model.get('tooltip'), placement: 'bottom' } );\n\n // events\n model.on( 'change:percentage', function() {\n self._percentage( model.get( 'percentage' ) );\n });\n model.on( 'change:status', function() {\n self._status( model.get( 'status' ) );\n });\n\n // unload event\n var self = this;\n $( window ).on( 'beforeunload', function() {\n var text = \"\";\n if ( options.onunload ) {\n text = options.onunload();\n }\n if ( text != \"\" ) {\n return text;\n }\n });\n },\n\n // set status\n _status: function( value ) {\n var $el = this.$el.find( '.progress-bar' );\n $el.removeClass();\n $el.addClass( 'progress-bar' );\n $el.addClass( 'progress-bar-notransition' );\n if ( value != '' ) {\n $el.addClass( 'progress-bar-' + value );\n }\n },\n\n // set percentage\n _percentage: function( value ) {\n var $el = this.$el.find( '.progress-bar' );\n $el.css( { width : value + '%' } );\n },\n\n // template\n _template: function() {\n return '
    ' +\n '
    ' +\n '
    ' +\n '' +\n '' +\n '' +\n '
    ' +\n '
    ';\n }\n});\n\nreturn {\n Model : Model,\n View : View\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/upload/upload-button.js\n ** module id = 69\n ** module chunks = 0\n **/","/** Renders contents of the default uploader */\ndefine(['utils/utils',\n 'mvc/upload/upload-model',\n 'mvc/upload/default/default-row',\n 'mvc/upload/upload-ftp',\n 'mvc/ui/ui-popover',\n 'mvc/ui/ui-select',\n 'mvc/ui/ui-misc',\n 'utils/uploadbox'],\n\n function( Utils,\n UploadModel,\n UploadRow,\n UploadFtp,\n Popover,\n Select,\n Ui\n ) {\n\nreturn Backbone.View.extend({\n // extension selector\n select_extension : null,\n\n // genome selector\n select_genome: null,\n\n // jquery uploadbox plugin\n uploadbox: null,\n\n // current upload size in bytes\n upload_size: 0,\n\n // contains upload row models\n collection : new UploadModel.Collection(),\n\n // ftp file viewer\n ftp : null,\n\n // keeps track of the current uploader state\n counter : {\n announce : 0,\n success : 0,\n error : 0,\n running : 0,\n reset : function() {\n this.announce = this.success = this.error = this.running = 0;\n }\n },\n\n // initialize\n initialize : function(app) {\n // link app\n this.app = app;\n this.options = app.options;\n this.list_extensions = app.list_extensions;\n this.list_genomes = app.list_genomes;\n this.ui_button = app.ui_button;\n this.ftp_upload_site = app.currentFtp();\n\n // link this\n var self = this;\n\n // set element\n this.setElement(this._template());\n\n // create button section\n this.btnLocal = new Ui.Button({ id: 'btn-local', title: 'Choose local file', onclick: function() { self.uploadbox.select(); }, icon: 'fa fa-laptop' });\n this.btnFtp = new Ui.Button({ id: 'btn-ftp', title: 'Choose FTP file', onclick: function() { self._eventFtp(); }, icon: 'fa fa-folder-open-o' });\n this.btnCreate = new Ui.Button({ id: 'btn-new', title: 'Paste/Fetch data', onclick: function() { self._eventCreate(); }, icon: 'fa fa-edit' });\n this.btnStart = new Ui.Button({ id: 'btn-start', title: 'Start', onclick: function() { self._eventStart(); } });\n this.btnStop = new Ui.Button({ id: 'btn-stop', title: 'Pause', onclick: function() { self._eventStop(); } });\n this.btnReset = new Ui.Button({ id: 'btn-reset', title: 'Reset', onclick: function() { self._eventReset(); } });\n this.btnClose = new Ui.Button({ id: 'btn-close', title: 'Close', onclick: function() { self.app.modal.hide(); } });\n\n // append buttons to dom\n var buttons = [ this.btnLocal, this.btnFtp, this.btnCreate, this.btnStop, this.btnReset, this.btnStart, this.btnClose ];\n for (var i in buttons) {\n this.$('#upload-buttons').prepend(buttons[i].$el);\n }\n\n // file upload\n var self = this;\n this.uploadbox = this.$('#upload-box').uploadbox({\n url : this.app.options.nginx_upload_path,\n announce : function(index, file) { self._eventAnnounce(index, file) },\n initialize : function(index) { return self.app.toData([ self.collection.get(index) ], self.history_id) },\n progress : function(index, percentage) { self._eventProgress(index, percentage) },\n success : function(index, message) { self._eventSuccess(index, message) },\n error : function(index, message) { self._eventError(index, message) },\n complete : function() { self._eventComplete() },\n ondragover : function() { self.$('.upload-box').addClass('highlight'); },\n ondragleave : function() { self.$('.upload-box').removeClass('highlight'); }\n });\n\n // add ftp file viewer\n this.ftp = new Popover.View({\n title : 'FTP files',\n container : this.btnFtp.$el\n });\n\n // select extension\n this.select_extension = new Select.View({\n css : 'footer-selection',\n container : this.$('#footer-extension'),\n data : _.filter(this.list_extensions, function(ext) { return !ext.composite_files }),\n value : this.options.default_extension,\n onchange : function(extension) {\n self.updateExtension(extension);\n }\n });\n\n // handle extension info popover\n self.$('#footer-extension-info').on('click', function(e) {\n self.showExtensionInfo({\n $el : $(e.target),\n title : self.select_extension.text(),\n extension : self.select_extension.value(),\n placement : 'top'\n });\n }).on('mousedown', function(e) { e.preventDefault(); });\n\n // genome extension\n this.select_genome = new Select.View({\n css : 'footer-selection',\n container : this.$('#footer-genome'),\n data : this.list_genomes,\n value : this.options.default_genome,\n onchange : function(genome) {\n self.updateGenome(genome);\n }\n });\n\n // events\n this.collection.on('remove', function(model) {\n self._eventRemove(model);\n });\n\n // setup info\n this._updateScreen();\n },\n\n //\n // events triggered by the upload box plugin\n //\n\n // a new file has been dropped/selected through the uploadbox plugin\n _eventAnnounce: function(index, file) {\n // update counter\n this.counter.announce++;\n\n // create if model has not been created yet\n var new_model = new UploadModel.Model({\n id : index,\n file_name : file.name,\n file_size : file.size,\n file_mode : file.mode || 'local',\n file_path : file.path,\n file_data : file\n });\n\n // add model to collection\n this.collection.add(new_model);\n\n // create view/model\n var upload_row = new UploadRow(this, { model: new_model });\n\n // add upload row element to table\n this.$('#upload-table > tbody:first').append(upload_row.$el);\n\n // show on screen info\n this._updateScreen();\n\n // render\n upload_row.render();\n },\n\n // progress\n _eventProgress: function(index, percentage) {\n // set progress for row\n var it = this.collection.get(index);\n it.set('percentage', percentage);\n\n // update ui button\n this.ui_button.set('percentage', this._uploadPercentage(percentage, it.get('file_size')));\n },\n\n // success\n _eventSuccess: function(index, message) {\n // update status\n var it = this.collection.get(index);\n it.set('percentage', 100);\n it.set('status', 'success');\n\n // update ui button\n this.ui_button.set('percentage', this._uploadPercentage(100, it.get('file_size')));\n\n // update completed\n this.upload_completed += it.get('file_size') * 100;\n\n // update counter\n this.counter.announce--;\n this.counter.success++;\n\n // update on screen info\n this._updateScreen();\n\n // update galaxy history\n Galaxy.currHistoryPanel.refreshContents();\n },\n\n // error\n _eventError: function(index, message) {\n // get element\n var it = this.collection.get(index);\n\n // update status\n it.set('percentage', 100);\n it.set('status', 'error');\n it.set('info', message);\n\n // update ui button\n this.ui_button.set('percentage', this._uploadPercentage(100, it.get('file_size')));\n this.ui_button.set('status', 'danger');\n\n // update completed\n this.upload_completed += it.get('file_size') * 100;\n\n // update counter\n this.counter.announce--;\n this.counter.error++;\n\n // update on screen info\n this._updateScreen();\n },\n\n // queue is done\n _eventComplete: function() {\n // reset queued upload to initial status\n this.collection.each(function(model) {\n if(model.get('status') == 'queued') {\n model.set('status', 'init');\n }\n });\n\n // update running\n this.counter.running = 0;\n\n // update on screen info\n this._updateScreen();\n },\n\n //\n // events triggered by collection\n //\n\n // remove model from upload list\n _eventRemove: function(model) {\n // update status\n var status = model.get('status');\n\n // reduce counter\n if (status == 'success') {\n this.counter.success--;\n } else if (status == 'error') {\n this.counter.error--;\n } else {\n this.counter.announce--;\n }\n\n // remove from queue\n this.uploadbox.remove(model.id);\n\n // show on screen info\n this._updateScreen();\n },\n\n //\n // events triggered by this view\n //\n\n // [public] display extension info popup\n showExtensionInfo: function(options) {\n // initialize\n var self = this;\n var $el = options.$el;\n var extension = options.extension;\n var title = options.title;\n var description = _.findWhere(self.list_extensions, {'id': extension});\n\n // create popup\n this.extension_popup && this.extension_popup.remove();\n this.extension_popup = new Popover.View({\n placement: options.placement || 'bottom',\n container: $el,\n destroy: true\n });\n\n // add content and show popup\n this.extension_popup.title(title);\n this.extension_popup.empty();\n this.extension_popup.append(this._templateDescription(description));\n this.extension_popup.show();\n },\n\n // show/hide ftp popup\n _eventFtp: function() {\n if (!this.ftp.visible) {\n this.ftp.empty();\n var self = this;\n this.ftp.append((new UploadFtp({\n collection : this.collection,\n ftp_upload_site : this.ftp_upload_site,\n onadd: function(ftp_file) {\n self.uploadbox.add([{\n mode: 'ftp',\n name: ftp_file.path,\n size: ftp_file.size,\n path: ftp_file.path\n }]);\n },\n onremove: function(model_index) {\n self.collection.remove(model_index);\n }\n })).$el);\n this.ftp.show();\n } else {\n this.ftp.hide();\n }\n },\n\n // create a new file\n _eventCreate: function (){\n this.uploadbox.add([{\n name : 'New File',\n size : 0,\n mode : 'new'\n }]);\n },\n\n // start upload process\n _eventStart: function() {\n // check\n if (this.counter.announce == 0 || this.counter.running > 0) {\n return;\n }\n\n // reset current size\n var self = this;\n this.upload_size = 0;\n this.upload_completed = 0;\n // switch icons for new uploads\n this.collection.each(function(model) {\n if(model.get('status') == 'init') {\n model.set('status', 'queued');\n self.upload_size += model.get('file_size');\n }\n });\n\n // reset progress\n this.ui_button.set('percentage', 0);\n this.ui_button.set('status', 'success');\n\n // update running\n this.counter.running = this.counter.announce;\n\n // set current history id\n this.history_id = this.app.currentHistory();\n\n // initiate upload procedure in plugin\n this.uploadbox.start();\n\n // update on screen info\n this._updateScreen();\n },\n\n // pause upload process\n _eventStop: function() {\n // check\n if (this.counter.running > 0) {\n // show upload has paused\n this.ui_button.set('status', 'info');\n\n // set html content\n $('#upload-info').html('Queue will pause after completing the current file...');\n\n // request pause\n this.uploadbox.stop();\n }\n },\n\n // remove all\n _eventReset: function() {\n // make sure queue is not running\n if (this.counter.running == 0){\n // reset collection\n this.collection.reset();\n\n // reset counter\n this.counter.reset();\n\n // remove from queue\n this.uploadbox.reset();\n\n // reset value for universal type drop-down\n this.select_extension.value(this.options.default_extension);\n this.select_genome.value(this.options.default_genome);\n\n // reset button\n this.ui_button.set('percentage', 0);\n\n // show on screen info\n this._updateScreen();\n }\n },\n\n // update extension for all models\n updateExtension: function(extension, defaults_only) {\n var self = this;\n this.collection.each(function(model) {\n if (model.get('status') == 'init' && (model.get('extension') == self.options.default_extension || !defaults_only)) {\n model.set('extension', extension);\n }\n });\n },\n\n // update genome for all models\n updateGenome: function(genome, defaults_only) {\n var self = this;\n this.collection.each(function(model) {\n if (model.get('status') == 'init' && (model.get('genome') == self.options.default_genome || !defaults_only)) {\n model.set('genome', genome);\n }\n });\n },\n\n // set screen\n _updateScreen: function () {\n /*\n update on screen info\n */\n\n // check default message\n if(this.counter.announce == 0) {\n if (this.uploadbox.compatible()) {\n message = ' ';\n } else {\n message = 'Browser does not support Drag & Drop. Try Firefox 4+, Chrome 7+, IE 10+, Opera 12+ or Safari 6+.';\n }\n } else {\n if (this.counter.running == 0) {\n message = 'You added ' + this.counter.announce + ' file(s) to the queue. Add more files or click \\'Start\\' to proceed.';\n } else {\n message = 'Please wait...' + this.counter.announce + ' out of ' + this.counter.running + ' remaining.';\n }\n }\n\n // set html content\n this.$('#upload-info').html(message);\n\n /*\n update button status\n */\n\n // update reset button\n if (this.counter.running == 0 && this.counter.announce + this.counter.success + this.counter.error > 0) {\n this.btnReset.enable();\n } else {\n this.btnReset.disable();\n }\n\n // update upload button\n if (this.counter.running == 0 && this.counter.announce > 0) {\n this.btnStart.enable();\n this.btnStart.$el.addClass('btn-primary');\n } else {\n this.btnStart.disable();\n this.btnStart.$el.removeClass('btn-primary');\n }\n\n // pause upload button\n if (this.counter.running > 0) {\n this.btnStop.enable();\n } else {\n this.btnStop.disable();\n }\n\n // select upload button\n if (this.counter.running == 0) {\n this.btnLocal.enable();\n this.btnFtp.enable();\n this.btnCreate.enable();\n } else {\n this.btnLocal.disable();\n this.btnFtp.disable();\n this.btnCreate.disable();\n }\n\n // ftp button\n if (this.ftp_upload_site) {\n this.btnFtp.$el.show();\n } else {\n this.btnFtp.$el.hide();\n }\n\n // table visibility\n if (this.counter.announce + this.counter.success + this.counter.error > 0) {\n this.$('#upload-table').show();\n this.$('.upload-helper').hide();\n } else {\n this.$('#upload-table').hide();\n this.$('.upload-helper').show();\n }\n },\n\n // calculate percentage of all queued uploads\n _uploadPercentage: function(percentage, size) {\n return (this.upload_completed + (percentage * size)) / this.upload_size;\n },\n\n // template for extensions description\n _templateDescription: function(options) {\n if (options.description) {\n var tmpl = options.description;\n if (options.description_url) {\n tmpl += ' (read more)';\n }\n return tmpl;\n } else {\n return 'There is no description available for this file extension.';\n }\n },\n\n // load html template\n _template: function() {\n return '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    Drop files here
    ' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
    NameSizeTypeGenomeSettingsStatus' +\n '
    ' +\n '
    ' +\n '
    ' +\n 'Type (set all):' +\n '' +\n ' ' +\n 'Genome (set all):' +\n '' +\n '
    ' +\n '
    ' +\n '
    ';\n }\n});\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/upload/default/default-view.js\n ** module id = 70\n ** module chunks = 0\n **/","// dependencies\ndefine([], function() {\n\n// model\nvar Model = Backbone.Model.extend({\n defaults: {\n extension : 'auto',\n genome : '?',\n url_paste : '',\n status : 'init',\n info : null,\n file_name : '',\n file_mode : '',\n file_size : 0,\n file_type : null,\n file_path : '',\n file_data : null,\n percentage : 0,\n space_to_tab : false,\n to_posix_lines : true,\n enabled : true\n },\n reset: function(attr) {\n this.clear().set(this.defaults).set(attr);\n }\n});\n\n// collection\nvar Collection = Backbone.Collection.extend({\n model: Model\n});\n\n// return\nreturn {\n Model: Model,\n Collection : Collection\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/upload/upload-model.js\n ** module id = 71\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils',\n 'mvc/upload/upload-model',\n 'mvc/upload/upload-settings',\n 'mvc/ui/ui-popover',\n 'mvc/ui/ui-select'],\n\n function( Utils,\n UploadModel,\n UploadSettings,\n Popover,\n Select\n ) {\n\n// row view\nreturn Backbone.View.extend({\n // states\n status_classes : {\n init : 'upload-icon-button fa fa-trash-o',\n queued : 'upload-icon fa fa-spinner fa-spin',\n running : 'upload-icon fa fa-spinner fa-spin',\n success : 'upload-icon-button fa fa-check',\n error : 'upload-icon-button fa fa-exclamation-triangle'\n },\n\n // handle for settings popover\n settings: null,\n\n // genome selector\n select_genome : null,\n\n // extension selector\n select_extension : null,\n\n // render\n initialize: function(app, options) {\n // link app\n this.app = app;\n\n // link this\n var self = this;\n\n // create model\n this.model = options.model;\n\n // add upload row\n this.setElement(this._template(options.model));\n\n // append popup to settings icon\n this.settings = new Popover.View({\n title : 'Upload configuration',\n container : this.$('#settings'),\n placement : 'bottom'\n });\n\n // initialize default genome through default select field\n var default_genome = this.app.select_genome.value();\n \n // select genomes\n this.select_genome = new Select.View({\n css: 'upload-genome',\n onchange : function(genome) {\n self.model.set('genome', genome);\n self.app.updateGenome(genome, true);\n },\n data: self.app.list_genomes,\n container: this.$('#genome'),\n value: default_genome\n });\n\n // initialize genome\n this.model.set('genome', default_genome);\n\n // initialize default extension through default select field\n var default_extension = this.app.select_extension.value();\n \n // select extension\n this.select_extension = new Select.View({\n css: 'upload-extension',\n onchange : function(extension) {\n self.model.set('extension', extension);\n self.app.updateExtension(extension, true);\n },\n data: self.app.list_extensions,\n container: this.$('#extension'),\n value: default_extension\n });\n\n // initialize extension\n this.model.set('extension', default_extension);\n \n //\n // ui events\n //\n\n // handle click event\n this.$('#symbol').on('click', function() { self._removeRow(); });\n\n // handle extension info popover\n this.$('#extension-info').on('click' , function(e) {\n self.app.showExtensionInfo({\n $el : $(e.target),\n title : self.select_extension.text(),\n extension : self.select_extension.value()\n });\n }).on('mousedown', function(e) { e.preventDefault(); });\n\n // handle settings popover\n this.$('#settings').on('click' , function(e) { self._showSettings(); })\n .on('mousedown', function(e) { e.preventDefault(); });\n\n // handle text editing event\n this.$('#text-content').on('change input', function(e) {\n self.model.set('url_paste', $(e.target).val());\n self.model.set('file_size', $(e.target).val().length);\n });\n\n //\n // model events\n //\n this.model.on('change:percentage', function() {\n self._refreshPercentage();\n });\n this.model.on('change:status', function() {\n self._refreshStatus();\n });\n this.model.on('change:info', function() {\n self._refreshInfo();\n });\n this.model.on('change:genome', function() {\n self._refreshGenome();\n });\n this.model.on('change:extension', function() {\n self._refreshExtension();\n });\n this.model.on('change:file_size', function() {\n self._refreshFileSize();\n });\n this.model.on('remove', function() {\n self.remove();\n });\n this.app.collection.on('reset', function() {\n self.remove();\n });\n },\n\n // render\n render: function() {\n // read model\n var file_name = this.model.get('file_name');\n var file_size = this.model.get('file_size');\n var file_mode = this.model.get('file_mode');\n\n // update title\n this.$('#title').html(file_name);\n\n // update info\n this.$('#size').html(Utils.bytesToString (file_size));\n\n // remove mode class\n this.$('#mode')\n .removeClass()\n .addClass('upload-mode')\n .addClass('text-primary');\n\n // activate text field if file is new\n if (file_mode == 'new') {\n this.$('#text').css({\n 'width' : this.$el.width() - 16 + 'px',\n 'top' : this.$el.height() - 8 + 'px'\n }).show();\n this.$el.height(this.$el.height() - 8 + this.$('#text').height() + 16);\n this.$('#mode').addClass('fa fa-edit');\n }\n\n // file from local disk\n if (file_mode == 'local') {\n this.$('#mode').addClass('fa fa-laptop');\n }\n\n // file from ftp\n if (file_mode == 'ftp') {\n this.$('#mode').addClass('fa fa-folder-open-o');\n }\n },\n\n // remove\n remove: function() {\n // trigger remove event\n this.select_genome.remove();\n this.select_extension.remove();\n\n // call the base class remove method\n Backbone.View.prototype.remove.apply(this);\n },\n\n //\n // handle model events\n //\n\n // update extension\n _refreshExtension: function() {\n this.select_extension.value(this.model.get('extension'));\n },\n \n // update genome\n _refreshGenome: function() {\n this.select_genome.value(this.model.get('genome'));\n },\n\n // progress\n _refreshInfo: function() {\n // write error message\n var info = this.model.get('info');\n if (info) {\n this.$('#info').html('Failed: ' + info).show();\n } else {\n this.$('#info').hide();\n }\n },\n\n // progress\n _refreshPercentage : function() {\n var percentage = parseInt(this.model.get('percentage'));\n this.$('.progress-bar').css({ width : percentage + '%' });\n if (percentage != 100)\n this.$('#percentage').html(percentage + '%');\n else\n this.$('#percentage').html('Adding to history...');\n },\n\n // status\n _refreshStatus : function() {\n // identify new status\n var status = this.model.get('status');\n\n // identify symbol and reset classes\n this.$('#symbol').removeClass().addClass(this.status_classes[status]);\n\n // enable/disable model flag\n this.model.set('enabled', status == 'init');\n\n // enable/disable row fields\n var enabled = this.model.get('enabled');\n this.$('#text-content').attr('disabled', !enabled);\n if (enabled) {\n this.select_genome.enable();\n this.select_extension.enable();\n } else {\n this.select_genome.disable();\n this.select_extension.disable();\n }\n\n // success\n if (status == 'success') {\n this.$el.addClass('success');\n this.$('#percentage').html('100%');\n }\n\n // error\n if (status == 'error') {\n this.$el.addClass('danger');\n this.$('.progress').remove();\n }\n },\n\n // refresh size\n _refreshFileSize: function() {\n var count = this.model.get('file_size');\n this.$('#size').html(Utils.bytesToString (count));\n },\n\n //\n // handle ui events\n //\n\n // remove row\n _removeRow: function() {\n // get current status\n var status = this.model.get('status');\n\n // only remove from queue if not in processing line\n if (status == 'init' || status == 'success' || status == 'error') {\n this.app.collection.remove(this.model);\n }\n },\n\n // attach file info popup\n _showSettings : function() {\n // check if popover is visible\n if (!this.settings.visible) {\n // show popover\n this.settings.empty();\n this.settings.append((new UploadSettings(this)).$el);\n this.settings.show();\n } else {\n // hide popover\n this.settings.hide();\n }\n },\n\n // template\n _template: function(options) {\n return '' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    You can tell Galaxy to download data from web by entering URL in this box (one per line). You can also directly paste the contents of a file.
    ' +\n '';\n } else {\n return '';\n }\n }\n });\n\n /** Creates a hidden element input field used e.g. in the tool form */\n var Hidden = Backbone.View.extend({\n initialize : function(options) {\n this.options = options;\n this.setElement(this._template(this.options));\n if (this.options.value !== undefined) {\n this.value(this.options.value);\n }\n },\n value : function (new_val) {\n if (new_val !== undefined) {\n this.$('hidden').val(new_val);\n }\n return this.$('hidden').val();\n },\n _template: function(options) {\n var tmpl = '
    ';\n if (options.info) {\n tmpl += '
    ' + options.info + '
    ';\n }\n tmpl += '' +\n '
    ';\n return tmpl;\n }\n });\n\n return {\n Anchor : Anchor,\n Button : Buttons.ButtonDefault,\n ButtonIcon : Buttons.ButtonIcon,\n ButtonCheck : Buttons.ButtonCheck,\n ButtonMenu : Buttons.ButtonMenu,\n ButtonLink : Buttons.ButtonLink,\n Icon : Icon,\n Image : Image,\n Input : Input,\n Label : Label,\n Message : Message,\n Modal : Modal,\n RadioButton : Options.RadioButton,\n Checkbox : Options.Checkbox,\n Radio : Options.Radio,\n Searchbox : Searchbox,\n Select : Select,\n Hidden : Hidden,\n Slider : Slider,\n Drilldown : Drilldown\n }\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-misc.js\n ** module id = 18\n ** module chunks = 0\n **/","/**\n * This class creates/wraps a default html select field as backbone class.\n */\ndefine(['utils/utils', 'mvc/ui/ui-buttons'], function(Utils, Buttons) {\nvar View = Backbone.View.extend({\n // options\n optionsDefault: {\n id : Utils.uid(),\n cls : 'ui-select',\n error_text : 'No options available',\n empty_text : 'Nothing selected',\n visible : true,\n wait : false,\n multiple : false,\n searchable : true,\n optional : false\n },\n\n // initialize\n initialize: function(options) {\n // link this\n var self = this;\n\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n\n // create new element\n this.setElement(this._template(this.options));\n\n // link elements\n this.$select = this.$el.find('.select');\n this.$icon_dropdown = this.$el.find('.icon-dropdown');\n\n // allow regular multi-select field to be resized\n var minHeight = null;\n this.$('.icon-resize').on('mousedown', function(event) {\n var currentY = event.pageY;\n var currentHeight = self.$select.height();\n minHeight = minHeight || currentHeight;\n $('#dd-helper').show().on('mousemove', function(event) {\n self.$select.height(Math.max(currentHeight + (event.pageY - currentY), minHeight));\n }).on('mouseup mouseleave', function() {\n $('#dd-helper').hide().off();\n });\n });\n\n // multiple select fields have an additional button and other custom properties\n if (this.options.multiple) {\n // create select all button\n if (this.options.searchable) {\n this.all_button = new Buttons.ButtonCheck({\n onclick: function() {\n var new_value = [];\n if (self.all_button.value() !== 0) {\n new_value = self._availableOptions();\n }\n self.value(new_value);\n self.trigger('change');\n }\n });\n this.$el.prepend(this.all_button.$el);\n } else {\n this.$el.addClass('ui-select-multiple');\n }\n this.$select.prop('multiple', true);\n this.$icon_dropdown.remove();\n }\n\n // update initial options\n this.update(this.options.data);\n\n // set initial value\n if (this.options.value !== undefined) {\n this.value(this.options.value);\n }\n\n // show/hide\n if (!this.options.visible) {\n this.hide();\n }\n\n // wait\n if (this.options.wait) {\n this.wait();\n } else {\n this.show();\n }\n\n // add change event. fires only on user activity\n this.$select.on('change', function() {\n self.trigger('change');\n });\n\n // add change event. fires on trigger\n this.on('change', function() {\n self.options.onchange && self.options.onchange(this.value());\n });\n },\n\n /** Return/Set current selection\n */\n value: function (new_value) {\n // set new value\n if (new_value !== undefined) {\n if (new_value === null) {\n new_value = '__null__';\n }\n if (this.exists(new_value) || this.options.multiple) {\n this.$select.val(new_value);\n if (this.$select.select2) {\n this.$select.select2('val', new_value);\n }\n }\n }\n // get current value\n var current = this._getValue();\n if (this.all_button) {\n this.all_button.value($.isArray(current) && current.length || 0, this._size());\n }\n return current;\n },\n\n /** Return the first select option\n */\n first: function() {\n var options = this.$select.find('option').first();\n if (options.length > 0) {\n return options.val();\n } else {\n return null;\n }\n },\n\n /** Return the label/text of the current selection\n */\n text: function () {\n return this.$select.find('option:selected').text();\n },\n\n /** Show the select field\n */\n show: function() {\n this.unwait();\n this.$select.show();\n this.$el.show();\n },\n\n /** Hide the select field\n */\n hide: function() {\n this.$el.hide();\n },\n\n /** Show a spinner indicating that the select options are currently loaded\n */\n wait: function() {\n this.$icon_dropdown.removeClass();\n this.$icon_dropdown.addClass('icon-dropdown fa fa-spinner fa-spin');\n },\n\n /** Hide spinner indicating that the request has been completed\n */\n unwait: function() {\n this.$icon_dropdown.removeClass();\n this.$icon_dropdown.addClass('icon-dropdown fa fa-caret-down');\n },\n\n /** Returns true if the field is disabled\n */\n disabled: function() {\n return this.$select.is(':disabled');\n },\n\n /** Enable the select field\n */\n enable: function() {\n this.$select.prop('disabled', false);\n },\n\n /** Disable the select field\n */\n disable: function() {\n this.$select.prop('disabled', true);\n },\n\n /** Update all available options at once\n */\n update: function(options) {\n // backup current value\n var current = this._getValue();\n\n // remove all options\n this.$select.find('option').remove();\n\n // add optional field\n if (!this.options.multiple && this.options.optional) {\n this.$select.append(this._templateOption({value : '__null__', label : this.options.empty_text}));\n }\n\n // add new options\n for (var key in options) {\n this.$select.append(this._templateOption(options[key]));\n }\n\n // count remaining entries\n if (this._size() == 0) {\n // disable select field\n this.disable();\n\n // create placeholder\n this.$select.append(this._templateOption({value : '__null__', label : this.options.error_text}));\n } else {\n // enable select field\n this.enable();\n }\n\n // update to searchable field (in this case select2)\n if (this.options.searchable) {\n this.$select.select2('destroy');\n this.$select.select2({ closeOnSelect: !this.options.multiple });\n this.$( '.select2-container .select2-search input' ).off( 'blur' );\n }\n\n // set previous value\n this.value(current);\n\n // check if any value was set\n if (this._getValue() === null && !(this.options.multiple && this.options.optional)) {\n this.value(this.first());\n }\n },\n\n /** Set the custom onchange callback function\n */\n setOnChange: function(callback) {\n this.options.onchange = callback;\n },\n\n /** Check if a value is an existing option\n */\n exists: function(value) {\n return this.$select.find('option[value=\"' + value + '\"]').length > 0;\n },\n\n /** Get current value from dom\n */\n _getValue: function() {\n var val = this.$select.val();\n if (!Utils.validate(val)) {\n return null;\n }\n return val;\n },\n\n /** Returns all currently available options\n */\n _availableOptions: function() {\n var available = [];\n this.$select.find('option').each(function(i, e){\n available.push($(e).attr('value'));\n });\n return available;\n },\n\n /** Number of available options\n */\n _size: function() {\n return this.$select.find('option').length;\n },\n\n /** Template for select options\n */\n _templateOption: function(options) {\n return '';\n },\n\n /** Template for select view\n */\n _template: function(options) {\n return '
    ' +\n '' +\n '
    ' +\n '
    ';\n }\n});\n\nreturn {\n View : View\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-slider.js\n ** module id = 21\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-buttons'], function(Utils, Buttons) {\n\n/** Base class for options based ui elements **/\nvar Base = Backbone.View.extend({\n // initialize\n initialize: function(options) {\n // link this\n var self = this;\n\n // configure options\n this.options = Utils.merge(options, {\n visible : true,\n data : [],\n id : Utils.uid(),\n error_text : 'No options available.',\n wait_text : 'Please wait...',\n multiple : false\n });\n\n // create new element\n this.setElement('
    ');\n\n // create elements\n this.$message = $('
    ');\n this.$options = $(this._template(options));\n this.$menu = $('
    ');\n\n // append\n this.$el.append(this.$message);\n this.$el.append(this.$menu);\n this.$el.append(this.$options);\n\n // add select/unselect all button\n if (this.options.multiple) {\n this.all_button = new Buttons.ButtonCheck({\n onclick: function() {\n self.$('input').prop('checked', self.all_button.value() !== 0);\n self.trigger('change');\n }\n });\n this.$menu.append(this.all_button.$el);\n }\n\n // hide input field\n if (!this.options.visible) {\n this.$el.hide();\n }\n\n // initialize data\n this.update(this.options.data);\n\n // set initial value\n if (this.options.value !== undefined) {\n this.value(this.options.value);\n }\n\n // add change event. fires on trigger\n this.on('change', function() {\n this.options.onchange && this.options.onchange(this.value());\n });\n },\n\n /** Update options\n */\n update: function(options) {\n // backup current value\n var current = this._getValue();\n\n // remove all options\n this.$options.empty();\n\n // add new options using single option templates or full template\n if (this._templateOptions) {\n // rebuild options using full template\n this.$options.append(this._templateOptions(options));\n } else {\n // rebuild options using single option templates\n for (var key in options) {\n var $option = $(this._templateOption(options[key]));\n $option.addClass('ui-option');\n $option.tooltip({title: options[key].tooltip, placement: 'bottom'});\n this.$options.append($option);\n }\n }\n\n // add change events\n var self = this;\n this.$('input').on('change', function() {\n self.value(self._getValue());\n self.trigger('change');\n });\n\n // set previous value\n this.value(current);\n\n // data initialization has been completed\n this.unwait();\n },\n\n /** Return/Set current value\n */\n value: function (new_value) {\n // set new value if available\n if (new_value !== undefined) {\n // reset selection\n this.$('input').prop('checked', false);\n // set value\n if (new_value !== null) {\n // check if its an array\n if (!(new_value instanceof Array)) {\n new_value = [new_value];\n }\n // update to new selection\n for (var i in new_value) {\n this.$('input[value=\"' + new_value[i] + '\"]').first().prop('checked', true);\n }\n };\n }\n // get current value\n var current = this._getValue();\n if (this.all_button) {\n var value = current;\n if (!(value instanceof Array)) {\n value = 0;\n } else {\n value = value.length;\n }\n this.all_button.value(value, this._size());\n }\n return current;\n },\n\n /** Check if selected value exists (or any if multiple)\n */\n exists: function(value) {\n if (value !== undefined) {\n if (!(value instanceof Array)) {\n value = [value];\n }\n for (var i in value) {\n if (this.$('input[value=\"' + value[i] + '\"]').length > 0) {\n return true;\n }\n }\n }\n return false;\n },\n\n /** Return first available option\n */\n first: function() {\n var options = this.$('input').first();\n if (options.length > 0) {\n return options.val();\n } else {\n return null;\n }\n },\n\n /** Wait message during request processing\n */\n wait: function() {\n if (this._size() == 0) {\n this._messageShow(this.options.wait_text, 'info');\n this.$options.hide();\n this.$menu.hide();\n }\n },\n\n /** Hide wait message\n */\n unwait: function() {\n var total = this._size();\n if (total == 0) {\n this._messageShow(this.options.error_text, 'danger');\n this.$options.hide();\n this.$menu.hide();\n } else {\n this._messageHide();\n this.$options.css('display', 'inline-block');\n this.$menu.show();\n }\n },\n\n /** Return current selection\n */\n _getValue: function() {\n // track values in array\n var selected = [];\n this.$(':checked').each(function() {\n selected.push($(this).val());\n });\n\n // get selected elements\n if (!Utils.validate(selected)) {\n return null;\n }\n\n // return multiple or single value\n if (this.options.multiple) {\n return selected;\n } else {\n return selected[0];\n }\n },\n\n /** Returns the number of options\n */\n _size: function() {\n return this.$('.ui-option').length;\n },\n\n /** Show message instead if options\n */\n _messageShow: function(text, status) {\n this.$message.show();\n this.$message.removeClass();\n this.$message.addClass('ui-message alert alert-' + status);\n this.$message.html(text);\n },\n\n /** Hide message\n */\n _messageHide: function() {\n this.$message.hide();\n },\n\n /** Main template function\n */\n _template: function() {\n return '
    ';\n }\n});\n\n/** Iconized **/\nvar BaseIcons = Base.extend({\n _templateOption: function(pair) {\n var id = Utils.uid();\n return '
    ' +\n '' +\n '' +\n '
    ';\n }\n});\n\n/** Radio button field **/\nvar Radio = {};\nRadio.View = BaseIcons.extend({\n initialize: function(options) {\n options.type = 'radio';\n BaseIcons.prototype.initialize.call(this, options);\n }\n});\n\n/** Checkbox options field **/\nvar Checkbox = {};\nCheckbox.View = BaseIcons.extend({\n initialize: function(options) {\n options.multiple = true;\n options.type = 'checkbox';\n BaseIcons.prototype.initialize.call(this, options);\n }\n});\n\n/** Radio button options field styled as classic buttons **/\nvar RadioButton = {};\nRadioButton.View = Base.extend({\n // initialize\n initialize: function(options) {\n Base.prototype.initialize.call(this, options);\n },\n\n /** Return/Set current value\n */\n value: function (new_value) {\n // set new value\n if (new_value !== undefined) {\n this.$('input').prop('checked', false);\n this.$('label').removeClass('active');\n this.$('[value=\"' + new_value + '\"]').prop('checked', true).closest('label').addClass('active');\n }\n\n // get and return value\n return this._getValue();\n },\n\n /** Template for a single option\n */\n _templateOption: function(pair) {\n var cls = 'fa ' + pair.icon;\n if (!pair.label) {\n cls += ' no-padding';\n }\n var tmpl = '';\n return tmpl;\n },\n\n /** Main template function\n */\n _template: function() {\n return '
    ';\n }\n});\n\nreturn {\n Base : Base,\n BaseIcons : BaseIcons,\n Radio : Radio,\n RadioButton : RadioButton,\n Checkbox : Checkbox\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-options.js\n ** module id = 22\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-options'], function(Utils, Options) {\n\n/**\n * This class creates/wraps a drill down element.\n */\nvar View = Options.BaseIcons.extend({\n // initialize\n initialize: function(options) {\n options.type = options.display || 'checkbox';\n options.multiple = (options.display == 'checkbox');\n Options.BaseIcons.prototype.initialize.call(this, options);\n this.initial = true;\n },\n\n // set expand states for initial value\n value: function (new_val) {\n var val = Options.BaseIcons.prototype.value.call(this, new_val);\n if (this.initial && val !== null && this.header_index) {\n this.initial = false;\n var values = val;\n if (!$.isArray(values)) {\n values = [values];\n }\n for (var i in values) {\n var list = this.header_index[values[i]];\n for (var j in list) {\n this._setState(list[j], true);\n }\n }\n }\n return val;\n },\n\n /** Expand/collapse a sub group\n */\n _setState: function (header_id, is_expanded) {\n var $button = this.$('.button-' + header_id);\n var $subgroup = this.$('.subgroup-' + header_id);\n $button.data('is_expanded', is_expanded);\n if (is_expanded) {\n $subgroup.fadeIn('fast')\n $button.removeClass('toggle-expand');\n $button.addClass('toggle');\n } else {\n $subgroup.hide();\n $button.removeClass('toggle');\n $button.addClass('toggle-expand');\n }\n },\n\n /** Template to create options tree\n */\n _templateOptions: function(options) {\n // link this\n var self = this;\n\n // link data\n this.header_index = {};\n \n // attach event handler\n function attach($el, header_id) {\n var $button = $el.find('.button-' + header_id);\n $button.on('click', function() {\n self._setState(header_id, !$button.data('is_expanded'));\n });\n }\n\n // recursive function which iterates through options\n function iterate ($tmpl, options, header) {\n header = header || [];\n for (i in options) {\n // current option level in hierarchy\n var level = options[i];\n\n // check for options\n var has_options = level.options.length > 0;\n\n // copy current header list\n var new_header = header.slice(0);\n\n // keep track of header list\n self.header_index[level.value] = new_header.slice(0);\n\n // build template\n var $group = $('
    ');\n if (has_options) {\n // create button and subgroup\n var header_id = Utils.uid();\n var $button = $('');\n var $subgroup = $('
    ');\n\n // keep track of button and subgroup\n new_header.push(header_id);\n\n // create expandable header section\n var $buttongroup = $('
    ');\n $buttongroup.append($button);\n $buttongroup.append(self._templateOption({\n label: level.name,\n value: level.value\n }));\n $group.append($buttongroup);\n iterate($subgroup, level.options, new_header);\n $group.append($subgroup);\n\n // attach expand/collapse events\n attach($group, header_id);\n } else {\n // append child options\n $group.append(self._templateOption({\n label: level.name,\n value: level.value\n }));\n }\n $tmpl.append($group);\n }\n }\n\n // iterate through options and create dom\n var $tmpl = $('
    ');\n iterate($tmpl, options);\n\n // return template\n return $tmpl;\n },\n\n /** Template for drill down view\n */\n _template: function(options) {\n return '
    ';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-drilldown.js\n ** module id = 23\n ** module chunks = 0\n **/","/**\n This is the base class of the tool form plugin. This class is e.g. inherited by the regular and the workflow tool form.\n*/\ndefine(['utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view',\n 'mvc/tool/tools-template', 'mvc/citation/citation-model', 'mvc/citation/citation-view'],\n function(Utils, Deferred, Ui, Form, ToolTemplate, CitationModel, CitationView) {\n\n // create form view\n return Backbone.View.extend({\n // initialize\n initialize: function(options) {\n this.options = Utils.merge(options, {});\n this.setElement('
    ');\n\n // create deferred processing queue handler\n // this handler reduces the number of requests to the api by filtering redundant requests\n this.deferred = new Deferred();\n\n // create form\n if (options.inputs) {\n this._buildForm(options);\n } else {\n var self = this;\n this.deferred.execute(function(process) {\n self._buildModel(process, options, true);\n });\n }\n },\n\n /** Wait for deferred build processes before removal */\n remove: function() {\n var self = this;\n this.$el.hide();\n this.deferred.execute(function(){\n Backbone.View.prototype.remove.call(self);\n Galaxy.emit.debug('tools-form-base::remove()', 'Destroy view.');\n });\n },\n\n /** Build form */\n _buildForm: function(options) {\n // link this\n var self = this;\n\n // merge form options\n this.options = Utils.merge(options, this.options);\n this.options = Utils.merge({\n icon : 'fa-wrench',\n title : '' + options.name + ' ' + options.description + ' (Galaxy Tool Version ' + options.version + ')',\n operations : this._operations(),\n onchange : function() {\n self.deferred.reset();\n self.deferred.execute(function(process) {\n self._updateModel(process);\n });\n }\n }, this.options);\n\n // allow option customization\n this.options.customize && this.options.customize( this.options );\n\n // create form\n this.form = new Form(this.options);\n\n // create footer\n this._footer();\n\n // create element\n this.$el.empty();\n this.$el.append(this.form.$el);\n },\n\n /** Builds a new model through api call and recreates the entire form\n */\n _buildModel: function(process, options, hide_message) {\n var self = this;\n this.options.id = options.id;\n this.options.version = options.version;\n\n // build request url\n var build_url = '';\n var build_data = {};\n if ( options.job_id ) {\n build_url = Galaxy.root + 'api/jobs/' + options.job_id + '/build_for_rerun';\n } else {\n build_url = Galaxy.root + 'api/tools/' + options.id + '/build';\n if ( Galaxy.params && Galaxy.params.tool_id == options.id ) {\n build_data = $.extend( {}, Galaxy.params );\n options.version && ( build_data[ 'tool_version' ] = options.version );\n }\n }\n\n // get initial model\n Utils.request({\n type : 'GET',\n url : build_url,\n data : build_data,\n success : function(new_model) {\n self._buildForm(new_model['tool_model'] || new_model);\n !hide_message && self.form.message.update({\n status : 'success',\n message : 'Now you are using \\'' + self.options.name + '\\' version ' + self.options.version + '.',\n persistent : false\n });\n Galaxy.emit.debug('tools-form-base::initialize()', 'Initial tool model ready.', new_model);\n process.resolve();\n\n },\n error : function(response) {\n var error_message = ( response && response.err_msg ) || 'Uncaught error.';\n if ( self.$el.is(':empty') ) {\n self.$el.prepend((new Ui.Message({\n message : error_message,\n status : 'danger',\n persistent : true,\n large : true\n })).$el);\n } else {\n Galaxy.modal.show({\n title : 'Tool request failed',\n body : error_message,\n buttons : {\n 'Close' : function() {\n Galaxy.modal.hide();\n }\n }\n });\n }\n Galaxy.emit.debug('tools-form::initialize()', 'Initial tool model request failed.', response);\n process.reject();\n }\n });\n },\n\n /** Request a new model for an already created tool form and updates the form inputs\n */\n _updateModel: function(process) {\n // model url for request\n var model_url = this.options.update_url || Galaxy.root + 'api/tools/' + this.options.id + '/build';\n\n // link this\n var self = this;\n\n // create the request dictionary\n var form = this.form;\n\n // create the request dictionary\n var current_state = {\n tool_id : this.options.id,\n tool_version : this.options.version,\n inputs : $.extend(true, {}, self.form.data.create())\n }\n\n // set wait mode\n form.wait(true);\n\n // log tool state\n Galaxy.emit.debug('tools-form-base::_updateModel()', 'Sending current state.', current_state);\n\n // post job\n Utils.request({\n type : 'POST',\n url : model_url,\n data : current_state,\n success : function(new_model) {\n self.form.update(new_model['tool_model'] || new_model);\n self.options.update && self.options.update(new_model);\n form.wait(false);\n Galaxy.emit.debug('tools-form-base::_updateModel()', 'Received new model.', new_model);\n process.resolve();\n },\n error : function(response) {\n Galaxy.emit.debug('tools-form-base::_updateModel()', 'Refresh request failed.', response);\n process.reject();\n }\n });\n },\n\n // create tool operation menu\n _operations: function() {\n // link this\n var self = this;\n var options = this.options;\n\n // button for version selection\n var versions_button = new Ui.ButtonMenu({\n icon : 'fa-cubes',\n title : (!options.narrow && 'Versions') || null,\n tooltip : 'Select another tool version'\n });\n if (!options.is_workflow && options.versions && options.versions.length > 1) {\n for (var i in options.versions) {\n var version = options.versions[i];\n if (version != options.version) {\n versions_button.addMenu({\n title : 'Switch to ' + version,\n version : version,\n icon : 'fa-cube',\n onclick : function() {\n // here we update the tool version (some tools encode the version also in the id)\n var id = options.id.replace(options.version, this.version);\n var version = this.version;\n // queue model request\n self.deferred.reset();\n self.deferred.execute(function(process) {\n self._buildModel(process, {id: id, version: version})\n });\n }\n });\n }\n }\n } else {\n versions_button.$el.hide();\n }\n\n // button menu\n var menu_button = new Ui.ButtonMenu({\n icon : 'fa-caret-down',\n title : (!options.narrow && 'Options') || null,\n tooltip : 'View available options'\n });\n\n // configure button selection\n if(options.biostar_url) {\n // add question option\n menu_button.addMenu({\n icon : 'fa-question-circle',\n title : 'Question?',\n tooltip : 'Ask a question about this tool (Biostar)',\n onclick : function() {\n window.open(options.biostar_url + '/p/new/post/');\n }\n });\n\n // create search button\n menu_button.addMenu({\n icon : 'fa-search',\n title : 'Search',\n tooltip : 'Search help for this tool (Biostar)',\n onclick : function() {\n window.open(options.biostar_url + '/local/search/page/?q=' + options.name);\n }\n });\n };\n\n // create share button\n menu_button.addMenu({\n icon : 'fa-share',\n title : 'Share',\n tooltip : 'Share this tool',\n onclick : function() {\n prompt('Copy to clipboard: Ctrl+C, Enter', window.location.origin + Galaxy.root + 'root?tool_id=' + options.id);\n }\n });\n\n // add admin operations\n if (Galaxy.user && Galaxy.user.get('is_admin')) {\n // create download button\n menu_button.addMenu({\n icon : 'fa-download',\n title : 'Download',\n tooltip : 'Download this tool',\n onclick : function() {\n window.location.href = Galaxy.root + 'api/tools/' + options.id + '/download';\n }\n });\n }\n\n // button for version selection\n if (options.requirements && options.requirements.length > 0) {\n menu_button.addMenu({\n icon : 'fa-info-circle',\n title : 'Requirements',\n tooltip : 'Display tool requirements',\n onclick : function() {\n if (!this.visible) {\n this.visible = true;\n self.form.message.update({\n persistent : true,\n message : ToolTemplate.requirements(options),\n status : 'info'\n });\n } else {\n this.visible = false;\n self.form.message.update({\n message : ''\n });\n }\n }\n });\n }\n\n // add toolshed url\n if (options.sharable_url) {\n menu_button.addMenu({\n icon : 'fa-external-link',\n title : 'See in Tool Shed',\n tooltip : 'Access the repository',\n onclick : function() {\n window.open(options.sharable_url);\n }\n });\n }\n\n // return operations\n return {\n menu : menu_button,\n versions : versions_button\n }\n },\n\n // create footer\n _footer: function() {\n // link options\n var options = this.options;\n\n // append help\n if (options.help != '') {\n this.form.$el.append(ToolTemplate.help(options));\n }\n\n // create and append tool citations\n if (options.citations) {\n var $citations = $('
    ');\n var citations = new CitationModel.ToolCitationCollection();\n citations.tool_id = options.id;\n var citation_list_view = new CitationView.CitationListView({ el: $citations, collection: citations } );\n citation_list_view.render();\n citations.fetch();\n this.form.$el.append($citations);\n }\n }\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/tool/tools-form-base.js\n ** module id = 24\n ** module chunks = 0\n **/","/**\n * This class defines a queue to ensure that multiple deferred callbacks are executed sequentially.\n */\ndefine(['utils/utils'], function( Utils ) {\nreturn Backbone.Model.extend({\n initialize: function(){\n this.active = {};\n this.last = null;\n },\n\n /** Adds a callback to the queue. Upon execution a deferred object is parsed to the callback i.e. callback( deferred ).\n * If the callback does not take any arguments, the deferred is resolved instantly.\n */\n execute: function( callback ) {\n var self = this;\n var id = Utils.uid();\n var has_deferred = callback.length > 0;\n\n // register process\n this.active[ id ] = true;\n\n // deferred process\n var process = $.Deferred();\n process.promise().always(function() {\n delete self.active[ id ];\n has_deferred && Galaxy.emit.debug( 'deferred::execute()', this.state().charAt(0).toUpperCase() + this.state().slice(1) + ' ' + id );\n });\n\n // deferred queue\n $.when( this.last ).always(function() {\n if ( self.active[ id ] ) {\n has_deferred && Galaxy.emit.debug( 'deferred::execute()', 'Running ' + id );\n callback( process );\n !has_deferred && process.resolve();\n } else {\n process.reject();\n }\n });\n this.last = process.promise();\n },\n\n /** Resets the promise queue. All currently queued but unexecuted callbacks/promises will be rejected.\n */\n reset: function() {\n Galaxy.emit.debug('deferred::execute()', 'Reset');\n for ( var i in this.active ) {\n this.active[ i ] = false;\n }\n },\n\n /** Returns true if all processes are done.\n */\n ready: function() {\n return $.isEmptyObject( this.active );\n }\n});\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/utils/deferred.js\n ** module id = 25\n ** module chunks = 0\n **/","/**\n This is the main class of the form plugin. It is referenced as 'app' in all lower level modules.\n*/\ndefine(['utils/utils', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc',\n 'mvc/form/form-section', 'mvc/form/form-data'],\n function(Utils, Portlet, Ui, FormSection, FormData) {\n\n // create form view\n return Backbone.View.extend({\n // initialize\n initialize: function(options) {\n // options\n this.optionsDefault = {\n // uses workflow editor mode i.e. text instead of select fields\n is_workflow : false,\n // shows errors on start\n initial_errors : false,\n // portlet style\n cls : 'ui-portlet-limited'\n };\n\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n\n // log options\n Galaxy.emit.debug('form-view::initialize()', 'Ready to build form.', this.options);\n\n // link galaxy modal or create one\n var galaxy = parent.Galaxy;\n if (galaxy && galaxy.modal) {\n this.modal = galaxy.modal;\n } else {\n this.modal = new Ui.Modal.View();\n }\n\n // set element\n this.setElement('
    ');\n\n // build this form\n this._build();\n },\n\n /** Update available options */\n update: function(new_model){\n var self = this;\n this.data.matchModel(new_model, function(input_id, node) {\n var input = self.input_list[input_id];\n if (input && input.options) {\n if (!_.isEqual(input.options, node.options)) {\n // backup new options\n input.options = node.options;\n\n // get/update field\n var field = self.field_list[input_id];\n if (field.update) {\n var new_options = [];\n if ((['data', 'data_collection', 'drill_down']).indexOf(input.type) != -1) {\n new_options = input.options;\n } else {\n for (var i in node.options) {\n var opt = node.options[i];\n if (opt.length > 2) {\n new_options.push({\n 'label': opt[0],\n 'value': opt[1]\n });\n }\n }\n }\n field.update(new_options);\n field.trigger('change');\n Galaxy.emit.debug('form-view::update()', 'Updating options for ' + input_id);\n }\n }\n }\n });\n },\n\n /** Set form into wait mode */\n wait: function(active) {\n for (var i in this.input_list) {\n var field = this.field_list[i];\n var input = this.input_list[i];\n if (input.is_dynamic && field.wait && field.unwait) {\n if (active) {\n field.wait();\n } else {\n field.unwait();\n }\n }\n }\n },\n\n /** Highlight and scroll to input element (currently only used for error notifications)\n */\n highlight: function (input_id, message, silent) {\n // get input field\n var input_element = this.element_list[input_id];\n\n // check input element\n if (input_element) {\n // mark error\n input_element.error(message || 'Please verify this parameter.');\n\n // trigger expand event for parent containers\n this.trigger('expand', input_id);\n\n // scroll to first input element\n if (!silent) {\n if (self==top) {\n var $panel = this.$el.parents().filter(function() {\n return $(this).css('overflow') == 'auto';\n }).first();\n $panel.animate({ scrollTop : $panel.scrollTop() + input_element.$el.offset().top - 50 }, 500);\n } else {\n $('html, body').animate({ scrollTop : input_element.$el.offset().top - 20 }, 500);\n }\n }\n }\n },\n\n /** Highlights errors\n */\n errors: function(options) {\n // hide previous error statements\n this.trigger('reset');\n\n // highlight all errors\n if (options && options.errors) {\n var error_messages = this.data.matchResponse(options.errors);\n for (var input_id in this.element_list) {\n var input = this.element_list[input_id];\n if (error_messages[input_id]) {\n this.highlight(input_id, error_messages[input_id], true);\n }\n }\n }\n },\n\n /** Main tool form build function. This function is called once a new model is available.\n */\n _build: function() {\n // link this\n var self = this;\n\n // reset events\n this.off('change');\n this.off('reset');\n\n // reset field list, which contains the input field elements\n this.field_list = {};\n\n // reset sequential input definition list, which contains the input definitions as provided from the api\n this.input_list = {};\n\n // reset input element list, which contains the dom elements of each input element (includes also the input field)\n this.element_list = {};\n\n // creates a json data structure from the input form\n this.data = new FormData(this);\n\n // create ui elements\n this._renderForm();\n\n // refresh data\n this.data.create();\n\n // show errors on startup\n if (this.options.initial_errors) {\n this.errors(this.options);\n }\n\n // add listener which triggers on checksum change\n var current_check = this.data.checksum();\n this.on('change', function() {\n var new_check = self.data.checksum();\n if (new_check != current_check) {\n current_check = new_check;\n self.options.onchange && self.options.onchange();\n }\n });\n\n // add reset listener\n this.on('reset', function() {\n for (var i in this.element_list) {\n this.element_list[i].reset();\n }\n });\n },\n\n /** Renders the UI elements required for the form\n */\n _renderForm: function() {\n // create message view\n this.message = new Ui.Message();\n\n // create tool form section\n this.section = new FormSection.View(this, {\n inputs : this.options.inputs\n });\n\n // remove tooltips\n $( '.tooltip' ).remove();\n\n // create portlet\n this.portlet = new Portlet.View({\n icon : 'fa-wrench',\n title : this.options.title,\n cls : this.options.cls,\n operations : this.options.operations,\n buttons : this.options.buttons\n });\n\n // append message\n this.portlet.append(this.message.$el.addClass('ui-margin-top'));\n\n // append tool section\n this.portlet.append(this.section.$el);\n\n // start form\n this.$el.empty();\n this.$el.append(this.portlet.$el);\n\n // show message if available in model\n if (this.options.message) {\n this.message.update({\n persistent : true,\n status : 'warning',\n message : this.options.message\n });\n }\n\n // log\n Galaxy.emit.debug('form-view::initialize()', 'Completed');\n }\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-view.js\n ** module id = 26\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils'], function(Utils) {\n\n// portlet view class\nvar View = Backbone.View.extend({\n // visibility\n visible: false,\n \n // defaults options\n optionsDefault: {\n id : Utils.uid(),\n title : '',\n icon : '',\n buttons : null,\n body : null,\n scrollable : true,\n nopadding : false,\n operations : null,\n placement : 'bottom',\n cls : 'ui-portlet',\n operations_flt : 'right'\n },\n \n // elements\n $title : null,\n $content : null,\n $buttons : null,\n $operations : null,\n $header : null,\n \n // initialize\n initialize : function(options) {\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n \n // create new element\n this.setElement(this._template(this.options));\n \n // link content\n this.$content = this.$el.find('.content');\n \n // link title\n this.$title = this.$el.find('.portlet-title-text');\n \n // link header\n this.$header = this.$el.find('.portlet-header');\n \n // link portlet content (wraps 'content')\n var $portlet_content = this.$el.find('.portlet-content');\n \n // set content padding\n if (this.options.nopadding) {\n $portlet_content.css('padding', '0px');\n this.$content.css('padding', '0px');\n }\n \n // append buttons\n this.$buttons = $(this.el).find('.buttons');\n if (this.options.buttons) {\n // link functions\n var self = this;\n $.each(this.options.buttons, function(name, item) {\n item.$el.prop('id', name);\n self.$buttons.append(item.$el);\n });\n } else {\n this.$buttons.remove();\n }\n \n // append operations\n this.$operations = $(this.el).find('.portlet-operations');\n if (this.options.operations) {\n // link functions\n var self = this;\n $.each(this.options.operations, function(name, item) {\n item.$el.prop('id', name);\n self.$operations.append(item.$el);\n });\n }\n \n // add body\n if(this.options.body) {\n this.append(this.options.body);\n }\n },\n \n // append\n append: function($el) {\n this.$content.append($el);\n },\n\n // remove all content\n empty: function() {\n this.$content.empty();\n },\n\n // content\n content: function() {\n return this.$content;\n },\n \n // show\n show: function(){\n // fade in\n this.$el.fadeIn('fast');\n \n // set flag\n this.visible = true;\n },\n \n // hide\n hide: function(){\n // fade out\n this.$el.fadeOut('fast');\n \n // set flag\n this.visible = false;\n },\n\n // enable buttons\n enableButton: function(id) {\n this.$buttons.find('#' + id).prop('disabled', false);\n },\n\n // disable buttons\n disableButton: function(id) {\n this.$buttons.find('#' + id).prop('disabled', true);\n },\n \n // hide operation\n hideOperation: function(id) {\n this.$operations.find('#' + id).hide();\n },\n\n // show operation\n showOperation: function(id) {\n this.$operations.find('#' + id).show();\n },\n \n // set operation\n setOperation: function(id, callback) {\n var $el = this.$operations.find('#' + id);\n $el.off('click');\n $el.on('click', callback);\n },\n \n // title\n title: function(new_title) {\n var $el = this.$title;\n if (new_title) {\n $el.html(new_title);\n }\n return $el.html();\n },\n\n // disable content access\n disable: function() {\n this.$('.portlet-backdrop').show();\n },\n\n // enable content access\n enable: function() {\n this.$('.portlet-backdrop').hide();\n },\n\n // fill regular modal template\n _template: function(options) {\n var tmpl = '
    ';\n \n if (options.title) {\n tmpl += '
    ' +\n '
    ' +\n '
    ';\n \n if (options.icon)\n tmpl += ' ';\n \n tmpl += '' + options.title + '' +\n '
    ' +\n '
    ';\n }\n tmpl += '
    ';\n \n if (options.placement == 'top') {\n tmpl += '
    ';\n }\n \n tmpl += '
    ';\n \n if (options.placement == 'bottom') {\n tmpl += '
    ';\n }\n \n tmpl += '
    ' +\n '
    ' +\n '
    ';\n return tmpl;\n }\n});\n\nreturn {\n View : View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-portlet.js\n ** module id = 27\n ** module chunks = 0\n **/","/**\n This class creates a form section and populates it with input elements. It also handles repeat blocks and conditionals by recursively creating new sub sections.\n*/\ndefine(['utils/utils',\n 'mvc/ui/ui-table',\n 'mvc/ui/ui-misc',\n 'mvc/ui/ui-portlet',\n 'mvc/form/form-repeat',\n 'mvc/form/form-input',\n 'mvc/form/form-parameters'],\n function(Utils, Table, Ui, Portlet, Repeat, InputElement, Parameters) {\n\n // create form view\n var View = Backbone.View.extend({\n // initialize\n initialize: function(app, options) {\n // link app\n this.app = app;\n\n // link inputs\n this.inputs = options.inputs;\n\n // fix table style\n options.cls = 'ui-table-plain';\n\n // add table class for tr tag\n // this assist in transforming the form into a json structure\n options.cls_tr = 'section-row';\n\n // create table\n this.table = new Table.View(options);\n\n // create parameter handler\n this.parameters = new Parameters(app, options);\n\n // configure portlet and form table\n this.setElement(this.table.$el);\n\n // render section\n this.render();\n },\n\n /** Render section view\n */\n render: function() {\n // reset table\n this.table.delAll();\n\n // load settings elements into table\n for (var i in this.inputs) {\n this.add(this.inputs[i]);\n }\n },\n\n /** Add a new input element\n */\n add: function(input) {\n // link this\n var self = this;\n\n // clone definition\n var input_def = jQuery.extend(true, {}, input);\n\n // create unique id\n input_def.id = input.id = Utils.uid();\n\n // add to sequential list of inputs\n this.app.input_list[input_def.id] = input_def;\n\n // identify field type\n var type = input_def.type;\n switch(type) {\n // conditional field\n case 'conditional':\n this._addConditional(input_def);\n break;\n // repeat block\n case 'repeat':\n this._addRepeat(input_def);\n break;\n // customized section\n case 'section':\n this._addSection(input_def);\n break;\n // default single element row\n default:\n this._addRow(input_def);\n }\n },\n\n /** Add a conditional block\n */\n _addConditional: function(input_def) {\n // link this\n var self = this;\n\n // copy identifier\n input_def.test_param.id = input_def.id;\n\n // build test parameter\n var field = this._addRow(input_def.test_param);\n\n // set onchange event for test parameter\n field.options.onchange = function(value) {\n // identify the selected case\n var selectedCase = self.app.data.matchCase(input_def, value);\n\n // check value in order to hide/show options\n for (var i in input_def.cases) {\n // get case\n var case_def = input_def.cases[i];\n\n // identify subsection name\n var section_id = input_def.id + '-section-' + i;\n\n // identify row\n var section_row = self.table.get(section_id);\n\n // check if non-hidden elements exist\n var nonhidden = false;\n for (var j in case_def.inputs) {\n if (!case_def.inputs[j].hidden) {\n nonhidden = true;\n break;\n }\n }\n\n // show/hide sub form\n if (i == selectedCase && nonhidden) {\n section_row.fadeIn('fast');\n } else {\n section_row.hide();\n }\n }\n\n // refresh form inputs\n self.app.trigger('change');\n };\n\n // add conditional sub sections\n for (var i in input_def.cases) {\n // create id tag\n var sub_section_id = input_def.id + '-section-' + i;\n\n // create sub section\n var sub_section = new View(this.app, {\n inputs : input_def.cases[i].inputs\n });\n\n // displays as grouped subsection\n sub_section.$el.addClass('ui-table-section');\n\n // create table row\n this.table.add(sub_section.$el);\n\n // append to table\n this.table.append(sub_section_id);\n }\n\n // trigger refresh on conditional input field after all input elements have been created\n field.trigger('change');\n },\n\n /** Add a repeat block\n */\n _addRepeat: function(input_def) {\n // link this\n var self = this;\n\n // block index\n var block_index = 0;\n\n // create repeat block element\n var repeat = new Repeat.View({\n title : input_def.title,\n title_new : input_def.title,\n min : input_def.min,\n max : input_def.max,\n onnew : function() {\n // create\n create(input_def.inputs);\n\n // trigger refresh\n self.app.trigger('change');\n }\n });\n\n // helper function to create new repeat blocks\n function create (inputs) {\n // create id tag\n var sub_section_id = input_def.id + '-section-' + (block_index++);\n\n // create sub section\n var sub_section = new View(self.app, {\n inputs : inputs\n });\n\n // add tab\n repeat.add({\n id : sub_section_id,\n $el : sub_section.$el,\n ondel : function() {\n // delete repeat block\n repeat.del(sub_section_id);\n\n // trigger refresh\n self.app.trigger('change');\n }\n });\n }\n\n //\n // add parsed/minimum number of repeat blocks\n //\n var n_min = input_def.min;\n var n_cache = _.size(input_def.cache);\n for (var i = 0; i < Math.max(n_cache, n_min); i++) {\n var inputs = null;\n if (i < n_cache) {\n inputs = input_def.cache[i];\n } else {\n inputs = input_def.inputs;\n }\n\n // create repeat block\n create(inputs);\n }\n\n // create input field wrapper\n var input_element = new InputElement(this.app, {\n label : input_def.title,\n help : input_def.help,\n field : repeat\n });\n\n // create table row\n this.table.add(input_element.$el);\n\n // append row to table\n this.table.append(input_def.id);\n },\n\n /** Add a customized section\n */\n _addSection: function(input_def) {\n // link this\n var self = this;\n\n // create sub section\n var sub_section = new View(self.app, {\n inputs : input_def.inputs\n });\n\n // delete button\n var button_visible = new Ui.ButtonIcon({\n icon : 'fa-eye-slash',\n tooltip : 'Show/hide section',\n cls : 'ui-button-icon-plain'\n });\n\n // create portlet for sub section\n var portlet = new Portlet.View({\n title : input_def.title,\n cls : 'ui-portlet-section',\n operations : {\n button_visible: button_visible\n }\n });\n portlet.append(sub_section.$el);\n portlet.append($('
    ').addClass('ui-table-form-info').html(input_def.help));\n\n // add event handler visibility button\n var visible = false;\n portlet.$content.hide();\n portlet.$header.css('cursor', 'pointer');\n portlet.$header.on('click', function() {\n if (visible) {\n visible = false;\n portlet.$content.hide();\n button_visible.setIcon('fa-eye-slash');\n } else {\n visible = true;\n portlet.$content.fadeIn('fast');\n button_visible.setIcon('fa-eye');\n }\n });\n\n // add expansion event handler\n this.app.on('expand', function(input_id) {\n (portlet.$el.find('#' + input_id).length > 0) && !visible && portlet.$header.trigger('click');\n });\n\n // show sub section if requested\n if (input_def.expanded) {\n portlet.$header.trigger('click');\n }\n\n // create table row\n this.table.add(portlet.$el);\n\n // append row to table\n this.table.append(input_def.id);\n },\n\n /** Add a single input field element\n */\n _addRow: function(input_def) {\n // get id\n var id = input_def.id;\n\n // create input field\n var field = this.parameters.create(input_def);\n\n // add to field list\n this.app.field_list[id] = field;\n\n // create input field wrapper\n var input_element = new InputElement(this.app, {\n name : input_def.name,\n label : input_def.label || input_def.name,\n value : input_def.value,\n default_value : input_def.default_value,\n collapsible : input_def.collapsible,\n collapsible_value : input_def.collapsible_value,\n help : input_def.help,\n argument : input_def.argument,\n field : field\n });\n\n // add to element list\n this.app.element_list[id] = input_element;\n\n // create table row\n this.table.add(input_element.$el);\n\n // append to table\n this.table.append(id);\n\n // hide row if neccessary\n if (input_def.hidden) {\n this.table.get(id).hide();\n }\n\n // return created field\n return field;\n }\n });\n\n return {\n View: View\n };\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-section.js\n ** module id = 28\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils'], function(Utils) {\n\n/**\n * This class creates a ui table element.\n */\nvar View = Backbone.View.extend({\n // current row\n row: null,\n \n // count rows\n row_count: 0,\n \n // defaults options\n optionsDefault: {\n content : 'No content available.',\n onchange : null,\n ondblclick : null,\n onconfirm : null,\n cls : 'ui-table',\n cls_tr : ''\n },\n \n // events\n events : {\n 'click' : '_onclick',\n 'dblclick' : '_ondblclick'\n },\n \n // initialize\n initialize : function(options) {\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n \n // create new element\n var $el = $(this._template(this.options));\n \n // link sub-elements\n this.$thead = $el.find('thead');\n this.$tbody = $el.find('tbody');\n this.$tmessage = $el.find('tmessage');\n \n // set element\n this.setElement($el);\n \n // initialize row\n this.row = this._row();\n },\n \n // add header cell\n addHeader: function($el) {\n var wrapper = $('');\n wrapper.append($el);\n this.row.append(wrapper);\n },\n \n // header\n appendHeader: function() {\n // append header row\n this.$thead.append(this.row);\n\n // row\n this.row = $('');\n },\n \n // add row cell\n add: function($el, width, align) {\n var wrapper = $('');\n if (width) {\n wrapper.css('width', width);\n }\n if (align) {\n wrapper.css('text-align', align);\n }\n wrapper.append($el);\n this.row.append(wrapper);\n },\n \n // append\n append: function(id, fade) {\n this._commit(id, fade, false);\n },\n \n // prepend\n prepend: function(id, fade) {\n this._commit(id, fade, true);\n },\n \n // get element\n get: function(id) {\n return this.$el.find('#' + id);\n },\n \n // delete\n del: function(id) {\n var item = this.$tbody.find('#' + id);\n if (item.length > 0) {\n item.remove();\n this.row_count--;\n this._refresh();\n }\n },\n\n // delete all\n delAll: function() {\n this.$tbody.empty();\n this.row_count = 0;\n this._refresh();\n },\n \n // value\n value: function(new_value) {\n // get current id/value\n this.before = this.$tbody.find('.current').attr('id');\n \n // check if new_value is defined\n if (new_value !== undefined) {\n this.$tbody.find('tr').removeClass('current');\n if (new_value) {\n this.$tbody.find('#' + new_value).addClass('current');\n }\n }\n \n // get current id/value\n var after = this.$tbody.find('.current').attr('id');\n if(after === undefined) {\n return null;\n } else {\n // fire onchange\n if (after != this.before && this.options.onchange) {\n this.options.onchange(new_value);\n }\n \n // return current value\n return after;\n }\n },\n \n // size\n size: function() {\n return this.$tbody.find('tr').length;\n },\n \n // commit\n _commit: function(id, fade, prepend) {\n // remove previous item with same id\n this.del(id);\n \n // add\n this.row.attr('id', id);\n \n // add row\n if (prepend) {\n this.$tbody.prepend(this.row);\n } else {\n this.$tbody.append(this.row);\n }\n \n // fade mode\n if (fade) {\n this.row.hide();\n this.row.fadeIn();\n }\n \n // row\n this.row = this._row();\n \n // row count\n this.row_count++;\n this._refresh();\n },\n \n // create new row\n _row: function() {\n return $('');\n },\n \n // onclick\n _onclick: function(e) {\n // get values\n var old_value = this.value();\n var new_value = $(e.target).closest('tr').attr('id');\n if (new_value != ''){\n // check equality\n if (new_value && old_value != new_value) {\n if (this.options.onconfirm) {\n this.options.onconfirm(new_value);\n } else {\n this.value(new_value);\n }\n }\n }\n },\n\n // ondblclick\n _ondblclick: function(e) {\n var value = this.value();\n if (value && this.options.ondblclick) {\n this.options.ondblclick(value);\n }\n },\n \n // refresh\n _refresh: function() {\n if (this.row_count == 0) {\n this.$tmessage.show();\n } else {\n this.$tmessage.hide();\n }\n },\n \n // load html template\n _template: function(options) {\n return '
    ' +\n '' +\n '' +\n '' +\n '
    ' +\n '' + options.content + '' +\n '
    ';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-table.js\n ** module id = 29\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-table', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc'],\n function(Utils, Table, Portlet, Ui) {\n\n/** This class creates a ui component which enables the dynamic creation of portlets\n*/\nvar View = Backbone.View.extend({\n // default options\n optionsDefault : {\n title : 'Section',\n max : null,\n min : null\n },\n\n /** Initialize\n */\n initialize : function(options) {\n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n\n // create new element\n this.setElement('
    ');\n\n // link this\n var self = this;\n\n // create button\n this.button_new = new Ui.ButtonIcon({\n icon : 'fa-plus',\n title : 'Insert ' + options.title_new,\n tooltip : 'Add new ' + options.title_new + ' block',\n floating: 'clear',\n onclick : function() {\n if (options.onnew) {\n options.onnew();\n }\n }\n });\n\n // create table\n this.table = new Table.View({\n cls : 'ui-table-plain',\n content : ''\n });\n\n // append button\n this.$el.append(this.table.$el);\n\n // add button\n this.$el.append($('
    ').append(this.button_new.$el));\n\n // clear list\n this.list = {};\n\n // number of available repeats\n this.n = 0;\n },\n\n /** Number of repeat blocks\n */\n size: function() {\n return this.n;\n },\n\n /** Add new repeat block\n */\n add: function(options) {\n // repeat block already exists\n if (!options.id || this.list[options.id]) {\n Galaxy.emit.debug('form-repeat::add()', 'Duplicate repeat block id.');\n return;\n }\n\n // increase repeat block counter\n this.n++;\n\n // delete button\n var button_delete = new Ui.ButtonIcon({\n icon : 'fa-trash-o',\n tooltip : 'Delete this repeat block',\n cls : 'ui-button-icon-plain',\n onclick : function() {\n if (options.ondel) {\n options.ondel();\n }\n }\n });\n\n // create portlet\n var portlet = new Portlet.View({\n id : options.id,\n title : 'placeholder',\n cls : 'ui-portlet-repeat',\n operations : {\n button_delete : button_delete\n }\n });\n\n // append content\n portlet.append(options.$el);\n\n // tag as section row\n portlet.$el.addClass('section-row');\n\n // append to dom\n this.list[options.id] = portlet;\n\n // append to dom\n this.table.add(portlet.$el);\n this.table.append('row_' + options.id, true);\n\n // validate maximum\n if (this.options.max > 0 && this.n >= this.options.max) {\n this.button_new.disable();\n }\n\n // refresh view\n this._refresh();\n },\n\n /** Delete repeat block\n */\n del: function(id) {\n // could not find element\n if (!this.list[id]) {\n Galaxy.emit.debug('form-repeat::del()', 'Invalid repeat block id.');\n return;\n }\n\n // decrease repeat block counter\n this.n--;\n\n // delete table row\n var table_row = this.table.get('row_' + id);\n table_row.remove();\n\n // remove from list\n delete this.list[id];\n\n // enable new button\n this.button_new.enable();\n\n // refresh delete button visibility\n this._refresh();\n },\n\n /** Refresh view\n */\n _refresh: function() {\n var index = 0;\n for (var id in this.list) {\n var portlet = this.list[id];\n portlet.title(++index + ': ' + this.options.title);\n if (this.n > this.options.min) {\n portlet.showOperation('button_delete');\n } else {\n portlet.hideOperation('button_delete');\n }\n }\n }\n});\n\nreturn {\n View : View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-repeat.js\n ** module id = 30\n ** module chunks = 0\n **/","/**\n This class creates a form input element wrapper\n*/\ndefine([], function() {\n return Backbone.View.extend({\n initialize: function(app, options) {\n // link app\n this.app = app;\n\n // set text labels and icons for optional button\n this.text_enable = app.options.text_enable || 'Enable';\n this.text_disable = app.options.text_disable || 'Disable';\n this.cls_enable = app.options.cls_enable || 'fa fa-caret-square-o-down';\n this.cls_disable = app.options.cls_disable || 'fa fa-caret-square-o-up';\n\n // link field\n this.field = options.field;\n this.default_value = options.default_value;\n\n // set element\n this.setElement(this._template(options));\n\n // link elements\n this.$field = this.$el.find('.ui-table-form-field');\n this.$optional = this.$el.find('.ui-table-form-optional');\n this.$optional_icon = this.$el.find('.ui-table-form-optional').find('.icon');\n this.$error_text = this.$el.find('.ui-table-form-error-text');\n this.$error = this.$el.find('.ui-table-form-error');\n\n // add field element\n this.$field.prepend(this.field.$el);\n\n // decide wether to expand or collapse optional fields\n this.field.collapsed = options.collapsible && options.value &&\n JSON.stringify(options.value) == JSON.stringify(options.collapsible_value);\n\n // refresh view\n this._refresh();\n\n // add optional hide/show\n var self = this;\n this.$optional.on('click', function() {\n // flip flag\n self.field.collapsed = !self.field.collapsed;\n\n // refresh view\n self._refresh();\n\n // refresh state\n self.app.trigger('change');\n });\n },\n\n /** Set error text\n */\n error: function(text) {\n this.$error_text.html(text);\n this.$error.show();\n this.$el.addClass('ui-error');\n },\n\n /** Reset this view\n */\n reset: function() {\n this.$error.hide();\n this.$el.removeClass('ui-error');\n },\n\n /** Refresh element\n */\n _refresh: function() {\n // reset optional button\n this.$optional_icon.removeClass().addClass('icon');\n\n // identify state\n if (!this.field.collapsed) {\n // enable input field\n this.$field.fadeIn('fast');\n this._tooltip(this.text_disable, this.cls_disable);\n this.app.trigger('change');\n } else {\n // disable input field\n this.$field.hide();\n this._tooltip(this.text_enable, this.cls_enable);\n this.field.value && this.field.value(this.default_value);\n }\n },\n\n /** Set tooltip text\n */\n _tooltip: function(title, cls) {\n if (this.$optional.length) {\n this.$optional_icon.addClass(cls)\n .tooltip({ placement: 'bottom' })\n .attr('data-original-title', title)\n .tooltip('fixTitle').tooltip('hide');\n }\n },\n\n /** Main Template\n */\n _template: function(options) {\n var tmp = '
    ' +\n '
    ' +\n '' +\n '
    ' +\n '
    ';\n if (options.collapsible) {\n tmp += '
    ' +\n '' + options.label +\n '
    ';\n } else {\n tmp += options.label;\n }\n tmp += '
    ' +\n '
    ';\n tmp += '
    ';\n if (options.help) {\n tmp += options.help;\n if (options.argument && options.help.indexOf('(' + options.argument + ')') == -1) {\n tmp += ' (' + options.argument + ')';\n }\n }\n tmp += '
    ';\n tmp += '
    ' +\n '
    ';\n return tmp;\n }\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-input.js\n ** module id = 31\n ** module chunks = 0\n **/","/**\n This class creates input elements. New input parameter types should be added to the types dictionary.\n*/\ndefine(['utils/utils',\n 'mvc/ui/ui-misc',\n 'mvc/form/form-select-content',\n 'mvc/ui/ui-select-library',\n 'mvc/ui/ui-select-ftp',\n 'mvc/ui/ui-color-picker'],\n function(Utils, Ui, SelectContent, SelectLibrary, SelectFtp, ColorPicker) {\n\n // create form view\n return Backbone.Model.extend({\n /** Available parameter types */\n types: {\n 'text' : '_fieldText',\n 'select' : '_fieldSelect',\n 'data_column' : '_fieldSelect',\n 'genomebuild' : '_fieldSelect',\n 'data' : '_fieldData',\n 'data_collection' : '_fieldData',\n 'integer' : '_fieldSlider',\n 'float' : '_fieldSlider',\n 'boolean' : '_fieldBoolean',\n 'drill_down' : '_fieldDrilldown',\n 'color' : '_fieldColor',\n 'hidden' : '_fieldHidden',\n 'hidden_data' : '_fieldHidden',\n 'baseurl' : '_fieldHidden',\n 'library_data' : '_fieldLibrary',\n 'ftpfile' : '_fieldFtp'\n },\n\n // initialize\n initialize: function(app, options) {\n this.app = app;\n },\n\n /** Returns an input field for a given field type\n */\n create: function(input_def) {\n // add regular/default value if missing\n if (input_def.value === undefined) {\n input_def.value = null;\n }\n if (input_def.default_value === undefined) {\n input_def.default_value = input_def.value;\n }\n\n // field wrapper\n var field = null;\n\n // get field class\n var fieldClass = this.types[input_def.type];\n if (fieldClass && typeof(this[fieldClass]) === 'function') {\n field = this[fieldClass].call(this, input_def);\n }\n\n // identify field type\n if (!field) {\n // flag\n this.app.incompatible = true;\n\n // with or without options\n if (input_def.options) {\n // assign select field\n field = this._fieldSelect(input_def);\n } else {\n // assign text field\n field = this._fieldText(input_def);\n }\n\n // log\n Galaxy.emit.debug('form-parameters::_addRow()', 'Auto matched field type (' + input_def.type + ').');\n }\n\n // set field value\n if (input_def.value !== undefined) {\n field.value(input_def.value);\n }\n\n // return field element\n return field;\n },\n\n /** Data input field\n */\n _fieldData: function(input_def) {\n if (this.app.options.is_workflow) {\n input_def.info = 'Data input \\'' + input_def.name + '\\' (' + Utils.textify(input_def.extensions.toString()) + ')';\n input_def.value = null;\n return this._fieldHidden(input_def);\n }\n var self = this;\n return new SelectContent.View(this.app, {\n id : 'field-' + input_def.id,\n extensions : input_def.extensions,\n optional : input_def.optional,\n multiple : input_def.multiple,\n type : input_def.type,\n data : input_def.options,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Select/Checkbox/Radio options field\n */\n _fieldSelect: function (input_def) {\n // show text field in if dynamic fields are disabled e.g. in workflow editor\n if (input_def.options.length == 0 && this.app.options.is_workflow) {\n return this._fieldText(input_def);\n }\n\n // customize properties\n if (input_def.type == 'data_column') {\n input_def.error_text = 'Missing columns in referenced dataset.'\n }\n\n // configure options fields\n var options = [];\n for (var i in input_def.options) {\n var option = input_def.options[i];\n options.push({\n label: option[0],\n value: option[1]\n });\n }\n\n // identify display type\n var SelectClass = Ui.Select;\n switch (input_def.display) {\n case 'checkboxes':\n SelectClass = Ui.Checkbox;\n break;\n case 'radio':\n SelectClass = Ui.Radio;\n break;\n }\n\n // select field\n var self = this;\n return new SelectClass.View({\n id : 'field-' + input_def.id,\n data : options,\n error_text : input_def.error_text || 'No options available',\n optional : input_def.optional && input_def.default_value === null,\n multiple : input_def.multiple,\n optional : input_def.optional,\n searchable : input_def.searchable,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Drill down options field\n */\n _fieldDrilldown: function (input_def) {\n // show text field in if dynamic fields are disabled e.g. in workflow editor\n if (input_def.options.length == 0 && this.app.options.is_workflow) {\n return this._fieldText(input_def);\n }\n\n // create drill down field\n var self = this;\n return new Ui.Drilldown.View({\n id : 'field-' + input_def.id,\n data : input_def.options,\n display : input_def.display,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Text input field\n */\n _fieldText: function(input_def) {\n // field replaces e.g. a select field\n if (input_def.options) {\n // show text area if selecting multiple entries is allowed\n input_def.area = input_def.multiple;\n\n // validate value\n if (!Utils.validate(input_def.value)) {\n input_def.value = '';\n } else {\n if ($.isArray(input_def.value)) {\n var str_value = '';\n for (var i in input_def.value) {\n str_value += String(input_def.value[i]);\n if (!input_def.multiple) {\n break;\n }\n str_value += '\\n';\n }\n input_def.value = str_value;\n }\n }\n }\n\n // create input element\n var self = this;\n return new Ui.Input({\n id : 'field-' + input_def.id,\n area : input_def.area,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Slider field\n */\n _fieldSlider: function(input_def) {\n var self = this;\n return new Ui.Slider.View({\n id : 'field-' + input_def.id,\n precise : input_def.type == 'float',\n min : input_def.min,\n max : input_def.max,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Hidden field\n */\n _fieldHidden: function(input_def) {\n return new Ui.Hidden({\n id : 'field-' + input_def.id,\n info : input_def.info\n });\n },\n\n /** Boolean field\n */\n _fieldBoolean: function(input_def) {\n var self = this;\n return new Ui.RadioButton.View({\n id : 'field-' + input_def.id,\n data : [ { label : 'Yes', value : 'true' },\n { label : 'No', value : 'false' }],\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Color picker field\n */\n _fieldColor: function(input_def) {\n var self = this;\n return new ColorPicker({\n id : 'field-' + input_def.id,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** Library dataset field\n */\n _fieldLibrary: function(input_def) {\n var self = this;\n return new SelectLibrary.View({\n id : 'field-' + input_def.id,\n optional : input_def.optional,\n multiple : input_def.multiple,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n },\n\n /** FTP file field\n */\n _fieldFtp: function(input_def) {\n var self = this;\n return new SelectFtp.View({\n id : 'field-' + input_def.id,\n optional : input_def.optional,\n multiple : input_def.multiple,\n onchange : function() {\n self.app.trigger('change');\n }\n });\n }\n });\n\n return {\n View: View\n };\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-parameters.js\n ** module id = 32\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-misc', 'mvc/ui/ui-tabs', 'mvc/tool/tools-template'],\n function(Utils, Ui, Tabs, ToolTemplate) {\n\n// hda/hdca content selector ui element\nvar View = Backbone.View.extend({\n // initialize\n initialize : function(app, options) {\n // link app and options\n this.app = app;\n this.options = options;\n\n // track current history elements\n this.history = {};\n\n\n // link this\n var self = this;\n\n // add element\n this.setElement('
    ');\n\n // list of select fieldsFormSection\n this.list = {};\n\n // radio button options\n var radio_buttons = [];\n\n // identify selector type\n if (options.type == 'data_collection') {\n this.mode = 'collection';\n } else {\n if (options.multiple) {\n this.mode = 'multiple';\n } else {\n this.mode = 'single';\n }\n }\n\n // set initial state\n this.current = this.mode;\n this.list = {};\n\n // error messages\n var extensions = Utils.textify(options.extensions);\n var hda_error = 'No dataset available.';\n if (extensions) {\n hda_error = 'No ' + extensions + ' dataset available.';\n }\n var hdca_error = 'No dataset list available.';\n if (extensions) {\n hdca_error = 'No ' + extensions + ' dataset collection available.';\n }\n\n // add single dataset selector\n if (this.mode == 'single') {\n radio_buttons.push({\n icon : 'fa-file-o',\n value : 'single',\n tooltip : 'Single dataset'\n });\n this.select_single = new Ui.Select.View({\n optional : options.optional,\n error_text : hda_error,\n onchange : function() {\n self.trigger('change');\n }\n });\n this.list['single'] = {\n field: this.select_single,\n type : 'hda'\n };\n }\n\n // add multiple dataset selector\n if (this.mode == 'single' || this.mode == 'multiple') {\n radio_buttons.push({\n icon : 'fa-files-o',\n value : 'multiple',\n tooltip : 'Multiple datasets'\n });\n this.select_multiple = new Ui.Select.View({\n multiple : true,\n searchable : false,\n optional : options.optional,\n error_text : hda_error,\n onchange : function() {\n self.trigger('change');\n }\n });\n this.list['multiple'] = {\n field: this.select_multiple,\n type : 'hda'\n };\n }\n\n // add collection selector\n if (this.mode == 'single' || this.mode == 'multiple' || this.mode == 'collection') {\n radio_buttons.push({\n icon : 'fa-folder-o',\n value : 'collection',\n tooltip : 'Dataset collection'\n });\n this.select_collection = new Ui.Select.View({\n error_text : hdca_error,\n optional : options.optional,\n onchange : function() {\n self.trigger('change');\n }\n });\n this.list['collection'] = {\n field: this.select_collection,\n type : 'hdca'\n };\n }\n\n // create button\n this.button_type = new Ui.RadioButton.View({\n value : this.current,\n data : radio_buttons,\n onchange: function(value) {\n self.current = value;\n self.refresh();\n self.trigger('change');\n }\n });\n\n // add batch mode information\n this.$batch = $(this.template_batch());\n\n // number of radio buttons\n var n_buttons = _.size(this.list);\n\n // add button to dom\n var button_width = 0;\n if (n_buttons > 1) {\n this.$el.append(this.button_type.$el);\n button_width = Math.max(0, _.size(this.list) * 35) + 'px';\n }\n\n // append field elements\n for (var i in this.list) {\n this.$el.append(this.list[i].field.$el.css({\n 'margin-left': button_width\n }));\n }\n\n // append batch message\n this.$el.append(this.$batch.css({\n 'margin-left': button_width\n }));\n\n // update options\n this.update(options.data);\n\n // set initial value\n if (this.options.value !== undefined) {\n this.value(this.options.value);\n }\n\n // refresh view\n this.refresh();\n\n // add change event. fires on trigger\n this.on('change', function() {\n if (options.onchange) {\n options.onchange(self.value());\n }\n });\n },\n\n /** Indicate that select fields are being updated */\n wait: function() {\n for (var i in this.list) {\n this.list[i].field.wait();\n }\n },\n\n /** Indicate that the options update has been completed */\n unwait: function() {\n for (var i in this.list) {\n this.list[i].field.unwait();\n }\n },\n\n /** Update content selector */\n update: function(options) {\n // update a particular select field\n var self = this;\n function _update(field, options) {\n if (field) {\n // identify available options\n var select_options = [];\n for (var i in options) {\n var item = options[i];\n select_options.push({\n label: item.hid + ': ' + item.name,\n value: item.id\n });\n // backup to local history\n self.history[item.id + '_' + item.src] = item;\n }\n // update field\n field.update(select_options);\n }\n }\n\n // update available options\n _update(this.select_single, options.hda);\n _update(this.select_multiple, options.hda);\n _update(this.select_collection, options.hdca);\n },\n\n /** Return the currently selected dataset values */\n value : function (new_value) {\n // update current value\n if (new_value !== undefined) {\n if (new_value && new_value.values) {\n try {\n // create list with values\n var list = [];\n for (var i in new_value.values) {\n list.push(new_value.values[i].id);\n }\n\n // identify suitable select field\n if (new_value && new_value.values.length > 0 && new_value.values[0].src == 'hdca') {\n this.current = 'collection';\n this.select_collection.value(list[0]);\n } else {\n if (this.mode == 'multiple') {\n this.current = 'multiple';\n this.select_multiple.value(list);\n } else {\n this.current = 'single';\n this.select_single.value(list[0]);\n }\n }\n } catch (err) {\n Galaxy.emit.debug('tools-select-content::value()', 'Skipped.');\n }\n } else {\n for (var i in this.list) {\n this.list[i].field.value(null);\n }\n }\n }\n\n // refresh view\n this.refresh();\n\n // validate value\n var id_list = this._select().value();\n if (id_list === null) {\n return null;\n }\n\n // transform into an array\n if (!(id_list instanceof Array)) {\n id_list = [id_list];\n }\n\n // check if value exists\n if (id_list.length === 0) {\n return null;\n }\n\n // prepare result dict\n var result = {\n batch : this._batch(),\n values : []\n }\n\n // append to dataset ids\n for (var i in id_list) {\n var details = this.history[id_list[i] + '_' + this.list[this.current].type];\n if (details) {\n result.values.push(details);\n } else {\n return null;\n }\n }\n\n // sort by history ids\n result.values.sort(function(a, b){\n return a.hid - b.hid;\n });\n\n // return\n return result;\n },\n\n /** Refreshes data selection view */\n refresh: function() {\n this.button_type.value(this.current);\n for (var i in this.list) {\n var $el = this.list[i].field.$el;\n if (this.current == i) {\n $el.show();\n } else {\n $el.hide();\n }\n }\n if (this._batch()) {\n this.$batch.show();\n } else {\n this.$batch.hide();\n }\n },\n\n /** Assists in selecting the current field */\n _select: function() {\n return this.list[this.current].field;\n },\n\n /** Assists in identifying the batch mode */\n _batch: function() {\n if (this.current == 'collection') {\n var hdca = this.history[this._select().value() + '_hdca'];\n if (hdca && hdca.map_over_type) {\n return true;\n }\n }\n if (this.current != 'single') {\n if (this.mode == 'single') {\n return true;\n }\n }\n return false;\n },\n\n /** Batch message template */\n template_batch: function() {\n return '
    ' +\n '' +\n 'This is a batch mode input field. A separate job will be triggered for each dataset.' +\n '
    ';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-select-content.js\n ** module id = 33\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils'], function(Utils) {\n\n// return\nvar View = Backbone.View.extend({\n // defaults options\n optionsDefault: {\n title_new : '',\n operations : null,\n onnew : null,\n max : null,\n onchange : null\n },\n \n // initialize\n initialize : function(options) {\n // configure\n this.visible = false;\n this.$nav = null;\n this.$content = null;\n this.first_tab = null;\n this.current_id = null;\n \n // configure options\n this.options = Utils.merge(options, this.optionsDefault);\n \n // create tabs\n var $tabs = $(this._template(this.options));\n \n // link elements\n this.$nav = $tabs.find('.tab-navigation');\n this.$content = $tabs.find('.tab-content');\n \n // create new element\n this.setElement($tabs);\n \n // clear list\n this.list = {};\n \n // link this\n var self = this;\n \n // append operations\n if (this.options.operations) {\n $.each(this.options.operations, function(name, item) {\n item.$el.prop('id', name);\n self.$nav.find('.operations').append(item.$el);\n });\n }\n \n // add built-in add-new-tab tab\n if (this.options.onnew) {\n // create tab object\n var $tab_new = $(this._template_tab_new(this.options));\n \n // append to navbar\n this.$nav.append($tab_new);\n \n // add tooltip\n $tab_new.tooltip({title: 'Add a new tab', placement: 'bottom', container: self.$el});\n \n // link click event\n $tab_new.on('click', function(e) {\n $tab_new.tooltip('hide');\n self.options.onnew();\n });\n }\n },\n \n // size\n size: function() {\n return _.size(this.list);\n },\n \n // front\n current: function() {\n return this.$el.find('.tab-pane.active').attr('id');\n },\n \n // append\n add: function(options) {\n // self\n var self = this;\n \n // get tab id\n var id = options.id;\n\n // create tab object\n var $tab_title = $(this._template_tab(options));\n var $tab_content = $(this._template_tab_content(options));\n \n // add to list\n this.list[id] = options.ondel ? true : false;\n \n // add a new tab either before the add-new-tab tab or behind the last tab\n if (this.options.onnew) {\n this.$nav.find('#new-tab').before($tab_title);\n } else {\n this.$nav.append($tab_title);\n }\n \n // add content\n $tab_content.append(options.$el);\n this.$content.append($tab_content);\n \n // activate this tab if this is the first tab\n if (this.size() == 1) {\n $tab_title.addClass('active');\n $tab_content.addClass('active');\n this.first_tab = id;\n }\n \n // hide add tab\n if (this.options.max && this.size() >= this.options.max) {\n this.$el.find('#new-tab').hide();\n }\n \n // add click event to remove tab\n if (options.ondel) {\n var $del_icon = $tab_title.find('#delete');\n $del_icon.tooltip({title: 'Delete this tab', placement: 'bottom', container: self.$el});\n $del_icon.on('click', function() {\n $del_icon.tooltip('destroy');\n self.$el.find('.tooltip').remove();\n options.ondel();\n return false;\n });\n }\n \n // add custom click event handler\n $tab_title.on('click', function(e) {\n // prevent default\n e.preventDefault();\n \n // click\n if (options.onclick) {\n options.onclick();\n } else {\n self.show(id);\n }\n });\n \n // initialize current id\n if (!this.current_id) {\n this.current_id = id;\n }\n },\n \n // delete tab\n del: function(id) {\n // delete tab from dom\n this.$el.find('#tab-' + id).remove();\n this.$el.find('#' + id).remove();\n \n // check if first tab has been deleted\n if (this.first_tab == id) {\n this.first_tab = null;\n }\n \n // show first tab\n if (this.first_tab != null) {\n this.show(this.first_tab);\n }\n \n // delete from list\n if (this.list[id]) {\n delete this.list[id];\n }\n \n // show add tab\n if (this.size() < this.options.max) {\n this.$el.find('#new-tab').show();\n }\n },\n \n // delete tab\n delRemovable: function() {\n for (var id in this.list) {\n this.del(id);\n }\n },\n \n // show\n show: function(id){\n // show tab view\n this.$el.fadeIn('fast');\n this.visible = true;\n \n // show selected tab\n if (id) {\n // reassign active class\n this.$el.find('#tab-' + this.current_id).removeClass('active');\n this.$el.find('#' + this.current_id).removeClass('active');\n this.$el.find('#tab-' + id).addClass('active');\n this.$el.find('#' + id).addClass('active');\n \n // update current id\n this.current_id = id;\n }\n \n // change\n if (this.options.onchange) {\n this.options.onchange(id);\n }\n },\n \n // hide\n hide: function(){\n this.$el.fadeOut('fast');\n this.visible = false;\n },\n\n // hide operation\n hideOperation: function(id) {\n this.$nav.find('#' + id).hide();\n },\n\n // show operation\n showOperation: function(id) {\n this.$nav.find('#' + id).show();\n },\n \n // set operation\n setOperation: function(id, callback) {\n var $el = this.$nav.find('#' + id);\n $el.off('click');\n $el.on('click', callback);\n },\n \n // title\n title: function(id, new_title) {\n var $el = this.$el.find('#tab-title-text-' + id);\n if (new_title) {\n $el.html(new_title);\n }\n return $el.html();\n },\n \n // retitle\n retitle: function(new_title) {\n var index = 0;\n for (var id in this.list) {\n this.title(id, ++index + ': ' + new_title);\n }\n },\n \n // fill template\n _template: function(options) {\n return '
    ' +\n '
      ' +\n '
      ' +\n '
    '+\n '
    ' +\n '
    ';\n },\n \n // fill template tab\n _template_tab_new: function(options) {\n return '
  • ' +\n '' +\n '' +\n options.title_new +\n '' +\n '
  • ';\n },\n \n // fill template tab\n _template_tab: function(options) {\n var tmpl = '
  • ' +\n '' +\n '' + options.title + '';\n \n if (options.ondel) {\n tmpl += '';\n }\n \n tmpl += '' +\n '
  • ';\n \n return tmpl;\n },\n \n // fill template tab content\n _template_tab_content: function(options) {\n return '
    ';\n }\n});\n\nreturn {\n View : View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-tabs.js\n ** module id = 34\n ** module chunks = 0\n **/","// dependencies\ndefine([], function() {\n\n// tool form templates\nreturn {\n help: function(options) {\n var $tmpl = $('
    ')\n .append( $('
    ').append(options.help) );\n $tmpl.find('a').attr('target', '_blank');\n return $tmpl;\n },\n\n success: function(response) {\n // check\n if (!response.jobs || !response.jobs.length) {\n return this.error(response);\n }\n\n // number of jobs\n var njobs = response.jobs.length;\n\n // job count info text\n var njobs_text = '';\n if (njobs == 1) {\n njobs_text = '1 job has';\n } else {\n njobs_text = njobs + ' jobs have';\n }\n\n // create template string\n var tmpl = '
    ' +\n '

    ' + njobs_text + ' been successfully added to the queue - resulting in the following datasets:

    ';\n for (var i in response.outputs) {\n tmpl += '

    ' + response.outputs[i].hid + ': ' + response.outputs[i].name + '

    ';\n }\n tmpl += '

    You can check the status of queued jobs and view the resulting data by refreshing the History pane. When the job has been run the status will change from \\'running\\' to \\'finished\\' if completed successfully or \\'error\\' if problems were encountered.

    ' +\n '
    ';\n\n // return success message element\n return tmpl;\n },\n\n error: function(response) {\n return '
    ' +\n '

    ' +\n 'The server could not complete the request. Please contact the Galaxy Team if this error persists.' +\n '

    ' +\n '' +\n '
    ';\n },\n\n requirements: function(options) {\n var requirements_message = 'This tool requires ';\n for (var i in options.requirements) {\n var req = options.requirements[i];\n requirements_message += req.name;\n if (req.version) {\n requirements_message += ' (Version ' + req.version + ')';\n }\n if (i < options.requirements.length - 2) {\n requirements_message += ', ';\n }\n if (i == options.requirements.length - 2) {\n requirements_message += ' and ';\n }\n }\n return requirements_message + '. Click here for more information.';\n }\n};\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/tool/tools-template.js\n ** module id = 35\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-misc', 'mvc/ui/ui-table', 'mvc/ui/ui-list'],\n function(Utils, Ui, Table, List) {\n\n// collection of libraries\nvar Libraries = Backbone.Collection.extend({\n url: Galaxy.root + 'api/libraries?deleted=false'\n});\n\n// collection of dataset\nvar LibraryDatasets = Backbone.Collection.extend({\n initialize: function() {\n var self = this;\n this.config = new Backbone.Model({ library_id: null });\n this.config.on('change', function() {\n self.fetch({ reset: true });\n });\n },\n url: function() {\n return Galaxy.root + 'api/libraries/' + this.config.get('library_id') + '/contents';\n }\n});\n\n// hda/hdca content selector ui element\nvar View = Backbone.View.extend({\n // initialize\n initialize : function(options) {\n // link this\n var self = this;\n\n // collections\n this.libraries = new Libraries();\n this.datasets = new LibraryDatasets();\n\n // link app and options\n this.options = options;\n\n // select field for the library\n // TODO: Remove this once the library API supports searching for library datasets\n this.library_select = new Ui.Select.View({\n onchange : function(value) {\n self.datasets.config.set('library_id', value);\n }\n });\n\n // create ui-list view to keep track of selected data libraries\n this.dataset_list = new List.View({\n name : 'dataset',\n optional : options.optional,\n multiple : options.multiple,\n onchange : function() {\n self.trigger('change');\n }\n });\n\n // add reset handler for fetched libraries\n this.libraries.on('reset', function() {\n var data = [];\n self.libraries.each(function(model) {\n data.push({\n value : model.id,\n label : model.get('name')\n });\n });\n self.library_select.update(data);\n });\n\n // add reset handler for fetched library datasets\n this.datasets.on('reset', function() {\n var data = [];\n var library_current = self.library_select.text();\n if (library_current !== null) {\n self.datasets.each(function(model) {\n if (model.get('type') === 'file') {\n data.push({\n value : model.id,\n label : model.get('name')\n });\n }\n });\n }\n self.dataset_list.update(data);\n });\n\n // add change event. fires on trigger\n this.on('change', function() {\n options.onchange && options.onchange(self.value());\n });\n\n // create elements\n this.setElement(this._template());\n this.$('.library-select').append(this.library_select.$el);\n this.$el.append(this.dataset_list.$el);\n\n // initial fetch of libraries\n this.libraries.fetch({\n reset: true,\n success: function() {\n self.library_select.trigger('change');\n if (self.options.value !== undefined) {\n self.value(self.options.value);\n }\n }\n });\n },\n\n /** Return/Set currently selected library datasets */\n value: function(val) {\n return this.dataset_list.value(val);\n },\n\n /** Template */\n _template: function() {\n return '
    ' +\n '
    ' +\n 'Select Library' +\n '' +\n '
    ' +\n '
    ';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-select-library.js\n ** module id = 36\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc'], function(Utils, Portlet, Ui) {\n\n// ui list element\nvar View = Backbone.View.extend({\n // create portlet to keep track of selected list elements\n initialize : function(options) {\n // link this\n var self = this;\n\n // initialize options\n this.options = options;\n this.name = options.name || 'element';\n this.multiple = options.multiple || false;\n\n // create message handler\n this.message = new Ui.Message({ cls: 'ui-margin-top' });\n\n // create portlet\n this.portlet = new Portlet.View({ cls: 'ui-portlet-section' });\n\n // create select field containing the options which can be inserted into the list\n this.select = new Ui.Select.View({ optional : options.optional });\n\n // create insert new list element button\n this.button = new Ui.ButtonIcon({\n icon : 'fa fa-sign-in',\n floating : 'left',\n tooltip : 'Insert new ' + this.name,\n onclick : function() {\n self.add({\n id : self.select.value(),\n name : self.select.text()\n });\n }\n });\n\n // build main element\n this.setElement(this._template(options));\n this.$('.ui-list-message').append(this.message.$el);\n this.$('.ui-list-portlet').append(this.portlet.$el);\n this.$('.ui-list-button').append(this.button.$el);\n this.$('.ui-list-select').append(this.select.$el);\n },\n\n /** Return/Set currently selected list elements */\n value: function(val) {\n // set new value\n if (val !== undefined) {\n this.portlet.empty();\n if ($.isArray(val)) {\n for (var i in val) {\n var v = val[i];\n var v_id = null;\n var v_name = null;\n if ($.type(v) != 'string') {\n v_id = v.id;\n v_name = v.name;\n } else {\n v_id = v_name = v;\n }\n if (v_id != null) {\n this.add({\n id : v_id,\n name : v_name\n });\n }\n }\n }\n this._refresh();\n }\n // get current value\n var lst = [];\n this.$('.ui-list-id').each(function() {\n lst.push({\n id : $(this).prop('id'),\n name : $(this).find('.ui-list-name').html()\n });\n });\n if (lst.length == 0) {\n return null;\n }\n return lst;\n },\n\n /** Add row */\n add: function(options) {\n var self = this;\n if (this.$('[id=\"' + options.id + '\"]').length === 0) {\n if (Utils.validate(options.id)) {\n var $el = $(this._templateRow({\n id : options.id,\n name : options.name\n }));\n $el.on('click', function() {\n $el.remove();\n self._refresh();\n });\n $el.on('mouseover', function() {\n $el.addClass('portlet-highlight');\n });\n $el.on('mouseout', function() {\n $el.removeClass('portlet-highlight');\n });\n this.portlet.append($el);\n this._refresh();\n } else {\n this.message.update({ message: 'Please select a valid ' + this.name + '.', status: 'danger' });\n }\n } else {\n this.message.update({ message: 'This ' + this.name + ' is already in the list.' });\n }\n },\n\n /** Update available options */\n update: function(options) {\n this.select.update(options);\n },\n\n /** Refresh view */\n _refresh: function() {\n if (this.$('.ui-list-id').length > 0) {\n !this.multiple && this.button.disable();\n this.$('.ui-list-portlet').show();\n } else {\n this.button.enable();\n this.$('.ui-list-portlet').hide();\n }\n this.options.onchange && this.options.onchange();\n },\n\n /** Main Template */\n _template: function(options) {\n return '
    ' +\n '
    ' +\n '' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n },\n\n /** Row Template */\n _templateRow: function(options) {\n return '
    ' +\n '' +\n '' + options.name + '' +\n '
    ';\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-list.js\n ** module id = 37\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils', 'mvc/ui/ui-list'],\n function(Utils, List) {\n\n/**\n * FTP file selector\n */\nvar View = Backbone.View.extend({\n // initialize\n initialize : function(options) {\n // link this\n var self = this;\n\n // create ui-list view to keep track of selected ftp files\n this.ftpfile_list = new List.View({\n name : 'file',\n optional : options.optional,\n multiple : options.multiple,\n onchange : function() {\n options.onchange && options.onchange(self.value());\n }\n });\n\n // create elements\n this.setElement(this.ftpfile_list.$el);\n\n // initial fetch of ftps\n Utils.get({\n url : Galaxy.root + 'api/remote_files',\n success : function(response) {\n var data = [];\n for (var i in response) {\n data.push({\n value : response[i]['path'],\n label : response[i]['path']\n });\n }\n self.ftpfile_list.update(data);\n }\n });\n },\n\n /** Return/Set currently selected ftp datasets */\n value: function(val) {\n return this.ftpfile_list.value(val);\n }\n});\n\nreturn {\n View: View\n}\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-select-ftp.js\n ** module id = 38\n ** module chunks = 0\n **/","/** Renders the color picker used e.g. in the tool form **/\ndefine(['utils/utils'], function( Utils ) {\n return Backbone.View.extend({\n colors: {\n standard: ['c00000','ff0000','ffc000','ffff00','92d050','00b050','00b0f0','0070c0','002060','7030a0'],\n base : ['ffffff','000000','eeece1','1f497d','4f81bd','c0504d','9bbb59','8064a2','4bacc6','f79646'],\n theme :[['f2f2f2','7f7f7f','ddd9c3','c6d9f0','dbe5f1','f2dcdb','ebf1dd','e5e0ec','dbeef3','fdeada'],\n ['d8d8d8','595959','c4bd97','8db3e2','b8cce4','e5b9b7','d7e3bc','ccc1d9','b7dde8','fbd5b5'],\n ['bfbfbf','3f3f3f','938953','548dd4','95b3d7','d99694','c3d69b','b2a2c7','92cddc','fac08f'],\n ['a5a5a5','262626','494429','17365d','366092','953734','76923c','5f497a','31859b','e36c09'],\n ['7f7f7e','0c0c0c','1d1b10','0f243e','244061','632423','4f6128','3f3151','205867','974806']]\n },\n initialize : function( options ) {\n this.options = Utils.merge( options, {} );\n this.setElement( this._template() );\n\n // link components\n this.$panel = this.$( '.ui-color-picker-panel' );\n this.$view = this.$( '.ui-color-picker-view' );\n this.$value = this.$( '.ui-color-picker-value' );\n this.$header = this.$( '.ui-color-picker-header' );\n\n // build panel\n this._build();\n\n // hide panel on start up\n this.visible = false;\n\n // set initial value\n this.value( this.options.value );\n\n // link boxes\n this.$boxes = this.$( '.ui-color-picker-box' );\n\n // add event handler\n var self = this;\n this.$boxes.on( 'click', function() {\n self.value( $( this ).css( 'background-color' ) );\n self.$header.trigger( 'click' );\n } );\n this.$header.on( 'click', function() {\n self.visible = !self.visible;\n if ( self.visible ) {\n self.$view.fadeIn( 'fast' );\n } else {\n self.$view.fadeOut( 'fast' );\n }\n } );\n },\n\n // value\n value : function ( new_val ) {\n if ( new_val !== undefined && new_val !== null ) {\n // update color value\n this.$value.css( 'background-color', new_val );\n \n // check selected color in panel\n this.$( '.ui-color-picker-box' ).empty();\n this.$( this._getValue() ).html( this._templateCheck() );\n\n // trigger custom event\n this.options.onchange && this.options.onchange( new_val );\n }\n\n // return current value\n return this._getValue();\n },\n\n // get value from dom\n _getValue: function() {\n var rgb = this.$value.css( 'background-color' );\n rgb = rgb.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n if ( rgb ) {\n function hex( x ) {\n return ( '0' + parseInt( x ).toString( 16 ) ).slice( -2 );\n }\n return '#' + hex( rgb[ 1] ) + hex( rgb[ 2 ] ) + hex( rgb[ 3 ] );\n } else {\n return null;\n }\n },\n\n // build panel\n _build: function() {\n var $content = this._content({\n label : 'Theme Colors',\n colors : this.colors.base,\n padding : 10\n });\n for ( var i in this.colors.theme ) {\n var line_def = {};\n if ( i == 0 ) {\n line_def[ 'bottom' ] = true;\n } else {\n if ( i != this.colors.theme.length - 1 ) {\n line_def[ 'top' ] = true;\n line_def[ 'bottom' ] = true;\n } else {\n line_def[ 'top' ] = true;\n line_def[ 'padding' ] = 5;\n }\n }\n line_def[ 'colors' ] = this.colors.theme[ i ];\n this._content( line_def );\n }\n this._content({\n label : 'Standard Colors',\n colors : this.colors.standard,\n padding : 5\n });\n },\n\n // create content\n _content: function( options ) {\n // get parameters\n var label = options.label;\n var colors = options.colors;\n var padding = options.padding;\n var top = options.top;\n var bottom = options.bottom;\n\n // create lines\n var $content = $( this._templateContent() );\n\n // set label\n var $label = $content.find( '.label' );\n if ( options.label ) {\n $label.html( options.label );\n } else {\n $label.hide();\n }\n\n // build line\n var $line = $content.find( '.line' );\n this.$panel.append( $content );\n for ( var i in colors ) {\n var $box = $( this._templateBox( colors[ i ] ) );\n if ( top ) {\n $box.css( 'border-top', 'none' );\n $box.css( 'border-top-left-radius', '0px' );\n $box.css( 'border-top-right-radius', '0px' );\n }\n if ( bottom ) {\n $box.css( 'border-bottom', 'none' );\n $box.css( 'border-bottom-left-radius', '0px' );\n $box.css( 'border-bottom-right-radius', '0px' );\n }\n $line.append( $box );\n }\n if (padding) {\n $line.css( 'padding-bottom', padding );\n }\n return $content;\n },\n\n // check icon\n _templateCheck: function() {\n return '
    ';\n },\n\n // content template\n _templateContent: function() {\n return '
    ' +\n '
    ' +\n '
    ' +\n '
    ';\n },\n\n // box template\n _templateBox: function( color ) {\n return '
    ';\n },\n\n // template\n _template: function() {\n return '
    ' +\n '
    ' +\n '
    ' +\n '
    Select a color
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    '\n '
    ';\n }\n });\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/ui/ui-color-picker.js\n ** module id = 39\n ** module chunks = 0\n **/","/*\n This class maps the form dom to an api compatible javascript dictionary.\n*/\ndefine(['utils/utils'], function(Utils) {\nreturn Backbone.Model.extend({\n // initialize\n initialize: function(app) {\n this.app = app;\n },\n\n /** Creates a checksum.\n */\n checksum: function() {\n var sum = '';\n var self = this;\n this.app.section.$el.find('.section-row').each(function() {\n var id = $(this).attr('id');\n var field = self.app.field_list[id];\n if (field) {\n sum += id + ':' + JSON.stringify(field.value && field.value()) + ':' + field.collapsed + ';';\n }\n });\n return sum;\n },\n\n /** Convert dom into dictionary.\n */\n create: function() {\n // link this\n var self = this;\n\n // get raw dictionary from dom\n var dict = {};\n this._iterate(this.app.section.$el, dict);\n\n // add to result dictionary\n var result_dict = {};\n this.map_dict = {};\n function add(job_input_id, input_id, input_value) {\n self.map_dict[job_input_id] = input_id;\n result_dict[job_input_id] = input_value;\n };\n\n // converter between raw dictionary and job dictionary\n function convert(identifier, head) {\n for (var index in head) {\n var node = head[index];\n if (node.input) {\n // get node\n var input = node.input;\n\n // create identifier\n var job_input_id = identifier;\n if (identifier != '') {\n job_input_id += '|';\n }\n job_input_id += input.name;\n\n // process input type\n switch (input.type) {\n // handle repeats\n case 'repeat':\n // section identifier\n var section_label = 'section-';\n\n // collect repeat block identifiers\n var block_indices = [];\n var block_prefix = null;\n for (var block_label in node) {\n var pos = block_label.indexOf(section_label);\n if (pos != -1) {\n pos += section_label.length;\n block_indices.push(parseInt(block_label.substr(pos)));\n if (!block_prefix) {\n block_prefix = block_label.substr(0, pos);\n }\n }\n }\n\n // sort repeat blocks\n block_indices.sort(function(a,b) { return a - b; });\n\n // add to response dictionary in created order\n var index = 0;\n for (var i in block_indices) {\n convert(job_input_id + '_' + index++, node[block_prefix + block_indices[i]]);\n }\n break;\n // handle conditionals\n case 'conditional':\n // get conditional value\n var value = self.app.field_list[input.id].value();\n \n // add conditional value\n add (job_input_id + '|' + input.test_param.name, input.id, value);\n\n // identify selected case\n var selectedCase = self.matchCase(input, value);\n if (selectedCase != -1) {\n convert(job_input_id, head[input.id + '-section-' + selectedCase]);\n }\n break;\n // handle sections\n case 'section':\n convert(!input.flat && job_input_id || '', node);\n break;\n default:\n // get field\n var field = self.app.field_list[input.id];\n if (field && field.value) {\n // validate field value\n var value = field.value();\n\n // ignore certain values\n if (input.ignore === undefined || input.ignore != value) {\n // replace value by collapsible value\n if (field.collapsed && input.collapsible_value) {\n value = input.collapsible_value;\n }\n\n // add value to submission\n add (job_input_id, input.id, value);\n\n // add payload to submission\n if (input.payload) {\n for (var p_id in input.payload) {\n add (p_id, input.id, input.payload[p_id]);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // start conversion\n convert('', dict);\n \n // return result\n return result_dict;\n },\n\n /** Match job definition identifier to input element identifier\n */\n match: function (job_input_id) {\n return this.map_dict && this.map_dict[job_input_id];\n },\n\n /** Match conditional values to selected cases\n */\n matchCase: function(input, value) {\n // format value for boolean inputs\n if (input.test_param.type == 'boolean') {\n if (value == 'true') {\n value = input.test_param.truevalue || 'true';\n } else {\n value = input.test_param.falsevalue || 'false';\n }\n }\n\n // find selected case\n for (var i in input.cases) {\n if (input.cases[i].value == value) {\n return i;\n }\n }\n\n // selected case not found\n return -1;\n },\n\n /** Matches identifier from api model to input elements\n */\n matchModel: function(model, callback) {\n // final result dictionary\n var result = {};\n\n // link this\n var self = this;\n\n // search throughout response\n function search (id, head) {\n for (var i in head) {\n var node = head[i];\n var index = node.name;\n if (id != '') {\n index = id + '|' + index;\n }\n switch (node.type) {\n case 'repeat':\n for (var j in node.cache) {\n search (index + '_' + j, node.cache[j]);\n }\n break;\n case 'conditional':\n var value = node.test_param && node.test_param.value;\n var selectedCase = self.matchCase(node, value);\n if (selectedCase != -1) {\n search (index, node.cases[selectedCase].inputs);\n }\n break;\n case 'section':\n search (index, node.inputs);\n break;\n default:\n var input_id = self.map_dict[index];\n if (input_id) {\n callback(input_id, node);\n }\n }\n }\n }\n\n // match all ids and return messages\n search('', model.inputs);\n\n // return matched results\n return result;\n },\n\n /** Matches identifier from api response to input elements\n */\n matchResponse: function(response) {\n // final result dictionary\n var result = {};\n\n // link this\n var self = this;\n\n // search throughout response\n function search (id, head) {\n if (typeof head === 'string') {\n var input_id = self.map_dict[id];\n if (input_id) {\n result[input_id] = head;\n }\n } else {\n for (var i in head) {\n var new_id = i;\n if (id !== '') {\n var separator = '|';\n if (head instanceof Array) {\n separator = '_';\n }\n new_id = id + separator + new_id;\n }\n search (new_id, head[i]);\n }\n }\n }\n\n // match all ids and return messages\n search('', response);\n\n // return matched results\n return result;\n },\n\n /** Iterate through the form dom and map it to the dictionary.\n */\n _iterate: function(parent, dict) {\n // get child nodes\n var self = this;\n var children = $(parent).children();\n children.each(function() {\n // get child element\n var child = this;\n\n // get id\n var id = $(child).attr('id');\n\n // create new branch\n if ($(child).hasClass('section-row')) {\n // create sub dictionary\n dict[id] = {};\n\n // add input element if it exists\n var input = self.app.input_list[id];\n if (input) {\n dict[id] = {\n input : input\n }\n }\n\n // fill sub dictionary\n self._iterate(child, dict[id]);\n } else {\n self._iterate(child, dict);\n }\n });\n }\n});\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/form/form-data.js\n ** module id = 40\n ** module chunks = 0\n **/","define([\n \"libs/bibtex\",\n \"mvc/base-mvc\",\n \"utils/localization\"\n], function( bibtex, baseMVC, _l ){\n/* global Backbone */\n\nvar logNamespace = 'citation';\n//==============================================================================\n/** @class model for tool citations.\n * @name Citation\n * @augments Backbone.Model\n */\nvar Citation = Backbone.Model.extend( baseMVC.LoggableMixin ).extend( {\n _logNamespace : logNamespace,\n\n initialize: function( ) {\n var bibtex = this.attributes.content;\n var entry = new bibtex.BibtexParser(bibtex).entries[0];\n this.entry = entry;\n this._fields = {};\n var rawFields = entry.Fields;\n for(var key in rawFields) {\n var value = rawFields[ key ];\n var lowerKey = key.toLowerCase();\n this._fields[ lowerKey ] = value;\n }\n },\n entryType: function() {\n return this.entry.EntryType;\n },\n fields: function() {\n return this._fields;\n }\n} );\n\n//==============================================================================\n/** @class Backbone collection of citations.\n */\nvar BaseCitationCollection = Backbone.Collection.extend( baseMVC.LoggableMixin ).extend( {\n _logNamespace : logNamespace,\n\n /** root api url */\n urlRoot : Galaxy.root + 'api',\n partial : true, // Assume some tools in history/workflow may not be properly annotated yet.\n model : Citation,\n} );\n\nvar HistoryCitationCollection = BaseCitationCollection.extend( {\n /** complete api url */\n url : function() {\n return this.urlRoot + '/histories/' + this.history_id + '/citations';\n }\n} );\n\nvar ToolCitationCollection = BaseCitationCollection.extend( {\n /** complete api url */\n url : function() {\n return this.urlRoot + '/tools/' + this.tool_id + '/citations';\n },\n partial : false, // If a tool has citations, assume they are complete.\n} );\n\n//==============================================================================\nreturn {\n Citation : Citation,\n HistoryCitationCollection : HistoryCitationCollection,\n ToolCitationCollection: ToolCitationCollection\n};\n\n});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/citation/citation-model.js\n ** module id = 41\n ** module chunks = 0\n **/","/**\n * Parser.js\n * Copyright 2012-13 Mayank Lahiri\n * mlahiri@gmail.com\n * Released under the BSD License.\n *\n * A forgiving Bibtex parser that can:\n * \n * (1) operate in streaming or block mode, extracting entries as dictionaries. \n * (2) convert Latex special characters to UTF-8.\n * (3) best-effort parse malformed entries.\n * (4) run in a CommonJS environment or a browser, without any dependencies.\n * (5) be advanced-compiled by Google Closure Compiler.\n * \n * Handwritten as a labor of love, not auto-generated from a grammar. \n *\n * Modes of usage:\n *\n * (1) Synchronous, string\n *\n * var entries = BibtexParser(text);\n * console.log(entries);\n *\n * (2) Asynchronous, stream\n *\n * var entryCallback = function(entry) { console.log(entry); }\n * var parser = new BibtexParser(entryCallback);\n * parser.parse(chunk1);\n * parser.parse(chunk2);\n * ...\n * \n * @param {text|function(Object)} arg Either a Bibtex string or callback \n * function for processing parsed entries.\n * @constructor\n */\nfunction BibtexParser(arg0) {\n // Determine how this function is to be used\n if (typeof arg0 == 'string') {\n // Passed a string, synchronous call without 'new'\n var tempStorage = {};\n var entries = [];\n function accumulator(entry) {\n entries.push(entry);\n }\n var parser = BibtexParser.call(tempStorage, accumulator);\n parser.parse(arg0);\n return {\n 'entries': entries,\n 'errors': parser.getErrors()\n }\n }\n if (typeof arg0 != 'function') {\n throw 'Invalid parser construction.';\n }\n\n /** @enum {number} */\n this.STATES_ = {\n ENTRY_OR_JUNK: 0,\n OBJECT_TYPE: 1,\n ENTRY_KEY: 2, \n KV_KEY: 3, \n EQUALS: 4,\n KV_VALUE: 5 \n }\n /** @private */ this.DATA_ = {};\n /** @private */ this.CALLBACK_ = arg0;\n /** @private */ this.CHAR_ = 0;\n /** @private */ this.LINE_ = 1;\n /** @private */ this.CHAR_IN_LINE_ = 0;\n /** @private */ this.SKIPWS_ = true;\n /** @private */ this.SKIPCOMMENT_ = true;\n /** @private */ this.PARSETMP_ = {};\n /** @private */ this.SKIPTILLEOL_ = false;\n /** @private */ this.VALBRACES_ = null;\n /** @private */ this.BRACETYPE_ = null;\n /** @private */ this.BRACECOUNT_ = 0;\n /** @private */ this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n /** @private */ this.ERRORS_ = [];\n /** @private */ this.ENTRY_TYPES_ = {\n 'inproceedings' : 1,\n 'proceedings' : 2,\n 'article' : 3,\n 'techreport' : 4,\n 'misc' : 5,\n 'mastersthesis' : 6,\n 'book' : 7,\n 'phdthesis' : 8,\n 'incollection' : 9,\n 'unpublished' : 10,\n 'inbook' : 11,\n 'manual' : 12,\n 'periodical' : 13,\n 'booklet' : 14,\n 'masterthesis' : 15,\n 'conference' : 16\n ,'online' : 998 // Galaxy MOD: Handle @online entries for preprints.\n ,'data' : 999 // Galaxy MOD: Handle @data citations coming from figshare.\n }\n /** @private */ this.MACROS_ = {\n 'jan' : 'January',\n 'feb' : 'February',\n 'mar' : 'March',\n 'apr' : 'April',\n 'may' : 'May',\n 'jun' : 'June',\n 'jul' : 'July',\n 'aug' : 'August',\n 'sep' : 'September',\n 'oct' : 'October',\n 'nov' : 'November',\n 'dec' : 'December',\n 'Jan' : 'January',\n 'Feb' : 'February',\n 'Mar' : 'March',\n 'Apr' : 'April',\n 'May' : 'May',\n 'Jun' : 'June',\n 'Jul' : 'July',\n 'Aug' : 'August',\n 'Sep' : 'September',\n 'Oct' : 'October',\n 'Nov' : 'November',\n 'Dec' : 'December'\n }\n\n /**\n * Gets an array of all errors encountered during parsing.\n * Array entries are of the format:\n * [ line number, character in line, character in stream, error text ]\n *\n * @returns Array\n * @public\n */\n this.getErrors = function() {\n return this.ERRORS_;\n }\n\n /**\n * Processes a chunk of data\n * @public\n */\n this.parse = function(chunk) {\n for (var i = 0; i < chunk.length; i++)\n this.processCharacter_(chunk[i]);\n }\n\n /**\n * Logs error at current stream position.\n *\n * @private\n */\n this.error_ = function(text) {\n this.ERRORS_.push([ this.LINE_, \n this.CHAR_IN_LINE_,\n this.CHAR_,\n text ])\n }\n\n /**\n * Called after an entire entry has been parsed from the stream.\n * Performs post-processing and invokes the entry callback pointed to by\n * this.CALLBACK_. Parsed (but unprocessed) entry data is in this.DATA_.\n */\n this.processEntry_ = function() {\n var data = this.DATA_;\n if (data.Fields) \n for (var f in data.Fields) {\n var raw = data.Fields[f];\n\n // Convert Latex/Bibtex special characters to UTF-8 equivalents\n for (var i = 0; i < this.CHARCONV_.length; i++) {\n var re = this.CHARCONV_[i][0];\n var rep = this.CHARCONV_[i][1];\n raw = raw.replace(re, rep);\n }\n\n // Basic substitutions\n raw = raw.replace(/[\\n\\r\\t]/g, ' ')\n .replace(/\\s\\s+/g, ' ')\n .replace(/^\\s+|\\s+$/g, '')\n\n // Remove braces and backslashes\n var len = raw.length;\n var processed = '';\n for (var i = 0; i < len; i++) {\n var c = raw[i];\n var skip = false;\n if (c == '\\\\' && i < len-1) \n c = raw[++i];\n else {\n if (c == '{' || c == '}')\n skip = true;\n }\n if (!skip)\n processed += c;\n }\n data.Fields[f] = processed\n }\n\n if (data.ObjectType == 'string') {\n for (var f in data.Fields) { \n this.MACROS_[f] = data.Fields[f];\n }\n } else {\n // Parsed a new Bibtex entry\n this.CALLBACK_(data);\n }\n }\n\n\n /**\n * Processes next character in the stream, invoking the callback after \n * each entry has been found and processed.\n * \n * @private\n * @param {string} c Next character in input stream\n */\n this.processCharacter_ = function(c) {\n // Housekeeping\n this.CHAR_++;\n this.CHAR_IN_LINE_++;\n if (c == '\\n') {\n this.LINE_++;\n this.CHAR_IN_LINE_ = 1;\n }\n\n // Convenience states for skipping whitespace when needed\n if (this.SKIPTILLEOL_) {\n if (c == '\\n')\n this.SKIPTILLEOL_ = false;\n return;\n }\n if (this.SKIPCOMMENT_ && c == '%') {\n this.SKIPTILLEOL_ = true;\n return;\n }\n if (this.SKIPWS_ && /\\s/.test(c))\n return;\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n this.SKIPTILLEOL_ = false;\n\n // Main state machine\n var AnotherIteration = true;\n while (AnotherIteration) {\n //console.log(this.LINE_, this.CHAR_IN_LINE_, this.STATE_, c)\n AnotherIteration = false;\n switch(this.STATE_) {\n // -- Scan for an object marker ('@')\n // -- Reset temporary data structure in case previous entry was garbled\n case this.STATES_.ENTRY_OR_JUNK:\n if (c == '@') {\n // SUCCESS: Parsed a valid start-of-object marker.\n // NEXT_STATE: OBJECT_TYPE\n this.STATE_ = this.STATES_.OBJECT_TYPE;\n this.DATA_ = {\n ObjectType : ''\n };\n }\n this.BRACETYPE_ = null;\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n break;\n\n // Start at first non-whitespace character after start-of-object '@'\n // -- Accept [A-Za-z], break on non-matching character\n // -- Populate this.DATA_.EntryType and this.DATA_.ObjectType\n case this.STATES_.OBJECT_TYPE:\n if (/[A-Za-z]/.test(c)) {\n this.DATA_.ObjectType += c.toLowerCase();\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n } else {\n // Break from state and validate object type\n var ot = this.DATA_.ObjectType;\n if (ot == 'comment') {\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n } else {\n if (ot == 'string') {\n this.DATA_.ObjectType = ot;\n this.DATA_.Fields = {};\n this.BRACETYPE_ = c;\n this.BRACECOUNT_ = 1;\n this.STATE_ = this.STATES_.KV_KEY;\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.PARSETMP_ = {\n Key: ''\n }\n } else {\n if (ot == 'preamble') {\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n } else {\n if (ot in this.ENTRY_TYPES_) {\n // SUCCESS: Parsed a valid object type.\n // NEXT_STATE: ENTRY_KEY\n this.DATA_.ObjectType = 'entry';\n this.DATA_.EntryType = ot;\n this.DATA_.EntryKey = '';\n this.STATE_ = this.STATES_.ENTRY_KEY;\n AnotherIteration = true;\n } else {\n // ERROR: Unrecognized object type.\n // NEXT_STATE: ENTRY_OR_JUNK\n this.error_('Unrecognized object type: \"' +\n this.DATA_.ObjectType + '\"')\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n }\n }\n }\n }\n }\n break;\n\n // Start at first non-alphabetic character after an entry type\n // -- Populate this.DATA_.EntryKey\n case this.STATES_.ENTRY_KEY:\n if ((c === '{' || c === '(') && this.BRACETYPE_ == null) {\n this.BRACETYPE_ = c;\n this.BRACECOUNT_ = 1;\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n break;\n }\n if (/[,%\\s]/.test(c)) {\n if (this.DATA_.EntryKey.length < 1) { \n // Skip comments and whitespace before entry key\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n } else {\n if (this.BRACETYPE_ == null) {\n // ERROR: No opening brace for object\n // NEXT_STATE: ENTRY_OR_JUNK\n this.error_('No opening brace for object.');\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n } else {\n // SUCCESS: Parsed an entry key\n // NEXT_STATE: KV_KEY\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n AnotherIteration = true;\n this.STATE_ = this.STATES_.KV_KEY;\n this.PARSETMP_.Key= '';\n this.DATA_.Fields = {};\n }\n }\n } else {\n this.DATA_.EntryKey += c;\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n }\n break;\n\n // Start at first non-whitespace/comment character after entry key.\n // -- Populate this.PARSETMP_.Key\n case this.STATES_.KV_KEY:\n // Test for end of entry\n if ((c == '}' && this.BRACETYPE_ == '{') ||\n (c == ')' && this.BRACETYPE_ == '(')) {\n // SUCCESS: Parsed an entry, possible incomplete\n // NEXT_STATE: ENTRY_OR_JUNK\n this.processEntry_();\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n break;\n }\n if (/[\\-A-Za-z:]/.test(c)) {\n // Add to key\n this.PARSETMP_.Key += c;\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n } else {\n // Either end of key or we haven't encountered start of key\n if (this.PARSETMP_.Key.length < 1) {\n // Keep going till we see a key\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n } else {\n // SUCCESS: Found full key in K/V pair\n // NEXT_STATE: EQUALS\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.EQUALS;\n AnotherIteration = true;\n }\n }\n break;\n\n // Start at first non-alphabetic character after K/V pair key.\n case this.STATES_.EQUALS:\n if ((c == '}' && this.BRACETYPE_ == '{') ||\n (c == ')' && this.BRACETYPE_ == '(')) {\n // ERROR: K/V pair with key but no value\n // NEXT_STATE: ENTRY_OR_JUNK\n this.error_('Key-value pair has key \"' +\n this.PARSETMP_.Key + '\", but no value.');\n this.processEntry_();\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.ENTRY_OR_JUNK;\n break;\n }\n if (c == '=') {\n // SUCCESS: found an equal signs separating key and value\n // NEXT_STATE: KV_VALUE\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.KV_VALUE;\n this.PARSETMP_.Value = '';\n this.VALBRACES_ = { '\"' : [], '{' : [] };\n }\n break;\n\n // Start at first non-whitespace/comment character after '=' \n // -- Populate this.PARSETMP_.Value\n case this.STATES_.KV_VALUE:\n var delim = this.VALBRACES_;\n var val = this.PARSETMP_.Value;\n var doneParsingValue = false;\n\n // Test for special characters\n if (c == '\"' || c == '{' || c == '}' || c == ',') {\n if (c == ',') {\n // This comma can mean:\n // (1) just another comma literal\n // (2) end of a macro reference\n if (0 === delim['\"'].length + delim['{'].length) {\n // end of a macro reference\n var macro = this.PARSETMP_.Value.trim();\n if (macro in this.MACROS_) {\n // Successful macro reference\n this.PARSETMP_.Value = this.MACROS_[macro];\n } else {\n // Reference to an undefined macro\n this.error_('Reference to an undefined macro: '+macro);\n }\n doneParsingValue = true;\n }\n }\n if (c == '\"') {\n // This quote can mean:\n // (1) opening delimiter\n // (2) closing delimiter\n // (3) literal, if we have a '{' on the stack\n if (0 === delim['\"'].length + delim['{'].length) {\n // opening delimiter\n delim['\"'].push(this.CHAR_)\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n break;\n }\n if (delim['\"'].length == 1 && delim['{'].length == 0 &&\n (val.length==0 || val[val.length-1] != '\\\\')) {\n // closing delimiter\n doneParsingValue = true;\n } else {\n // literal, add to value\n }\n }\n if (c == '{') {\n // This brace can mean:\n // (1) opening delimiter\n // (2) stacked verbatim delimiter\n if (val.length == 0 || val[val.length-1] != '\\\\') {\n delim['{'].push(this.CHAR_)\n this.SKIPWS_ = false;\n this.SKIPCOMMENT_ = false;\n } else {\n // literal, add to value\n }\n }\n if (c == '}') {\n // This brace can mean:\n // (1) closing delimiter\n // (2) closing stacked verbatim delimiter\n // (3) end of object definition if value was a macro\n if (0 === delim['\"'].length + delim['{'].length) {\n // end of object definition, after macro\n var macro = this.PARSETMP_.Value.trim();\n if (macro in this.MACROS_) {\n // Successful macro reference\n this.PARSETMP_.Value = this.MACROS_[macro];\n } else {\n // Reference to an undefined macro\n this.error_('Reference to an undefined macro: '+macro);\n }\n AnotherIteration = true;\n doneParsingValue = true;\n } else {\n if (val.length == 0 || val[val.length-1] != '\\\\') {\n if (delim['{'].length > 0) {\n // pop stack for stacked verbatim delimiter\n delim['{'].splice(delim['{'].length-1, 1)\n if (0 == delim['{'].length + delim['\"'].length) {\n // closing delimiter\n doneParsingValue = true;\n } else {\n // end verbatim block\n }\n }\n } else {\n // literal, add to value\n }\n }\n }\n }\n\n // If here, then we are either done parsing the value or \n // have a literal that should be added to the value.\n if (doneParsingValue) {\n // SUCCESS: value parsed\n // NEXT_STATE: KV_KEY\n this.SKIPWS_ = true;\n this.SKIPCOMMENT_ = true;\n this.STATE_ = this.STATES_.KV_KEY;\n this.DATA_.Fields[this.PARSETMP_.Key] = this.PARSETMP_.Value;\n this.PARSETMP_ = { Key: '' };\n this.VALBRACES_ = null;\n } else {\n this.PARSETMP_.Value += c;\n }\n break;\n } // end switch (this.STATE_)\n } // end while(AnotherIteration)\n } // end function processCharacter \n\n /** @private */ this.CHARCONV_ = [\n [ /\\\\space /g, '\\u0020' ],\n [ /\\\\textdollar /g, '\\u0024' ],\n [ /\\\\textquotesingle /g, '\\u0027' ],\n [ /\\\\ast /g, '\\u002A' ],\n [ /\\\\textbackslash /g, '\\u005C' ],\n [ /\\\\\\^\\{\\}/g, '\\u005E' ],\n [ /\\\\textasciigrave /g, '\\u0060' ],\n [ /\\\\lbrace /g, '\\u007B' ],\n [ /\\\\vert /g, '\\u007C' ],\n [ /\\\\rbrace /g, '\\u007D' ],\n [ /\\\\textasciitilde /g, '\\u007E' ],\n [ /\\\\textexclamdown /g, '\\u00A1' ],\n [ /\\\\textcent /g, '\\u00A2' ],\n [ /\\\\textsterling /g, '\\u00A3' ],\n [ /\\\\textcurrency /g, '\\u00A4' ],\n [ /\\\\textyen /g, '\\u00A5' ],\n [ /\\\\textbrokenbar /g, '\\u00A6' ],\n [ /\\\\textsection /g, '\\u00A7' ],\n [ /\\\\textasciidieresis /g, '\\u00A8' ],\n [ /\\\\textcopyright /g, '\\u00A9' ],\n [ /\\\\textordfeminine /g, '\\u00AA' ],\n [ /\\\\guillemotleft /g, '\\u00AB' ],\n [ /\\\\lnot /g, '\\u00AC' ],\n [ /\\\\textregistered /g, '\\u00AE' ],\n [ /\\\\textasciimacron /g, '\\u00AF' ],\n [ /\\\\textdegree /g, '\\u00B0' ],\n [ /\\\\pm /g, '\\u00B1' ],\n [ /\\\\textasciiacute /g, '\\u00B4' ],\n [ /\\\\mathrm\\{\\\\mu\\}/g, '\\u00B5' ],\n [ /\\\\textparagraph /g, '\\u00B6' ],\n [ /\\\\cdot /g, '\\u00B7' ],\n [ /\\\\c\\{\\}/g, '\\u00B8' ],\n [ /\\\\textordmasculine /g, '\\u00BA' ],\n [ /\\\\guillemotright /g, '\\u00BB' ],\n [ /\\\\textonequarter /g, '\\u00BC' ],\n [ /\\\\textonehalf /g, '\\u00BD' ],\n [ /\\\\textthreequarters /g, '\\u00BE' ],\n [ /\\\\textquestiondown /g, '\\u00BF' ],\n [ /\\\\`\\{A\\}/g, '\\u00C0' ],\n [ /\\\\'\\{A\\}/g, '\\u00C1' ],\n [ /\\\\\\^\\{A\\}/g, '\\u00C2' ],\n [ /\\\\~\\{A\\}/g, '\\u00C3' ],\n [ /\\\\\"\\{A\\}/g, '\\u00C4' ],\n [ /\\\\AA /g, '\\u00C5' ],\n [ /\\\\AE /g, '\\u00C6' ],\n [ /\\\\c\\{C\\}/g, '\\u00C7' ],\n [ /\\\\`\\{E\\}/g, '\\u00C8' ],\n [ /\\\\'\\{E\\}/g, '\\u00C9' ],\n [ /\\\\\\^\\{E\\}/g, '\\u00CA' ],\n [ /\\\\\"\\{E\\}/g, '\\u00CB' ],\n [ /\\\\`\\{I\\}/g, '\\u00CC' ],\n [ /\\\\'\\{I\\}/g, '\\u00CD' ],\n [ /\\\\\\^\\{I\\}/g, '\\u00CE' ],\n [ /\\\\\"\\{I\\}/g, '\\u00CF' ],\n [ /\\\\DH /g, '\\u00D0' ],\n [ /\\\\~\\{N\\}/g, '\\u00D1' ],\n [ /\\\\`\\{O\\}/g, '\\u00D2' ],\n [ /\\\\'\\{O\\}/g, '\\u00D3' ],\n [ /\\\\\\^\\{O\\}/g, '\\u00D4' ],\n [ /\\\\~\\{O\\}/g, '\\u00D5' ],\n [ /\\\\\"\\{O\\}/g, '\\u00D6' ],\n [ /\\\\texttimes /g, '\\u00D7' ],\n [ /\\\\O /g, '\\u00D8' ],\n [ /\\\\`\\{U\\}/g, '\\u00D9' ],\n [ /\\\\'\\{U\\}/g, '\\u00DA' ],\n [ /\\\\\\^\\{U\\}/g, '\\u00DB' ],\n [ /\\\\\"\\{U\\}/g, '\\u00DC' ],\n [ /\\\\'\\{Y\\}/g, '\\u00DD' ],\n [ /\\\\TH /g, '\\u00DE' ],\n [ /\\\\ss /g, '\\u00DF' ],\n [ /\\\\`\\{a\\}/g, '\\u00E0' ],\n [ /\\\\'\\{a\\}/g, '\\u00E1' ],\n [ /\\\\\\^\\{a\\}/g, '\\u00E2' ],\n [ /\\\\~\\{a\\}/g, '\\u00E3' ],\n [ /\\\\\"\\{a\\}/g, '\\u00E4' ],\n [ /\\\\aa /g, '\\u00E5' ],\n [ /\\\\ae /g, '\\u00E6' ],\n [ /\\\\c\\{c\\}/g, '\\u00E7' ],\n [ /\\\\`\\{e\\}/g, '\\u00E8' ],\n [ /\\\\'\\{e\\}/g, '\\u00E9' ],\n [ /\\\\\\^\\{e\\}/g, '\\u00EA' ],\n [ /\\\\\"\\{e\\}/g, '\\u00EB' ],\n [ /\\\\`\\{\\\\i\\}/g, '\\u00EC' ],\n [ /\\\\'\\{\\\\i\\}/g, '\\u00ED' ],\n [ /\\\\\\^\\{\\\\i\\}/g, '\\u00EE' ],\n [ /\\\\\"\\{\\\\i\\}/g, '\\u00EF' ],\n [ /\\\\dh /g, '\\u00F0' ],\n [ /\\\\~\\{n\\}/g, '\\u00F1' ],\n [ /\\\\`\\{o\\}/g, '\\u00F2' ],\n [ /\\\\'\\{o\\}/g, '\\u00F3' ],\n [ /\\\\\\^\\{o\\}/g, '\\u00F4' ],\n [ /\\\\~\\{o\\}/g, '\\u00F5' ],\n [ /\\\\\"\\{o\\}/g, '\\u00F6' ],\n [ /\\\\div /g, '\\u00F7' ],\n [ /\\\\o /g, '\\u00F8' ],\n [ /\\\\`\\{u\\}/g, '\\u00F9' ],\n [ /\\\\'\\{u\\}/g, '\\u00FA' ],\n [ /\\\\\\^\\{u\\}/g, '\\u00FB' ],\n [ /\\\\\"\\{u\\}/g, '\\u00FC' ],\n [ /\\\\'\\{y\\}/g, '\\u00FD' ],\n [ /\\\\th /g, '\\u00FE' ],\n [ /\\\\\"\\{y\\}/g, '\\u00FF' ],\n [ /\\\\=\\{A\\}/g, '\\u0100' ],\n [ /\\\\=\\{a\\}/g, '\\u0101' ],\n [ /\\\\u\\{A\\}/g, '\\u0102' ],\n [ /\\\\u\\{a\\}/g, '\\u0103' ],\n [ /\\\\k\\{A\\}/g, '\\u0104' ],\n [ /\\\\k\\{a\\}/g, '\\u0105' ],\n [ /\\\\'\\{C\\}/g, '\\u0106' ],\n [ /\\\\'\\{c\\}/g, '\\u0107' ],\n [ /\\\\\\^\\{C\\}/g, '\\u0108' ],\n [ /\\\\\\^\\{c\\}/g, '\\u0109' ],\n [ /\\\\.\\{C\\}/g, '\\u010A' ],\n [ /\\\\.\\{c\\}/g, '\\u010B' ],\n [ /\\\\v\\{C\\}/g, '\\u010C' ],\n [ /\\\\v\\{c\\}/g, '\\u010D' ],\n [ /\\\\v\\{D\\}/g, '\\u010E' ],\n [ /\\\\v\\{d\\}/g, '\\u010F' ],\n [ /\\\\DJ /g, '\\u0110' ],\n [ /\\\\dj /g, '\\u0111' ],\n [ /\\\\=\\{E\\}/g, '\\u0112' ],\n [ /\\\\=\\{e\\}/g, '\\u0113' ],\n [ /\\\\u\\{E\\}/g, '\\u0114' ],\n [ /\\\\u\\{e\\}/g, '\\u0115' ],\n [ /\\\\.\\{E\\}/g, '\\u0116' ],\n [ /\\\\.\\{e\\}/g, '\\u0117' ],\n [ /\\\\k\\{E\\}/g, '\\u0118' ],\n [ /\\\\k\\{e\\}/g, '\\u0119' ],\n [ /\\\\v\\{E\\}/g, '\\u011A' ],\n [ /\\\\v\\{e\\}/g, '\\u011B' ],\n [ /\\\\\\^\\{G\\}/g, '\\u011C' ],\n [ /\\\\\\^\\{g\\}/g, '\\u011D' ],\n [ /\\\\u\\{G\\}/g, '\\u011E' ],\n [ /\\\\u\\{g\\}/g, '\\u011F' ],\n [ /\\\\.\\{G\\}/g, '\\u0120' ],\n [ /\\\\.\\{g\\}/g, '\\u0121' ],\n [ /\\\\c\\{G\\}/g, '\\u0122' ],\n [ /\\\\c\\{g\\}/g, '\\u0123' ],\n [ /\\\\\\^\\{H\\}/g, '\\u0124' ],\n [ /\\\\\\^\\{h\\}/g, '\\u0125' ],\n [ /\\\\Elzxh /g, '\\u0127' ],\n [ /\\\\~\\{I\\}/g, '\\u0128' ],\n [ /\\\\~\\{\\\\i\\}/g, '\\u0129' ],\n [ /\\\\=\\{I\\}/g, '\\u012A' ],\n [ /\\\\=\\{\\\\i\\}/g, '\\u012B' ],\n [ /\\\\u\\{I\\}/g, '\\u012C' ],\n [ /\\\\u\\{\\\\i\\}/g, '\\u012D' ],\n [ /\\\\k\\{I\\}/g, '\\u012E' ],\n [ /\\\\k\\{i\\}/g, '\\u012F' ],\n [ /\\\\.\\{I\\}/g, '\\u0130' ],\n [ /\\\\i /g, '\\u0131' ],\n [ /\\\\\\^\\{J\\}/g, '\\u0134' ],\n [ /\\\\\\^\\{\\\\j\\}/g, '\\u0135' ],\n [ /\\\\c\\{K\\}/g, '\\u0136' ],\n [ /\\\\c\\{k\\}/g, '\\u0137' ],\n [ /\\\\'\\{L\\}/g, '\\u0139' ],\n [ /\\\\'\\{l\\}/g, '\\u013A' ],\n [ /\\\\c\\{L\\}/g, '\\u013B' ],\n [ /\\\\c\\{l\\}/g, '\\u013C' ],\n [ /\\\\v\\{L\\}/g, '\\u013D' ],\n [ /\\\\v\\{l\\}/g, '\\u013E' ],\n [ /\\\\L /g, '\\u0141' ],\n [ /\\\\l /g, '\\u0142' ],\n [ /\\\\'\\{N\\}/g, '\\u0143' ],\n [ /\\\\'\\{n\\}/g, '\\u0144' ],\n [ /\\\\c\\{N\\}/g, '\\u0145' ],\n [ /\\\\c\\{n\\}/g, '\\u0146' ],\n [ /\\\\v\\{N\\}/g, '\\u0147' ],\n [ /\\\\v\\{n\\}/g, '\\u0148' ],\n [ /\\\\NG /g, '\\u014A' ],\n [ /\\\\ng /g, '\\u014B' ],\n [ /\\\\=\\{O\\}/g, '\\u014C' ],\n [ /\\\\=\\{o\\}/g, '\\u014D' ],\n [ /\\\\u\\{O\\}/g, '\\u014E' ],\n [ /\\\\u\\{o\\}/g, '\\u014F' ],\n [ /\\\\H\\{O\\}/g, '\\u0150' ],\n [ /\\\\H\\{o\\}/g, '\\u0151' ],\n [ /\\\\OE /g, '\\u0152' ],\n [ /\\\\oe /g, '\\u0153' ],\n [ /\\\\'\\{R\\}/g, '\\u0154' ],\n [ /\\\\'\\{r\\}/g, '\\u0155' ],\n [ /\\\\c\\{R\\}/g, '\\u0156' ],\n [ /\\\\c\\{r\\}/g, '\\u0157' ],\n [ /\\\\v\\{R\\}/g, '\\u0158' ],\n [ /\\\\v\\{r\\}/g, '\\u0159' ],\n [ /\\\\'\\{S\\}/g, '\\u015A' ],\n [ /\\\\'\\{s\\}/g, '\\u015B' ],\n [ /\\\\\\^\\{S\\}/g, '\\u015C' ],\n [ /\\\\\\^\\{s\\}/g, '\\u015D' ],\n [ /\\\\c\\{S\\}/g, '\\u015E' ],\n [ /\\\\c\\{s\\}/g, '\\u015F' ],\n [ /\\\\v\\{S\\}/g, '\\u0160' ],\n [ /\\\\v\\{s\\}/g, '\\u0161' ],\n [ /\\\\c\\{T\\}/g, '\\u0162' ],\n [ /\\\\c\\{t\\}/g, '\\u0163' ],\n [ /\\\\v\\{T\\}/g, '\\u0164' ],\n [ /\\\\v\\{t\\}/g, '\\u0165' ],\n [ /\\\\~\\{U\\}/g, '\\u0168' ],\n [ /\\\\~\\{u\\}/g, '\\u0169' ],\n [ /\\\\=\\{U\\}/g, '\\u016A' ],\n [ /\\\\=\\{u\\}/g, '\\u016B' ],\n [ /\\\\u\\{U\\}/g, '\\u016C' ],\n [ /\\\\u\\{u\\}/g, '\\u016D' ],\n [ /\\\\r\\{U\\}/g, '\\u016E' ],\n [ /\\\\r\\{u\\}/g, '\\u016F' ],\n [ /\\\\H\\{U\\}/g, '\\u0170' ],\n [ /\\\\H\\{u\\}/g, '\\u0171' ],\n [ /\\\\k\\{U\\}/g, '\\u0172' ],\n [ /\\\\k\\{u\\}/g, '\\u0173' ],\n [ /\\\\\\^\\{W\\}/g, '\\u0174' ],\n [ /\\\\\\^\\{w\\}/g, '\\u0175' ],\n [ /\\\\\\^\\{Y\\}/g, '\\u0176' ],\n [ /\\\\\\^\\{y\\}/g, '\\u0177' ],\n [ /\\\\\"\\{Y\\}/g, '\\u0178' ],\n [ /\\\\'\\{Z\\}/g, '\\u0179' ],\n [ /\\\\'\\{z\\}/g, '\\u017A' ],\n [ /\\\\.\\{Z\\}/g, '\\u017B' ],\n [ /\\\\.\\{z\\}/g, '\\u017C' ],\n [ /\\\\v\\{Z\\}/g, '\\u017D' ],\n [ /\\\\v\\{z\\}/g, '\\u017E' ],\n [ /\\\\texthvlig /g, '\\u0195' ],\n [ /\\\\textnrleg /g, '\\u019E' ],\n [ /\\\\eth /g, '\\u01AA' ],\n [ /\\\\textdoublepipe /g, '\\u01C2' ],\n [ /\\\\'\\{g\\}/g, '\\u01F5' ],\n [ /\\\\Elztrna /g, '\\u0250' ],\n [ /\\\\Elztrnsa /g, '\\u0252' ],\n [ /\\\\Elzopeno /g, '\\u0254' ],\n [ /\\\\Elzrtld /g, '\\u0256' ],\n [ /\\\\Elzschwa /g, '\\u0259' ],\n [ /\\\\varepsilon /g, '\\u025B' ],\n [ /\\\\Elzpgamma /g, '\\u0263' ],\n [ /\\\\Elzpbgam /g, '\\u0264' ],\n [ /\\\\Elztrnh /g, '\\u0265' ],\n [ /\\\\Elzbtdl /g, '\\u026C' ],\n [ /\\\\Elzrtll /g, '\\u026D' ],\n [ /\\\\Elztrnm /g, '\\u026F' ],\n [ /\\\\Elztrnmlr /g, '\\u0270' ],\n [ /\\\\Elzltlmr /g, '\\u0271' ],\n [ /\\\\Elzltln /g, '\\u0272' ],\n [ /\\\\Elzrtln /g, '\\u0273' ],\n [ /\\\\Elzclomeg /g, '\\u0277' ],\n [ /\\\\textphi /g, '\\u0278' ],\n [ /\\\\Elztrnr /g, '\\u0279' ],\n [ /\\\\Elztrnrl /g, '\\u027A' ],\n [ /\\\\Elzrttrnr /g, '\\u027B' ],\n [ /\\\\Elzrl /g, '\\u027C' ],\n [ /\\\\Elzrtlr /g, '\\u027D' ],\n [ /\\\\Elzfhr /g, '\\u027E' ],\n [ /\\\\Elzrtls /g, '\\u0282' ],\n [ /\\\\Elzesh /g, '\\u0283' ],\n [ /\\\\Elztrnt /g, '\\u0287' ],\n [ /\\\\Elzrtlt /g, '\\u0288' ],\n [ /\\\\Elzpupsil /g, '\\u028A' ],\n [ /\\\\Elzpscrv /g, '\\u028B' ],\n [ /\\\\Elzinvv /g, '\\u028C' ],\n [ /\\\\Elzinvw /g, '\\u028D' ],\n [ /\\\\Elztrny /g, '\\u028E' ],\n [ /\\\\Elzrtlz /g, '\\u0290' ],\n [ /\\\\Elzyogh /g, '\\u0292' ],\n [ /\\\\Elzglst /g, '\\u0294' ],\n [ /\\\\Elzreglst /g, '\\u0295' ],\n [ /\\\\Elzinglst /g, '\\u0296' ],\n [ /\\\\textturnk /g, '\\u029E' ],\n [ /\\\\Elzdyogh /g, '\\u02A4' ],\n [ /\\\\Elztesh /g, '\\u02A7' ],\n [ /\\\\textasciicaron /g, '\\u02C7' ],\n [ /\\\\Elzverts /g, '\\u02C8' ],\n [ /\\\\Elzverti /g, '\\u02CC' ],\n [ /\\\\Elzlmrk /g, '\\u02D0' ],\n [ /\\\\Elzhlmrk /g, '\\u02D1' ],\n [ /\\\\Elzsbrhr /g, '\\u02D2' ],\n [ /\\\\Elzsblhr /g, '\\u02D3' ],\n [ /\\\\Elzrais /g, '\\u02D4' ],\n [ /\\\\Elzlow /g, '\\u02D5' ],\n [ /\\\\textasciibreve /g, '\\u02D8' ],\n [ /\\\\textperiodcentered /g, '\\u02D9' ],\n [ /\\\\r\\{\\}/g, '\\u02DA' ],\n [ /\\\\k\\{\\}/g, '\\u02DB' ],\n [ /\\\\texttildelow /g, '\\u02DC' ],\n [ /\\\\H\\{\\}/g, '\\u02DD' ],\n [ /\\\\tone\\{55\\}/g, '\\u02E5' ],\n [ /\\\\tone\\{44\\}/g, '\\u02E6' ],\n [ /\\\\tone\\{33\\}/g, '\\u02E7' ],\n [ /\\\\tone\\{22\\}/g, '\\u02E8' ],\n [ /\\\\tone\\{11\\}/g, '\\u02E9' ],\n [ /\\\\cyrchar\\\\C/g, '\\u030F' ],\n [ /\\\\Elzpalh /g, '\\u0321' ],\n [ /\\\\Elzrh /g, '\\u0322' ],\n [ /\\\\Elzsbbrg /g, '\\u032A' ],\n [ /\\\\Elzxl /g, '\\u0335' ],\n [ /\\\\Elzbar /g, '\\u0336' ],\n [ /\\\\'\\{A\\}/g, '\\u0386' ],\n [ /\\\\'\\{E\\}/g, '\\u0388' ],\n [ /\\\\'\\{H\\}/g, '\\u0389' ],\n [ /\\\\'\\{\\}\\{I\\}/g, '\\u038A' ],\n [ /\\\\'\\{\\}O/g, '\\u038C' ],\n [ /\\\\mathrm\\{'Y\\}/g, '\\u038E' ],\n [ /\\\\mathrm\\{'\\\\Omega\\}/g, '\\u038F' ],\n [ /\\\\acute\\{\\\\ddot\\{\\\\iota\\}\\}/g, '\\u0390' ],\n [ /\\\\Alpha /g, '\\u0391' ],\n [ /\\\\Beta /g, '\\u0392' ],\n [ /\\\\Gamma /g, '\\u0393' ],\n [ /\\\\Delta /g, '\\u0394' ],\n [ /\\\\Epsilon /g, '\\u0395' ],\n [ /\\\\Zeta /g, '\\u0396' ],\n [ /\\\\Eta /g, '\\u0397' ],\n [ /\\\\Theta /g, '\\u0398' ],\n [ /\\\\Iota /g, '\\u0399' ],\n [ /\\\\Kappa /g, '\\u039A' ],\n [ /\\\\Lambda /g, '\\u039B' ],\n [ /\\\\Xi /g, '\\u039E' ],\n [ /\\\\Pi /g, '\\u03A0' ],\n [ /\\\\Rho /g, '\\u03A1' ],\n [ /\\\\Sigma /g, '\\u03A3' ],\n [ /\\\\Tau /g, '\\u03A4' ],\n [ /\\\\Upsilon /g, '\\u03A5' ],\n [ /\\\\Phi /g, '\\u03A6' ],\n [ /\\\\Chi /g, '\\u03A7' ],\n [ /\\\\Psi /g, '\\u03A8' ],\n [ /\\\\Omega /g, '\\u03A9' ],\n [ /\\\\mathrm\\{\\\\ddot\\{I\\}\\}/g, '\\u03AA' ],\n [ /\\\\mathrm\\{\\\\ddot\\{Y\\}\\}/g, '\\u03AB' ],\n [ /\\\\'\\{\\$\\\\alpha\\$\\}/g, '\\u03AC' ],\n [ /\\\\acute\\{\\\\epsilon\\}/g, '\\u03AD' ],\n [ /\\\\acute\\{\\\\eta\\}/g, '\\u03AE' ],\n [ /\\\\acute\\{\\\\iota\\}/g, '\\u03AF' ],\n [ /\\\\acute\\{\\\\ddot\\{\\\\upsilon\\}\\}/g, '\\u03B0' ],\n [ /\\\\alpha /g, '\\u03B1' ],\n [ /\\\\beta /g, '\\u03B2' ],\n [ /\\\\gamma /g, '\\u03B3' ],\n [ /\\\\delta /g, '\\u03B4' ],\n [ /\\\\epsilon /g, '\\u03B5' ],\n [ /\\\\zeta /g, '\\u03B6' ],\n [ /\\\\eta /g, '\\u03B7' ],\n [ /\\\\texttheta /g, '\\u03B8' ],\n [ /\\\\iota /g, '\\u03B9' ],\n [ /\\\\kappa /g, '\\u03BA' ],\n [ /\\\\lambda /g, '\\u03BB' ],\n [ /\\\\mu /g, '\\u03BC' ],\n [ /\\\\nu /g, '\\u03BD' ],\n [ /\\\\xi /g, '\\u03BE' ],\n [ /\\\\pi /g, '\\u03C0' ],\n [ /\\\\rho /g, '\\u03C1' ],\n [ /\\\\varsigma /g, '\\u03C2' ],\n [ /\\\\sigma /g, '\\u03C3' ],\n [ /\\\\tau /g, '\\u03C4' ],\n [ /\\\\upsilon /g, '\\u03C5' ],\n [ /\\\\varphi /g, '\\u03C6' ],\n [ /\\\\chi /g, '\\u03C7' ],\n [ /\\\\psi /g, '\\u03C8' ],\n [ /\\\\omega /g, '\\u03C9' ],\n [ /\\\\ddot\\{\\\\iota\\}/g, '\\u03CA' ],\n [ /\\\\ddot\\{\\\\upsilon\\}/g, '\\u03CB' ],\n [ /\\\\'\\{o\\}/g, '\\u03CC' ],\n [ /\\\\acute\\{\\\\upsilon\\}/g, '\\u03CD' ],\n [ /\\\\acute\\{\\\\omega\\}/g, '\\u03CE' ],\n [ /\\\\Pisymbol\\{ppi022\\}\\{87\\}/g, '\\u03D0' ],\n [ /\\\\textvartheta /g, '\\u03D1' ],\n [ /\\\\Upsilon /g, '\\u03D2' ],\n [ /\\\\phi /g, '\\u03D5' ],\n [ /\\\\varpi /g, '\\u03D6' ],\n [ /\\\\Stigma /g, '\\u03DA' ],\n [ /\\\\Digamma /g, '\\u03DC' ],\n [ /\\\\digamma /g, '\\u03DD' ],\n [ /\\\\Koppa /g, '\\u03DE' ],\n [ /\\\\Sampi /g, '\\u03E0' ],\n [ /\\\\varkappa /g, '\\u03F0' ],\n [ /\\\\varrho /g, '\\u03F1' ],\n [ /\\\\textTheta /g, '\\u03F4' ],\n [ /\\\\backepsilon /g, '\\u03F6' ],\n [ /\\\\cyrchar\\\\CYRYO /g, '\\u0401' ],\n [ /\\\\cyrchar\\\\CYRDJE /g, '\\u0402' ],\n [ /\\\\cyrchar\\{\\\\'\\\\CYRG\\}/g, '\\u0403' ],\n [ /\\\\cyrchar\\\\CYRIE /g, '\\u0404' ],\n [ /\\\\cyrchar\\\\CYRDZE /g, '\\u0405' ],\n [ /\\\\cyrchar\\\\CYRII /g, '\\u0406' ],\n [ /\\\\cyrchar\\\\CYRYI /g, '\\u0407' ],\n [ /\\\\cyrchar\\\\CYRJE /g, '\\u0408' ],\n [ /\\\\cyrchar\\\\CYRLJE /g, '\\u0409' ],\n [ /\\\\cyrchar\\\\CYRNJE /g, '\\u040A' ],\n [ /\\\\cyrchar\\\\CYRTSHE /g, '\\u040B' ],\n [ /\\\\cyrchar\\{\\\\'\\\\CYRK\\}/g, '\\u040C' ],\n [ /\\\\cyrchar\\\\CYRUSHRT /g, '\\u040E' ],\n [ /\\\\cyrchar\\\\CYRDZHE /g, '\\u040F' ],\n [ /\\\\cyrchar\\\\CYRA /g, '\\u0410' ],\n [ /\\\\cyrchar\\\\CYRB /g, '\\u0411' ],\n [ /\\\\cyrchar\\\\CYRV /g, '\\u0412' ],\n [ /\\\\cyrchar\\\\CYRG /g, '\\u0413' ],\n [ /\\\\cyrchar\\\\CYRD /g, '\\u0414' ],\n [ /\\\\cyrchar\\\\CYRE /g, '\\u0415' ],\n [ /\\\\cyrchar\\\\CYRZH /g, '\\u0416' ],\n [ /\\\\cyrchar\\\\CYRZ /g, '\\u0417' ],\n [ /\\\\cyrchar\\\\CYRI /g, '\\u0418' ],\n [ /\\\\cyrchar\\\\CYRISHRT /g, '\\u0419' ],\n [ /\\\\cyrchar\\\\CYRK /g, '\\u041A' ],\n [ /\\\\cyrchar\\\\CYRL /g, '\\u041B' ],\n [ /\\\\cyrchar\\\\CYRM /g, '\\u041C' ],\n [ /\\\\cyrchar\\\\CYRN /g, '\\u041D' ],\n [ /\\\\cyrchar\\\\CYRO /g, '\\u041E' ],\n [ /\\\\cyrchar\\\\CYRP /g, '\\u041F' ],\n [ /\\\\cyrchar\\\\CYRR /g, '\\u0420' ],\n [ /\\\\cyrchar\\\\CYRS /g, '\\u0421' ],\n [ /\\\\cyrchar\\\\CYRT /g, '\\u0422' ],\n [ /\\\\cyrchar\\\\CYRU /g, '\\u0423' ],\n [ /\\\\cyrchar\\\\CYRF /g, '\\u0424' ],\n [ /\\\\cyrchar\\\\CYRH /g, '\\u0425' ],\n [ /\\\\cyrchar\\\\CYRC /g, '\\u0426' ],\n [ /\\\\cyrchar\\\\CYRCH /g, '\\u0427' ],\n [ /\\\\cyrchar\\\\CYRSH /g, '\\u0428' ],\n [ /\\\\cyrchar\\\\CYRSHCH /g, '\\u0429' ],\n [ /\\\\cyrchar\\\\CYRHRDSN /g, '\\u042A' ],\n [ /\\\\cyrchar\\\\CYRERY /g, '\\u042B' ],\n [ /\\\\cyrchar\\\\CYRSFTSN /g, '\\u042C' ],\n [ /\\\\cyrchar\\\\CYREREV /g, '\\u042D' ],\n [ /\\\\cyrchar\\\\CYRYU /g, '\\u042E' ],\n [ /\\\\cyrchar\\\\CYRYA /g, '\\u042F' ],\n [ /\\\\cyrchar\\\\cyra /g, '\\u0430' ],\n [ /\\\\cyrchar\\\\cyrb /g, '\\u0431' ],\n [ /\\\\cyrchar\\\\cyrv /g, '\\u0432' ],\n [ /\\\\cyrchar\\\\cyrg /g, '\\u0433' ],\n [ /\\\\cyrchar\\\\cyrd /g, '\\u0434' ],\n [ /\\\\cyrchar\\\\cyre /g, '\\u0435' ],\n [ /\\\\cyrchar\\\\cyrzh /g, '\\u0436' ],\n [ /\\\\cyrchar\\\\cyrz /g, '\\u0437' ],\n [ /\\\\cyrchar\\\\cyri /g, '\\u0438' ],\n [ /\\\\cyrchar\\\\cyrishrt /g, '\\u0439' ],\n [ /\\\\cyrchar\\\\cyrk /g, '\\u043A' ],\n [ /\\\\cyrchar\\\\cyrl /g, '\\u043B' ],\n [ /\\\\cyrchar\\\\cyrm /g, '\\u043C' ],\n [ /\\\\cyrchar\\\\cyrn /g, '\\u043D' ],\n [ /\\\\cyrchar\\\\cyro /g, '\\u043E' ],\n [ /\\\\cyrchar\\\\cyrp /g, '\\u043F' ],\n [ /\\\\cyrchar\\\\cyrr /g, '\\u0440' ],\n [ /\\\\cyrchar\\\\cyrs /g, '\\u0441' ],\n [ /\\\\cyrchar\\\\cyrt /g, '\\u0442' ],\n [ /\\\\cyrchar\\\\cyru /g, '\\u0443' ],\n [ /\\\\cyrchar\\\\cyrf /g, '\\u0444' ],\n [ /\\\\cyrchar\\\\cyrh /g, '\\u0445' ],\n [ /\\\\cyrchar\\\\cyrc /g, '\\u0446' ],\n [ /\\\\cyrchar\\\\cyrch /g, '\\u0447' ],\n [ /\\\\cyrchar\\\\cyrsh /g, '\\u0448' ],\n [ /\\\\cyrchar\\\\cyrshch /g, '\\u0449' ],\n [ /\\\\cyrchar\\\\cyrhrdsn /g, '\\u044A' ],\n [ /\\\\cyrchar\\\\cyrery /g, '\\u044B' ],\n [ /\\\\cyrchar\\\\cyrsftsn /g, '\\u044C' ],\n [ /\\\\cyrchar\\\\cyrerev /g, '\\u044D' ],\n [ /\\\\cyrchar\\\\cyryu /g, '\\u044E' ],\n [ /\\\\cyrchar\\\\cyrya /g, '\\u044F' ],\n [ /\\\\cyrchar\\\\cyryo /g, '\\u0451' ],\n [ /\\\\cyrchar\\\\cyrdje /g, '\\u0452' ],\n [ /\\\\cyrchar\\{\\\\'\\\\cyrg\\}/g, '\\u0453' ],\n [ /\\\\cyrchar\\\\cyrie /g, '\\u0454' ],\n [ /\\\\cyrchar\\\\cyrdze /g, '\\u0455' ],\n [ /\\\\cyrchar\\\\cyrii /g, '\\u0456' ],\n [ /\\\\cyrchar\\\\cyryi /g, '\\u0457' ],\n [ /\\\\cyrchar\\\\cyrje /g, '\\u0458' ],\n [ /\\\\cyrchar\\\\cyrlje /g, '\\u0459' ],\n [ /\\\\cyrchar\\\\cyrnje /g, '\\u045A' ],\n [ /\\\\cyrchar\\\\cyrtshe /g, '\\u045B' ],\n [ /\\\\cyrchar\\{\\\\'\\\\cyrk\\}/g, '\\u045C' ],\n [ /\\\\cyrchar\\\\cyrushrt /g, '\\u045E' ],\n [ /\\\\cyrchar\\\\cyrdzhe /g, '\\u045F' ],\n [ /\\\\cyrchar\\\\CYROMEGA /g, '\\u0460' ],\n [ /\\\\cyrchar\\\\cyromega /g, '\\u0461' ],\n [ /\\\\cyrchar\\\\CYRYAT /g, '\\u0462' ],\n [ /\\\\cyrchar\\\\CYRIOTE /g, '\\u0464' ],\n [ /\\\\cyrchar\\\\cyriote /g, '\\u0465' ],\n [ /\\\\cyrchar\\\\CYRLYUS /g, '\\u0466' ],\n [ /\\\\cyrchar\\\\cyrlyus /g, '\\u0467' ],\n [ /\\\\cyrchar\\\\CYRIOTLYUS /g, '\\u0468' ],\n [ /\\\\cyrchar\\\\cyriotlyus /g, '\\u0469' ],\n [ /\\\\cyrchar\\\\CYRBYUS /g, '\\u046A' ],\n [ /\\\\cyrchar\\\\CYRIOTBYUS /g, '\\u046C' ],\n [ /\\\\cyrchar\\\\cyriotbyus /g, '\\u046D' ],\n [ /\\\\cyrchar\\\\CYRKSI /g, '\\u046E' ],\n [ /\\\\cyrchar\\\\cyrksi /g, '\\u046F' ],\n [ /\\\\cyrchar\\\\CYRPSI /g, '\\u0470' ],\n [ /\\\\cyrchar\\\\cyrpsi /g, '\\u0471' ],\n [ /\\\\cyrchar\\\\CYRFITA /g, '\\u0472' ],\n [ /\\\\cyrchar\\\\CYRIZH /g, '\\u0474' ],\n [ /\\\\cyrchar\\\\CYRUK /g, '\\u0478' ],\n [ /\\\\cyrchar\\\\cyruk /g, '\\u0479' ],\n [ /\\\\cyrchar\\\\CYROMEGARND /g, '\\u047A' ],\n [ /\\\\cyrchar\\\\cyromegarnd /g, '\\u047B' ],\n [ /\\\\cyrchar\\\\CYROMEGATITLO /g, '\\u047C' ],\n [ /\\\\cyrchar\\\\cyromegatitlo /g, '\\u047D' ],\n [ /\\\\cyrchar\\\\CYROT /g, '\\u047E' ],\n [ /\\\\cyrchar\\\\cyrot /g, '\\u047F' ],\n [ /\\\\cyrchar\\\\CYRKOPPA /g, '\\u0480' ],\n [ /\\\\cyrchar\\\\cyrkoppa /g, '\\u0481' ],\n [ /\\\\cyrchar\\\\cyrthousands /g, '\\u0482' ],\n [ /\\\\cyrchar\\\\cyrhundredthousands /g, '\\u0488' ],\n [ /\\\\cyrchar\\\\cyrmillions /g, '\\u0489' ],\n [ /\\\\cyrchar\\\\CYRSEMISFTSN /g, '\\u048C' ],\n [ /\\\\cyrchar\\\\cyrsemisftsn /g, '\\u048D' ],\n [ /\\\\cyrchar\\\\CYRRTICK /g, '\\u048E' ],\n [ /\\\\cyrchar\\\\cyrrtick /g, '\\u048F' ],\n [ /\\\\cyrchar\\\\CYRGUP /g, '\\u0490' ],\n [ /\\\\cyrchar\\\\cyrgup /g, '\\u0491' ],\n [ /\\\\cyrchar\\\\CYRGHCRS /g, '\\u0492' ],\n [ /\\\\cyrchar\\\\cyrghcrs /g, '\\u0493' ],\n [ /\\\\cyrchar\\\\CYRGHK /g, '\\u0494' ],\n [ /\\\\cyrchar\\\\cyrghk /g, '\\u0495' ],\n [ /\\\\cyrchar\\\\CYRZHDSC /g, '\\u0496' ],\n [ /\\\\cyrchar\\\\cyrzhdsc /g, '\\u0497' ],\n [ /\\\\cyrchar\\\\CYRZDSC /g, '\\u0498' ],\n [ /\\\\cyrchar\\\\cyrzdsc /g, '\\u0499' ],\n [ /\\\\cyrchar\\\\CYRKDSC /g, '\\u049A' ],\n [ /\\\\cyrchar\\\\cyrkdsc /g, '\\u049B' ],\n [ /\\\\cyrchar\\\\CYRKVCRS /g, '\\u049C' ],\n [ /\\\\cyrchar\\\\cyrkvcrs /g, '\\u049D' ],\n [ /\\\\cyrchar\\\\CYRKHCRS /g, '\\u049E' ],\n [ /\\\\cyrchar\\\\cyrkhcrs /g, '\\u049F' ],\n [ /\\\\cyrchar\\\\CYRKBEAK /g, '\\u04A0' ],\n [ /\\\\cyrchar\\\\cyrkbeak /g, '\\u04A1' ],\n [ /\\\\cyrchar\\\\CYRNDSC /g, '\\u04A2' ],\n [ /\\\\cyrchar\\\\cyrndsc /g, '\\u04A3' ],\n [ /\\\\cyrchar\\\\CYRNG /g, '\\u04A4' ],\n [ /\\\\cyrchar\\\\cyrng /g, '\\u04A5' ],\n [ /\\\\cyrchar\\\\CYRPHK /g, '\\u04A6' ],\n [ /\\\\cyrchar\\\\cyrphk /g, '\\u04A7' ],\n [ /\\\\cyrchar\\\\CYRABHHA /g, '\\u04A8' ],\n [ /\\\\cyrchar\\\\cyrabhha /g, '\\u04A9' ],\n [ /\\\\cyrchar\\\\CYRSDSC /g, '\\u04AA' ],\n [ /\\\\cyrchar\\\\cyrsdsc /g, '\\u04AB' ],\n [ /\\\\cyrchar\\\\CYRTDSC /g, '\\u04AC' ],\n [ /\\\\cyrchar\\\\cyrtdsc /g, '\\u04AD' ],\n [ /\\\\cyrchar\\\\CYRY /g, '\\u04AE' ],\n [ /\\\\cyrchar\\\\cyry /g, '\\u04AF' ],\n [ /\\\\cyrchar\\\\CYRYHCRS /g, '\\u04B0' ],\n [ /\\\\cyrchar\\\\cyryhcrs /g, '\\u04B1' ],\n [ /\\\\cyrchar\\\\CYRHDSC /g, '\\u04B2' ],\n [ /\\\\cyrchar\\\\cyrhdsc /g, '\\u04B3' ],\n [ /\\\\cyrchar\\\\CYRTETSE /g, '\\u04B4' ],\n [ /\\\\cyrchar\\\\cyrtetse /g, '\\u04B5' ],\n [ /\\\\cyrchar\\\\CYRCHRDSC /g, '\\u04B6' ],\n [ /\\\\cyrchar\\\\cyrchrdsc /g, '\\u04B7' ],\n [ /\\\\cyrchar\\\\CYRCHVCRS /g, '\\u04B8' ],\n [ /\\\\cyrchar\\\\cyrchvcrs /g, '\\u04B9' ],\n [ /\\\\cyrchar\\\\CYRSHHA /g, '\\u04BA' ],\n [ /\\\\cyrchar\\\\cyrshha /g, '\\u04BB' ],\n [ /\\\\cyrchar\\\\CYRABHCH /g, '\\u04BC' ],\n [ /\\\\cyrchar\\\\cyrabhch /g, '\\u04BD' ],\n [ /\\\\cyrchar\\\\CYRABHCHDSC /g, '\\u04BE' ],\n [ /\\\\cyrchar\\\\cyrabhchdsc /g, '\\u04BF' ],\n [ /\\\\cyrchar\\\\CYRpalochka /g, '\\u04C0' ],\n [ /\\\\cyrchar\\\\CYRKHK /g, '\\u04C3' ],\n [ /\\\\cyrchar\\\\cyrkhk /g, '\\u04C4' ],\n [ /\\\\cyrchar\\\\CYRNHK /g, '\\u04C7' ],\n [ /\\\\cyrchar\\\\cyrnhk /g, '\\u04C8' ],\n [ /\\\\cyrchar\\\\CYRCHLDSC /g, '\\u04CB' ],\n [ /\\\\cyrchar\\\\cyrchldsc /g, '\\u04CC' ],\n [ /\\\\cyrchar\\\\CYRAE /g, '\\u04D4' ],\n [ /\\\\cyrchar\\\\cyrae /g, '\\u04D5' ],\n [ /\\\\cyrchar\\\\CYRSCHWA /g, '\\u04D8' ],\n [ /\\\\cyrchar\\\\cyrschwa /g, '\\u04D9' ],\n [ /\\\\cyrchar\\\\CYRABHDZE /g, '\\u04E0' ],\n [ /\\\\cyrchar\\\\cyrabhdze /g, '\\u04E1' ],\n [ /\\\\cyrchar\\\\CYROTLD /g, '\\u04E8' ],\n [ /\\\\cyrchar\\\\cyrotld /g, '\\u04E9' ],\n [ /\\\\hspace\\{0.6em\\}/g, '\\u2002' ],\n [ /\\\\hspace\\{1em\\}/g, '\\u2003' ],\n [ /\\\\hspace\\{0.33em\\}/g, '\\u2004' ],\n [ /\\\\hspace\\{0.25em\\}/g, '\\u2005' ],\n [ /\\\\hspace\\{0.166em\\}/g, '\\u2006' ],\n [ /\\\\hphantom\\{0\\}/g, '\\u2007' ],\n [ /\\\\hphantom\\{,\\}/g, '\\u2008' ],\n [ /\\\\hspace\\{0.167em\\}/g, '\\u2009' ],\n [ /\\\\mkern1mu /g, '\\u200A' ],\n [ /\\\\textendash /g, '\\u2013' ],\n [ /\\\\textemdash /g, '\\u2014' ],\n [ /\\\\rule\\{1em\\}\\{1pt\\}/g, '\\u2015' ],\n [ /\\\\Vert /g, '\\u2016' ],\n [ /\\\\Elzreapos /g, '\\u201B' ],\n [ /\\\\textquotedblleft /g, '\\u201C' ],\n [ /\\\\textquotedblright /g, '\\u201D' ],\n [ /\\\\textdagger /g, '\\u2020' ],\n [ /\\\\textdaggerdbl /g, '\\u2021' ],\n [ /\\\\textbullet /g, '\\u2022' ],\n [ /\\\\ldots /g, '\\u2026' ],\n [ /\\\\textperthousand /g, '\\u2030' ],\n [ /\\\\textpertenthousand /g, '\\u2031' ],\n [ /\\\\backprime /g, '\\u2035' ],\n [ /\\\\guilsinglleft /g, '\\u2039' ],\n [ /\\\\guilsinglright /g, '\\u203A' ],\n [ /\\\\mkern4mu /g, '\\u205F' ],\n [ /\\\\nolinebreak /g, '\\u2060' ],\n [ /\\\\ensuremath\\{\\\\Elzpes\\}/g, '\\u20A7' ],\n [ /\\\\mbox\\{\\\\texteuro\\} /g, '\\u20AC' ],\n [ /\\\\dddot /g, '\\u20DB' ],\n [ /\\\\ddddot /g, '\\u20DC' ],\n [ /\\\\mathbb\\{C\\}/g, '\\u2102' ],\n [ /\\\\mathscr\\{g\\}/g, '\\u210A' ],\n [ /\\\\mathscr\\{H\\}/g, '\\u210B' ],\n [ /\\\\mathfrak\\{H\\}/g, '\\u210C' ],\n [ /\\\\mathbb\\{H\\}/g, '\\u210D' ],\n [ /\\\\hslash /g, '\\u210F' ],\n [ /\\\\mathscr\\{I\\}/g, '\\u2110' ],\n [ /\\\\mathfrak\\{I\\}/g, '\\u2111' ],\n [ /\\\\mathscr\\{L\\}/g, '\\u2112' ],\n [ /\\\\mathscr\\{l\\}/g, '\\u2113' ],\n [ /\\\\mathbb\\{N\\}/g, '\\u2115' ],\n [ /\\\\cyrchar\\\\textnumero /g, '\\u2116' ],\n [ /\\\\wp /g, '\\u2118' ],\n [ /\\\\mathbb\\{P\\}/g, '\\u2119' ],\n [ /\\\\mathbb\\{Q\\}/g, '\\u211A' ],\n [ /\\\\mathscr\\{R\\}/g, '\\u211B' ],\n [ /\\\\mathfrak\\{R\\}/g, '\\u211C' ],\n [ /\\\\mathbb\\{R\\}/g, '\\u211D' ],\n [ /\\\\Elzxrat /g, '\\u211E' ],\n [ /\\\\texttrademark /g, '\\u2122' ],\n [ /\\\\mathbb\\{Z\\}/g, '\\u2124' ],\n [ /\\\\Omega /g, '\\u2126' ],\n [ /\\\\mho /g, '\\u2127' ],\n [ /\\\\mathfrak\\{Z\\}/g, '\\u2128' ],\n [ /\\\\ElsevierGlyph\\{2129\\}/g, '\\u2129' ],\n [ /\\\\AA /g, '\\u212B' ],\n [ /\\\\mathscr\\{B\\}/g, '\\u212C' ],\n [ /\\\\mathfrak\\{C\\}/g, '\\u212D' ],\n [ /\\\\mathscr\\{e\\}/g, '\\u212F' ],\n [ /\\\\mathscr\\{E\\}/g, '\\u2130' ],\n [ /\\\\mathscr\\{F\\}/g, '\\u2131' ],\n [ /\\\\mathscr\\{M\\}/g, '\\u2133' ],\n [ /\\\\mathscr\\{o\\}/g, '\\u2134' ],\n [ /\\\\aleph /g, '\\u2135' ],\n [ /\\\\beth /g, '\\u2136' ],\n [ /\\\\gimel /g, '\\u2137' ],\n [ /\\\\daleth /g, '\\u2138' ],\n [ /\\\\textfrac\\{1\\}\\{3\\}/g, '\\u2153' ],\n [ /\\\\textfrac\\{2\\}\\{3\\}/g, '\\u2154' ],\n [ /\\\\textfrac\\{1\\}\\{5\\}/g, '\\u2155' ],\n [ /\\\\textfrac\\{2\\}\\{5\\}/g, '\\u2156' ],\n [ /\\\\textfrac\\{3\\}\\{5\\}/g, '\\u2157' ],\n [ /\\\\textfrac\\{4\\}\\{5\\}/g, '\\u2158' ],\n [ /\\\\textfrac\\{1\\}\\{6\\}/g, '\\u2159' ],\n [ /\\\\textfrac\\{5\\}\\{6\\}/g, '\\u215A' ],\n [ /\\\\textfrac\\{1\\}\\{8\\}/g, '\\u215B' ],\n [ /\\\\textfrac\\{3\\}\\{8\\}/g, '\\u215C' ],\n [ /\\\\textfrac\\{5\\}\\{8\\}/g, '\\u215D' ],\n [ /\\\\textfrac\\{7\\}\\{8\\}/g, '\\u215E' ],\n [ /\\\\leftarrow /g, '\\u2190' ],\n [ /\\\\uparrow /g, '\\u2191' ],\n [ /\\\\rightarrow /g, '\\u2192' ],\n [ /\\\\downarrow /g, '\\u2193' ],\n [ /\\\\leftrightarrow /g, '\\u2194' ],\n [ /\\\\updownarrow /g, '\\u2195' ],\n [ /\\\\nwarrow /g, '\\u2196' ],\n [ /\\\\nearrow /g, '\\u2197' ],\n [ /\\\\searrow /g, '\\u2198' ],\n [ /\\\\swarrow /g, '\\u2199' ],\n [ /\\\\nleftarrow /g, '\\u219A' ],\n [ /\\\\nrightarrow /g, '\\u219B' ],\n [ /\\\\arrowwaveright /g, '\\u219C' ],\n [ /\\\\arrowwaveright /g, '\\u219D' ],\n [ /\\\\twoheadleftarrow /g, '\\u219E' ],\n [ /\\\\twoheadrightarrow /g, '\\u21A0' ],\n [ /\\\\leftarrowtail /g, '\\u21A2' ],\n [ /\\\\rightarrowtail /g, '\\u21A3' ],\n [ /\\\\mapsto /g, '\\u21A6' ],\n [ /\\\\hookleftarrow /g, '\\u21A9' ],\n [ /\\\\hookrightarrow /g, '\\u21AA' ],\n [ /\\\\looparrowleft /g, '\\u21AB' ],\n [ /\\\\looparrowright /g, '\\u21AC' ],\n [ /\\\\leftrightsquigarrow /g, '\\u21AD' ],\n [ /\\\\nleftrightarrow /g, '\\u21AE' ],\n [ /\\\\Lsh /g, '\\u21B0' ],\n [ /\\\\Rsh /g, '\\u21B1' ],\n [ /\\\\ElsevierGlyph\\{21B3\\}/g, '\\u21B3' ],\n [ /\\\\curvearrowleft /g, '\\u21B6' ],\n [ /\\\\curvearrowright /g, '\\u21B7' ],\n [ /\\\\circlearrowleft /g, '\\u21BA' ],\n [ /\\\\circlearrowright /g, '\\u21BB' ],\n [ /\\\\leftharpoonup /g, '\\u21BC' ],\n [ /\\\\leftharpoondown /g, '\\u21BD' ],\n [ /\\\\upharpoonright /g, '\\u21BE' ],\n [ /\\\\upharpoonleft /g, '\\u21BF' ],\n [ /\\\\rightharpoonup /g, '\\u21C0' ],\n [ /\\\\rightharpoondown /g, '\\u21C1' ],\n [ /\\\\downharpoonright /g, '\\u21C2' ],\n [ /\\\\downharpoonleft /g, '\\u21C3' ],\n [ /\\\\rightleftarrows /g, '\\u21C4' ],\n [ /\\\\dblarrowupdown /g, '\\u21C5' ],\n [ /\\\\leftrightarrows /g, '\\u21C6' ],\n [ /\\\\leftleftarrows /g, '\\u21C7' ],\n [ /\\\\upuparrows /g, '\\u21C8' ],\n [ /\\\\rightrightarrows /g, '\\u21C9' ],\n [ /\\\\downdownarrows /g, '\\u21CA' ],\n [ /\\\\leftrightharpoons /g, '\\u21CB' ],\n [ /\\\\rightleftharpoons /g, '\\u21CC' ],\n [ /\\\\nLeftarrow /g, '\\u21CD' ],\n [ /\\\\nLeftrightarrow /g, '\\u21CE' ],\n [ /\\\\nRightarrow /g, '\\u21CF' ],\n [ /\\\\Leftarrow /g, '\\u21D0' ],\n [ /\\\\Uparrow /g, '\\u21D1' ],\n [ /\\\\Rightarrow /g, '\\u21D2' ],\n [ /\\\\Downarrow /g, '\\u21D3' ],\n [ /\\\\Leftrightarrow /g, '\\u21D4' ],\n [ /\\\\Updownarrow /g, '\\u21D5' ],\n [ /\\\\Lleftarrow /g, '\\u21DA' ],\n [ /\\\\Rrightarrow /g, '\\u21DB' ],\n [ /\\\\rightsquigarrow /g, '\\u21DD' ],\n [ /\\\\DownArrowUpArrow /g, '\\u21F5' ],\n [ /\\\\forall /g, '\\u2200' ],\n [ /\\\\complement /g, '\\u2201' ],\n [ /\\\\partial /g, '\\u2202' ],\n [ /\\\\exists /g, '\\u2203' ],\n [ /\\\\nexists /g, '\\u2204' ],\n [ /\\\\varnothing /g, '\\u2205' ],\n [ /\\\\nabla /g, '\\u2207' ],\n [ /\\\\in /g, '\\u2208' ],\n [ /\\\\not\\\\in /g, '\\u2209' ],\n [ /\\\\ni /g, '\\u220B' ],\n [ /\\\\not\\\\ni /g, '\\u220C' ],\n [ /\\\\prod /g, '\\u220F' ],\n [ /\\\\coprod /g, '\\u2210' ],\n [ /\\\\sum /g, '\\u2211' ],\n [ /\\\\mp /g, '\\u2213' ],\n [ /\\\\dotplus /g, '\\u2214' ],\n [ /\\\\setminus /g, '\\u2216' ],\n [ /\\\\circ /g, '\\u2218' ],\n [ /\\\\bullet /g, '\\u2219' ],\n [ /\\\\surd /g, '\\u221A' ],\n [ /\\\\propto /g, '\\u221D' ],\n [ /\\\\infty /g, '\\u221E' ],\n [ /\\\\rightangle /g, '\\u221F' ],\n [ /\\\\angle /g, '\\u2220' ],\n [ /\\\\measuredangle /g, '\\u2221' ],\n [ /\\\\sphericalangle /g, '\\u2222' ],\n [ /\\\\mid /g, '\\u2223' ],\n [ /\\\\nmid /g, '\\u2224' ],\n [ /\\\\parallel /g, '\\u2225' ],\n [ /\\\\nparallel /g, '\\u2226' ],\n [ /\\\\wedge /g, '\\u2227' ],\n [ /\\\\vee /g, '\\u2228' ],\n [ /\\\\cap /g, '\\u2229' ],\n [ /\\\\cup /g, '\\u222A' ],\n [ /\\\\int /g, '\\u222B' ],\n [ /\\\\int\\\\!\\\\int /g, '\\u222C' ],\n [ /\\\\int\\\\!\\\\int\\\\!\\\\int /g, '\\u222D' ],\n [ /\\\\oint /g, '\\u222E' ],\n [ /\\\\surfintegral /g, '\\u222F' ],\n [ /\\\\volintegral /g, '\\u2230' ],\n [ /\\\\clwintegral /g, '\\u2231' ],\n [ /\\\\ElsevierGlyph\\{2232\\}/g, '\\u2232' ],\n [ /\\\\ElsevierGlyph\\{2233\\}/g, '\\u2233' ],\n [ /\\\\therefore /g, '\\u2234' ],\n [ /\\\\because /g, '\\u2235' ],\n [ /\\\\Colon /g, '\\u2237' ],\n [ /\\\\ElsevierGlyph\\{2238\\}/g, '\\u2238' ],\n [ /\\\\mathbin\\{\\{:\\}\\\\!\\\\!\\{\\-\\}\\\\!\\\\!\\{:\\}\\}/g, '\\u223A' ],\n [ /\\\\homothetic /g, '\\u223B' ],\n [ /\\\\sim /g, '\\u223C' ],\n [ /\\\\backsim /g, '\\u223D' ],\n [ /\\\\lazysinv /g, '\\u223E' ],\n [ /\\\\wr /g, '\\u2240' ],\n [ /\\\\not\\\\sim /g, '\\u2241' ],\n [ /\\\\ElsevierGlyph\\{2242\\}/g, '\\u2242' ],\n [ /\\\\NotEqualTilde /g, '\\u2242-00338' ],\n [ /\\\\simeq /g, '\\u2243' ],\n [ /\\\\not\\\\simeq /g, '\\u2244' ],\n [ /\\\\cong /g, '\\u2245' ],\n [ /\\\\approxnotequal /g, '\\u2246' ],\n [ /\\\\not\\\\cong /g, '\\u2247' ],\n [ /\\\\approx /g, '\\u2248' ],\n [ /\\\\not\\\\approx /g, '\\u2249' ],\n [ /\\\\approxeq /g, '\\u224A' ],\n [ /\\\\tildetrpl /g, '\\u224B' ],\n [ /\\\\not\\\\apid /g, '\\u224B-00338' ],\n [ /\\\\allequal /g, '\\u224C' ],\n [ /\\\\asymp /g, '\\u224D' ],\n [ /\\\\Bumpeq /g, '\\u224E' ],\n [ /\\\\NotHumpDownHump /g, '\\u224E-00338' ],\n [ /\\\\bumpeq /g, '\\u224F' ],\n [ /\\\\NotHumpEqual /g, '\\u224F-00338' ],\n [ /\\\\doteq /g, '\\u2250' ],\n [ /\\\\not\\\\doteq/g, '\\u2250-00338' ],\n [ /\\\\doteqdot /g, '\\u2251' ],\n [ /\\\\fallingdotseq /g, '\\u2252' ],\n [ /\\\\risingdotseq /g, '\\u2253' ],\n [ /\\\\eqcirc /g, '\\u2256' ],\n [ /\\\\circeq /g, '\\u2257' ],\n [ /\\\\estimates /g, '\\u2259' ],\n [ /\\\\ElsevierGlyph\\{225A\\}/g, '\\u225A' ],\n [ /\\\\starequal /g, '\\u225B' ],\n [ /\\\\triangleq /g, '\\u225C' ],\n [ /\\\\ElsevierGlyph\\{225F\\}/g, '\\u225F' ],\n [ /\\\\not =/g, '\\u2260' ],\n [ /\\\\equiv /g, '\\u2261' ],\n [ /\\\\not\\\\equiv /g, '\\u2262' ],\n [ /\\\\leq /g, '\\u2264' ],\n [ /\\\\geq /g, '\\u2265' ],\n [ /\\\\leqq /g, '\\u2266' ],\n [ /\\\\geqq /g, '\\u2267' ],\n [ /\\\\lneqq /g, '\\u2268' ],\n [ /\\\\lvertneqq /g, '\\u2268-0FE00' ],\n [ /\\\\gneqq /g, '\\u2269' ],\n [ /\\\\gvertneqq /g, '\\u2269-0FE00' ],\n [ /\\\\ll /g, '\\u226A' ],\n [ /\\\\NotLessLess /g, '\\u226A-00338' ],\n [ /\\\\gg /g, '\\u226B' ],\n [ /\\\\NotGreaterGreater /g, '\\u226B-00338' ],\n [ /\\\\between /g, '\\u226C' ],\n [ /\\\\not\\\\kern\\-0.3em\\\\times /g, '\\u226D' ],\n [ /\\\\not/g, '\\u226F' ],\n [ /\\\\not\\\\leq /g, '\\u2270' ],\n [ /\\\\not\\\\geq /g, '\\u2271' ],\n [ /\\\\lessequivlnt /g, '\\u2272' ],\n [ /\\\\greaterequivlnt /g, '\\u2273' ],\n [ /\\\\ElsevierGlyph\\{2274\\}/g, '\\u2274' ],\n [ /\\\\ElsevierGlyph\\{2275\\}/g, '\\u2275' ],\n [ /\\\\lessgtr /g, '\\u2276' ],\n [ /\\\\gtrless /g, '\\u2277' ],\n [ /\\\\notlessgreater /g, '\\u2278' ],\n [ /\\\\notgreaterless /g, '\\u2279' ],\n [ /\\\\prec /g, '\\u227A' ],\n [ /\\\\succ /g, '\\u227B' ],\n [ /\\\\preccurlyeq /g, '\\u227C' ],\n [ /\\\\succcurlyeq /g, '\\u227D' ],\n [ /\\\\precapprox /g, '\\u227E' ],\n [ /\\\\NotPrecedesTilde /g, '\\u227E-00338' ],\n [ /\\\\succapprox /g, '\\u227F' ],\n [ /\\\\NotSucceedsTilde /g, '\\u227F-00338' ],\n [ /\\\\not\\\\prec /g, '\\u2280' ],\n [ /\\\\not\\\\succ /g, '\\u2281' ],\n [ /\\\\subset /g, '\\u2282' ],\n [ /\\\\supset /g, '\\u2283' ],\n [ /\\\\not\\\\subset /g, '\\u2284' ],\n [ /\\\\not\\\\supset /g, '\\u2285' ],\n [ /\\\\subseteq /g, '\\u2286' ],\n [ /\\\\supseteq /g, '\\u2287' ],\n [ /\\\\not\\\\subseteq /g, '\\u2288' ],\n [ /\\\\not\\\\supseteq /g, '\\u2289' ],\n [ /\\\\subsetneq /g, '\\u228A' ],\n [ /\\\\varsubsetneqq /g, '\\u228A-0FE00' ],\n [ /\\\\supsetneq /g, '\\u228B' ],\n [ /\\\\varsupsetneq /g, '\\u228B-0FE00' ],\n [ /\\\\uplus /g, '\\u228E' ],\n [ /\\\\sqsubset /g, '\\u228F' ],\n [ /\\\\NotSquareSubset /g, '\\u228F-00338' ],\n [ /\\\\sqsupset /g, '\\u2290' ],\n [ /\\\\NotSquareSuperset /g, '\\u2290-00338' ],\n [ /\\\\sqsubseteq /g, '\\u2291' ],\n [ /\\\\sqsupseteq /g, '\\u2292' ],\n [ /\\\\sqcap /g, '\\u2293' ],\n [ /\\\\sqcup /g, '\\u2294' ],\n [ /\\\\oplus /g, '\\u2295' ],\n [ /\\\\ominus /g, '\\u2296' ],\n [ /\\\\otimes /g, '\\u2297' ],\n [ /\\\\oslash /g, '\\u2298' ],\n [ /\\\\odot /g, '\\u2299' ],\n [ /\\\\circledcirc /g, '\\u229A' ],\n [ /\\\\circledast /g, '\\u229B' ],\n [ /\\\\circleddash /g, '\\u229D' ],\n [ /\\\\boxplus /g, '\\u229E' ],\n [ /\\\\boxminus /g, '\\u229F' ],\n [ /\\\\boxtimes /g, '\\u22A0' ],\n [ /\\\\boxdot /g, '\\u22A1' ],\n [ /\\\\vdash /g, '\\u22A2' ],\n [ /\\\\dashv /g, '\\u22A3' ],\n [ /\\\\top /g, '\\u22A4' ],\n [ /\\\\perp /g, '\\u22A5' ],\n [ /\\\\truestate /g, '\\u22A7' ],\n [ /\\\\forcesextra /g, '\\u22A8' ],\n [ /\\\\Vdash /g, '\\u22A9' ],\n [ /\\\\Vvdash /g, '\\u22AA' ],\n [ /\\\\VDash /g, '\\u22AB' ],\n [ /\\\\nvdash /g, '\\u22AC' ],\n [ /\\\\nvDash /g, '\\u22AD' ],\n [ /\\\\nVdash /g, '\\u22AE' ],\n [ /\\\\nVDash /g, '\\u22AF' ],\n [ /\\\\vartriangleleft /g, '\\u22B2' ],\n [ /\\\\vartriangleright /g, '\\u22B3' ],\n [ /\\\\trianglelefteq /g, '\\u22B4' ],\n [ /\\\\trianglerighteq /g, '\\u22B5' ],\n [ /\\\\original /g, '\\u22B6' ],\n [ /\\\\image /g, '\\u22B7' ],\n [ /\\\\multimap /g, '\\u22B8' ],\n [ /\\\\hermitconjmatrix /g, '\\u22B9' ],\n [ /\\\\intercal /g, '\\u22BA' ],\n [ /\\\\veebar /g, '\\u22BB' ],\n [ /\\\\rightanglearc /g, '\\u22BE' ],\n [ /\\\\ElsevierGlyph\\{22C0\\}/g, '\\u22C0' ],\n [ /\\\\ElsevierGlyph\\{22C1\\}/g, '\\u22C1' ],\n [ /\\\\bigcap /g, '\\u22C2' ],\n [ /\\\\bigcup /g, '\\u22C3' ],\n [ /\\\\diamond /g, '\\u22C4' ],\n [ /\\\\cdot /g, '\\u22C5' ],\n [ /\\\\star /g, '\\u22C6' ],\n [ /\\\\divideontimes /g, '\\u22C7' ],\n [ /\\\\bowtie /g, '\\u22C8' ],\n [ /\\\\ltimes /g, '\\u22C9' ],\n [ /\\\\rtimes /g, '\\u22CA' ],\n [ /\\\\leftthreetimes /g, '\\u22CB' ],\n [ /\\\\rightthreetimes /g, '\\u22CC' ],\n [ /\\\\backsimeq /g, '\\u22CD' ],\n [ /\\\\curlyvee /g, '\\u22CE' ],\n [ /\\\\curlywedge /g, '\\u22CF' ],\n [ /\\\\Subset /g, '\\u22D0' ],\n [ /\\\\Supset /g, '\\u22D1' ],\n [ /\\\\Cap /g, '\\u22D2' ],\n [ /\\\\Cup /g, '\\u22D3' ],\n [ /\\\\pitchfork /g, '\\u22D4' ],\n [ /\\\\lessdot /g, '\\u22D6' ],\n [ /\\\\gtrdot /g, '\\u22D7' ],\n [ /\\\\verymuchless /g, '\\u22D8' ],\n [ /\\\\verymuchgreater /g, '\\u22D9' ],\n [ /\\\\lesseqgtr /g, '\\u22DA' ],\n [ /\\\\gtreqless /g, '\\u22DB' ],\n [ /\\\\curlyeqprec /g, '\\u22DE' ],\n [ /\\\\curlyeqsucc /g, '\\u22DF' ],\n [ /\\\\not\\\\sqsubseteq /g, '\\u22E2' ],\n [ /\\\\not\\\\sqsupseteq /g, '\\u22E3' ],\n [ /\\\\Elzsqspne /g, '\\u22E5' ],\n [ /\\\\lnsim /g, '\\u22E6' ],\n [ /\\\\gnsim /g, '\\u22E7' ],\n [ /\\\\precedesnotsimilar /g, '\\u22E8' ],\n [ /\\\\succnsim /g, '\\u22E9' ],\n [ /\\\\ntriangleleft /g, '\\u22EA' ],\n [ /\\\\ntriangleright /g, '\\u22EB' ],\n [ /\\\\ntrianglelefteq /g, '\\u22EC' ],\n [ /\\\\ntrianglerighteq /g, '\\u22ED' ],\n [ /\\\\vdots /g, '\\u22EE' ],\n [ /\\\\cdots /g, '\\u22EF' ],\n [ /\\\\upslopeellipsis /g, '\\u22F0' ],\n [ /\\\\downslopeellipsis /g, '\\u22F1' ],\n [ /\\\\barwedge /g, '\\u2305' ],\n [ /\\\\perspcorrespond /g, '\\u2306' ],\n [ /\\\\lceil /g, '\\u2308' ],\n [ /\\\\rceil /g, '\\u2309' ],\n [ /\\\\lfloor /g, '\\u230A' ],\n [ /\\\\rfloor /g, '\\u230B' ],\n [ /\\\\recorder /g, '\\u2315' ],\n [ /\\\\mathchar\"2208/g, '\\u2316' ],\n [ /\\\\ulcorner /g, '\\u231C' ],\n [ /\\\\urcorner /g, '\\u231D' ],\n [ /\\\\llcorner /g, '\\u231E' ],\n [ /\\\\lrcorner /g, '\\u231F' ],\n [ /\\\\frown /g, '\\u2322' ],\n [ /\\\\smile /g, '\\u2323' ],\n [ /\\\\langle /g, '\\u2329' ],\n [ /\\\\rangle /g, '\\u232A' ],\n [ /\\\\ElsevierGlyph\\{E838\\}/g, '\\u233D' ],\n [ /\\\\Elzdlcorn /g, '\\u23A3' ],\n [ /\\\\lmoustache /g, '\\u23B0' ],\n [ /\\\\rmoustache /g, '\\u23B1' ],\n [ /\\\\textvisiblespace /g, '\\u2423' ],\n [ /\\\\ding\\{172\\}/g, '\\u2460' ],\n [ /\\\\ding\\{173\\}/g, '\\u2461' ],\n [ /\\\\ding\\{174\\}/g, '\\u2462' ],\n [ /\\\\ding\\{175\\}/g, '\\u2463' ],\n [ /\\\\ding\\{176\\}/g, '\\u2464' ],\n [ /\\\\ding\\{177\\}/g, '\\u2465' ],\n [ /\\\\ding\\{178\\}/g, '\\u2466' ],\n [ /\\\\ding\\{179\\}/g, '\\u2467' ],\n [ /\\\\ding\\{180\\}/g, '\\u2468' ],\n [ /\\\\ding\\{181\\}/g, '\\u2469' ],\n [ /\\\\circledS /g, '\\u24C8' ],\n [ /\\\\Elzdshfnc /g, '\\u2506' ],\n [ /\\\\Elzsqfnw /g, '\\u2519' ],\n [ /\\\\diagup /g, '\\u2571' ],\n [ /\\\\ding\\{110\\}/g, '\\u25A0' ],\n [ /\\\\square /g, '\\u25A1' ],\n [ /\\\\blacksquare /g, '\\u25AA' ],\n [ /\\\\fbox\\{~~\\}/g, '\\u25AD' ],\n [ /\\\\Elzvrecto /g, '\\u25AF' ],\n [ /\\\\ElsevierGlyph\\{E381\\}/g, '\\u25B1' ],\n [ /\\\\ding\\{115\\}/g, '\\u25B2' ],\n [ /\\\\bigtriangleup /g, '\\u25B3' ],\n [ /\\\\blacktriangle /g, '\\u25B4' ],\n [ /\\\\vartriangle /g, '\\u25B5' ],\n [ /\\\\blacktriangleright /g, '\\u25B8' ],\n [ /\\\\triangleright /g, '\\u25B9' ],\n [ /\\\\ding\\{116\\}/g, '\\u25BC' ],\n [ /\\\\bigtriangledown /g, '\\u25BD' ],\n [ /\\\\blacktriangledown /g, '\\u25BE' ],\n [ /\\\\triangledown /g, '\\u25BF' ],\n [ /\\\\blacktriangleleft /g, '\\u25C2' ],\n [ /\\\\triangleleft /g, '\\u25C3' ],\n [ /\\\\ding\\{117\\}/g, '\\u25C6' ],\n [ /\\\\lozenge /g, '\\u25CA' ],\n [ /\\\\bigcirc /g, '\\u25CB' ],\n [ /\\\\ding\\{108\\}/g, '\\u25CF' ],\n [ /\\\\Elzcirfl /g, '\\u25D0' ],\n [ /\\\\Elzcirfr /g, '\\u25D1' ],\n [ /\\\\Elzcirfb /g, '\\u25D2' ],\n [ /\\\\ding\\{119\\}/g, '\\u25D7' ],\n [ /\\\\Elzrvbull /g, '\\u25D8' ],\n [ /\\\\Elzsqfl /g, '\\u25E7' ],\n [ /\\\\Elzsqfr /g, '\\u25E8' ],\n [ /\\\\Elzsqfse /g, '\\u25EA' ],\n [ /\\\\bigcirc /g, '\\u25EF' ],\n [ /\\\\ding\\{72\\}/g, '\\u2605' ],\n [ /\\\\ding\\{73\\}/g, '\\u2606' ],\n [ /\\\\ding\\{37\\}/g, '\\u260E' ],\n [ /\\\\ding\\{42\\}/g, '\\u261B' ],\n [ /\\\\ding\\{43\\}/g, '\\u261E' ],\n [ /\\\\rightmoon /g, '\\u263E' ],\n [ /\\\\mercury /g, '\\u263F' ],\n [ /\\\\venus /g, '\\u2640' ],\n [ /\\\\male /g, '\\u2642' ],\n [ /\\\\jupiter /g, '\\u2643' ],\n [ /\\\\saturn /g, '\\u2644' ],\n [ /\\\\uranus /g, '\\u2645' ],\n [ /\\\\neptune /g, '\\u2646' ],\n [ /\\\\pluto /g, '\\u2647' ],\n [ /\\\\aries /g, '\\u2648' ],\n [ /\\\\taurus /g, '\\u2649' ],\n [ /\\\\gemini /g, '\\u264A' ],\n [ /\\\\cancer /g, '\\u264B' ],\n [ /\\\\leo /g, '\\u264C' ],\n [ /\\\\virgo /g, '\\u264D' ],\n [ /\\\\libra /g, '\\u264E' ],\n [ /\\\\scorpio /g, '\\u264F' ],\n [ /\\\\sagittarius /g, '\\u2650' ],\n [ /\\\\capricornus /g, '\\u2651' ],\n [ /\\\\aquarius /g, '\\u2652' ],\n [ /\\\\pisces /g, '\\u2653' ],\n [ /\\\\ding\\{171\\}/g, '\\u2660' ],\n [ /\\\\diamond /g, '\\u2662' ],\n [ /\\\\ding\\{168\\}/g, '\\u2663' ],\n [ /\\\\ding\\{170\\}/g, '\\u2665' ],\n [ /\\\\ding\\{169\\}/g, '\\u2666' ],\n [ /\\\\quarternote /g, '\\u2669' ],\n [ /\\\\eighthnote /g, '\\u266A' ],\n [ /\\\\flat /g, '\\u266D' ],\n [ /\\\\natural /g, '\\u266E' ],\n [ /\\\\sharp /g, '\\u266F' ],\n [ /\\\\ding\\{33\\}/g, '\\u2701' ],\n [ /\\\\ding\\{34\\}/g, '\\u2702' ],\n [ /\\\\ding\\{35\\}/g, '\\u2703' ],\n [ /\\\\ding\\{36\\}/g, '\\u2704' ],\n [ /\\\\ding\\{38\\}/g, '\\u2706' ],\n [ /\\\\ding\\{39\\}/g, '\\u2707' ],\n [ /\\\\ding\\{40\\}/g, '\\u2708' ],\n [ /\\\\ding\\{41\\}/g, '\\u2709' ],\n [ /\\\\ding\\{44\\}/g, '\\u270C' ],\n [ /\\\\ding\\{45\\}/g, '\\u270D' ],\n [ /\\\\ding\\{46\\}/g, '\\u270E' ],\n [ /\\\\ding\\{47\\}/g, '\\u270F' ],\n [ /\\\\ding\\{48\\}/g, '\\u2710' ],\n [ /\\\\ding\\{49\\}/g, '\\u2711' ],\n [ /\\\\ding\\{50\\}/g, '\\u2712' ],\n [ /\\\\ding\\{51\\}/g, '\\u2713' ],\n [ /\\\\ding\\{52\\}/g, '\\u2714' ],\n [ /\\\\ding\\{53\\}/g, '\\u2715' ],\n [ /\\\\ding\\{54\\}/g, '\\u2716' ],\n [ /\\\\ding\\{55\\}/g, '\\u2717' ],\n [ /\\\\ding\\{56\\}/g, '\\u2718' ],\n [ /\\\\ding\\{57\\}/g, '\\u2719' ],\n [ /\\\\ding\\{58\\}/g, '\\u271A' ],\n [ /\\\\ding\\{59\\}/g, '\\u271B' ],\n [ /\\\\ding\\{60\\}/g, '\\u271C' ],\n [ /\\\\ding\\{61\\}/g, '\\u271D' ],\n [ /\\\\ding\\{62\\}/g, '\\u271E' ],\n [ /\\\\ding\\{63\\}/g, '\\u271F' ],\n [ /\\\\ding\\{64\\}/g, '\\u2720' ],\n [ /\\\\ding\\{65\\}/g, '\\u2721' ],\n [ /\\\\ding\\{66\\}/g, '\\u2722' ],\n [ /\\\\ding\\{67\\}/g, '\\u2723' ],\n [ /\\\\ding\\{68\\}/g, '\\u2724' ],\n [ /\\\\ding\\{69\\}/g, '\\u2725' ],\n [ /\\\\ding\\{70\\}/g, '\\u2726' ],\n [ /\\\\ding\\{71\\}/g, '\\u2727' ],\n [ /\\\\ding\\{73\\}/g, '\\u2729' ],\n [ /\\\\ding\\{74\\}/g, '\\u272A' ],\n [ /\\\\ding\\{75\\}/g, '\\u272B' ],\n [ /\\\\ding\\{76\\}/g, '\\u272C' ],\n [ /\\\\ding\\{77\\}/g, '\\u272D' ],\n [ /\\\\ding\\{78\\}/g, '\\u272E' ],\n [ /\\\\ding\\{79\\}/g, '\\u272F' ],\n [ /\\\\ding\\{80\\}/g, '\\u2730' ],\n [ /\\\\ding\\{81\\}/g, '\\u2731' ],\n [ /\\\\ding\\{82\\}/g, '\\u2732' ],\n [ /\\\\ding\\{83\\}/g, '\\u2733' ],\n [ /\\\\ding\\{84\\}/g, '\\u2734' ],\n [ /\\\\ding\\{85\\}/g, '\\u2735' ],\n [ /\\\\ding\\{86\\}/g, '\\u2736' ],\n [ /\\\\ding\\{87\\}/g, '\\u2737' ],\n [ /\\\\ding\\{88\\}/g, '\\u2738' ],\n [ /\\\\ding\\{89\\}/g, '\\u2739' ],\n [ /\\\\ding\\{90\\}/g, '\\u273A' ],\n [ /\\\\ding\\{91\\}/g, '\\u273B' ],\n [ /\\\\ding\\{92\\}/g, '\\u273C' ],\n [ /\\\\ding\\{93\\}/g, '\\u273D' ],\n [ /\\\\ding\\{94\\}/g, '\\u273E' ],\n [ /\\\\ding\\{95\\}/g, '\\u273F' ],\n [ /\\\\ding\\{96\\}/g, '\\u2740' ],\n [ /\\\\ding\\{97\\}/g, '\\u2741' ],\n [ /\\\\ding\\{98\\}/g, '\\u2742' ],\n [ /\\\\ding\\{99\\}/g, '\\u2743' ],\n [ /\\\\ding\\{100\\}/g, '\\u2744' ],\n [ /\\\\ding\\{101\\}/g, '\\u2745' ],\n [ /\\\\ding\\{102\\}/g, '\\u2746' ],\n [ /\\\\ding\\{103\\}/g, '\\u2747' ],\n [ /\\\\ding\\{104\\}/g, '\\u2748' ],\n [ /\\\\ding\\{105\\}/g, '\\u2749' ],\n [ /\\\\ding\\{106\\}/g, '\\u274A' ],\n [ /\\\\ding\\{107\\}/g, '\\u274B' ],\n [ /\\\\ding\\{109\\}/g, '\\u274D' ],\n [ /\\\\ding\\{111\\}/g, '\\u274F' ],\n [ /\\\\ding\\{112\\}/g, '\\u2750' ],\n [ /\\\\ding\\{113\\}/g, '\\u2751' ],\n [ /\\\\ding\\{114\\}/g, '\\u2752' ],\n [ /\\\\ding\\{118\\}/g, '\\u2756' ],\n [ /\\\\ding\\{120\\}/g, '\\u2758' ],\n [ /\\\\ding\\{121\\}/g, '\\u2759' ],\n [ /\\\\ding\\{122\\}/g, '\\u275A' ],\n [ /\\\\ding\\{123\\}/g, '\\u275B' ],\n [ /\\\\ding\\{124\\}/g, '\\u275C' ],\n [ /\\\\ding\\{125\\}/g, '\\u275D' ],\n [ /\\\\ding\\{126\\}/g, '\\u275E' ],\n [ /\\\\ding\\{161\\}/g, '\\u2761' ],\n [ /\\\\ding\\{162\\}/g, '\\u2762' ],\n [ /\\\\ding\\{163\\}/g, '\\u2763' ],\n [ /\\\\ding\\{164\\}/g, '\\u2764' ],\n [ /\\\\ding\\{165\\}/g, '\\u2765' ],\n [ /\\\\ding\\{166\\}/g, '\\u2766' ],\n [ /\\\\ding\\{167\\}/g, '\\u2767' ],\n [ /\\\\ding\\{182\\}/g, '\\u2776' ],\n [ /\\\\ding\\{183\\}/g, '\\u2777' ],\n [ /\\\\ding\\{184\\}/g, '\\u2778' ],\n [ /\\\\ding\\{185\\}/g, '\\u2779' ],\n [ /\\\\ding\\{186\\}/g, '\\u277A' ],\n [ /\\\\ding\\{187\\}/g, '\\u277B' ],\n [ /\\\\ding\\{188\\}/g, '\\u277C' ],\n [ /\\\\ding\\{189\\}/g, '\\u277D' ],\n [ /\\\\ding\\{190\\}/g, '\\u277E' ],\n [ /\\\\ding\\{191\\}/g, '\\u277F' ],\n [ /\\\\ding\\{192\\}/g, '\\u2780' ],\n [ /\\\\ding\\{193\\}/g, '\\u2781' ],\n [ /\\\\ding\\{194\\}/g, '\\u2782' ],\n [ /\\\\ding\\{195\\}/g, '\\u2783' ],\n [ /\\\\ding\\{196\\}/g, '\\u2784' ],\n [ /\\\\ding\\{197\\}/g, '\\u2785' ],\n [ /\\\\ding\\{198\\}/g, '\\u2786' ],\n [ /\\\\ding\\{199\\}/g, '\\u2787' ],\n [ /\\\\ding\\{200\\}/g, '\\u2788' ],\n [ /\\\\ding\\{201\\}/g, '\\u2789' ],\n [ /\\\\ding\\{202\\}/g, '\\u278A' ],\n [ /\\\\ding\\{203\\}/g, '\\u278B' ],\n [ /\\\\ding\\{204\\}/g, '\\u278C' ],\n [ /\\\\ding\\{205\\}/g, '\\u278D' ],\n [ /\\\\ding\\{206\\}/g, '\\u278E' ],\n [ /\\\\ding\\{207\\}/g, '\\u278F' ],\n [ /\\\\ding\\{208\\}/g, '\\u2790' ],\n [ /\\\\ding\\{209\\}/g, '\\u2791' ],\n [ /\\\\ding\\{210\\}/g, '\\u2792' ],\n [ /\\\\ding\\{211\\}/g, '\\u2793' ],\n [ /\\\\ding\\{212\\}/g, '\\u2794' ],\n [ /\\\\ding\\{216\\}/g, '\\u2798' ],\n [ /\\\\ding\\{217\\}/g, '\\u2799' ],\n [ /\\\\ding\\{218\\}/g, '\\u279A' ],\n [ /\\\\ding\\{219\\}/g, '\\u279B' ],\n [ /\\\\ding\\{220\\}/g, '\\u279C' ],\n [ /\\\\ding\\{221\\}/g, '\\u279D' ],\n [ /\\\\ding\\{222\\}/g, '\\u279E' ],\n [ /\\\\ding\\{223\\}/g, '\\u279F' ],\n [ /\\\\ding\\{224\\}/g, '\\u27A0' ],\n [ /\\\\ding\\{225\\}/g, '\\u27A1' ],\n [ /\\\\ding\\{226\\}/g, '\\u27A2' ],\n [ /\\\\ding\\{227\\}/g, '\\u27A3' ],\n [ /\\\\ding\\{228\\}/g, '\\u27A4' ],\n [ /\\\\ding\\{229\\}/g, '\\u27A5' ],\n [ /\\\\ding\\{230\\}/g, '\\u27A6' ],\n [ /\\\\ding\\{231\\}/g, '\\u27A7' ],\n [ /\\\\ding\\{232\\}/g, '\\u27A8' ],\n [ /\\\\ding\\{233\\}/g, '\\u27A9' ],\n [ /\\\\ding\\{234\\}/g, '\\u27AA' ],\n [ /\\\\ding\\{235\\}/g, '\\u27AB' ],\n [ /\\\\ding\\{236\\}/g, '\\u27AC' ],\n [ /\\\\ding\\{237\\}/g, '\\u27AD' ],\n [ /\\\\ding\\{238\\}/g, '\\u27AE' ],\n [ /\\\\ding\\{239\\}/g, '\\u27AF' ],\n [ /\\\\ding\\{241\\}/g, '\\u27B1' ],\n [ /\\\\ding\\{242\\}/g, '\\u27B2' ],\n [ /\\\\ding\\{243\\}/g, '\\u27B3' ],\n [ /\\\\ding\\{244\\}/g, '\\u27B4' ],\n [ /\\\\ding\\{245\\}/g, '\\u27B5' ],\n [ /\\\\ding\\{246\\}/g, '\\u27B6' ],\n [ /\\\\ding\\{247\\}/g, '\\u27B7' ],\n [ /\\\\ding\\{248\\}/g, '\\u27B8' ],\n [ /\\\\ding\\{249\\}/g, '\\u27B9' ],\n [ /\\\\ding\\{250\\}/g, '\\u27BA' ],\n [ /\\\\ding\\{251\\}/g, '\\u27BB' ],\n [ /\\\\ding\\{252\\}/g, '\\u27BC' ],\n [ /\\\\ding\\{253\\}/g, '\\u27BD' ],\n [ /\\\\ding\\{254\\}/g, '\\u27BE' ],\n [ /\\\\longleftarrow /g, '\\u27F5' ],\n [ /\\\\longrightarrow /g, '\\u27F6' ],\n [ /\\\\longleftrightarrow /g, '\\u27F7' ],\n [ /\\\\Longleftarrow /g, '\\u27F8' ],\n [ /\\\\Longrightarrow /g, '\\u27F9' ],\n [ /\\\\Longleftrightarrow /g, '\\u27FA' ],\n [ /\\\\longmapsto /g, '\\u27FC' ],\n [ /\\\\sim\\\\joinrel\\\\leadsto/g, '\\u27FF' ],\n [ /\\\\ElsevierGlyph\\{E212\\}/g, '\\u2905' ],\n [ /\\\\UpArrowBar /g, '\\u2912' ],\n [ /\\\\DownArrowBar /g, '\\u2913' ],\n [ /\\\\ElsevierGlyph\\{E20C\\}/g, '\\u2923' ],\n [ /\\\\ElsevierGlyph\\{E20D\\}/g, '\\u2924' ],\n [ /\\\\ElsevierGlyph\\{E20B\\}/g, '\\u2925' ],\n [ /\\\\ElsevierGlyph\\{E20A\\}/g, '\\u2926' ],\n [ /\\\\ElsevierGlyph\\{E211\\}/g, '\\u2927' ],\n [ /\\\\ElsevierGlyph\\{E20E\\}/g, '\\u2928' ],\n [ /\\\\ElsevierGlyph\\{E20F\\}/g, '\\u2929' ],\n [ /\\\\ElsevierGlyph\\{E210\\}/g, '\\u292A' ],\n [ /\\\\ElsevierGlyph\\{E21C\\}/g, '\\u2933' ],\n [ /\\\\ElsevierGlyph\\{E21D\\}/g, '\\u2933-00338' ],\n [ /\\\\ElsevierGlyph\\{E21A\\}/g, '\\u2936' ],\n [ /\\\\ElsevierGlyph\\{E219\\}/g, '\\u2937' ],\n [ /\\\\Elolarr /g, '\\u2940' ],\n [ /\\\\Elorarr /g, '\\u2941' ],\n [ /\\\\ElzRlarr /g, '\\u2942' ],\n [ /\\\\ElzrLarr /g, '\\u2944' ],\n [ /\\\\Elzrarrx /g, '\\u2947' ],\n [ /\\\\LeftRightVector /g, '\\u294E' ],\n [ /\\\\RightUpDownVector /g, '\\u294F' ],\n [ /\\\\DownLeftRightVector /g, '\\u2950' ],\n [ /\\\\LeftUpDownVector /g, '\\u2951' ],\n [ /\\\\LeftVectorBar /g, '\\u2952' ],\n [ /\\\\RightVectorBar /g, '\\u2953' ],\n [ /\\\\RightUpVectorBar /g, '\\u2954' ],\n [ /\\\\RightDownVectorBar /g, '\\u2955' ],\n [ /\\\\DownLeftVectorBar /g, '\\u2956' ],\n [ /\\\\DownRightVectorBar /g, '\\u2957' ],\n [ /\\\\LeftUpVectorBar /g, '\\u2958' ],\n [ /\\\\LeftDownVectorBar /g, '\\u2959' ],\n [ /\\\\LeftTeeVector /g, '\\u295A' ],\n [ /\\\\RightTeeVector /g, '\\u295B' ],\n [ /\\\\RightUpTeeVector /g, '\\u295C' ],\n [ /\\\\RightDownTeeVector /g, '\\u295D' ],\n [ /\\\\DownLeftTeeVector /g, '\\u295E' ],\n [ /\\\\DownRightTeeVector /g, '\\u295F' ],\n [ /\\\\LeftUpTeeVector /g, '\\u2960' ],\n [ /\\\\LeftDownTeeVector /g, '\\u2961' ],\n [ /\\\\UpEquilibrium /g, '\\u296E' ],\n [ /\\\\ReverseUpEquilibrium /g, '\\u296F' ],\n [ /\\\\RoundImplies /g, '\\u2970' ],\n [ /\\\\ElsevierGlyph\\{E214\\}/g, '\\u297C' ],\n [ /\\\\ElsevierGlyph\\{E215\\}/g, '\\u297D' ],\n [ /\\\\Elztfnc /g, '\\u2980' ],\n [ /\\\\ElsevierGlyph\\{3018\\}/g, '\\u2985' ],\n [ /\\\\Elroang /g, '\\u2986' ],\n [ /\\\\ElsevierGlyph\\{E291\\}/g, '\\u2994' ],\n [ /\\\\Elzddfnc /g, '\\u2999' ],\n [ /\\\\Angle /g, '\\u299C' ],\n [ /\\\\Elzlpargt /g, '\\u29A0' ],\n [ /\\\\ElsevierGlyph\\{E260\\}/g, '\\u29B5' ],\n [ /\\\\ElsevierGlyph\\{E61B\\}/g, '\\u29B6' ],\n [ /\\\\ElzLap /g, '\\u29CA' ],\n [ /\\\\Elzdefas /g, '\\u29CB' ],\n [ /\\\\LeftTriangleBar /g, '\\u29CF' ],\n [ /\\\\NotLeftTriangleBar /g, '\\u29CF-00338' ],\n [ /\\\\RightTriangleBar /g, '\\u29D0' ],\n [ /\\\\NotRightTriangleBar /g, '\\u29D0-00338' ],\n [ /\\\\ElsevierGlyph\\{E372\\}/g, '\\u29DC' ],\n [ /\\\\blacklozenge /g, '\\u29EB' ],\n [ /\\\\RuleDelayed /g, '\\u29F4' ],\n [ /\\\\Elxuplus /g, '\\u2A04' ],\n [ /\\\\ElzThr /g, '\\u2A05' ],\n [ /\\\\Elxsqcup /g, '\\u2A06' ],\n [ /\\\\ElzInf /g, '\\u2A07' ],\n [ /\\\\ElzSup /g, '\\u2A08' ],\n [ /\\\\ElzCint /g, '\\u2A0D' ],\n [ /\\\\clockoint /g, '\\u2A0F' ],\n [ /\\\\ElsevierGlyph\\{E395\\}/g, '\\u2A10' ],\n [ /\\\\sqrint /g, '\\u2A16' ],\n [ /\\\\ElsevierGlyph\\{E25A\\}/g, '\\u2A25' ],\n [ /\\\\ElsevierGlyph\\{E25B\\}/g, '\\u2A2A' ],\n [ /\\\\ElsevierGlyph\\{E25C\\}/g, '\\u2A2D' ],\n [ /\\\\ElsevierGlyph\\{E25D\\}/g, '\\u2A2E' ],\n [ /\\\\ElzTimes /g, '\\u2A2F' ],\n [ /\\\\ElsevierGlyph\\{E25E\\}/g, '\\u2A34' ],\n [ /\\\\ElsevierGlyph\\{E25E\\}/g, '\\u2A35' ],\n [ /\\\\ElsevierGlyph\\{E259\\}/g, '\\u2A3C' ],\n [ /\\\\amalg /g, '\\u2A3F' ],\n [ /\\\\ElzAnd /g, '\\u2A53' ],\n [ /\\\\ElzOr /g, '\\u2A54' ],\n [ /\\\\ElsevierGlyph\\{E36E\\}/g, '\\u2A55' ],\n [ /\\\\ElOr /g, '\\u2A56' ],\n [ /\\\\perspcorrespond /g, '\\u2A5E' ],\n [ /\\\\Elzminhat /g, '\\u2A5F' ],\n [ /\\\\ElsevierGlyph\\{225A\\}/g, '\\u2A63' ],\n [ /\\\\stackrel\\{*\\}\\{=\\}/g, '\\u2A6E' ],\n [ /\\\\Equal /g, '\\u2A75' ],\n [ /\\\\leqslant /g, '\\u2A7D' ],\n [ /\\\\nleqslant /g, '\\u2A7D-00338' ],\n [ /\\\\geqslant /g, '\\u2A7E' ],\n [ /\\\\ngeqslant /g, '\\u2A7E-00338' ],\n [ /\\\\lessapprox /g, '\\u2A85' ],\n [ /\\\\gtrapprox /g, '\\u2A86' ],\n [ /\\\\lneq /g, '\\u2A87' ],\n [ /\\\\gneq /g, '\\u2A88' ],\n [ /\\\\lnapprox /g, '\\u2A89' ],\n [ /\\\\gnapprox /g, '\\u2A8A' ],\n [ /\\\\lesseqqgtr /g, '\\u2A8B' ],\n [ /\\\\gtreqqless /g, '\\u2A8C' ],\n [ /\\\\eqslantless /g, '\\u2A95' ],\n [ /\\\\eqslantgtr /g, '\\u2A96' ],\n [ /\\\\Pisymbol\\{ppi020\\}\\{117\\}/g, '\\u2A9D' ],\n [ /\\\\Pisymbol\\{ppi020\\}\\{105\\}/g, '\\u2A9E' ],\n [ /\\\\NestedLessLess /g, '\\u2AA1' ],\n [ /\\\\NotNestedLessLess /g, '\\u2AA1-00338' ],\n [ /\\\\NestedGreaterGreater /g, '\\u2AA2' ],\n [ /\\\\NotNestedGreaterGreater /g, '\\u2AA2-00338' ],\n [ /\\\\preceq /g, '\\u2AAF' ],\n [ /\\\\not\\\\preceq /g, '\\u2AAF-00338' ],\n [ /\\\\succeq /g, '\\u2AB0' ],\n [ /\\\\not\\\\succeq /g, '\\u2AB0-00338' ],\n [ /\\\\precneqq /g, '\\u2AB5' ],\n [ /\\\\succneqq /g, '\\u2AB6' ],\n [ /\\\\precapprox /g, '\\u2AB7' ],\n [ /\\\\succapprox /g, '\\u2AB8' ],\n [ /\\\\precnapprox /g, '\\u2AB9' ],\n [ /\\\\succnapprox /g, '\\u2ABA' ],\n [ /\\\\subseteqq /g, '\\u2AC5' ],\n [ /\\\\nsubseteqq /g, '\\u2AC5-00338' ],\n [ /\\\\supseteqq /g, '\\u2AC6' ],\n [ /\\\\nsupseteqq/g, '\\u2AC6-00338' ],\n [ /\\\\subsetneqq /g, '\\u2ACB' ],\n [ /\\\\supsetneqq /g, '\\u2ACC' ],\n [ /\\\\ElsevierGlyph\\{E30D\\}/g, '\\u2AEB' ],\n [ /\\\\Elztdcol /g, '\\u2AF6' ],\n [ /\\\\ElsevierGlyph\\{300A\\}/g, '\\u300A' ],\n [ /\\\\ElsevierGlyph\\{300B\\}/g, '\\u300B' ],\n [ /\\\\ElsevierGlyph\\{3018\\}/g, '\\u3018' ],\n [ /\\\\ElsevierGlyph\\{3019\\}/g, '\\u3019' ],\n [ /\\\\openbracketleft /g, '\\u301A' ],\n [ /\\\\openbracketright /g, '\\u301B' ]\n ]\n\n return this;\n} // end function BibtexParser\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = BibtexParser;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/libs/bibtex.js\n ** module id = 42\n ** module chunks = 0\n **/","define([\n \"mvc/base-mvc\",\n \"mvc/citation/citation-model\",\n \"utils/localization\"\n], function( baseMVC, citationModel, _l ){\n\nvar CitationView = Backbone.View.extend({\n tagName: 'div',\n className: 'citations',\n render: function() {\n this.$el.append( \"

    \" + this.formattedReference() + \"

    \" );\n return this;\n },\n formattedReference: function() {\n var model = this.model;\n var entryType = model.entryType();\n var fields = model.fields();\n\n var ref = \"\";\n // Code inspired by...\n // https://github.com/vkaravir/bib-publication-list/blob/master/src/bib-publication-list.js\n var authorsAndYear = this._asSentence( (fields.author ? fields.author : \"\") + (fields.year ? (\" (\" + fields.year + \")\") : \"\") ) + \" \";\n var title = fields.title || \"\";\n var pages = fields.pages ? (\"pp. \" + fields.pages) : \"\";\n var address = fields.address;\n if( entryType == \"article\" ) {\n var volume = (fields.volume ? fields.volume : \"\") +\n (fields.number ? ( \" (\" + fields.number + \")\" ) : \"\") +\n (pages ? \", \" + pages : \"\");\n ref = authorsAndYear + this._asSentence(title) +\n (fields.journal ? (\"In \" + fields.journal + \", \") : \"\") +\n this._asSentence(volume) + \n this._asSentence(fields.address) +\n \"<\\/em>\";\n } else if( entryType == \"inproceedings\" || entryType == \"proceedings\" ) {\n ref = authorsAndYear + \n this._asSentence(title) + \n (fields.booktitle ? (\"In \" + fields.booktitle + \", \") : \"\") +\n (pages ? pages : \"\") +\n (address ? \", \" + address : \"\") + \n \".<\\/em>\";\n } else if( entryType == \"mastersthesis\" || entryType == \"phdthesis\" ) {\n ref = authorsAndYear + this._asSentence(title) +\n (fields.howpublished ? fields.howpublished + \". \" : \"\") +\n (fields.note ? fields.note + \".\" : \"\");\n } else if( entryType == \"techreport\" ) {\n ref = authorsAndYear + this._asSentence(title) +\n this._asSentence(fields.institution) +\n this._asSentence(fields.number) +\n this._asSentence(fields.type);\n } else if( entryType == \"book\" || entryType == \"inbook\" || entryType == \"incollection\" ) {\n ref = authorsAndYear + \" \" + this._formatBookInfo(fields);\n } else {\n ref = authorsAndYear + \" \" + this._asSentence(title) +\n this._asSentence(fields.howpublished) +\n this._asSentence(fields.note);\n }\n var doiUrl = \"\";\n if( fields.doi ) {\n doiUrl = 'http://dx.doi.org/' + fields.doi;\n ref += '[doi:' + fields.doi + \"]\";\n }\n var url = fields.url || doiUrl;\n if( url ) {\n ref += '[Link]';\n }\n return ref;\n },\n _formatBookInfo: function(fields) {\n var info = \"\";\n if( fields.chapter ) {\n info += fields.chapter + \" in \";\n }\n if( fields.title ) {\n info += \"\" + fields.title + \"<\\/em>\";\n }\n if( fields.editor ) {\n info += \", Edited by \" + fields.editor + \", \";\n }\n if( fields.publisher) {\n info += \", \" + fields.publisher;\n }\n if( fields.pages ) {\n info += \", pp. \" + fields.pages + \"\";\n }\n if( fields.series ) {\n info += \", \" + fields.series + \"<\\/em>\";\n }\n if( fields.volume ) {\n info += \", Vol.\" + fields.volume;\n }\n if( fields.issn ) {\n info += \", ISBN: \" + fields.issn;\n }\n return info + \".\";\n },\n _asSentence: function(str) {\n return (str && str.trim()) ? str + \". \" : \"\";\n }\n});\n\nvar CitationListView = Backbone.View.extend({\n el: '#citations',\n /**\n * Set up view.\n */\n initialize: function() {\n this.listenTo( this.collection, 'add', this.renderCitation );\n },\n\n events: {\n 'click .citations-to-bibtex': 'showBibtex',\n 'click .citations-to-formatted': 'showFormatted'\n },\n\n renderCitation: function( citation ) {\n var citationView = new CitationView( { model: citation } );\n this.$(\".citations-formatted\").append( citationView.render().el );\n var rawTextarea = this.$(\".citations-bibtex-text\");\n rawTextarea.val( rawTextarea.val() + \"\\n\\r\" + citation.attributes.content );\n },\n\n render: function() {\n this.$el.html(this.citationsElement());\n this.collection.each(function( item ){\n this.renderCitation( item );\n }, this);\n this.showFormatted();\n },\n\n showBibtex: function() {\n this.$(\".citations-to-formatted\").show();\n this.$(\".citations-to-bibtex\").hide();\n this.$(\".citations-bibtex\").show();\n this.$(\".citations-formatted\").hide();\n this.$(\".citations-bibtex-text\").select();\n },\n\n showFormatted: function() {\n this.$(\".citations-to-formatted\").hide();\n this.$(\".citations-to-bibtex\").show();\n this.$(\".citations-bibtex\").hide();\n this.$(\".citations-formatted\").show();\n },\n\n partialWarningElement: function() {\n if( this.collection.partial ) {\n return [\n '
    ',\n 'Warning: This is a experimental feature. Most Galaxy tools will not annotate',\n ' citations explicitly at this time. When writing up your analysis, please manually',\n ' review your histories and find all references',\n ' that should be cited in order to completely describe your work. Also, please remember to',\n ' cite Galaxy.',\n '
    ',\n ].join('');\n } else {\n return '';\n }\n },\n\n citationsElement: function() {\n return [\n '
    ',\n '
    ',\n _l(\"Citations\"),\n ' ',\n ' ',\n '
    ',\n '
    ',\n this.partialWarningElement(),\n '',\n '
    ',\n '
    ',\n '',\n '
    ',\n '
    '\n ].join( '' );\n }\n});\n\n//==============================================================================\nreturn {\n CitationView : CitationView,\n CitationListView : CitationListView\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/citation/citation-view.js\n ** module id = 43\n ** module chunks = 0\n **/","/**\n This class handles job submissions and validations.\n*/\ndefine(['utils/utils', 'mvc/tool/tools-template'], function(Utils, ToolTemplate) {\nreturn {\n submit: function(form, options, callback) {\n // link this\n var self = this;\n\n // create job definition for submission to tools api\n var job_def = {\n tool_id : options.id,\n tool_version : options.version,\n inputs : form.data.create()\n }\n\n // reset\n form.trigger('reset');\n\n // validate job definition\n if (!this._validation(form, job_def)) {\n Galaxy.emit.debug('tools-jobs::submit()', 'Submission canceled. Validation failed.');\n callback && callback();\n return;\n }\n\n // debug\n Galaxy.emit.debug('tools-jobs::submit()', 'Validation complete.', job_def);\n\n // post job\n Utils.request({\n type : 'POST',\n url : Galaxy.root + 'api/tools',\n data : job_def,\n success : function(response) {\n callback && callback();\n form.$el.replaceWith( ToolTemplate.success( response ) );\n // begin checking the history for updates\n self._refreshHdas();\n },\n error : function(response) {\n callback && callback();\n Galaxy.emit.debug('tools-jobs::submit', 'Submission failed.', response);\n if (response && response.err_data) {\n var error_messages = form.data.matchResponse(response.err_data);\n for (var input_id in error_messages) {\n form.highlight(input_id, error_messages[input_id]);\n break;\n }\n } else {\n form.modal.show({\n title : 'Job submission failed',\n body : ( response && response.err_msg ) || ToolTemplate.error( job_def ),\n buttons : {\n 'Close' : function() {\n form.modal.hide();\n }\n }\n });\n }\n }\n });\n },\n\n /** Validate job definition\n */\n _validation: function(form, job_def) {\n // get input parameters\n var job_inputs = job_def.inputs;\n\n // counter for values declared in batch mode\n var batch_n = -1;\n var batch_src = null;\n\n // validation\n for (var job_input_id in job_inputs) {\n // get current value\n var input_value = job_inputs[job_input_id];\n\n // collect input field properties\n var input_id = form.data.match(job_input_id);\n var input_field = form.field_list[input_id];\n var input_def = form.input_list[input_id];\n\n // check if objects where properly identified\n if (!input_id || !input_def || !input_field) {\n Galaxy.emit.debug('tools-jobs::_validation()', 'Retrieving input objects failed.');\n continue;\n }\n\n // validate non-optional fields\n if (!input_def.optional && input_value == null) {\n form.highlight(input_id);\n return false;\n }\n\n // check if input field is in batch mode\n if (input_value && input_value.batch) {\n // get values\n var n = input_value.values.length;\n\n // get source\n var src = null;\n if (n > 0) {\n src = input_value.values[0] && input_value.values[0].src;\n }\n\n // check source type\n if (src) {\n if (batch_src === null) {\n batch_src = src;\n } else {\n if (batch_src !== src) {\n form.highlight(input_id, 'Please select either dataset or dataset list fields for all batch mode fields.');\n return false;\n }\n }\n }\n\n // check number of inputs\n if (batch_n === -1) {\n batch_n = n;\n } else {\n if (batch_n !== n) {\n form.highlight(input_id, 'Please make sure that you select the same number of inputs for all batch mode fields. This field contains ' + n + ' selection(s) while a previous field contains ' + batch_n + '.');\n return false;\n }\n }\n }\n }\n\n // return validation result\n return true;\n },\n\n /** Refreshes the history panel\n */\n _refreshHdas: function(detailIds, options) {\n if (parent.Galaxy && parent.Galaxy.currHistoryPanel) {\n parent.Galaxy.currHistoryPanel.refreshContents(detailIds, options);\n }\n }\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/tool/tools-jobs.js\n ** module id = 44\n ** module chunks = 0\n **/","var Handlebars = require(\"/Users/carleberhard/galaxy/client-build/client/node_modules/handlebars/runtime.js\");\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"
    \\n \\n
    \\n \"\n + ((stack1 = ((helper = (helper = helpers.html || (depth0 != null ? depth0.html : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"html\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n + \"\\n
    \\n
    \\n \"\n + alias4(((helper = (helper = helpers.help || (depth0 != null ? depth0.help : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"help\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n
    \\n
    \\n
    \\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"
    \"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \" (version \"\n + alias4(((helper = (helper = helpers.version || (depth0 != null ? depth0.version : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"version\",\"hash\":{},\"data\":data}) : helper)))\n + \")
    \\n
    \\n\"\n + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.inputs : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"
    \\n
    \\n \\n
    \\n
    \\n
    \"\n + alias4(((helper = (helper = helpers.help || (depth0 != null ? depth0.help : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"help\",\"hash\":{},\"data\":data}) : helper)))\n + \"
    \\n
    \";\n},\"useData\":true});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/templates/tool_form.handlebars\n ** module id = 45\n ** module chunks = 0\n **/","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/runtime.js\n ** module id = 46\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7Ozs7SUFBN0IsSUFBSTs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7OztBQUdqRCxTQUFTLE1BQU0sR0FBRztBQUNoQixNQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDOztBQUUxQyxPQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QixJQUFFLENBQUMsVUFBVSxvQ0FBYSxDQUFDO0FBQzNCLElBQUUsQ0FBQyxTQUFTLG1DQUFZLENBQUM7QUFDekIsSUFBRSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDakIsSUFBRSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzs7QUFFN0MsSUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDaEIsSUFBRSxDQUFDLFFBQVEsR0FBRyxVQUFTLElBQUksRUFBRTtBQUMzQixXQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0dBQ25DLENBQUM7O0FBRUYsU0FBTyxFQUFFLENBQUM7Q0FDWDs7QUFFRCxJQUFJLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQzs7QUFFckIsa0NBQVcsSUFBSSxDQUFDLENBQUM7O0FBRWpCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7O3FCQUVSLElBQUkiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMucnVudGltZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJhc2UgZnJvbSAnLi9oYW5kbGViYXJzL2Jhc2UnO1xuXG4vLyBFYWNoIG9mIHRoZXNlIGF1Z21lbnQgdGhlIEhhbmRsZWJhcnMgb2JqZWN0LiBObyBuZWVkIHRvIHNldHVwIGhlcmUuXG4vLyAoVGhpcyBpcyBkb25lIHRvIGVhc2lseSBzaGFyZSBjb2RlIGJldHdlZW4gY29tbW9uanMgYW5kIGJyb3dzZSBlbnZzKVxuaW1wb3J0IFNhZmVTdHJpbmcgZnJvbSAnLi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9oYW5kbGViYXJzL2V4Y2VwdGlvbic7XG5pbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL2hhbmRsZWJhcnMvdXRpbHMnO1xuaW1wb3J0ICogYXMgcnVudGltZSBmcm9tICcuL2hhbmRsZWJhcnMvcnVudGltZSc7XG5cbmltcG9ydCBub0NvbmZsaWN0IGZyb20gJy4vaGFuZGxlYmFycy9uby1jb25mbGljdCc7XG5cbi8vIEZvciBjb21wYXRpYmlsaXR5IGFuZCB1c2FnZSBvdXRzaWRlIG9mIG1vZHVsZSBzeXN0ZW1zLCBtYWtlIHRoZSBIYW5kbGViYXJzIG9iamVjdCBhIG5hbWVzcGFjZVxuZnVuY3Rpb24gY3JlYXRlKCkge1xuICBsZXQgaGIgPSBuZXcgYmFzZS5IYW5kbGViYXJzRW52aXJvbm1lbnQoKTtcblxuICBVdGlscy5leHRlbmQoaGIsIGJhc2UpO1xuICBoYi5TYWZlU3RyaW5nID0gU2FmZVN0cmluZztcbiAgaGIuRXhjZXB0aW9uID0gRXhjZXB0aW9uO1xuICBoYi5VdGlscyA9IFV0aWxzO1xuICBoYi5lc2NhcGVFeHByZXNzaW9uID0gVXRpbHMuZXNjYXBlRXhwcmVzc2lvbjtcblxuICBoYi5WTSA9IHJ1bnRpbWU7XG4gIGhiLnRlbXBsYXRlID0gZnVuY3Rpb24oc3BlYykge1xuICAgIHJldHVybiBydW50aW1lLnRlbXBsYXRlKHNwZWMsIGhiKTtcbiAgfTtcblxuICByZXR1cm4gaGI7XG59XG5cbmxldCBpbnN0ID0gY3JlYXRlKCk7XG5pbnN0LmNyZWF0ZSA9IGNyZWF0ZTtcblxubm9Db25mbGljdChpbnN0KTtcblxuaW5zdFsnZGVmYXVsdCddID0gaW5zdDtcblxuZXhwb3J0IGRlZmF1bHQgaW5zdDtcbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars.runtime.js\n ** module id = 47\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar VERSION = '4.0.4';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 7;\n\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQTRDLFNBQVM7O3lCQUMvQixhQUFhOzs7O3VCQUNFLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNuQyxVQUFVOzs7O0FBRXRCLElBQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQzs7QUFDeEIsSUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7OztBQUU1QixJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxVQUFVO0NBQ2QsQ0FBQzs7O0FBRUYsSUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7O0FBRTlCLFNBQVMscUJBQXFCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7QUFDbkUsTUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzdCLE1BQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUMvQixNQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxFQUFFLENBQUM7O0FBRW5DLFdBeEJNLHNCQUFzQixDQXdCTCxJQUFJLENBQUMsQ0FBQztBQUM3QixjQXhCTSx5QkFBeUIsQ0F3QkwsSUFBSSxDQUFDLENBQUM7Q0FDakM7O0FBRUQscUJBQXFCLENBQUMsU0FBUyxHQUFHO0FBQ2hDLGFBQVcsRUFBRSxxQkFBcUI7O0FBRWxDLFFBQU0scUJBQVE7QUFDZCxLQUFHLEVBQUUsb0JBQU8sR0FBRzs7QUFFZixnQkFBYyxFQUFFLHdCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDakMsUUFBSSxPQXJDcUIsUUFBUSxDQXFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtBQUN0QyxVQUFJLEVBQUUsRUFBRTtBQUFFLGNBQU0sMkJBQWMseUNBQXlDLENBQUMsQ0FBQztPQUFFO0FBQzNFLGFBdkNlLE1BQU0sQ0F1Q2QsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM1QixNQUFNO0FBQ0wsVUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDekI7R0FDRjtBQUNELGtCQUFnQixFQUFFLDBCQUFTLElBQUksRUFBRTtBQUMvQixXQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDM0I7O0FBRUQsaUJBQWUsRUFBRSx5QkFBUyxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLFFBQUksT0FqRHFCLFFBQVEsQ0FpRHBCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsYUFsRGUsTUFBTSxDQWtEZCxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzdCLE1BQU07QUFDTCxVQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtBQUNsQyxjQUFNLHlFQUEwRCxJQUFJLG9CQUFpQixDQUFDO09BQ3ZGO0FBQ0QsVUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDL0I7R0FDRjtBQUNELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRTtBQUNoQyxXQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDNUI7O0FBRUQsbUJBQWlCLEVBQUUsMkJBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNwQyxRQUFJLE9BL0RxQixRQUFRLENBK0RwQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQUUsY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQUU7QUFDOUUsYUFqRWUsTUFBTSxDQWlFZCxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQy9CLE1BQU07QUFDTCxVQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUM1QjtHQUNGO0FBQ0QscUJBQW1CLEVBQUUsNkJBQVMsSUFBSSxFQUFFO0FBQ2xDLFdBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUM5QjtDQUNGLENBQUM7O0FBRUssSUFBSSxHQUFHLEdBQUcsb0JBQU8sR0FBRyxDQUFDOzs7UUFFcEIsV0FBVyxVQTdFWCxXQUFXO1FBNkVFLE1BQU0iLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvYmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlRnJhbWUsIGV4dGVuZCwgdG9TdHJpbmd9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdEhlbHBlcnN9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQge3JlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnN9IGZyb20gJy4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnNC4wLjQnO1xuZXhwb3J0IGNvbnN0IENPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAnXG59O1xuXG5jb25zdCBvYmplY3RUeXBlID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBIYW5kbGViYXJzRW52aXJvbm1lbnQoaGVscGVycywgcGFydGlhbHMsIGRlY29yYXRvcnMpIHtcbiAgdGhpcy5oZWxwZXJzID0gaGVscGVycyB8fCB7fTtcbiAgdGhpcy5wYXJ0aWFscyA9IHBhcnRpYWxzIHx8IHt9O1xuICB0aGlzLmRlY29yYXRvcnMgPSBkZWNvcmF0b3JzIHx8IHt9O1xuXG4gIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnModGhpcyk7XG4gIHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnModGhpcyk7XG59XG5cbkhhbmRsZWJhcnNFbnZpcm9ubWVudC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBIYW5kbGViYXJzRW52aXJvbm1lbnQsXG5cbiAgbG9nZ2VyOiBsb2dnZXIsXG4gIGxvZzogbG9nZ2VyLmxvZyxcblxuICByZWdpc3RlckhlbHBlcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgaGVscGVycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5oZWxwZXJzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWxwZXJzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVySGVscGVyOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuaGVscGVyc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUsIHBhcnRpYWwpIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oYEF0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgYSBwYXJ0aWFsIGNhbGxlZCBcIiR7bmFtZX1cIiBhcyB1bmRlZmluZWRgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7IHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpOyB9XG4gICAgICBleHRlbmQodGhpcy5kZWNvcmF0b3JzLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWNvcmF0b3JzW25hbWVdID0gZm47XG4gICAgfVxuICB9LFxuICB1bnJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1lXTtcbiAgfVxufTtcblxuZXhwb3J0IGxldCBsb2cgPSBsb2dnZXIubG9nO1xuXG5leHBvcnQge2NyZWF0ZUZyYW1lLCBsb2dnZXJ9O1xuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/base.js\n ** module id = 48\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nexports.toString = toString;\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexports.isArray = isArray;\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQ3ZCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRTdCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQUlNLFVBQVUsR0FKaEIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssbUJBQW1CLENBQUM7R0FDcEYsQ0FBQztDQUNIO1FBQ08sVUFBVSxHQUFWLFVBQVU7Ozs7O0FBSVgsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxVQUFTLEtBQUssRUFBRTtBQUN0RCxTQUFPLEFBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsR0FBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUFHLEtBQUssQ0FBQztDQUNqRyxDQUFDOzs7OztBQUdLLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUdNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUFFLFdBQU8sTUFBTSxDQUFDO0dBQUU7QUFDOUMsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gICAgICBwb3NzaWJsZSA9IC9bJjw+XCInYD1dLztcblxuZnVuY3Rpb24gZXNjYXBlQ2hhcihjaHIpIHtcbiAgcmV0dXJuIGVzY2FwZVtjaHJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKG9iaiAvKiAsIC4uLnNvdXJjZSAqLykge1xuICBmb3IgKGxldCBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAobGV0IGtleSBpbiBhcmd1bWVudHNbaV0pIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXJndW1lbnRzW2ldLCBrZXkpKSB7XG4gICAgICAgIG9ialtrZXldID0gYXJndW1lbnRzW2ldW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZXhwb3J0IGxldCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8vIFNvdXJjZWQgZnJvbSBsb2Rhc2hcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9sb2Rhc2gvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHRcbi8qIGVzbGludC1kaXNhYmxlIGZ1bmMtc3R5bGUgKi9cbmxldCBpc0Z1bmN0aW9uID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn07XG4vLyBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgQ2hyb21lIGFuZCBTYWZhcmlcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoaXNGdW5jdGlvbigveC8pKSB7XG4gIGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG4gIH07XG59XG5leHBvcnQge2lzRnVuY3Rpb259O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSA/IHRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nIDogZmFsc2U7XG59O1xuXG4vLyBPbGRlciBJRSB2ZXJzaW9ucyBkbyBub3QgZGlyZWN0bHkgc3VwcG9ydCBpbmRleE9mIHNvIHdlIG11c3QgaW1wbGVtZW50IG91ciBvd24sIHNhZGx5LlxuZXhwb3J0IGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGVzY2FwZSBTYWZlU3RyaW5ncywgc2luY2UgdGhleSdyZSBhbHJlYWR5IHNhZmVcbiAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHtcbiAgICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7XG4gICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSBpZiAoIXN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZyArICcnO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhlIGFwcGVuZCByZWdhcmRsZXNzIGFuZFxuICAgIC8vIHRoZSByZWdleCB0ZXN0IHdpbGwgZG8gdGhpcyB0cmFuc3BhcmVudGx5IGJlaGluZCB0aGUgc2NlbmVzLCBjYXVzaW5nIGlzc3VlcyBpZlxuICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0LlxuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nO1xuICB9XG5cbiAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHsgcmV0dXJuIHN0cmluZzsgfVxuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoYmFkQ2hhcnMsIGVzY2FwZUNoYXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlICYmIHZhbHVlICE9PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcmFtZShvYmplY3QpIHtcbiAgbGV0IGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpO1xuICBmcmFtZS5fcGFyZW50ID0gb2JqZWN0O1xuICByZXR1cm4gZnJhbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibG9ja1BhcmFtcyhwYXJhbXMsIGlkcykge1xuICBwYXJhbXMucGF0aCA9IGlkcztcbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZENvbnRleHRQYXRoKGNvbnRleHRQYXRoLCBpZCkge1xuICByZXR1cm4gKGNvbnRleHRQYXRoID8gY29udGV4dFBhdGggKyAnLicgOiAnJykgKyBpZDtcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/utils.js\n ** module id = 49\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n column = undefined;\n if (loc) {\n line = loc.start.line;\n column = loc.start.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n if (loc) {\n this.lineNumber = line;\n this.column = column;\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsSUFBTSxVQUFVLEdBQUcsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFFbkcsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDdEIsSUFBSSxZQUFBO01BQ0osTUFBTSxZQUFBLENBQUM7QUFDWCxNQUFJLEdBQUcsRUFBRTtBQUNQLFFBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUN0QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7O0FBRTFCLFdBQU8sSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUM7R0FDeEM7O0FBRUQsTUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQzs7O0FBRzFELE9BQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQ2hELFFBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7R0FDOUM7OztBQUdELE1BQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO0FBQzNCLFNBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7R0FDMUM7O0FBRUQsTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUN2QixRQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztHQUN0QjtDQUNGOztBQUVELFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQzs7cUJBRW5CLFNBQVMiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvZXhjZXB0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5jb25zdCBlcnJvclByb3BzID0gWydkZXNjcmlwdGlvbicsICdmaWxlTmFtZScsICdsaW5lTnVtYmVyJywgJ21lc3NhZ2UnLCAnbmFtZScsICdudW1iZXInLCAnc3RhY2snXTtcblxuZnVuY3Rpb24gRXhjZXB0aW9uKG1lc3NhZ2UsIG5vZGUpIHtcbiAgbGV0IGxvYyA9IG5vZGUgJiYgbm9kZS5sb2MsXG4gICAgICBsaW5lLFxuICAgICAgY29sdW1uO1xuICBpZiAobG9jKSB7XG4gICAgbGluZSA9IGxvYy5zdGFydC5saW5lO1xuICAgIGNvbHVtbiA9IGxvYy5zdGFydC5jb2x1bW47XG5cbiAgICBtZXNzYWdlICs9ICcgLSAnICsgbGluZSArICc6JyArIGNvbHVtbjtcbiAgfVxuXG4gIGxldCB0bXAgPSBFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBtZXNzYWdlKTtcblxuICAvLyBVbmZvcnR1bmF0ZWx5IGVycm9ycyBhcmUgbm90IGVudW1lcmFibGUgaW4gQ2hyb21lIChhdCBsZWFzdCksIHNvIGBmb3IgcHJvcCBpbiB0bXBgIGRvZXNuJ3Qgd29yay5cbiAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgZXJyb3JQcm9wcy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgdGhpc1tlcnJvclByb3BzW2lkeF1dID0gdG1wW2Vycm9yUHJvcHNbaWR4XV07XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBFeGNlcHRpb24pO1xuICB9XG5cbiAgaWYgKGxvYykge1xuICAgIHRoaXMubGluZU51bWJlciA9IGxpbmU7XG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/exception.js\n ** module id = 50\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7eUNBQXVDLGdDQUFnQzs7OzsyQkFDOUMsZ0JBQWdCOzs7O29DQUNQLDBCQUEwQjs7Ozt5QkFDckMsY0FBYzs7OzswQkFDYixlQUFlOzs7OzZCQUNaLGtCQUFrQjs7OzsyQkFDcEIsZ0JBQWdCOzs7O0FBRWxDLFNBQVMsc0JBQXNCLENBQUMsUUFBUSxFQUFFO0FBQy9DLHlDQUEyQixRQUFRLENBQUMsQ0FBQztBQUNyQywyQkFBYSxRQUFRLENBQUMsQ0FBQztBQUN2QixvQ0FBc0IsUUFBUSxDQUFDLENBQUM7QUFDaEMseUJBQVcsUUFBUSxDQUFDLENBQUM7QUFDckIsMEJBQVksUUFBUSxDQUFDLENBQUM7QUFDdEIsNkJBQWUsUUFBUSxDQUFDLENBQUM7QUFDekIsMkJBQWEsUUFBUSxDQUFDLENBQUM7Q0FDeEIiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvaGVscGVycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZWdpc3RlckJsb2NrSGVscGVyTWlzc2luZyBmcm9tICcuL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcnO1xuaW1wb3J0IHJlZ2lzdGVyRWFjaCBmcm9tICcuL2hlbHBlcnMvZWFjaCc7XG5pbXBvcnQgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJJZiBmcm9tICcuL2hlbHBlcnMvaWYnO1xuaW1wb3J0IHJlZ2lzdGVyTG9nIGZyb20gJy4vaGVscGVycy9sb2cnO1xuaW1wb3J0IHJlZ2lzdGVyTG9va3VwIGZyb20gJy4vaGVscGVycy9sb29rdXAnO1xuaW1wb3J0IHJlZ2lzdGVyV2l0aCBmcm9tICcuL2hlbHBlcnMvd2l0aCc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRIZWxwZXJzKGluc3RhbmNlKSB7XG4gIHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJFYWNoKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJIZWxwZXJNaXNzaW5nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJJZihpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyTG9nKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb29rdXAoaW5zdGFuY2UpO1xuICByZWdpc3RlcldpdGgoaW5zdGFuY2UpO1xufVxuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers.js\n ** module id = 51\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBc0QsVUFBVTs7cUJBRWpELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQ3pCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVwQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksT0FYeUIsT0FBTyxDQVd4QixPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxPQXZCUSxXQUFXLENBdUJQLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxZQUFJLENBQUMsV0FBVyxHQUFHLE9BeEJuQixpQkFBaUIsQ0F3Qm9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RSxlQUFPLEdBQUcsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7T0FDeEI7O0FBRUQsYUFBTyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzdCO0dBQ0YsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGNyZWF0ZUZyYW1lLCBpc0FycmF5fSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdibG9ja0hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgbGV0IGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTtcbiAgICAgICAgb3B0aW9ucyA9IHtkYXRhOiBkYXRhfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js\n ** module id = 52\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else {\n var priorKey = undefined;\n\n for (var key in context) {\n if (context.hasOwnProperty(key)) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n }\n }\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQUErRSxVQUFVOzt5QkFDbkUsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksQ0FBQyxPQUFPLEVBQUU7QUFDWixZQUFNLDJCQUFjLDZCQUE2QixDQUFDLENBQUM7S0FDcEQ7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUU7UUFDZixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU87UUFDekIsQ0FBQyxHQUFHLENBQUM7UUFDTCxHQUFHLEdBQUcsRUFBRTtRQUNSLElBQUksWUFBQTtRQUNKLFdBQVcsWUFBQSxDQUFDOztBQUVoQixRQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixpQkFBVyxHQUFHLE9BakJaLGlCQUFpQixDQWlCYSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0tBQ2pGOztBQUVELFFBQUksT0FwQnNELFVBQVUsQ0FvQnJELE9BQU8sQ0FBQyxFQUFFO0FBQUUsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FBRTs7QUFFMUQsUUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ2hCLFVBQUksR0FBRyxPQXZCMkIsV0FBVyxDQXVCMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDN0IsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLE9BeENNLFdBQVcsQ0F3Q0wsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO09BQy9FLENBQUMsQ0FBQztLQUNKOztBQUVELFFBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtBQUMxQyxVQUFJLE9BN0MyQyxPQUFPLENBNkMxQyxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNO0FBQ0wsWUFBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixhQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtBQUN2QixjQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Ozs7QUFJL0IsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0w7U0FDRjtBQUNELFlBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQix1QkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3RDO09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvaGVscGVycy9lYWNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthcHBlbmRDb250ZXh0UGF0aCwgYmxvY2tQYXJhbXMsIGNyZWF0ZUZyYW1lLCBpc0FycmF5LCBpc0Z1bmN0aW9ufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdlYWNoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTXVzdCBwYXNzIGl0ZXJhdG9yIHRvICNlYWNoJyk7XG4gICAgfVxuXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbixcbiAgICAgICAgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgICAgaSA9IDAsXG4gICAgICAgIHJldCA9ICcnLFxuICAgICAgICBkYXRhLFxuICAgICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID0gYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHsgY29udGV4dCA9IGNvbnRleHQuY2FsbCh0aGlzKTsgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID0gcmV0ICsgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgYmxvY2tQYXJhbXM6IGJsb2NrUGFyYW1zKFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLCBbY29udGV4dFBhdGggKyBmaWVsZCwgbnVsbF0pXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcmlvcktleTtcblxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gY29udGV4dCkge1xuICAgICAgICAgIGlmIChjb250ZXh0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdFxuICAgICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYW4gaXRlcm1lZGlhdGUga2V5cyBhcnJheS5cbiAgICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByaW9yS2V5ID0ga2V5O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJpb3JLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICByZXQgPSBpbnZlcnNlKHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufVxuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/each.js\n ** module id = 53\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFBYyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDdkY7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9oZWxwZXJzL2hlbHBlci1taXNzaW5nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKC8qIFthcmdzLCBdb3B0aW9ucyAqLykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBBIG1pc3NpbmcgZmllbGQgaW4gYSB7e2Zvb319IGNvbnN0cnVjdC5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNvbWVvbmUgaXMgYWN0dWFsbHkgdHJ5aW5nIHRvIGNhbGwgc29tZXRoaW5nLCBibG93IHVwLlxuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTWlzc2luZyBoZWxwZXI6IFwiJyArIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0ubmFtZSArICdcIicpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/helper-missing.js\n ** module id = 54\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBa0MsVUFBVTs7cUJBRTdCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLE9BSlMsVUFBVSxDQUlSLFdBQVcsQ0FBQyxFQUFFO0FBQUUsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQUU7Ozs7O0FBS3RFLFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLE9BVC9DLE9BQU8sQ0FTZ0QsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFdBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztHQUN2SCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9oZWxwZXJzL2lmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc0VtcHR5LCBpc0Z1bmN0aW9ufSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdpZicsIGZ1bmN0aW9uKGNvbmRpdGlvbmFsLCBvcHRpb25zKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7IGNvbmRpdGlvbmFsID0gY29uZGl0aW9uYWwuY2FsbCh0aGlzKTsgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaW5zdGFuY2UuaGVscGVyc1snaWYnXS5jYWxsKHRoaXMsIGNvbmRpdGlvbmFsLCB7Zm46IG9wdGlvbnMuaW52ZXJzZSwgaW52ZXJzZTogb3B0aW9ucy5mbiwgaGFzaDogb3B0aW9ucy5oYXNofSk7XG4gIH0pO1xufVxuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/if.js\n ** module id = 55\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVMsSUFBSSxDQUFDLENBQUM7R0FDeEIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvaGVscGVycy9sb2cuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9nJywgZnVuY3Rpb24oLyogbWVzc2FnZSwgb3B0aW9ucyAqLykge1xuICAgIGxldCBhcmdzID0gW3VuZGVmaW5lZF0sXG4gICAgICAgIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgfVxuXG4gICAgbGV0IGxldmVsID0gMTtcbiAgICBpZiAob3B0aW9ucy5oYXNoLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5oYXNoLmxldmVsO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YS5sZXZlbCAhPSBudWxsKSB7XG4gICAgICBsZXZlbCA9IG9wdGlvbnMuZGF0YS5sZXZlbDtcbiAgICB9XG4gICAgYXJnc1swXSA9IGxldmVsO1xuXG4gICAgaW5zdGFuY2UubG9nKC4uLiBhcmdzKTtcbiAgfSk7XG59XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/log.js\n ** module id = 56\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field) {\n return obj && obj[field];\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ3JELFdBQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztHQUMxQixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9oZWxwZXJzL2xvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBvYmpbZmllbGRdO1xuICB9KTtcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/lookup.js\n ** module id = 57\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUErRSxVQUFVOztxQkFFMUUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3pELFFBQUksT0FKc0QsVUFBVSxDQUlyRCxPQUFPLENBQUMsRUFBRTtBQUFFLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQUU7O0FBRTFELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7O0FBRXBCLFFBQUksQ0FBQyxPQVI0QyxPQUFPLENBUTNDLE9BQU8sQ0FBQyxFQUFFO0FBQ3JCLFVBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEIsVUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsWUFBSSxHQUFHLE9BWHlCLFdBQVcsQ0FXeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcsT0FabkIsaUJBQWlCLENBWW9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztPQUNoRjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLE9BakJNLFdBQVcsQ0FpQkwsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7T0FDaEUsQ0FBQyxDQUFDO0tBQ0osTUFBTTtBQUNMLGFBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM5QjtHQUNGLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImxpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXBwZW5kQ29udGV4dFBhdGgsIGJsb2NrUGFyYW1zLCBjcmVhdGVGcmFtZSwgaXNFbXB0eSwgaXNGdW5jdGlvbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignd2l0aCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoaXNGdW5jdGlvbihjb250ZXh0KSkgeyBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpOyB9XG5cbiAgICBsZXQgZm4gPSBvcHRpb25zLmZuO1xuXG4gICAgaWYgKCFpc0VtcHR5KGNvbnRleHQpKSB7XG4gICAgICBsZXQgZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBhcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMuaWRzWzBdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgYmxvY2tQYXJhbXM6IGJsb2NrUGFyYW1zKFtjb250ZXh0XSwgW2RhdGEgJiYgZGF0YS5jb250ZXh0UGF0aF0pXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/helpers/with.js\n ** module id = 58\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9kZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG5cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/decorators.js\n ** module id = 59\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXFCLFVBQVU7O3FCQUVoQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsT0FWckIsTUFBTSxDQVVzQixFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImxpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtleHRlbmR9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/decorators/inline.js\n ** module id = 60\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n if (!console[method]) {\n // eslint-disable-line no-console\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUFzQixTQUFTOztBQUUvQixJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxPQVRiLE9BQU8sQ0FTYyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzlELFVBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtBQUNqQixhQUFLLEdBQUcsUUFBUSxDQUFDO09BQ2xCLE1BQU07QUFDTCxhQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztPQUM3QjtLQUNGOztBQUVELFdBQU8sS0FBSyxDQUFDO0dBQ2Q7OztBQUdELEtBQUcsRUFBRSxhQUFTLEtBQUssRUFBYztBQUMvQixTQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7QUFFbEMsUUFBSSxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFO0FBQy9FLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsVUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBUG1CLE9BQU87QUFBUCxlQUFPOzs7QUFRM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9sb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luZGV4T2Z9IGZyb20gJy4vdXRpbHMnO1xuXG5sZXQgbG9nZ2VyID0ge1xuICBtZXRob2RNYXA6IFsnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJ10sXG4gIGxldmVsOiAnaW5mbycsXG5cbiAgLy8gTWFwcyBhIGdpdmVuIGxldmVsIHZhbHVlIHRvIHRoZSBgbWV0aG9kTWFwYCBpbmRleGVzIGFib3ZlLlxuICBsb29rdXBMZXZlbDogZnVuY3Rpb24obGV2ZWwpIHtcbiAgICBpZiAodHlwZW9mIGxldmVsID09PSAnc3RyaW5nJykge1xuICAgICAgbGV0IGxldmVsTWFwID0gaW5kZXhPZihsb2dnZXIubWV0aG9kTWFwLCBsZXZlbC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGlmIChsZXZlbE1hcCA+PSAwKSB7XG4gICAgICAgIGxldmVsID0gbGV2ZWxNYXA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXZlbCA9IHBhcnNlSW50KGxldmVsLCAxMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxldmVsO1xuICB9LFxuXG4gIC8vIENhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBob3N0IGVudmlyb25tZW50XG4gIGxvZzogZnVuY3Rpb24obGV2ZWwsIC4uLm1lc3NhZ2UpIHtcbiAgICBsZXZlbCA9IGxvZ2dlci5sb29rdXBMZXZlbChsZXZlbCk7XG5cbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGxvZ2dlci5sb29rdXBMZXZlbChsb2dnZXIubGV2ZWwpIDw9IGxldmVsKSB7XG4gICAgICBsZXQgbWV0aG9kID0gbG9nZ2VyLm1ldGhvZE1hcFtsZXZlbF07XG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkgeyAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/logger.js\n ** module id = 61\n ** module chunks = 0\n **/","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoibGliL2hhbmRsZWJhcnMvc2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/safe-string.js\n ** module id = 62\n ** module chunks = 0\n **/","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision !== currentRevision) {\n if (compilerRevision < currentRevision) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as psuedo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n var result = env.VM.invokePartial.call(this, partial, context, options);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, options);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name) {\n if (!(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj);\n }\n return obj[name];\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n if (depths[i] && depths[i][name] != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n merge: function merge(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context !== options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n container.helpers = container.merge(options.helpers, env.helpers);\n\n if (templateSpec.usePartial) {\n container.partials = container.merge(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = container.merge(options.decorators, env.decorators);\n }\n } else {\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context !== depths[0]) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n options.data = _base.createFrame(options.data);\n partialBlock = options.data['partial-block'] = options.fn;\n\n if (partialBlock.partials) {\n options.partials = Utils.extend({}, options.partials, partialBlock.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBQzhCLFFBQVE7O0FBRWxFLFNBQVMsYUFBYSxDQUFDLFlBQVksRUFBRTtBQUMxQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztNQUN2RCxlQUFlLFNBSmQsaUJBQWlCLEFBSWlCLENBQUM7O0FBRTFDLE1BQUksZ0JBQWdCLEtBQUssZUFBZSxFQUFFO0FBQ3hDLFFBQUksZ0JBQWdCLEdBQUcsZUFBZSxFQUFFO0FBQ3RDLFVBQU0sZUFBZSxHQUFHLE1BUkYsZ0JBQWdCLENBUUcsZUFBZSxDQUFDO1VBQ25ELGdCQUFnQixHQUFHLE1BVEgsZ0JBQWdCLENBU0ksZ0JBQWdCLENBQUMsQ0FBQztBQUM1RCxZQUFNLDJCQUFjLHlGQUF5RixHQUN2RyxxREFBcUQsR0FBRyxlQUFlLEdBQUcsbURBQW1ELEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDaEssTUFBTTs7QUFFTCxZQUFNLDJCQUFjLHdGQUF3RixHQUN0RyxpREFBaUQsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDbkY7R0FDRjtDQUNGOztBQUVNLFNBQVMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7O0FBRTFDLE1BQUksQ0FBQyxHQUFHLEVBQUU7QUFDUixVQUFNLDJCQUFjLG1DQUFtQyxDQUFDLENBQUM7R0FDMUQ7QUFDRCxNQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRTtBQUN2QyxVQUFNLDJCQUFjLDJCQUEyQixHQUFHLE9BQU8sWUFBWSxDQUFDLENBQUM7R0FDeEU7O0FBRUQsY0FBWSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQzs7OztBQUlsRCxLQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7O0FBRTVDLFdBQVMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDdkQsUUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ2hCLGFBQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xELFVBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGVBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO09BQ3ZCO0tBQ0Y7O0FBRUQsV0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0RSxRQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7O0FBRXhFLFFBQUksTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQ2pDLGFBQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDekYsWUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMzRDtBQUNELFFBQUksTUFBTSxJQUFJLElBQUksRUFBRTtBQUNsQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7QUFDbEIsWUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixhQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVDLGNBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDNUIsa0JBQU07V0FDUDs7QUFFRCxlQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEM7QUFDRCxjQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUMzQjtBQUNELGFBQU8sTUFBTSxDQUFDO0tBQ2YsTUFBTTtBQUNMLFlBQU0sMkJBQWMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsMERBQTBELENBQUMsQ0FBQztLQUNqSDtHQUNGOzs7QUFHRCxNQUFJLFNBQVMsR0FBRztBQUNkLFVBQU0sRUFBRSxnQkFBUyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQzFCLFVBQUksRUFBRSxJQUFJLElBQUksR0FBRyxDQUFBLEFBQUMsRUFBRTtBQUNsQixjQUFNLDJCQUFjLEdBQUcsR0FBRyxJQUFJLEdBQUcsbUJBQW1CLEdBQUcsR0FBRyxDQUFDLENBQUM7T0FDN0Q7QUFDRCxhQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsQjtBQUNELFVBQU0sRUFBRSxnQkFBUyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQzdCLFVBQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDMUIsV0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QixZQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQ3hDLGlCQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtPQUNGO0tBQ0Y7QUFDRCxVQUFNLEVBQUUsZ0JBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUNqQyxhQUFPLE9BQU8sT0FBTyxLQUFLLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztLQUN4RTs7QUFFRCxvQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO0FBQ3hDLGlCQUFhLEVBQUUsb0JBQW9COztBQUVuQyxNQUFFLEVBQUUsWUFBUyxDQUFDLEVBQUU7QUFDZCxVQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsU0FBRyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLGFBQU8sR0FBRyxDQUFDO0tBQ1o7O0FBRUQsWUFBUSxFQUFFLEVBQUU7QUFDWixXQUFPLEVBQUUsaUJBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQ25FLFVBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1VBQ2pDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFVBQUksSUFBSSxJQUFJLE1BQU0sSUFBSSxXQUFXLElBQUksbUJBQW1CLEVBQUU7QUFDeEQsc0JBQWMsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztPQUMzRixNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUU7QUFDMUIsc0JBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzlEO0FBQ0QsYUFBTyxjQUFjLENBQUM7S0FDdkI7O0FBRUQsUUFBSSxFQUFFLGNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUMzQixhQUFPLEtBQUssSUFBSSxLQUFLLEVBQUUsRUFBRTtBQUN2QixhQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztPQUN2QjtBQUNELGFBQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDRCxTQUFLLEVBQUUsZUFBUyxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQzdCLFVBQUksR0FBRyxHQUFHLEtBQUssSUFBSSxNQUFNLENBQUM7O0FBRTFCLFVBQUksS0FBSyxJQUFJLE1BQU0sSUFBSyxLQUFLLEtBQUssTUFBTSxBQUFDLEVBQUU7QUFDekMsV0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztPQUN2Qzs7QUFFRCxhQUFPLEdBQUcsQ0FBQztLQUNaOztBQUVELFFBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDakIsZ0JBQVksRUFBRSxZQUFZLENBQUMsUUFBUTtHQUNwQyxDQUFDOztBQUVGLFdBQVMsR0FBRyxDQUFDLE9BQU8sRUFBZ0I7UUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ2hDLFFBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7O0FBRXhCLE9BQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEIsUUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUM1QyxVQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNoQztBQUNELFFBQUksTUFBTSxZQUFBO1FBQ04sV0FBVyxHQUFHLFlBQVksQ0FBQyxjQUFjLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztBQUMvRCxRQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUU7QUFDMUIsVUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGNBQU0sR0FBRyxPQUFPLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztPQUM1RixNQUFNO0FBQ0wsY0FBTSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7T0FDcEI7S0FDRjs7QUFFRCxhQUFTLElBQUksQ0FBQyxPQUFPLGdCQUFlO0FBQ2xDLGFBQU8sRUFBRSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNySDtBQUNELFFBQUksR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3RHLFdBQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztHQUMvQjtBQUNELEtBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDOztBQUVqQixLQUFHLENBQUMsTUFBTSxHQUFHLFVBQVMsT0FBTyxFQUFFO0FBQzdCLFFBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO0FBQ3BCLGVBQVMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFbEUsVUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFO0FBQzNCLGlCQUFTLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7T0FDdEU7QUFDRCxVQUFJLFlBQVksQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDLGFBQWEsRUFBRTtBQUN6RCxpQkFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO09BQzVFO0tBQ0YsTUFBTTtBQUNMLGVBQVMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUNwQyxlQUFTLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDdEMsZUFBUyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0tBQzNDO0dBQ0YsQ0FBQzs7QUFFRixLQUFHLENBQUMsTUFBTSxHQUFHLFVBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQ2xELFFBQUksWUFBWSxDQUFDLGNBQWMsSUFBSSxDQUFDLFdBQVcsRUFBRTtBQUMvQyxZQUFNLDJCQUFjLHdCQUF3QixDQUFDLENBQUM7S0FDL0M7QUFDRCxRQUFJLFlBQVksQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckMsWUFBTSwyQkFBYyx5QkFBeUIsQ0FBQyxDQUFDO0tBQ2hEOztBQUVELFdBQU8sV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0dBQ2pGLENBQUM7QUFDRixTQUFPLEdBQUcsQ0FBQztDQUNaOztBQUVNLFNBQVMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO0FBQzVGLFdBQVMsSUFBSSxDQUFDLE9BQU8sRUFBZ0I7UUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ2pDLFFBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQztBQUMzQixRQUFJLE1BQU0sSUFBSSxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ25DLG1CQUFhLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDMUM7O0FBRUQsV0FBTyxFQUFFLENBQUMsU0FBUyxFQUNmLE9BQU8sRUFDUCxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQ3JDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxFQUNwQixXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUN4RCxhQUFhLENBQUMsQ0FBQztHQUNwQjs7QUFFRCxNQUFJLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQzs7QUFFekUsTUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDakIsTUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEMsTUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLENBQUM7QUFDNUMsU0FBTyxJQUFJLENBQUM7Q0FDYjs7QUFFTSxTQUFTLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN4RCxNQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osUUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFO0FBQ3JDLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3pDLE1BQU07QUFDTCxhQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDMUM7R0FDRixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTs7QUFFekMsV0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7QUFDdkIsV0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7R0FDckM7QUFDRCxTQUFPLE9BQU8sQ0FBQztDQUNoQjs7QUFFTSxTQUFTLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN2RCxTQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUN2QixNQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDZixXQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0dBQ3ZFOztBQUVELE1BQUksWUFBWSxZQUFBLENBQUM7QUFDakIsTUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFO0FBQ3JDLFdBQU8sQ0FBQyxJQUFJLEdBQUcsTUF0TzJCLFdBQVcsQ0FzTzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxnQkFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFMUQsUUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFO0FBQ3pCLGFBQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDOUU7R0FDRjs7QUFFRCxNQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksWUFBWSxFQUFFO0FBQ3pDLFdBQU8sR0FBRyxZQUFZLENBQUM7R0FDeEI7O0FBRUQsTUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQ3pCLFVBQU0sMkJBQWMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcscUJBQXFCLENBQUMsQ0FBQztHQUM1RSxNQUFNLElBQUksT0FBTyxZQUFZLFFBQVEsRUFBRTtBQUN0QyxXQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7R0FDbEM7Q0FDRjs7QUFFTSxTQUFTLElBQUksR0FBRztBQUFFLFNBQU8sRUFBRSxDQUFDO0NBQUU7O0FBRXJDLFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDL0IsTUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUEsQUFBQyxFQUFFO0FBQzlCLFFBQUksR0FBRyxJQUFJLEdBQUcsTUE3UDRCLFdBQVcsQ0E2UDNCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNyQyxRQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztHQUNyQjtBQUNELFNBQU8sSUFBSSxDQUFDO0NBQ2I7O0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUN6RSxNQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUU7QUFDaEIsUUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2YsUUFBSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVGLFNBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNCO0FBQ0QsU0FBTyxJQUFJLENBQUM7Q0FDYiIsImZpbGUiOiJsaWIvaGFuZGxlYmFycy9ydW50aW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0aW9uJztcbmltcG9ydCB7IENPTVBJTEVSX1JFVklTSU9OLCBSRVZJU0lPTl9DSEFOR0VTLCBjcmVhdGVGcmFtZSB9IGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1JldmlzaW9uKGNvbXBpbGVySW5mbykge1xuICBjb25zdCBjb21waWxlclJldmlzaW9uID0gY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSB8fCAxLFxuICAgICAgICBjdXJyZW50UmV2aXNpb24gPSBDT01QSUxFUl9SRVZJU0lPTjtcblxuICBpZiAoY29tcGlsZXJSZXZpc2lvbiAhPT0gY3VycmVudFJldmlzaW9uKSB7XG4gICAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBjdXJyZW50UmV2aXNpb24pIHtcbiAgICAgIGNvbnN0IHJ1bnRpbWVWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY3VycmVudFJldmlzaW9uXSxcbiAgICAgICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2NvbXBpbGVyUmV2aXNpb25dO1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYW4gb2xkZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIHJ1bnRpbWVWZXJzaW9ucyArICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVyVmVyc2lvbnMgKyAnKS4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhlIHJ1bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAgICAgJ1BsZWFzZSB1cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVySW5mb1sxXSArICcpLicpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHN1ZWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYXJ0aWFsID0gZW52LlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9ucyk7XG4gICAgbGV0IHJlc3VsdCA9IGVudi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9ucyk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKHBhcnRpYWwsIHRlbXBsYXRlU3BlYy5jb21waWxlck9wdGlvbnMsIGVudik7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7XG4gICAgICAgIGxldCBsaW5lcyA9IHJlc3VsdC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25zLmluZGVudCArIGxpbmVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIGxldCBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbihvYmosIG5hbWUpIHtcbiAgICAgIGlmICghKG5hbWUgaW4gb2JqKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdcIicgKyBuYW1lICsgJ1wiIG5vdCBkZWZpbmVkIGluICcgKyBvYmopO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBpZiAoZGVwdGhzW2ldICYmIGRlcHRoc1tpXVtuYW1lXSAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFtYmRhOiBmdW5jdGlvbihjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uKGkpIHtcbiAgICAgIGxldCByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbihpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgICBsZXQgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLFxuICAgICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0odGhpcywgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpO1xuICAgICAgfSBlbHNlIGlmICghcHJvZ3JhbVdyYXBwZXIpIHtcbiAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldID0gd3JhcFByb2dyYW0odGhpcywgaSwgZm4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb2dyYW1XcmFwcGVyO1xuICAgIH0sXG5cbiAgICBkYXRhOiBmdW5jdGlvbih2YWx1ZSwgZGVwdGgpIHtcbiAgICAgIHdoaWxlICh2YWx1ZSAmJiBkZXB0aC0tKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuX3BhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIG1lcmdlOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIChwYXJhbSAhPT0gY29tbW9uKSkge1xuICAgICAgICBvYmogPSBVdGlscy5leHRlbmQoe30sIGNvbW1vbiwgcGFyYW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG5cbiAgICBub29wOiBlbnYuVk0ubm9vcCxcbiAgICBjb21waWxlckluZm86IHRlbXBsYXRlU3BlYy5jb21waWxlclxuICB9O1xuXG4gIGZ1bmN0aW9uIHJldChjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgZGF0YSA9IG9wdGlvbnMuZGF0YTtcblxuICAgIHJldC5fc2V0dXAob3B0aW9ucyk7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwgJiYgdGVtcGxhdGVTcGVjLnVzZURhdGEpIHtcbiAgICAgIGRhdGEgPSBpbml0RGF0YShjb250ZXh0LCBkYXRhKTtcbiAgICB9XG4gICAgbGV0IGRlcHRocyxcbiAgICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykge1xuICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7XG4gICAgICAgIGRlcHRocyA9IGNvbnRleHQgIT09IG9wdGlvbnMuZGVwdGhzWzBdID8gW2NvbnRleHRdLmNvbmNhdChvcHRpb25zLmRlcHRocykgOiBvcHRpb25zLmRlcHRocztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gJycgKyB0ZW1wbGF0ZVNwZWMubWFpbihjb250YWluZXIsIGNvbnRleHQsIGNvbnRhaW5lci5oZWxwZXJzLCBjb250YWluZXIucGFydGlhbHMsIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpO1xuICAgIH1cbiAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnModGVtcGxhdGVTcGVjLm1haW4sIG1haW4sIGNvbnRhaW5lciwgb3B0aW9ucy5kZXB0aHMgfHwgW10sIGRhdGEsIGJsb2NrUGFyYW1zKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMuaGVscGVycywgZW52LmhlbHBlcnMpO1xuXG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHtcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gY29udGFpbmVyLm1lcmdlKG9wdGlvbnMucGFydGlhbHMsIGVudi5wYXJ0aWFscyk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBjb250YWluZXIubWVyZ2Uob3B0aW9ucy5kZWNvcmF0b3JzLCBlbnYuZGVjb3JhdG9ycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgIH1cbiAgfTtcblxuICByZXQuX2NoaWxkID0gZnVuY3Rpb24oaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgJiYgIWJsb2NrUGFyYW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgYmxvY2sgcGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzICYmICFkZXB0aHMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBwYXJlbnQgZGVwdGhzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgdGVtcGxhdGVTcGVjW2ldLCBkYXRhLCAwLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgY3VycmVudERlcHRocyA9IGRlcHRocztcbiAgICBpZiAoZGVwdGhzICYmIGNvbnRleHQgIT09IGRlcHRoc1swXSkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oY29udGFpbmVyLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLFxuICAgICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgICAgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksXG4gICAgICAgIGN1cnJlbnREZXB0aHMpO1xuICB9XG5cbiAgcHJvZyA9IGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpO1xuXG4gIHByb2cucHJvZ3JhbSA9IGk7XG4gIHByb2cuZGVwdGggPSBkZXB0aHMgPyBkZXB0aHMubGVuZ3RoIDogMDtcbiAgcHJvZy5ibG9ja1BhcmFtcyA9IGRlY2xhcmVkQmxvY2tQYXJhbXMgfHwgMDtcbiAgcmV0dXJuIHByb2c7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIGlmICghcGFydGlhbCkge1xuICAgIGlmIChvcHRpb25zLm5hbWUgPT09ICdAcGFydGlhbC1ibG9jaycpIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIXBhcnRpYWwuY2FsbCAmJiAhb3B0aW9ucy5uYW1lKSB7XG4gICAgLy8gVGhpcyBpcyBhIGR5bmFtaWMgcGFydGlhbCB0aGF0IHJldHVybmVkIGEgc3RyaW5nXG4gICAgb3B0aW9ucy5uYW1lID0gcGFydGlhbDtcbiAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1twYXJ0aWFsXTtcbiAgfVxuICByZXR1cm4gcGFydGlhbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludm9rZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICBsZXQgcGFydGlhbEJsb2NrO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAocGFydGlhbEJsb2NrLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBwYXJ0aWFsQmxvY2sucGFydGlhbHMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQgJiYgcGFydGlhbEJsb2NrKSB7XG4gICAgcGFydGlhbCA9IHBhcnRpYWxCbG9jaztcbiAgfVxuXG4gIGlmIChwYXJ0aWFsID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgcGFydGlhbCAnICsgb3B0aW9ucy5uYW1lICsgJyBjb3VsZCBub3QgYmUgZm91bmQnKTtcbiAgfSBlbHNlIGlmIChwYXJ0aWFsIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICByZXR1cm4gcGFydGlhbChjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpIHsgcmV0dXJuICcnOyB9XG5cbmZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGEgPyBjcmVhdGVGcmFtZShkYXRhKSA6IHt9O1xuICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHtcbiAgaWYgKGZuLmRlY29yYXRvcikge1xuICAgIGxldCBwcm9wcyA9IHt9O1xuICAgIHByb2cgPSBmbi5kZWNvcmF0b3IocHJvZywgcHJvcHMsIGNvbnRhaW5lciwgZGVwdGhzICYmIGRlcHRoc1swXSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgVXRpbHMuZXh0ZW5kKHByb2csIHByb3BzKTtcbiAgfVxuICByZXR1cm4gcHJvZztcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/runtime.js\n ** module id = 63\n ** module chunks = 0\n **/","/* global window */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOztBQUVsQyxNQUFJLElBQUksR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxHQUFHLE1BQU07TUFDdEQsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7O0FBRWxDLFlBQVUsQ0FBQyxVQUFVLEdBQUcsWUFBVztBQUNqQyxRQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO0FBQ2xDLFVBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQy9CO0dBQ0YsQ0FBQztDQUNIIiwiZmlsZSI6ImxpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oSGFuZGxlYmFycykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBsZXQgcm9vdCA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogd2luZG93LFxuICAgICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/handlebars/dist/cjs/handlebars/no-conflict.js\n ** module id = 64\n ** module chunks = 0\n **/","var Handlebars = require(\"/Users/carleberhard/galaxy/client-build/client/node_modules/handlebars/runtime.js\");\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var alias1=container.lambda, alias2=container.escapeExpression;\n\n return \"\"\n + alias2(alias1(depth0, depth0))\n + \" \";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"\"\n + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.labels : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n + \"\\n\"\n + alias4(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n\"\n + alias4(((helper = (helper = helpers.description || (depth0 != null ? depth0.description : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"description\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n\";\n},\"useData\":true});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/templates/tool_link.handlebars\n ** module id = 65\n ** module chunks = 0\n **/","var Handlebars = require(\"/Users/carleberhard/galaxy/client-build/client/node_modules/handlebars/runtime.js\");\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"\\n
    \\n
    \\n
    \";\n},\"useData\":true});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/templates/panel_section.handlebars\n ** module id = 66\n ** module chunks = 0\n **/","var Handlebars = require(\"/Users/carleberhard/galaxy/client-build/client/node_modules/handlebars/runtime.js\");\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3=\"function\", alias4=container.escapeExpression;\n\n return \"\\n \\n\\n\";\n},\"useData\":true});\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/templates/tool_search.handlebars\n ** module id = 67\n ** module chunks = 0\n **/","/** Upload app contains the upload progress button and upload modal, compiles model data for API request **/\ndefine(['utils/utils',\n 'mvc/ui/ui-modal',\n 'mvc/ui/ui-tabs',\n 'mvc/upload/upload-button',\n 'mvc/upload/default/default-view',\n 'mvc/upload/composite/composite-view'],\n function( Utils,\n Modal,\n Tabs,\n UploadButton,\n UploadViewDefault,\n UploadViewComposite ) {\nreturn Backbone.View.extend({\n // default options\n options : {\n nginx_upload_path : '',\n ftp_upload_site : 'n/a',\n default_genome : '?',\n default_extension : 'auto',\n height : 500,\n width : 900,\n auto : {\n id : 'auto',\n text : 'Auto-detect',\n description : 'This system will try to detect the file type automatically. If your file is not detected properly as one of the known formats, it most likely means that it has some format problems (e.g., different number of columns on different rows). You can still coerce the system to set your data to the format you think it should be. You can also upload compressed files, which will automatically be decompressed.'\n }\n },\n\n // upload modal container\n modal: null,\n\n // progress button in panel\n ui_button: null,\n\n // current history identifier\n current_history: null,\n\n // contains all available dataset extensions/types\n list_extensions: [],\n\n // contains all available genomes\n list_genomes: [],\n\n // initialize\n initialize: function( options ) {\n // link this\n var self = this;\n\n // merge parsed options\n this.options = Utils.merge( options, this.options );\n\n // create model for upload/progress button\n this.ui_button = new UploadButton.Model();\n\n // create view for upload/progress button\n this.ui_button_view = new UploadButton.View({\n model : this.ui_button,\n onclick : function(e) {\n e.preventDefault();\n self.show()\n },\n onunload : function() {\n var percentage = self.ui_button.get('percentage', 0);\n if (percentage > 0 && percentage < 100) {\n return 'Several uploads are queued.';\n }\n }\n });\n\n // set element to button view\n this.setElement( this.ui_button_view.$el );\n\n // load extensions\n var self = this;\n Utils.get({\n url : Galaxy.root + 'api/datatypes?extension_only=False',\n success : function( datatypes ) {\n for ( key in datatypes ) {\n self.list_extensions.push({\n id : datatypes[ key ].extension,\n text : datatypes[ key ].extension,\n description : datatypes[ key ].description,\n description_url : datatypes[ key ].description_url,\n composite_files : datatypes[ key ].composite_files\n });\n }\n self.list_extensions.sort( function( a, b ) {\n var a_text = a.text && a.text.toLowerCase();\n var b_text = b.text && b.text.toLowerCase();\n return a_text > b_text ? 1 : a_text < b_text ? -1 : 0;\n });\n if ( !self.options.datatypes_disable_auto ) {\n self.list_extensions.unshift( self.options.auto );\n }\n }\n });\n\n // load genomes\n Utils.get({\n url : Galaxy.root + 'api/genomes',\n success : function( genomes ) {\n for ( key in genomes ) {\n self.list_genomes.push({\n id : genomes[ key ][ 1 ],\n text : genomes[ key ][ 0 ]\n });\n }\n self.list_genomes.sort( function( a, b ) {\n if ( a.id == self.options.default_genome ) { return -1; }\n if ( b.id == self.options.default_genome ) { return 1; }\n return a.text > b.text ? 1 : a.text < b.text ? -1 : 0;\n });\n }\n });\n },\n\n //\n // event triggered by upload button\n //\n\n // show/hide upload frame\n show: function () {\n // wait for galaxy history panel\n var self = this;\n if ( !Galaxy.currHistoryPanel || !Galaxy.currHistoryPanel.model ) {\n window.setTimeout(function() { self.show() }, 500)\n return;\n }\n\n // set current user\n this.current_user = Galaxy.user.id;\n\n // create modal\n if ( !this.modal ) {\n // build tabs\n this.tabs = new Tabs.View();\n\n // add tabs\n this.default_view = new UploadViewDefault( this );\n this.tabs.add({\n id : 'regular',\n title : 'Regular',\n $el : this.default_view.$el\n });\n this.composite_view = new UploadViewComposite( this );\n this.tabs.add({\n id : 'composite',\n title : 'Composite',\n $el : this.composite_view.$el\n });\n\n // make modal\n this.modal = new Modal.View({\n title : 'Download from web or upload from disk',\n body : this.tabs.$el,\n height : this.options.height,\n width : this.options.width,\n closing_events : true,\n title_separator : false\n });\n }\n\n // show modal\n this.modal.show();\n },\n\n // refresh user and current history\n currentHistory: function() {\n return this.current_user && Galaxy.currHistoryPanel.model.get( 'id' );\n },\n\n // get ftp configuration\n currentFtp: function() {\n return this.current_user && this.options.ftp_upload_site;\n },\n\n /**\n * Package API data from array of models\n * @param{Array} items - Upload items/rows filtered from a collection\n */\n toData: function( items, history_id ) {\n // create dictionary for data submission\n var data = {\n payload: {\n 'tool_id' : 'upload1',\n 'history_id' : history_id || this.currentHistory(),\n 'inputs' : {}\n },\n files: [],\n error_message: null\n }\n // add upload tools input data\n if ( items && items.length > 0 ) {\n var inputs = {};\n inputs[ 'dbkey' ] = items[0].get( 'genome', null );\n inputs[ 'file_type' ] = items[0].get( 'extension', null );\n for ( var index in items ) {\n var it = items[ index ];\n it.set( 'status', 'running' );\n if ( it.get( 'file_size' ) > 0 ) {\n var prefix = 'files_' + index + '|';\n inputs[ prefix + 'type' ] = 'upload_dataset';\n inputs[ prefix + 'space_to_tab' ] = it.get( 'space_to_tab' ) && 'Yes' || null;\n inputs[ prefix + 'to_posix_lines' ] = it.get( 'to_posix_lines' ) && 'Yes' || null;\n switch ( it.get( 'file_mode' ) ) {\n case 'new':\n inputs[ prefix + 'url_paste' ] = it.get( 'url_paste' );\n break;\n case 'ftp':\n inputs[ prefix + 'ftp_files' ] = it.get( 'file_path' );\n break;\n case 'local':\n data.files.push( { name: prefix + 'file_data', file: it.get( 'file_data' ) } );\n }\n } else {\n data.error_message = 'Upload content incomplete.';\n it.set( 'status', 'error' );\n it.set( 'info', data.error_message );\n break;\n }\n }\n data.payload.inputs = JSON.stringify( inputs );\n }\n return data;\n }\n});\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/upload/upload-view.js\n ** module id = 68\n ** module chunks = 0\n **/","// dependencies\ndefine([], function() {\n\n// model for upload/progress bar button\nvar Model = Backbone.Model.extend({\n defaults: {\n icon : 'fa-upload',\n tooltip : 'Download from URL or upload files from disk',\n label : 'Load Data',\n percentage : 0,\n status : ''\n }\n});\n\n// view for upload/progress bar button\nvar View = Backbone.View.extend({\n // model\n model : null,\n\n // initialize\n initialize : function( options ) {\n // link this\n var self = this;\n\n // create model\n var model = options.model;\n\n // create new element\n this.setElement( this._template() );\n\n // add event\n this.$el.on( 'click', function( e ) { options.onclick( e ); });\n\n // add tooltip\n this.$el.tooltip( { title: model.get('tooltip'), placement: 'bottom' } );\n\n // events\n model.on( 'change:percentage', function() {\n self._percentage( model.get( 'percentage' ) );\n });\n model.on( 'change:status', function() {\n self._status( model.get( 'status' ) );\n });\n\n // unload event\n var self = this;\n $( window ).on( 'beforeunload', function() {\n var text = \"\";\n if ( options.onunload ) {\n text = options.onunload();\n }\n if ( text != \"\" ) {\n return text;\n }\n });\n },\n\n // set status\n _status: function( value ) {\n var $el = this.$el.find( '.progress-bar' );\n $el.removeClass();\n $el.addClass( 'progress-bar' );\n $el.addClass( 'progress-bar-notransition' );\n if ( value != '' ) {\n $el.addClass( 'progress-bar-' + value );\n }\n },\n\n // set percentage\n _percentage: function( value ) {\n var $el = this.$el.find( '.progress-bar' );\n $el.css( { width : value + '%' } );\n },\n\n // template\n _template: function() {\n return '
    ' +\n '
    ' +\n '
    ' +\n '' +\n '' +\n '' +\n '
    ' +\n '
    ';\n }\n});\n\nreturn {\n Model : Model,\n View : View\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/upload/upload-button.js\n ** module id = 69\n ** module chunks = 0\n **/","/** Renders contents of the default uploader */\ndefine(['utils/utils',\n 'mvc/upload/upload-model',\n 'mvc/upload/default/default-row',\n 'mvc/upload/upload-ftp',\n 'mvc/ui/ui-popover',\n 'mvc/ui/ui-select',\n 'mvc/ui/ui-misc',\n 'utils/uploadbox'],\n\n function( Utils,\n UploadModel,\n UploadRow,\n UploadFtp,\n Popover,\n Select,\n Ui\n ) {\n\nreturn Backbone.View.extend({\n // extension selector\n select_extension : null,\n\n // genome selector\n select_genome: null,\n\n // jquery uploadbox plugin\n uploadbox: null,\n\n // current upload size in bytes\n upload_size: 0,\n\n // contains upload row models\n collection : new UploadModel.Collection(),\n\n // ftp file viewer\n ftp : null,\n\n // keeps track of the current uploader state\n counter : {\n announce : 0,\n success : 0,\n error : 0,\n running : 0,\n reset : function() {\n this.announce = this.success = this.error = this.running = 0;\n }\n },\n\n // initialize\n initialize : function(app) {\n // link app\n this.app = app;\n this.options = app.options;\n this.list_extensions = app.list_extensions;\n this.list_genomes = app.list_genomes;\n this.ui_button = app.ui_button;\n this.ftp_upload_site = app.currentFtp();\n\n // link this\n var self = this;\n\n // set element\n this.setElement(this._template());\n\n // create button section\n this.btnLocal = new Ui.Button({ id: 'btn-local', title: 'Choose local file', onclick: function() { self.uploadbox.select(); }, icon: 'fa fa-laptop' });\n this.btnFtp = new Ui.Button({ id: 'btn-ftp', title: 'Choose FTP file', onclick: function() { self._eventFtp(); }, icon: 'fa fa-folder-open-o' });\n this.btnCreate = new Ui.Button({ id: 'btn-new', title: 'Paste/Fetch data', onclick: function() { self._eventCreate(); }, icon: 'fa fa-edit' });\n this.btnStart = new Ui.Button({ id: 'btn-start', title: 'Start', onclick: function() { self._eventStart(); } });\n this.btnStop = new Ui.Button({ id: 'btn-stop', title: 'Pause', onclick: function() { self._eventStop(); } });\n this.btnReset = new Ui.Button({ id: 'btn-reset', title: 'Reset', onclick: function() { self._eventReset(); } });\n this.btnClose = new Ui.Button({ id: 'btn-close', title: 'Close', onclick: function() { self.app.modal.hide(); } });\n\n // append buttons to dom\n var buttons = [ this.btnLocal, this.btnFtp, this.btnCreate, this.btnStop, this.btnReset, this.btnStart, this.btnClose ];\n for (var i in buttons) {\n this.$('#upload-buttons').prepend(buttons[i].$el);\n }\n\n // file upload\n var self = this;\n this.uploadbox = this.$('#upload-box').uploadbox({\n url : this.app.options.nginx_upload_path,\n announce : function(index, file) { self._eventAnnounce(index, file) },\n initialize : function(index) { return self.app.toData([ self.collection.get(index) ], self.history_id) },\n progress : function(index, percentage) { self._eventProgress(index, percentage) },\n success : function(index, message) { self._eventSuccess(index, message) },\n error : function(index, message) { self._eventError(index, message) },\n complete : function() { self._eventComplete() },\n ondragover : function() { self.$('.upload-box').addClass('highlight'); },\n ondragleave : function() { self.$('.upload-box').removeClass('highlight'); }\n });\n\n // add ftp file viewer\n this.ftp = new Popover.View({\n title : 'FTP files',\n container : this.btnFtp.$el\n });\n\n // select extension\n this.select_extension = new Select.View({\n css : 'footer-selection',\n container : this.$('#footer-extension'),\n data : _.filter(this.list_extensions, function(ext) { return !ext.composite_files }),\n value : this.options.default_extension,\n onchange : function(extension) {\n self.updateExtension(extension);\n }\n });\n\n // handle extension info popover\n self.$('#footer-extension-info').on('click', function(e) {\n self.showExtensionInfo({\n $el : $(e.target),\n title : self.select_extension.text(),\n extension : self.select_extension.value(),\n placement : 'top'\n });\n }).on('mousedown', function(e) { e.preventDefault(); });\n\n // genome extension\n this.select_genome = new Select.View({\n css : 'footer-selection',\n container : this.$('#footer-genome'),\n data : this.list_genomes,\n value : this.options.default_genome,\n onchange : function(genome) {\n self.updateGenome(genome);\n }\n });\n\n // events\n this.collection.on('remove', function(model) {\n self._eventRemove(model);\n });\n\n // setup info\n this._updateScreen();\n },\n\n //\n // events triggered by the upload box plugin\n //\n\n // a new file has been dropped/selected through the uploadbox plugin\n _eventAnnounce: function(index, file) {\n // update counter\n this.counter.announce++;\n\n // create if model has not been created yet\n var new_model = new UploadModel.Model({\n id : index,\n file_name : file.name,\n file_size : file.size,\n file_mode : file.mode || 'local',\n file_path : file.path,\n file_data : file\n });\n\n // add model to collection\n this.collection.add(new_model);\n\n // create view/model\n var upload_row = new UploadRow(this, { model: new_model });\n\n // add upload row element to table\n this.$('#upload-table > tbody:first').append(upload_row.$el);\n\n // show on screen info\n this._updateScreen();\n\n // render\n upload_row.render();\n },\n\n // progress\n _eventProgress: function(index, percentage) {\n // set progress for row\n var it = this.collection.get(index);\n it.set('percentage', percentage);\n\n // update ui button\n this.ui_button.set('percentage', this._uploadPercentage(percentage, it.get('file_size')));\n },\n\n // success\n _eventSuccess: function(index, message) {\n // update status\n var it = this.collection.get(index);\n it.set('percentage', 100);\n it.set('status', 'success');\n\n // update ui button\n this.ui_button.set('percentage', this._uploadPercentage(100, it.get('file_size')));\n\n // update completed\n this.upload_completed += it.get('file_size') * 100;\n\n // update counter\n this.counter.announce--;\n this.counter.success++;\n\n // update on screen info\n this._updateScreen();\n\n // update galaxy history\n Galaxy.currHistoryPanel.refreshContents();\n },\n\n // error\n _eventError: function(index, message) {\n // get element\n var it = this.collection.get(index);\n\n // update status\n it.set('percentage', 100);\n it.set('status', 'error');\n it.set('info', message);\n\n // update ui button\n this.ui_button.set('percentage', this._uploadPercentage(100, it.get('file_size')));\n this.ui_button.set('status', 'danger');\n\n // update completed\n this.upload_completed += it.get('file_size') * 100;\n\n // update counter\n this.counter.announce--;\n this.counter.error++;\n\n // update on screen info\n this._updateScreen();\n },\n\n // queue is done\n _eventComplete: function() {\n // reset queued upload to initial status\n this.collection.each(function(model) {\n if(model.get('status') == 'queued') {\n model.set('status', 'init');\n }\n });\n\n // update running\n this.counter.running = 0;\n\n // update on screen info\n this._updateScreen();\n },\n\n //\n // events triggered by collection\n //\n\n // remove model from upload list\n _eventRemove: function(model) {\n // update status\n var status = model.get('status');\n\n // reduce counter\n if (status == 'success') {\n this.counter.success--;\n } else if (status == 'error') {\n this.counter.error--;\n } else {\n this.counter.announce--;\n }\n\n // remove from queue\n this.uploadbox.remove(model.id);\n\n // show on screen info\n this._updateScreen();\n },\n\n //\n // events triggered by this view\n //\n\n // [public] display extension info popup\n showExtensionInfo: function(options) {\n // initialize\n var self = this;\n var $el = options.$el;\n var extension = options.extension;\n var title = options.title;\n var description = _.findWhere(self.list_extensions, {'id': extension});\n\n // create popup\n this.extension_popup && this.extension_popup.remove();\n this.extension_popup = new Popover.View({\n placement: options.placement || 'bottom',\n container: $el,\n destroy: true\n });\n\n // add content and show popup\n this.extension_popup.title(title);\n this.extension_popup.empty();\n this.extension_popup.append(this._templateDescription(description));\n this.extension_popup.show();\n },\n\n // show/hide ftp popup\n _eventFtp: function() {\n if (!this.ftp.visible) {\n this.ftp.empty();\n var self = this;\n this.ftp.append((new UploadFtp({\n collection : this.collection,\n ftp_upload_site : this.ftp_upload_site,\n onadd: function(ftp_file) {\n self.uploadbox.add([{\n mode: 'ftp',\n name: ftp_file.path,\n size: ftp_file.size,\n path: ftp_file.path\n }]);\n },\n onremove: function(model_index) {\n self.collection.remove(model_index);\n }\n })).$el);\n this.ftp.show();\n } else {\n this.ftp.hide();\n }\n },\n\n // create a new file\n _eventCreate: function (){\n this.uploadbox.add([{\n name : 'New File',\n size : 0,\n mode : 'new'\n }]);\n },\n\n // start upload process\n _eventStart: function() {\n // check\n if (this.counter.announce == 0 || this.counter.running > 0) {\n return;\n }\n\n // reset current size\n var self = this;\n this.upload_size = 0;\n this.upload_completed = 0;\n // switch icons for new uploads\n this.collection.each(function(model) {\n if(model.get('status') == 'init') {\n model.set('status', 'queued');\n self.upload_size += model.get('file_size');\n }\n });\n\n // reset progress\n this.ui_button.set('percentage', 0);\n this.ui_button.set('status', 'success');\n\n // update running\n this.counter.running = this.counter.announce;\n\n // set current history id\n this.history_id = this.app.currentHistory();\n\n // initiate upload procedure in plugin\n this.uploadbox.start();\n\n // update on screen info\n this._updateScreen();\n },\n\n // pause upload process\n _eventStop: function() {\n // check\n if (this.counter.running > 0) {\n // show upload has paused\n this.ui_button.set('status', 'info');\n\n // set html content\n $('#upload-info').html('Queue will pause after completing the current file...');\n\n // request pause\n this.uploadbox.stop();\n }\n },\n\n // remove all\n _eventReset: function() {\n // make sure queue is not running\n if (this.counter.running == 0){\n // reset collection\n this.collection.reset();\n\n // reset counter\n this.counter.reset();\n\n // remove from queue\n this.uploadbox.reset();\n\n // reset value for universal type drop-down\n this.select_extension.value(this.options.default_extension);\n this.select_genome.value(this.options.default_genome);\n\n // reset button\n this.ui_button.set('percentage', 0);\n\n // show on screen info\n this._updateScreen();\n }\n },\n\n // update extension for all models\n updateExtension: function(extension, defaults_only) {\n var self = this;\n this.collection.each(function(model) {\n if (model.get('status') == 'init' && (model.get('extension') == self.options.default_extension || !defaults_only)) {\n model.set('extension', extension);\n }\n });\n },\n\n // update genome for all models\n updateGenome: function(genome, defaults_only) {\n var self = this;\n this.collection.each(function(model) {\n if (model.get('status') == 'init' && (model.get('genome') == self.options.default_genome || !defaults_only)) {\n model.set('genome', genome);\n }\n });\n },\n\n // set screen\n _updateScreen: function () {\n /*\n update on screen info\n */\n\n // check default message\n if(this.counter.announce == 0) {\n if (this.uploadbox.compatible()) {\n message = ' ';\n } else {\n message = 'Browser does not support Drag & Drop. Try Firefox 4+, Chrome 7+, IE 10+, Opera 12+ or Safari 6+.';\n }\n } else {\n if (this.counter.running == 0) {\n message = 'You added ' + this.counter.announce + ' file(s) to the queue. Add more files or click \\'Start\\' to proceed.';\n } else {\n message = 'Please wait...' + this.counter.announce + ' out of ' + this.counter.running + ' remaining.';\n }\n }\n\n // set html content\n this.$('#upload-info').html(message);\n\n /*\n update button status\n */\n\n // update reset button\n if (this.counter.running == 0 && this.counter.announce + this.counter.success + this.counter.error > 0) {\n this.btnReset.enable();\n } else {\n this.btnReset.disable();\n }\n\n // update upload button\n if (this.counter.running == 0 && this.counter.announce > 0) {\n this.btnStart.enable();\n this.btnStart.$el.addClass('btn-primary');\n } else {\n this.btnStart.disable();\n this.btnStart.$el.removeClass('btn-primary');\n }\n\n // pause upload button\n if (this.counter.running > 0) {\n this.btnStop.enable();\n } else {\n this.btnStop.disable();\n }\n\n // select upload button\n if (this.counter.running == 0) {\n this.btnLocal.enable();\n this.btnFtp.enable();\n this.btnCreate.enable();\n } else {\n this.btnLocal.disable();\n this.btnFtp.disable();\n this.btnCreate.disable();\n }\n\n // ftp button\n if (this.ftp_upload_site) {\n this.btnFtp.$el.show();\n } else {\n this.btnFtp.$el.hide();\n }\n\n // table visibility\n if (this.counter.announce + this.counter.success + this.counter.error > 0) {\n this.$('#upload-table').show();\n this.$('.upload-helper').hide();\n } else {\n this.$('#upload-table').hide();\n this.$('.upload-helper').show();\n }\n },\n\n // calculate percentage of all queued uploads\n _uploadPercentage: function(percentage, size) {\n return (this.upload_completed + (percentage * size)) / this.upload_size;\n },\n\n // template for extensions description\n _templateDescription: function(options) {\n if (options.description) {\n var tmpl = options.description;\n if (options.description_url) {\n tmpl += ' (read more)';\n }\n return tmpl;\n } else {\n return 'There is no description available for this file extension.';\n }\n },\n\n // load html template\n _template: function() {\n return '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    Drop files here
    ' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
    NameSizeTypeGenomeSettingsStatus' +\n '
    ' +\n '
    ' +\n '
    ' +\n 'Type (set all):' +\n '' +\n ' ' +\n 'Genome (set all):' +\n '' +\n '
    ' +\n '
    ' +\n '
    ';\n }\n});\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/upload/default/default-view.js\n ** module id = 70\n ** module chunks = 0\n **/","// dependencies\ndefine([], function() {\n\n// model\nvar Model = Backbone.Model.extend({\n defaults: {\n extension : 'auto',\n genome : '?',\n url_paste : '',\n status : 'init',\n info : null,\n file_name : '',\n file_mode : '',\n file_size : 0,\n file_type : null,\n file_path : '',\n file_data : null,\n percentage : 0,\n space_to_tab : false,\n to_posix_lines : true,\n enabled : true\n },\n reset: function(attr) {\n this.clear().set(this.defaults).set(attr);\n }\n});\n\n// collection\nvar Collection = Backbone.Collection.extend({\n model: Model\n});\n\n// return\nreturn {\n Model: Model,\n Collection : Collection\n};\n\n});\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./galaxy/scripts/mvc/upload/upload-model.js\n ** module id = 71\n ** module chunks = 0\n **/","// dependencies\ndefine(['utils/utils',\n 'mvc/upload/upload-model',\n 'mvc/upload/upload-settings',\n 'mvc/ui/ui-popover',\n 'mvc/ui/ui-select'],\n\n function( Utils,\n UploadModel,\n UploadSettings,\n Popover,\n Select\n ) {\n\n// row view\nreturn Backbone.View.extend({\n // states\n status_classes : {\n init : 'upload-icon-button fa fa-trash-o',\n queued : 'upload-icon fa fa-spinner fa-spin',\n running : 'upload-icon fa fa-spinner fa-spin',\n success : 'upload-icon-button fa fa-check',\n error : 'upload-icon-button fa fa-exclamation-triangle'\n },\n\n // handle for settings popover\n settings: null,\n\n // genome selector\n select_genome : null,\n\n // extension selector\n select_extension : null,\n\n // render\n initialize: function(app, options) {\n // link app\n this.app = app;\n\n // link this\n var self = this;\n\n // create model\n this.model = options.model;\n\n // add upload row\n this.setElement(this._template(options.model));\n\n // append popup to settings icon\n this.settings = new Popover.View({\n title : 'Upload configuration',\n container : this.$('#settings'),\n placement : 'bottom'\n });\n\n // initialize default genome through default select field\n var default_genome = this.app.select_genome.value();\n \n // select genomes\n this.select_genome = new Select.View({\n css: 'upload-genome',\n onchange : function(genome) {\n self.model.set('genome', genome);\n self.app.updateGenome(genome, true);\n },\n data: self.app.list_genomes,\n container: this.$('#genome'),\n value: default_genome\n });\n\n // initialize genome\n this.model.set('genome', default_genome);\n\n // initialize default extension through default select field\n var default_extension = this.app.select_extension.value();\n \n // select extension\n this.select_extension = new Select.View({\n css: 'upload-extension',\n onchange : function(extension) {\n self.model.set('extension', extension);\n self.app.updateExtension(extension, true);\n },\n data: self.app.list_extensions,\n container: this.$('#extension'),\n value: default_extension\n });\n\n // initialize extension\n this.model.set('extension', default_extension);\n \n //\n // ui events\n //\n\n // handle click event\n this.$('#symbol').on('click', function() { self._removeRow(); });\n\n // handle extension info popover\n this.$('#extension-info').on('click' , function(e) {\n self.app.showExtensionInfo({\n $el : $(e.target),\n title : self.select_extension.text(),\n extension : self.select_extension.value()\n });\n }).on('mousedown', function(e) { e.preventDefault(); });\n\n // handle settings popover\n this.$('#settings').on('click' , function(e) { self._showSettings(); })\n .on('mousedown', function(e) { e.preventDefault(); });\n\n // handle text editing event\n this.$('#text-content').on('change input', function(e) {\n self.model.set('url_paste', $(e.target).val());\n self.model.set('file_size', $(e.target).val().length);\n });\n\n //\n // model events\n //\n this.model.on('change:percentage', function() {\n self._refreshPercentage();\n });\n this.model.on('change:status', function() {\n self._refreshStatus();\n });\n this.model.on('change:info', function() {\n self._refreshInfo();\n });\n this.model.on('change:genome', function() {\n self._refreshGenome();\n });\n this.model.on('change:extension', function() {\n self._refreshExtension();\n });\n this.model.on('change:file_size', function() {\n self._refreshFileSize();\n });\n this.model.on('remove', function() {\n self.remove();\n });\n this.app.collection.on('reset', function() {\n self.remove();\n });\n },\n\n // render\n render: function() {\n // read model\n var file_name = this.model.get('file_name');\n var file_size = this.model.get('file_size');\n var file_mode = this.model.get('file_mode');\n\n // update title\n this.$('#title').html(file_name);\n\n // update info\n this.$('#size').html(Utils.bytesToString (file_size));\n\n // remove mode class\n this.$('#mode')\n .removeClass()\n .addClass('upload-mode')\n .addClass('text-primary');\n\n // activate text field if file is new\n if (file_mode == 'new') {\n this.$('#text').css({\n 'width' : this.$el.width() - 16 + 'px',\n 'top' : this.$el.height() - 8 + 'px'\n }).show();\n this.$el.height(this.$el.height() - 8 + this.$('#text').height() + 16);\n this.$('#mode').addClass('fa fa-edit');\n }\n\n // file from local disk\n if (file_mode == 'local') {\n this.$('#mode').addClass('fa fa-laptop');\n }\n\n // file from ftp\n if (file_mode == 'ftp') {\n this.$('#mode').addClass('fa fa-folder-open-o');\n }\n },\n\n // remove\n remove: function() {\n // trigger remove event\n this.select_genome.remove();\n this.select_extension.remove();\n\n // call the base class remove method\n Backbone.View.prototype.remove.apply(this);\n },\n\n //\n // handle model events\n //\n\n // update extension\n _refreshExtension: function() {\n this.select_extension.value(this.model.get('extension'));\n },\n \n // update genome\n _refreshGenome: function() {\n this.select_genome.value(this.model.get('genome'));\n },\n\n // progress\n _refreshInfo: function() {\n // write error message\n var info = this.model.get('info');\n if (info) {\n this.$('#info').html('Failed: ' + info).show();\n } else {\n this.$('#info').hide();\n }\n },\n\n // progress\n _refreshPercentage : function() {\n var percentage = parseInt(this.model.get('percentage'));\n this.$('.progress-bar').css({ width : percentage + '%' });\n if (percentage != 100)\n this.$('#percentage').html(percentage + '%');\n else\n this.$('#percentage').html('Adding to history...');\n },\n\n // status\n _refreshStatus : function() {\n // identify new status\n var status = this.model.get('status');\n\n // identify symbol and reset classes\n this.$('#symbol').removeClass().addClass(this.status_classes[status]);\n\n // enable/disable model flag\n this.model.set('enabled', status == 'init');\n\n // enable/disable row fields\n var enabled = this.model.get('enabled');\n this.$('#text-content').attr('disabled', !enabled);\n if (enabled) {\n this.select_genome.enable();\n this.select_extension.enable();\n } else {\n this.select_genome.disable();\n this.select_extension.disable();\n }\n\n // success\n if (status == 'success') {\n this.$el.addClass('success');\n this.$('#percentage').html('100%');\n }\n\n // error\n if (status == 'error') {\n this.$el.addClass('danger');\n this.$('.progress').remove();\n }\n },\n\n // refresh size\n _refreshFileSize: function() {\n var count = this.model.get('file_size');\n this.$('#size').html(Utils.bytesToString (count));\n },\n\n //\n // handle ui events\n //\n\n // remove row\n _removeRow: function() {\n // get current status\n var status = this.model.get('status');\n\n // only remove from queue if not in processing line\n if (status == 'init' || status == 'success' || status == 'error') {\n this.app.collection.remove(this.model);\n }\n },\n\n // attach file info popup\n _showSettings : function() {\n // check if popover is visible\n if (!this.settings.visible) {\n // show popover\n this.settings.empty();\n this.settings.append((new UploadSettings(this)).$el);\n this.settings.show();\n } else {\n // hide popover\n this.settings.hide();\n }\n },\n\n // template\n _template: function(options) {\n return '' +\n '' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    ' +\n '
    You can tell Galaxy to download data from web by entering URL in this box (one per line). You can also directly paste the contents of a file.
    ' +\n '