1/*! up-static 2026-09-25 */ 2!function(){"use strict";angular.module("48HourprintApp").requires.push("siteCommon"),angular.module("siteCommon",[])}(),function(){function a(){function a(a,b,c,d){d.$parsers.push(function(a){if(void 0==a)return"";var b=a.toString().replace(/[^0-9]/g,"");return b!=a&&(d.$setViewValue(b),d.$render()),b})}return{restrict:"A",link:a,require:"ngModel"}}angular.module("siteCommon").directive("numberOnly",a)}(),function(){angular.module("siteCommon").filter("htmldecode",[function(){return function(a){if(a){var b=document.createElement("div");return b.innerHTML=a,b.childNodes[0].nodeValue}}}])}(),function(){angular.module("siteCommon").filter("trusted",["$sce",function(a){return function(b){return a.trustAsHtml(b)}}])}(),function(){angular.module("siteCommon").filter("number",[function(){return function(a){return isNaN(a)?a:Number(a)}}])}(),function(){function a(a){function b(b,c,d,e){if(!d.ngTrim||"true"==d.ngTrim)throw"ng-trim='false' not set.";var f;e.$parsers.push(function(b){var d=b,g=d.replace(/\D/gi,"");return g=10!=g.length?g:"("+g.substr(0,3)+") "+g.substr(3,3)+"-"+g.substr(6),f&&a.cancel(f),f=a(function(){e.$setViewValue(g),c.val(g)}),g})}return{restrict:"A",link:b,require:"ngModel"}}angular.module("siteCommon").directive("formatPhone",a),a.$inject=["$timeout"]}(),function(){function a(){return{restrict:"A",link:function(a,b,c){var d=c.elementClicker.split("|"),e=d[0],f=d[1];b.on("click",function(a){switch(f){case"enter":var a=$.Event("keyup",{which:13});$("#"+e).trigger(a);break;case"submit":$("#"+e).submit();break;case"dblclick":a.preventDefault(),a.stopPropagation(),$("#"+e).click().click();break;case"click":a.preventDefault(),a.stopPropagation(),$("#"+e).click()}})}}}function b(){function a(a,b,c){c.showBackdrop}return{restrict:"A",link:a}}function c(){function a(a,b,c){var d=c.toggleElementDisplay,e="ontouchstart"in document.documentElement;a.timer=null,a.isVisible=!1,a.showElement=function(){a.timer=setTimeout(function(){$(d).show(),$(b).addClass("active"),$(".comp-page-backdrop").show(),$(b).css({"z-index":3e3}),$(d).css({"z-index":3e3})},300)},a.hideElement=function(){clearTimeout(a.timer),$(d).hide(),$(b).removeClass("active"),$(".comp-page-backdrop").hide(),$(b).css({"z-index":1})},e?(b.on("click",function(){1==a.isVisible?($(d).hide(),$(b).removeClass("active"),$(".comp-page-backdrop").hide(),$(b).css({"z-index":1}),a.isVisible=!1):($(d).show(),$(b).addClass("active"),$(".comp-page-backdrop").show(),$(b).css({"z-index":3e3}),$(d).css({"z-index":3e3}),a.isVisible=!0)}),$(".comp-page-backdrop").mousedown(function(){$(d).hide(),$(b).removeClass("active"),$(b).css({"z-index":1}),a.isVisible=!1})):(b.on("mouseenter",function(){a.showElement()}),b.on("mouseleave",function(){a.hideElement()}),b.on("focusout",function(c){document.getElementById(b[0].id).contains(c.relatedTarget)||a.hideElement()}),b.on("keydown",function(c){a.isVisible=b.hasClass("active");var d=[9,13,27],e=[13],f=[13,27],g=-1!=d.indexOf(c.keyCode),h=-1!=e.indexOf(c.keyCode),i=-1!=f.indexOf(c.keyCode);g&&(a.isVisible&&i?(a.isVisible=!1,a.hideElement()):!a.isVisible&&h&&(a.isVisible=!0,a.showElement()))}))}return{restrict:"A",link:a}}function d(){return function(a,b,c){b.bind("keydown keypress",function(b){13===b.which&&(a.$apply(function(){a.$eval(c.ngEnter)}),b.preventDefault())})}}angular.module("siteCommon").directive("toggleElementDisplay",c).directive("showBackdrop",b).directive("elementClicker",a).directive("ngEnter",d)}(),function(){function a(a,b,c){function d(d,e,f){var g,h,i,j;return b=angular.element(b),i=0,null!=f.infiniteScrollDistance&&d.$watch(f.infiniteScrollDistance,function(a){return i=parseInt(a,10)}),j=!0,g=!1,null!=f.infiniteScrollDisabled&&d.$watch(f.infiniteScrollDisabled,function(a){if((j=!a)&&g)return g=!1,h()}),h=function(){var c,h,k,l;return l=b.height()+b.scrollTop(),c=e.offset().top+e.height(),h=c-l,k=h<=b.height()*i,k&&j?a.$$phase?d.$eval(f.infiniteScroll):d.$apply(f.infiniteScroll):k?g=!0:void 0},b.on("scroll",h),d.$on("$destroy",function(){return b.off("scroll",h)}),c(function(){return f.infiniteScrollImmediateCheck?d.$eval(f.infiniteScrollImmediateCheck)?h():void 0:h()},0)}return{restrict:"A",link:d}}angular.module("siteCommon").directive("infiniteScroll",a),a.$inject=["$rootScope","$
2window","$timeout"]}(),function(){function a(a,b,c){function d(b,d,e,f){b.textAccessibilityService=c,b.element=d[0];var g=new CustomDropdownLibrary.CustomDropdownLibrary,h=g.prepareFormDropdowns(b.element);b.$on("$destroy",function(){for(var a=0;a<h.length;a++)g.destroyElement(h[a]);g=null}),b.setSelectedValue=function(a){-1==a.toString().toLowerCase().indexOf("custom")&&(b.selectedValue=a),b.triggered=!0,b.$emit("change",a)},b.setSelectedValueOnKeyDown=function(a,c){13==a.keyCode&&(a.preventDefault(),b.setSelectedValue(c))},b.customDropDownLibrary=g,a.$on("showNav",function(a,c){if(c){var d={};document.createEvent?(d=document.createEvent("MouseEvent"),d.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null)):d=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}),b.element.parentNode.dispatchEvent(d),b.customDropDownLibrary.hideDropdownEventHandler(b.element.parentNode)}}),b.emitFocus=function(){b.$emit("touched",!0)},b.getGroupClass=function(a){var b=!1;return angular.forEach(a,function(a,c){a.option_group&&(b=!0)}),b?"site-dropdown-group":""}}return{restrict:"E",link:d,scope:{options:"=",activeOption:"=",triggered:"=?",attributeId:"=?"},template:'<div class="site-dropdown dropdown" ng-class="getGroupClass(options)"><button class="dropdown-toggle val-wrap" aria-haspopup="listbox" ng-class="{active : triggered}" type="button" ng-click="emitFocus()" aria-label="{{textAccessibilityService.makeTextScreenReaderReadable(activeOption.value) + (activeOption.label ? \' \' + activeOption.label : \'\') }}"><span class="icon" ng-if="activeOption.icon"><img ng-src="{{activeOption.icon}}" alt="{{activeOption.altText}}"></span><div class="dropdown-toggle-label-icon-container"><span class="dropdown-toggle-label val" title="{{activeOption.value | htmldecode}}"><span class="dropdown-toggle-label-title" ng-class="{\'has-subtitle\': activeOption.label}">{{ activeOption.value | htmldecode }}</span><span class="dropdown-menu-link-subtitle val" ng-if="activeOption.label">{{activeOption.label | htmldecode}}</span></span><i class="fehp-arrow-bottom" aria-hidden="true"></i></div></button><ul class="dropdown-menu" role="listbox" tabindex="-1"><li class="dropdown-menu-item {{option.option_group_class}}" role="option" tabindex="0" ng-repeat="(key, option) in options" ng-class="{\'selected\': option.selected}" ng-click="setSelectedValue(option.key)" ng-keydown="setSelectedValueOnKeyDown($event, option.key)"><a class="dropdown-menu-link val-wrap" role="menuitem" ng-if="!option.option_group"><span class="icon" ng-if="option.icon"><img ng-src="{{option.icon}}" alt="{{option.altText}}"></span><span class="dropdown-toggle-label-icon-container"><span class="dropdown-menu-link-title val" aria-label="{{textAccessibilityService.makeTextScreenReaderReadable(option.val)}}">{{option.val | htmldecode}}</span><span class="dropdown-menu-link-subtitle val" ng-if="option.label">{{option.label | htmldecode}}</span></span></a><i class="dropdown-menu-selected-icon fehp-checkmark" aria-hidden="true" ng-if="option.selected"></i></li></ul></div>'}}angular.module("siteCommon").directive("customDropdown",a),a.$inject=["$rootScope","$window","textAccessibilityService"]}(),angular.module("siteCommon").service("PreviewService",["AjaxService",function(a){var b={};return b.getPreviewFromServer=function(b){var c="json"==b.design_type?"POST":"GET",d="template"==b.design_type?design_api_url:print_api_url;return a.call(d+"/getPreview/"+preview_token,c,b)},b.getPreviewKey=function(a){var b="template"==a.design_type?a.template_id:a.design_id;return a.design_type+"_"+b+"_"+a.preview_profile_code+"_"+a.page_no+"_"+a.theme_id+"_"+a.stage_id+"_"+a.size_id},b}]),function(){function a(a,b,c){function d(a){var b=c.defer(),d=[];for(var f in a)if(-1==h.indexOf(f)){var g=a[f],i=e(f,g);d.push(i)}return d.length?c.all(d).then(function(a){b.resolve(!0)}):b.resolve(!0),b.promise}function e(d,e){return c(function(c,f){b.get(e,{cache:!0}).then(function(b){var e=b.data;a.put(d,e),h.push(d),c(!0)},function(a){f(a)})})}function f(a){return g[a]?g[a]:null}var g={"grid/standard.html":website_config.site_url+"/html/angular-app/modules/sm
2s-product/directives/calculator/grid/standard.directive.html"+website_config.site_version,"list/standard.html":website_config.site_url+"/html/angular-app/modules/sms-product/directives/calculator/list/standard.directive.html"+website_config.site_version,"multi-calc-switch.html":website_config.site_url+"/html/angular-app/modules/sms-product/directives/calculator/multi-calc-switch.directive.html"+website_config.site_version,"multi-calc-dropdown.html":website_config.site_url+"/html/angular-app/modules/sms-product/directives/calculator/multicalc-switch-dropdown.directive.html"+website_config.site_version,"multi-calc-box.html":website_config.site_url+"/html/angular-app/modules/sms-product/directives/calculator/multicalc-switch-box.directive.html"+website_config.site_version,"calculator-price.html":website_config.site_url+"/html/angular-app/modules/sms-product/directives/calculator/calculator-price.directive.html"+website_config.site_version},h=[];return{getTemplate:d,getTemplatePath:f}}angular.module("siteCommon").factory("siteTemplateCache",a),a.$inject=["$templateCache","$http","$q"]}(),function(){function a(){function a(a){var c=a;if(a)for(var d in b.textAccessibilityDictionary)if(b.textAccessibilityDictionary.hasOwnProperty(d)){var e=new RegExp(d,"g");c=c.replace(e,function(a){return b.textAccessibilityDictionary[d].replaceOnly?a.replace(b.textAccessibilityDictionary[d].replaceOnly,b.textAccessibilityDictionary[d].replaceWith):b.textAccessibilityDictionary[d].replaceWith})}return c}this.textAccessibilityDictionary={'"':{replaceWith:" inch"}," pt.":{replaceWith:" point"}," x ":{replaceWith:" by "},"[0-9]x[0-9]":{replaceOnly:"x",replaceWith:" by "}};var b=this;return{makeTextScreenReaderReadable:a}}angular.module("siteCommon").factory("textAccessibilityService",a),a.$inject=[]}(),function(){"use strict";angular.module("48HourprintApp").requires.push("smsCategory"),angular.module("smsCategory",[])}(),function(){function a(a){function b(b,c,d,e){"undefined"!=typeof DriEnhancedEcommerceLib&&(b.EnhancedEcommerceLibrary=new DriEnhancedEcommerceLib.EnhancedEcommerceLib,"undefined"!=typeof ecommerce_product_data&&"function"==typeof b.EnhancedEcommerceLibrary.pushProductImpressions&&b.EnhancedEcommerceLibrary.pushProductImpressions(ecommerce_product_data),"undefined"!=typeof ecomm_prodid&&b.EnhancedEcommerceLibrary.dataLayerPush({event:"remarketing_event",ecomm_prodid:ecomm_prodid,ecomm_pagetype:"category",ecomm_category:breadcrumb})),a.productClick=function(a){"undefined"!=typeof ecommerce_product_data&&"function"==typeof b.EnhancedEcommerceLibrary.pushProductClick&&b.EnhancedEcommerceLibrary.pushProductClick(ecommerce_product_data[a])}}return{restrict:"A",link:b}}angular.module("smsCategory").directive("categoryEnhancedEcommerce",a),a.$inject=["$window"]}(),function(){function a(a){function b(a,b,c,d){var e=b.find("a"),f=b.find(".slider"),g=null;angular.forEach(e,function(a){var b=angular.element(a);b.on("click",function(a){var b=a.currentTarget.offsetParent.offsetLeft,c=a.currentTarget.offsetParent.offsetWidth;angular.element(f[0]).css({width:c+"px",left:b+"px"})}),angular.element(b[0].offsetParent).hasClass("active")&&(g=b)}),g&&angular.element(g[0]).click()}return{restrict:"A",link:b}}angular.module("smsCategory").directive("navTabSlider",a),a.$inject=["$window"]}(),function(){"use strict";angular.module("48HourprintApp").requires.push("smsSeoLanding"),angular.module("smsSeoLanding",[])}(),function(){function a(a){function b(a,b,c,d){a.collapsed=!0,a.collapsedHeight=a.lineHeight*a.collapsedLineCount,a.expandedButtonText="Show Less",a.collapseButtonText="Show More",a.collapse=function(){a.collapsed=!0,b[0].classList.add("show-gradient-overlay"),b[0].style.height=a.collapsedHeight+"px",a.readMoreBtn.classList.remove("expanded"),a.readMoreBtn.classList.add("collapsed"),a.readMoreBtn.childNodes[2].nodeValue=a.collapseButtonText},a.expand=function(){a.collapsed=!1,b[0].classList.remove("show-gradient-overlay"),b[0].style.height=null,a.readMoreBtn.classList.add("expanded"),a.readMoreBtn.classList.remove("collapsed"),a.readMoreBtn.childNodes[2].nodeValue=a.expandedButtonText},a.attachReadMoreBtnClickHandler=function(){a.readMoreBtn=null;for(var c=b[0].nextElementSibling;c;){if(c.matches(a.readMoreBtnSelector)){a.readMoreBtn=c;break}c=c.nextElementSibling}a.readMoreBtn&&a.readMoreBtn.addEventListener("click",a.readMoreClickHandler)},a.readMoreClickHandler=function(){a.$apply(function(){a.collapsed?a.expand():a.collapse()})},a.attachReadMoreBtnClickHandler()}return{restrict:"A",link:b,scope:{collapsedLineCount:"<",lineHeight:"<",readMoreBtnSelector:"<"}}}angular.module("smsSeoLanding").directive("readMoreText",a),a.$inject=["$compile"]}(),function(){function a(a){function b(a,b,c,d){b.find(".js-read-more-btn").click(function(a){b.toggleClass("expanded")})}return{restrict:"A",link:b,scope:{}}}angular.module("smsSeoLanding").directive("readMoreTable",a),a.$inject=["$compile"]}();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.