| Name | Size | Created |
|---|
| Convert spaces to tabs | |
| Use POSIX standard |
"+JSON.stringify(t.responseJSON)+"":": "+i),creator._showAlert(n,"alert-danger")},render:function(t,e){return this.$el.empty().html(p.templates.main()),this._renderHeader(t),this._renderMiddle(t),this._renderFooter(t),this._addPluginComponents(),this.trigger("rendered",this),this},_renderHeader:function(t,e){var i=this.$(".header").empty().html(p.templates.header()).find(".help-content").prepend(l(p.templates.helpContent()));return this._renderFilters(),i},_renderFilters:function(){return this.$(".forward-column .column-header input").val(this.filters[0]).add(this.$(".reverse-column .column-header input").val(this.filters[1]))},_renderMiddle:function(t,e){var i=this.$(".middle").empty().html(p.templates.middle());return this.unpairedPanelHidden?this.$(".unpaired-columns").hide():this.pairedPanelHidden&&this.$(".paired-columns").hide(),this._renderUnpaired(),this._renderPaired(),i},_renderUnpaired:function(t,e){var i,n,o=this,a=[],r=this._splitByFilters();return this.$(".forward-column .title").text([r[0].length,s("unpaired forward")].join(" ")),this.$(".forward-column .unpaired-info").text(this._renderUnpairedDisplayStr(this.unpaired.length-r[0].length)),this.$(".reverse-column .title").text([r[1].length,s("unpaired reverse")].join(" ")),this.$(".reverse-column .unpaired-info").text(this._renderUnpairedDisplayStr(this.unpaired.length-r[1].length)),this.$(".unpaired-columns .column-datasets").empty(),this.$(".autopair-link").toggle(0!==this.unpaired.length),0===this.unpaired.length?void this._renderUnpairedEmpty():(n=r[1].map(function(t,e){return void 0!==r[0][e]&&r[0][e]!==t&&a.push(o._renderPairButton()),o._renderUnpairedDataset(t)}),i=r[0].map(function(t){return o._renderUnpairedDataset(t)}),i.length||n.length?(this.$(".unpaired-columns .forward-column .column-datasets").append(i).add(this.$(".unpaired-columns .paired-column .column-datasets").append(a)).add(this.$(".unpaired-columns .reverse-column .column-datasets").append(n)),void this._adjUnpairedOnScrollbar()):void this._renderUnpairedNotShown())},_renderUnpairedDisplayStr:function(t){return["(",t," ",s("filtered out"),")"].join("")},_renderUnpairedDataset:function(t){return l("").attr("id","dataset-"+t.id).addClass("dataset unpaired").attr("draggable",!0).addClass(t.selected?"selected":"").append(l("").addClass("dataset-name").text(t.name)).data("dataset",t)},_renderPairButton:function(){return l("").addClass("dataset unpaired").append(l("").addClass("dataset-name").text(s("Pair these datasets")))},_renderUnpairedEmpty:function(){var t=l('').text("("+s("no remaining unpaired datasets")+")");return this.$(".unpaired-columns .paired-column .column-datasets").empty().prepend(t),t},_renderUnpairedNotShown:function(){var t=l('').text("("+s("no datasets were found matching the current filters")+")");return this.$(".unpaired-columns .paired-column .column-datasets").empty().prepend(t),t},_adjUnpairedOnScrollbar:function(){var t=this.$(".unpaired-columns").last(),e=this.$(".unpaired-columns .reverse-column .dataset").first();if(e.size()){var i=t.offset().left+t.outerWidth(),n=e.offset().left+e.outerWidth(),s=Math.floor(i)-Math.floor(n);this.$(".unpaired-columns .forward-column").css("margin-left",s>0?s:0)}},_renderPaired:function(t,e){if(this.$(".paired-column-title .title").text([this.paired.length,s("paired")].join(" ")),this.$(".unpair-all-link").toggle(0!==this.paired.length),0===this.paired.length)return void this._renderPairedEmpty();this.$(".remove-extensions-link").show(),this.$(".paired-columns .column-datasets").empty();var i=this;this.paired.forEach(function(t,e){var n=new u({pair:t});i.$(".paired-columns .column-datasets").append(n.render().$el).append(['"].join(""))})},_renderPairedEmpty:function(){var t=l('').text("("+s("no paired datasets yet")+")");return this.$(".paired-columns .column-datasets").empty().prepend(t),t},_renderFooter:function(t,e){var i=this.$(".footer").empty().html(p.templates.footer()); return this.$(".remove-extensions").prop("checked",this.removeExtensions),"function"==typeof this.oncancel&&this.$(".cancel-create.btn").show(),i},_addPluginComponents:function(){this._chooseFiltersPopover(".choose-filters-link"),this.$(".help-content i").hoverhighlight(".collection-creator","rgba( 64, 255, 255, 1.0 )")},_chooseFiltersPopover:function(t){function e(t,e){return['"].join("")}var i=l(a.template(['
",s(["Collections of paired datasets are ordered lists of dataset pairs (often forward and reverse reads). ","These collections can be passed to tools and workflows in order to have analyses done on each member of ","the entire group. This interface allows you to create a collection, choose which datasets are paired, ","and re-order the final collection."].join("")),"
","",s(['Unpaired datasets are shown in the unpaired section ',"(hover over the underlined words to highlight below). ",'Paired datasets are shown in the paired section.',"
",s(["
",s(["To unpair individual dataset pairs, click the ",'unpair buttons ( ). ','Click the "Unpair all" link to unpair all pairs.'].join("")),"
","",s(['You can include or remove the file extensions (e.g. ".fastq") from your pair names by toggling the ','"Remove file extensions from pair names?" control.'].join("")),"
","",s(['Once your collection is complete, enter a name and ','click "Create list". ',"(Note: you do not have to pair all unpaired datasets to finish.)"].join("")),"
"].join(""))};var f=function(t,e){var i,n=r.Deferred();if(e=a.defaults(e||{},{datasets:t,oncancel:function(){Galaxy.modal.hide(),n.reject("cancelled")},oncreate:function(t,e){Galaxy.modal.hide(),n.resolve(e)}}),!window.Galaxy||!Galaxy.modal)throw new Error("Galaxy or Galaxy.modal not found");return i=new p(e),Galaxy.modal.show({title:"Create a collection of paired datasets",body:i.$el,width:"80%",height:"800px",closing_events:!0}),i.render(),window.creator=i,n};return{PairedCollectionCreator:p,pairedCollectionCreatorModal:f,createListOfPairsCollection:d}}.apply(e,n),!(void 0!==s&&(t.exports=s))}).call(e,i(2),i(3),i(1),i(1))},function(t,e,i){var n,s;(function(o,a,r){n=[i(36),i(45),i(6),i(5)],s=function(t,e,i,n){function s(t){var e=t.toJSON(),i=u(e,{creationFn:function(e,i){return e=[{name:"forward",src:"hda",id:e[0].id},{name:"reverse",src:"hda",id:e[1].id}],t.createHDCA(e,"paired",i)}});return i}var l="collections",c=o.View.extend(i.LoggableMixin).extend({_logNamespace:l,tagName:"li",className:"collection-element",initialize:function(t){this.element=t.element||{},this.identifier=t.identifier},render:function(){return this.$el.attr("data-element-id",this.element.id).html(this.template({identifier:this.identifier,element:this.element})),this},template:a.template(['<%- identifier %>','<%- element.name %>'].join("")),destroy:function(){this.off(),this.$el.remove()},toString:function(){return"DatasetCollectionElementView()"}}),d=t.ListCollectionCreator,h=d.extend({elementViewClass:c,collectionClass:e.HistoryPairDatasetCollection,className:"pair-collection-creator collection-creator flex-row-container",_mangleDuplicateNames:function(){},render:function(t,e){return 2===this.workingElements.length?d.prototype.render.call(this,t,e):this._renderInvalid(t,e)},_renderList:function(t,e){var i=this,n=r(""),s=i.$list();a.each(this.elementViews,function(t){t.destroy(),i.removeElementView(t)}),n.append(i._createForwardElementView().$el),n.append(i._createReverseElementView().$el),s.empty().append(n.children()),a.invoke(i.elementViews,"render")},_createForwardElementView:function(){return this._createElementView(this.workingElements[0],{identifier:"forward"})},_createReverseElementView:function(){return this._createElementView(this.workingElements[1],{identifier:"reverse"})},_createElementView:function(t,e){var i=new this.elementViewClass(a.extend(e,{element:t}));return this.elementViews.push(i),i},swap:function(){this.workingElements=[this.workingElements[1],this.workingElements[0]],this._renderList()},events:a.extend(a.clone(d.prototype.events),{"click .swap":"swap"}),templates:a.extend(a.clone(d.prototype.templates),{middle:a.template(['",n(["Pair collections are permanent collections containing two datasets: one forward and one reverse. ","Often these are forward and reverse reads. The pair collections can be passed to tools and ","workflows in order to have analyses done on both datasets. This interface allows ","you to create a pair, name it, and swap which is forward and which reverse."].join("")),"
","",n(['Once your collection is complete, enter a name and ','click "Create list".'].join("")),"
"].join("")),invalidInitial:a.template([''+this.progressive+"...
";this.modal.$(".modal-body").empty().append(t).css({"margin-top":"8px"})},dialog:function(t,i,n){function s(){var n=t.$("#copy-modal-title").val();if(!n)return void t.$(".invalid-title").show();var s="copy-all"===t.$('input[name="copy-what"]:checked').val();t.$("button").prop("disabled",!0),l._showAjaxIndicator(),i.copy(!0,n,s).done(function(t){c.resolve(t)}).fail(function(){alert([l.errorMessage,e("Please contact a Galaxy administrator")].join(". ")),c.rejectWith(c,arguments)}).always(function(){f&&t.hide()})}n=n||{};var l=this,c=a.Deferred(),d=n.nameFn||this.defaultName,h=d({name:i.get("name")}),u=n.allDatasets?"copy-all":"copy-non-deleted",p=o.isUndefined(n.allowAll)?!0:n.allowAll,f=o.isUndefined(n.autoClose)?!0:n.autoClose;this.modal=t;var g=n.closing_callback;return t.show(o.extend(n,{title:this.title({name:i.get("name")}),body:r(l._template({name:h,isAnon:Galaxy.user.isAnonymous(),allowAll:p,copyWhat:u,activeLabel:this.activeLabel,allLabel:this.allLabel,anonWarning:this.anonWarning})),buttons:o.object([[e("Cancel"),function(){t.hide()}],[this.submitLabel,s]]),height:"auto",closing_events:!0,closing_callback:function(t){t&&c.reject({cancelled:!0}),g&&g(t)}})),t.$("#copy-modal-title").focus().select(),t.$("#copy-modal-title").on("keydown",function(t){13===t.keyCode&&(t.preventDefault(),s())}),c}},n=o.extend({},i,{defaultName:o.template("imported: <%- name %>"),title:o.template(e("Importing history")+' "<%- name %>"'),submitLabel:e("Import"),errorMessage:e("History could not be imported"),progressive:e("Importing history"),activeLabel:e("Import only the active, non-deleted datasets"),allLabel:e("Import all datasets including deleted ones"),anonWarning:e("As an anonymous user, unless you login or register, you will lose your current history ")+e("after importing this history. ")}),s=function(e,s){s=s||{};var o=window.parent.Galaxy.modal||new t.View({});return s.useImport?n.dialog(o,e,s):i.dialog(o,e,s)};return s}.apply(e,n),!(void 0!==s&&(t.exports=s))}).call(e,i(3),i(1),i(1))},function(t,e,i){var n,s;(function(o,a){n=[i(94),i(96),i(6),i(5)],s=function(t,e,i,n){var s=t.DatasetListItemEdit,r=s.extend({className:s.prototype.className+" history-content",_fetchModelDetails:function(){var t=this;return t.model.inReadyState()&&!t.model.hasDetails()?t.model.fetch({silent:!0}):t.model.has("rerunnable")?o.when():t.model.fetch({silent:!0,data:{keys:["rerunnable","creating_job"].join(",")}})},events:a.extend(a.clone(s.prototype.events),{"click .unhide-link":function(t){return this.model.unhide(),!1}}),toString:function(){var t=this.model?this.model+"":"(no model)";return"HDAListItemEdit("+t+")"}});return r.prototype.templates=function(){var t=a.extend({},s.prototype.templates.warnings,{hidden:i.wrapTemplate(["<% if( !dataset.visible ){ %>",'| Description | Name | Size | Settings | Status |
|---|
| Name | Size | Type | Genome | Settings | Status |
|---|
| Description | Name | Size | Settings | Status |
|---|
| Name | Size | Type | Genome | Settings | Status |
|---|
' + njobs_text + ' been successfully added to the queue - resulting in the following datasets:
';\n\t for (var i in response.outputs) {\n\t tmpl += '' + response.outputs[i].hid + ': ' + response.outputs[i].name + '
';\n\t }\n\t 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\t '' +\n\t 'The server could not complete the request. Please contact the Galaxy Team if this error persists.' +\n\t '
' +\n\t '' +\n\t '\" + this.formattedReference() + \"
\" );\n\t return this;\n\t },\n\t formattedReference: function() {\n\t var model = this.model;\n\t var entryType = model.entryType();\n\t var fields = model.fields();\n\t\n\t var ref = \"\";\n\t // Code inspired by...\n\t // https://github.com/vkaravir/bib-publication-list/blob/master/src/bib-publication-list.js\n\t var authorsAndYear = this._asSentence( (fields.author ? fields.author : \"\") + (fields.year ? (\" (\" + fields.year + \")\") : \"\") ) + \" \";\n\t var title = fields.title || \"\";\n\t var pages = fields.pages ? (\"pp. \" + fields.pages) : \"\";\n\t var address = fields.address;\n\t if( entryType == \"article\" ) {\n\t var volume = (fields.volume ? fields.volume : \"\") +\n\t (fields.number ? ( \" (\" + fields.number + \")\" ) : \"\") +\n\t (pages ? \", \" + pages : \"\");\n\t ref = authorsAndYear + this._asSentence(title) +\n\t (fields.journal ? (\"In \" + fields.journal + \", \") : \"\") +\n\t this._asSentence(volume) + \n\t this._asSentence(fields.address) +\n\t \"<\\/em>\";\n\t } else if( entryType == \"inproceedings\" || entryType == \"proceedings\" ) {\n\t ref = authorsAndYear + \n\t this._asSentence(title) + \n\t (fields.booktitle ? (\"In \" + fields.booktitle + \", \") : \"\") +\n\t (pages ? pages : \"\") +\n\t (address ? \", \" + address : \"\") + \n\t \".<\\/em>\";\n\t } else if( entryType == \"mastersthesis\" || entryType == \"phdthesis\" ) {\n\t ref = authorsAndYear + this._asSentence(title) +\n\t (fields.howpublished ? fields.howpublished + \". \" : \"\") +\n\t (fields.note ? fields.note + \".\" : \"\");\n\t } else if( entryType == \"techreport\" ) {\n\t ref = authorsAndYear + this._asSentence(title) +\n\t this._asSentence(fields.institution) +\n\t this._asSentence(fields.number) +\n\t this._asSentence(fields.type);\n\t } else if( entryType == \"book\" || entryType == \"inbook\" || entryType == \"incollection\" ) {\n\t ref = authorsAndYear + \" \" + this._formatBookInfo(fields);\n\t } else {\n\t ref = authorsAndYear + \" \" + this._asSentence(title) +\n\t this._asSentence(fields.howpublished) +\n\t this._asSentence(fields.note);\n\t }\n\t var doiUrl = \"\";\n\t if( fields.doi ) {\n\t doiUrl = 'http://dx.doi.org/' + fields.doi;\n\t ref += '[doi:' + fields.doi + \"]\";\n\t }\n\t var url = fields.url || doiUrl;\n\t if( url ) {\n\t ref += '[Link]';\n\t }\n\t return ref;\n\t },\n\t _formatBookInfo: function(fields) {\n\t var info = \"\";\n\t if( fields.chapter ) {\n\t info += fields.chapter + \" in \";\n\t }\n\t if( fields.title ) {\n\t info += \"\" + fields.title + \"<\\/em>\";\n\t }\n\t if( fields.editor ) {\n\t info += \", Edited by \" + fields.editor + \", \";\n\t }\n\t if( fields.publisher) {\n\t info += \", \" + fields.publisher;\n\t }\n\t if( fields.pages ) {\n\t info += \", pp. \" + fields.pages + \"\";\n\t }\n\t if( fields.series ) {\n\t info += \", \" + fields.series + \"<\\/em>\";\n\t }\n\t if( fields.volume ) {\n\t info += \", Vol.\" + fields.volume;\n\t }\n\t if( fields.issn ) {\n\t info += \", ISBN: \" + fields.issn;\n\t }\n\t return info + \".\";\n\t },\n\t _asSentence: function(str) {\n\t return (str && str.trim()) ? str + \". \" : \"\";\n\t }\n\t});\n\t\n\tvar CitationListView = Backbone.View.extend({\n\t el: '#citations',\n\t /**\n\t * Set up view.\n\t */\n\t initialize: function() {\n\t this.listenTo( this.collection, 'add', this.renderCitation );\n\t },\n\t\n\t events: {\n\t 'click .citations-to-bibtex': 'showBibtex',\n\t 'click .citations-to-formatted': 'showFormatted'\n\t },\n\t\n\t renderCitation: function( citation ) {\n\t var citationView = new CitationView( { model: citation } );\n\t this.$(\".citations-formatted\").append( citationView.render().el );\n\t var rawTextarea = this.$(\".citations-bibtex-text\");\n\t rawTextarea.val( rawTextarea.val() + \"\\n\\r\" + citation.attributes.content );\n\t },\n\t\n\t render: function() {\n\t this.$el.html(this.citationsElement());\n\t this.collection.each(function( item ){\n\t this.renderCitation( item );\n\t }, this);\n\t this.showFormatted();\n\t },\n\t\n\t showBibtex: function() {\n\t this.$(\".citations-to-formatted\").show();\n\t this.$(\".citations-to-bibtex\").hide();\n\t this.$(\".citations-bibtex\").show();\n\t this.$(\".citations-formatted\").hide();\n\t this.$(\".citations-bibtex-text\").select();\n\t },\n\t\n\t showFormatted: function() {\n\t this.$(\".citations-to-formatted\").hide();\n\t this.$(\".citations-to-bibtex\").show();\n\t this.$(\".citations-bibtex\").hide();\n\t this.$(\".citations-formatted\").show();\n\t },\n\t\n\t partialWarningElement: function() {\n\t if( this.collection.partial ) {\n\t return [\n\t '' + JSON.stringify( xhr.responseJSON ) + '';\n\t } else {\n\t content += ': ' + message;\n\t }\n\t }\n\t creator._showAlert( content, 'alert-danger' );\n\t },\n\t\n\t events : {\n\t // header\n\t 'click .more-help' : '_clickMoreHelp',\n\t 'click .less-help' : '_clickLessHelp',\n\t 'click .main-help' : '_toggleHelp',\n\t 'click .header .alert button' : '_hideAlert',\n\t\n\t 'click .reset' : 'reset',\n\t 'click .clear-selected' : 'clearSelectedElements',\n\t\n\t // elements - selection\n\t 'click .collection-elements' : 'clearSelectedElements',\n\t\n\t // elements - drop target\n\t // 'dragenter .collection-elements': '_dragenterElements',\n\t // 'dragleave .collection-elements': '_dragleaveElements',\n\t 'dragover .collection-elements' : '_dragoverElements',\n\t 'drop .collection-elements' : '_dropElements',\n\t\n\t // these bubble up from the elements as custom events\n\t 'collection-element.dragstart .collection-elements' : '_elementDragstart',\n\t 'collection-element.dragend .collection-elements' : '_elementDragend',\n\t\n\t // footer\n\t 'change .collection-name' : '_changeName',\n\t 'keydown .collection-name' : '_nameCheckForEnter',\n\t 'click .cancel-create' : function( ev ){\n\t if( typeof this.oncancel === 'function' ){\n\t this.oncancel.call( this );\n\t }\n\t },\n\t 'click .create-collection' : '_clickCreate'//,\n\t },\n\t\n\t // ........................................................................ header\n\t /** expand help */\n\t _clickMoreHelp : function( ev ){\n\t ev.stopPropagation();\n\t this.$( '.main-help' ).addClass( 'expanded' );\n\t this.$( '.more-help' ).hide();\n\t },\n\t /** collapse help */\n\t _clickLessHelp : function( ev ){\n\t ev.stopPropagation();\n\t this.$( '.main-help' ).removeClass( 'expanded' );\n\t this.$( '.more-help' ).show();\n\t },\n\t /** toggle help */\n\t _toggleHelp : function( ev ){\n\t ev.stopPropagation();\n\t this.$( '.main-help' ).toggleClass( 'expanded' );\n\t this.$( '.more-help' ).toggle();\n\t },\n\t\n\t /** show an alert on the top of the interface containing message (alertClass is bootstrap's alert-*) */\n\t _showAlert : function( message, alertClass ){\n\t alertClass = alertClass || 'alert-danger';\n\t this.$( '.main-help' ).hide();\n\t this.$( '.header .alert' )\n\t .attr( 'class', 'alert alert-dismissable' ).addClass( alertClass ).show()\n\t .find( '.alert-message' ).html( message );\n\t },\n\t /** hide the alerts at the top */\n\t _hideAlert : function( message ){\n\t this.$( '.main-help' ).show();\n\t this.$( '.header .alert' ).hide();\n\t },\n\t\n\t // ........................................................................ elements\n\t /** reset all data to the initial state */\n\t reset : function(){\n\t this._instanceSetUp();\n\t this._elementsSetUp();\n\t this.render();\n\t },\n\t\n\t /** deselect all elements */\n\t clearSelectedElements : function( ev ){\n\t this.$( '.collection-elements .collection-element' ).removeClass( 'selected' );\n\t this.$( '.collection-elements-controls > .clear-selected' ).hide();\n\t },\n\t\n\t //_dragenterElements : function( ev ){\n\t // //this.debug( '_dragenterElements:', ev );\n\t //},\n\t//TODO: if selected are dragged out of the list area - remove the placeholder - cuz it won't work anyway\n\t // _dragleaveElements : function( ev ){\n\t // //this.debug( '_dragleaveElements:', ev );\n\t // },\n\t\n\t /** track the mouse drag over the list adding a placeholder to show where the drop would occur */\n\t _dragoverElements : function( ev ){\n\t //this.debug( '_dragoverElements:', ev );\n\t ev.preventDefault();\n\t\n\t var $list = this.$list();\n\t this._checkForAutoscroll( $list, ev.originalEvent.clientY );\n\t var $nearest = this._getNearestElement( ev.originalEvent.clientY );\n\t\n\t //TODO: no need to re-create - move instead\n\t this.$( '.element-drop-placeholder' ).remove();\n\t var $placeholder = $( '' );\n\t if( !$nearest.size() ){\n\t $list.append( $placeholder );\n\t } else {\n\t $nearest.before( $placeholder );\n\t }\n\t },\n\t\n\t /** If the mouse is near enough to the list's top or bottom, scroll the list */\n\t _checkForAutoscroll : function( $element, y ){\n\t var AUTOSCROLL_SPEED = 2,\n\t offset = $element.offset(),\n\t scrollTop = $element.scrollTop(),\n\t upperDist = y - offset.top,\n\t lowerDist = ( offset.top + $element.outerHeight() ) - y;\n\t if( upperDist >= 0 && upperDist < this.autoscrollDist ){\n\t $element.scrollTop( scrollTop - AUTOSCROLL_SPEED );\n\t } else if( lowerDist >= 0 && lowerDist < this.autoscrollDist ){\n\t $element.scrollTop( scrollTop + AUTOSCROLL_SPEED );\n\t }\n\t },\n\t\n\t /** get the nearest element based on the mouse's Y coordinate.\n\t * If the y is at the end of the list, return an empty jQuery object.\n\t */\n\t _getNearestElement : function( y ){\n\t var WIGGLE = 4,\n\t lis = this.$( '.collection-elements li.collection-element' ).toArray();\n\t for( var i=0; i
', _l([\n\t 'Collections of datasets are permanent, ordered lists of datasets that can be passed to tools and ',\n\t 'workflows in order to have analyses done on each member of the entire group. This interface allows ',\n\t 'you to create a collection and re-order the final collection.'\n\t ].join( '' )), '
',\n\t '', _l([\n\t 'Once your collection is complete, enter a name and ',\n\t 'click \"Create list\".'\n\t ].join( '' )), '
'\n\t ].join('')),\n\t\n\t /** shown in list when all elements are discarded */\n\t invalidElements : _.template([\n\t _l( 'The following selections could not be included due to problems:' ),\n\t '<%= dataset.peek %>',\n\t '<% } %>',\n\t '<% } %>',\n\t '