Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> url404  [in template "10154#10192#18372600" at line 82, column 28]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${url404}  [in template "10154#10192#18372600" at line 82, column 26]
----
1<#assign uniqueID = randomNamespace /> 
2<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()> 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4<#assign basePath = "/web/branchoffer"> 
5<#assign environment = url?substring(0, url?index_of(basePath) + basePath?length)> 
6<#assign oadURL = propsUtil.get('elan.oad.url')> 
7<#assign oadURL_TC = propsUtil.get('elan.oad.tac.url') > 
8<#assign prcaURL = propsUtil.get('elan.prca.url') > 
9<#assign rewardsCalculatorURL = propsUtil.get('cclm.rewards.calculator.url') > 
10<#assign applyNowText = "Apply Now" > 
11<#assign learnMoreText = "Learn More" > 
12<#assign applicationType = "saa" > 
13<#assign projectIds = ["12", "13", "14", "15", "16"]> 
14<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! > 
15 
16<#assign text_to_apply_source = "vanity url" > 
17<#if qstringmap["sms"]?has_content> 
18    <#assign sms = 1 > 
19    <#assign text_to_apply_source = "sms" > 
20</#if> 
21<#if qstringmap["qrCode"]?has_content> 
22    <#assign text_to_apply_source = "qr code" > 
23</#if> 
24 
25<#if qstringmap["ecid"]?has_content> 
26    <#assign ecidExt = qstringmap["ecid"]?first> 
27    <#assign ecidExt = htmlUtil.escape(ecidExt)> 
28    <#assign ecidExt = htmlUtil.escapeJS(ecidExt)> 
29    <#assign ecidExt = "&ecid=" + ecidExt> 
30    
31    <#assign campaignId = qstringmap["ecid"]?first > 
32    <#assign campaignId  = htmlUtil.escape(campaignId)> 
33    <#assign campaignId  = htmlUtil.escapeJS(campaignId)> 
34<#else> 
35    <#assign ecidExt=""> 
36    <#assign campaignId = "" > 
37</#if> 
38 
39<#if qstringmap["bankercode"]?has_content> 
40    <#assign bCode= qstringmap["bankercode"]?first> 
41    <#assign bCode= htmlUtil.escapeJS(bCode)> 
42    <#assign bCode= htmlUtil.escape(bCode)> 
43    <#assign isEmployee = false> 
44 
45 
46    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bCode)> 
47    <#if fiData?first?has_content> 
48        <#assign fi = fiData?first> 
49        <#if projectIds?seq_index_of(fi.projectId) != -1> 
50            <#assign subbu_special = fi.offerId> 
51        </#if> 
52        <#if fi.projectType == "emp"> 
53            <#assign isEmployee = true> 
54        </#if> 
55    <#else> 
56        <script> 
57            console.log("fiData missing"); 
58            location.href = '${url404}'; 
59        </script> 
60    </#if> 
61 
62    <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bCode)> 
63    <#if !bData?first?has_content> 
64        <script> 
65            console.log("bData missing"); 
66            location.href = '${url404}'; 
67        </script> 
68    </#if> 
69    <#list bData as b>      
70        <#assign lc = b.locationcode > 
71        <#assign bName = b.branch > 
72        <#assign bPhone = b.businessphone > 
73        <#assign boeid = b.oeid?trim> 
74        <#assign fName = b.firstname?trim> 
75        <#assign lName = b.lastname?trim> 
76        <#assign rLC = b.reallocationcode > 
77        <#assign mappedLC = b.mappedLocationCode > 
78    </#list>  
79<#else> 
80    <script> 
81        console.log("MainProductBcode missing"); 
82        location.href = '${url404}'; 
83    </script> 
84</#if> 
85 
86 
87<#if mappedLC?has_content> 
88    <#assign lc = mappedLC > 
89</#if> 
90 
91<#if lc?has_content> 
92	<#assign firstNameLength = fName?length > 
93		<#assign lastNameLength = lName?length > 
94		<#if firstNameLength + lastNameLength &gt; 19 > 
95			<#if lastNameLength &gt; 18 > 
96				<#assign bLName = lName?substring(0,18)> 
97			<#else> 
98				<#assign bLName = lName> 
99			</#if> 
100			<#assign maxFirstName = 19 - bLName?length > 
101			<#if firstNameLength &gt; maxFirstName > 
102				<#assign bFName = fName?substring(0,maxFirstName)> 
103			<#else> 
104				<#assign bFName = fName> 
105			</#if> 
106		<#else> 
107			<#assign bFName = fName> 
108			<#assign bLName = lName> 
109		</#if>  
110</#if> 
111 
112<#assign prefix = "00000" > 
113<#assign lcWithPrefix = prefix + lc > 
114<#assign withPrefixLength = lcWithPrefix?length > 
115<#assign startHere = withPrefixLength - 5> 
116<#assign lc = lcWithPrefix?substring(startHere)> 
117 
118<#assign balanceTransferCalculatorOfferTypes = ["108", "109"] > 
119<#assign calculatorOfferTypes = ["101", "104", "138", "154", "144", "143", "128"] > 
120 
121<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
122<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
123<#assign clientProfile = clientProfileList?first> 
124<#assign partnerName = clientProfile.getMarketingNameLong()> 
125<#assign pbu = clientProfile.getPbu()> 
126<#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
127<#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
128 
129<#if (subbu_special?has_content)> 
130	<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
131<#else> 
132	<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
133</#if> 
134 
135<#if (fiCardsData?size > 0)>   
136	<#if (subbu_special?has_content)> 
137		<#assign lc_used = fiCardsData?first.WebLocationCode>   
138	<#else> 
139		<#assign lc_used = lc>  
140	</#if>  
141</#if> 
142 
143<#assign marketingChannel = 'SAT2A'> 
144<#if isEmployee> 
145	<#assign marketingChannel = 'EMPL'> 
146</#if> 
147 
148<#assign fultonBankpbu = "0727491"> 
149<#if pbu == fultonBankpbu> 
150    <style> 
151        #hideFultonInfo { 
152            display: none; 
153
154    </style> 
155</#if> 
156 
157<#function getSaaOfferIdOREmpOfferId offerType isEmp> 
158    <#list fiCardsData as fiData> 
159        <#if fiData.offerType == offerType> 
160           <#if isEmp> 
161				<#return fiData.empofferId> 
162			</#if> 
163			<#return fiData.saaofferId> 
164        </#if> 
165    </#list> 
166   <#return "" /> 
167</#function> 
168 
169<#function getFileNameByOfferType offerType> 
170    <#list fiCardsData as fiData> 
171        <#if fiData.offerType == offerType> 
172           <#return fiData.filename> 
173        </#if> 
174    </#list> 
175   <#return "" /> 
176</#function> 
177 
178<#function getUsePRCA offerType> 
179    <#list fiCardsData as fiData> 
180        <#if fiData.offerType == offerType> 
181           <#return fiData.useprca!""> 
182        </#if> 
183    </#list> 
184   <#return "" /> 
185</#function> 
186 
187<#function replacePlaceholders(input, APRValue, AMFValue, BALValue, TCLinkValue)> 
188    <#return input 
189        ?replace("{APR}", APRValue) 
190        ?replace("{AMF}", AMFValue) 
191        ?replace("{BAL}", BALValue) 
192        ?replace("{TC}", TCLinkValue)> 
193</#function> 
194 
195<#assign productOfferTypeValue = ""> 
196<#assign productOfferTypeName = ""> 
197<#if (productOfferType.getData())??> 
198	<#assign productOfferTypeValue = productOfferType.getData()> 
199	<#assign productOfferTypeName = productOfferType.optionsMap[productOfferType.getData()]> 
200</#if> 
201 
202<#assign productOfferTypeName = productOfferTypeName?substring(productOfferTypeName?index_of(" - ") + 3)?upper_case!> 
203 
204 
205<#assign offerId = getSaaOfferIdOREmpOfferId(productOfferTypeValue, isEmployee)> 
206<#assign cardArtImage = cdnCardArtUrl + "/" + getFileNameByOfferType(productOfferTypeValue) + ".png" > 
207<#assign cardArtImageAlt = cdnCardArtUrl + "/" + getFileNameByOfferType(productOfferTypeValue) + ".jpg" > 
208<#assign cardArtImageAltText = partnerName + " " + productOfferTypeName?capitalize> 
209 
210 
211<#assign hasBalanceTransferCalculator = balanceTransferCalculatorOfferTypes?seq_contains(productOfferTypeValue)> 
212<#assign hasCalculatorRewards = calculatorOfferTypes?seq_contains(productOfferTypeValue)> 
213<#assign useprcaValue = getUsePRCA(productOfferTypeValue)> 
214 
215<#assign APR="" AMF="" BAL=""> 
216<#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId)> 
217<#if scrapedData?? && scrapedData?has_content && (scrapedData?size > 0)> 
218         
219<#list scrapedData as sItem> 
220		<#if sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases") && sItem.scrapedValue?has_content> 
221			<#if !APR?has_content><#assign APR = sItem.scrapedValue></#if> 
222		<#elseif sItem.scrapedLabel?contains("Annual Membership Fee") && sItem.scrapedValue?has_content> 
223			<#if !AMF?has_content><#assign AMF = sItem.scrapedValue></#if> 
224		<#elseif sItem.scrapedLabel?contains("APR for Balance Transfers") && sItem.scrapedValue?has_content> 
225			<#if !BAL?has_content><#assign BAL = sItem.scrapedValue></#if> 
226		</#if> 
227		<#if APR?has_content && AMF?has_content && BAL?has_content> 
228			<#break> 
229		</#if> 
230	</#list> 
231</#if> 
232 
233	<#assign APRValue = APR!'' /> 
234	<#assign AMFValue = AMF!'' /> 
235	<#assign BALValue = BAL!'' /> 
236 
237	<#assign termsAndConditionsLink =  
238		'<a href="' + oadURL_TC + '?step=display&amp;offerId=' + offerId + '&amp;locationCode=' + lc_used +  
239		'" target="_blank" class="t_c_link">' + 
240		'See Terms &amp; Conditions' + 
241		'</a>' 
242	/> 
243	<#assign TCLinkValue = termsAndConditionsLink!'' /> 
244 
245<#assign primaryOfferCopyRaw = primaryOfferCopy.getData()!'' /> 
246<#assign updatedPrimaryOfferCopy = replacePlaceholders(primaryOfferCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
247<#assign employeePrimaryOfferCopyRaw = employeePrimaryOfferCopy.getData()!'' /> 
248<#assign updatedEmployeePrimaryOfferCopy = replacePlaceholders(employeePrimaryOfferCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
249	 
250<#assign benefits = []> 
251	<#if benefit.getSiblings()?has_content> 
252		<#list benefit.getSiblings() as benefit> 
253		<#assign primaryBenefitCopyRaw = benefit.primaryBenefitCopy.getData()!'' /> 
254        <#assign updatedPrimaryBenefitCopy = replacePlaceholders(primaryBenefitCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
255		<#assign employeeprimaryBenefitCopyRaw = benefit.employeePrimaryBenefitCopy.getData()!'' /> 
256        <#assign updatedEmployeePrimaryBenefitCopy = replacePlaceholders(employeeprimaryBenefitCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
257		 
258			<#assign benefitObject = { 
259				"svgIcon": benefit.primaryBenefitSVGIcon.getData(), 
260				"primaryBenefitCopy": updatedPrimaryBenefitCopy, 
261				"employeePrimaryBenefitCopy": updatedEmployeePrimaryBenefitCopy 
262			} /> 
263			<#assign benefits += [benefitObject] /> 
264	</#list> 
265</#if> 
266 
267<#assign additionalBenefits = []> 
268<#if additionalBenefit.getSiblings()?has_content> 
269	<#list additionalBenefit.getSiblings() as additionalBenefit> 
270		 
271		<#assign additionalBenefitCopyRaw = additionalBenefit.additionalBenefitCopy.getData()!'' /> 
272		<#assign updatedAdditionalBenefitCopy = replacePlaceholders(additionalBenefitCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) />		 
273		<#assign employeeAdditionalBenefitCopyRaw = additionalBenefit.employeeAdditionalBenefitCopy.getData()!'' /> 
274		<#assign updatedEmployeeAdditionalBenefitCopy = replacePlaceholders(employeeAdditionalBenefitCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
275		 
276				 
277		<#assign additionalBenefitObject = { 
278			"additionalBenefitSVGIcon": additionalBenefit.additionalBenefitSVGIcon.getData(), 
279			"additionalBenefitCopy": updatedAdditionalBenefitCopy, 
280			"employeeAdditionalBenefitCopy": updatedEmployeeAdditionalBenefitCopy 
281		} /> 
282		<#assign additionalBenefits += [additionalBenefitObject] /> 
283	</#list> 
284</#if> 
285<#assign renderApplyNowButtonCount = 0> 
286<#macro renderApplyNowButton> 
287	<#assign renderApplyNowButtonCount = renderApplyNowButtonCount +1> 
288	<#if useprcaValue == "1"> 
289		<form action="${prcaURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}&amp;applicationType=${applicationType}" method="post" class="BAAForm" id="BAAForm"> 
290			<label for="${uniqueID}appDataBAA-${offerId}-${renderApplyNowButtonCount}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
291			<textarea aria-hidden="true" rows="20" cols="100" name="applicationData" id="${uniqueID}appDataBAA-${offerId}-${renderApplyNowButtonCount}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
292			<a  
293				class="apply-now-link apply-now-button"  
294				href="${prcaURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}&amp;applicationType=${applicationType}" 
295				data-button-name="apply-now-link"  
296				data-product-name="${productOfferTypeName!''}"                 
297
298					${applyNowText} 
299			</a> 
300		</form> 
301	<#else> 
302		<form action="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}" method="post" class="BAAForm" id="BAAForm"> 
303			<label for="${uniqueID}appDataBAA-${offerId}-${renderApplyNowButtonCount}" style="position:absolute; clip:rect(0 0 0 0);">Application Data</label> 
304			<textarea aria-hidden="true" rows="20" cols="100" name="applicationData" id="${uniqueID}appDataBAA-${offerId}-${renderApplyNowButtonCount}" class="appDataBAA" style="display:none;" title="application data"></textarea> 
305			<a  
306				class="apply-now-link apply-now-button"  
307				href="${oadURL}?locationCode=${lc_used}&amp;offerId=${offerId}&amp;preparerType=customer&amp;mktChl=${marketingChannel}" 
308				data-button-name="apply-now-link"  
309				data-product-name="${productOfferTypeName!''}"                 
310
311					${applyNowText}    
312			</a> 
313		</form> 
314	</#if>		 
315</#macro> 
316 
317<div id="product-card-id" class="SAA-Product-Detail-2024"> 
318	<div class="tab-card"> 
319			<div class="tab-card__left"> 
320				<h1 class="super-head"> 
321					${productOfferTypeName} 
322					<#if (cardNameFootnotes.getData())??> 
323						<sup class="super-head--super-script">${cardNameFootnotes.getData()}</sup> 
324					</#if> 
325				</h1> 
326				<img src="${cardArtImage}" alt="${cardArtImageAltText!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'" /> 
327				<@renderApplyNowButton /> 
328				<#if (hasBalanceTransferCalculator)> 
329					<a href="javascript:void(0);" class="transfer-modal-link" data-micromodal-trigger="modal-2">See how much you could save with a balance transfer</a> 
330				</#if> 
331				<#if (hasCalculatorRewards)> 
332					 <a class="reward-calculator-link" target="_blank" href="${rewardsCalculatorURL}?ecdma-lc=${lc}">Calculate Rewards</a> 
333				</#if> 
334			</div> 
335 
336			<div class="tab-card__right">			 
337				<h1 class="super-head"> 
338					${productOfferTypeName} 
339					<#if (cardNameFootnotes.getData())??> 
340						<sup class="super-head--super-script">${cardNameFootnotes.getData()}</sup> 
341					</#if> 
342				</h1> 
343				<#if isEmployee> 
344					<div class="offer-copy"> 
345						<#if updatedEmployeePrimaryOfferCopy?has_content> 
346							${updatedEmployeePrimaryOfferCopy} 
347						<#else> 
348							${updatedPrimaryOfferCopy!''} 
349						</#if> 
350					</div> 
351				<#else> 
352					<div class="offer-copy">${updatedPrimaryOfferCopy!''}</div> 
353				</#if> 
354				<div class="benefits">  
355					<#list benefits as benefit> 
356						<div class="benefits__item"> 
357							<#if benefit.svgIcon?has_content> 
358								<div class="svg-container"> 
359									<img loading="lazy" src="${benefit.svgIcon}" alt="" class="<#if benefit.svgIcon?contains('svg')>dynamic-svg</#if>" /> 
360								</div> 
361							</#if> 
362							<#if isEmployee> 
363								<div> 
364									<#if benefit.employeePrimaryBenefitCopy?has_content> 
365										${benefit.employeePrimaryBenefitCopy} 
366									<#else> 
367										${benefit.primaryBenefitCopy!''} 
368									</#if> 
369								</div> 
370							<#else> 
371								<div> 
372									${benefit.primaryBenefitCopy!''} 
373								</div> 
374							</#if> 
375						</div> 
376					</#list> 
377				</div> 
378			</div> 
379		    
380		</div> 
381		 
382		<div class="additional-benefit-container"> 
383			<div class="additional-benefit"> 
384				<h2 class="additional-benefit__header">Additional Benefits </h2> 
385				<div class="additional-benefit__layout"> 
386					<#list additionalBenefits as additionalBenefit> 
387						<div class="additional-benefit__item"> 
388							<#if additionalBenefit.additionalBenefitSVGIcon?has_content> 
389								<div class="svg-container"> 
390									<img loading="lazy" src="${additionalBenefit.additionalBenefitSVGIcon}" alt="" class="dynamic-svg" /> 
391								</div> 
392							</#if> 
393							<#if isEmployee> 
394								<div> 
395									<#if additionalBenefit.employeeAdditionalBenefitCopy?has_content> 
396										${additionalBenefit.employeeAdditionalBenefitCopy} 
397									<#else> 
398										${additionalBenefit.additionalBenefitCopy!''} 
399									</#if> 
400								</div> 
401							<#else> 
402								<div>${additionalBenefit.additionalBenefitCopy!''}</div> 
403							</#if> 
404						</div> 
405					</#list> 
406				</div> 
407				<div class="additional-benefit__button"> 
408					<@renderApplyNowButton /> 
409				</div>	 
410			</div> 
411		</div>			 
412</div> 
413	 
414 
415 
416<!-- https://micromodal.vercel.app/ --> 
417<script src="https://unpkg.com/micromodal/dist/micromodal.min.js" async></script> 
418<script async>	  
419	function submitForm(event) { 
420		event.preventDefault();  
421		var offerId = event.target.getAttribute("offerId");			 
422		console.log("offerId::::::::::::::"+offerId); 
423        var lc = document.getElementById('locationCode').value; 
424 
425        var url = "${prcaURL}?locationCode=" + lc + "&offerId=" + offerId + "&preparerType=customer"; 
426		 
427        document.getElementById('applyForm').action = url;		 
428		postCreditcardLearnMore(url); 
429 
430
431	 
432	function postCreditcardLearnMore(path, method='post') { 
433		const form = document.createElement('form'); 
434		form.method = method; 
435		//form.target = '_blank'; 
436		form.action = path; 
437		document.body.appendChild(form); 
438		form.submit(); 
439	}	 
440	AUI().ready(function() { 
441		MicroModal.init(); 
442 
443		setTimeout(() => { 
444			const svgImages = document.querySelectorAll(".SAA-Product-Detail-2024 .dynamic-svg"); 
445			svgImages.forEach(function (image) { 
446				const svgUrl = image.src;  
447				fetch(svgUrl) 
448					.then(response => response.text()) 
449					.then(svgContent => { 
450						const parser = new DOMParser(); 
451						const svgElement = parser.parseFromString(svgContent, "image/svg+xml").querySelector("svg"); 
452						if (svgElement) { 
453							image.replaceWith(svgElement); // Replace <img> with the <svg> 
454
455					}) 
456					.catch(err => console.error("Error loading SVG:", err)); 
457				 
458			}); 
459		}, 1); 
460	 }); 
461</script> 
462 
463<script> 
464	 
465	document.addEventListener('DOMContentLoaded', function() {                    
466		var locationCode = "${rLC!lc}"; 
467		var lc = '${lc!0}'; 
468		 
469		var regex = /\d+/g; 
470		var bdNumber = "${bPhone!''}"; 
471		var phoneNum = bdNumber.match(regex); 
472		var areaCode = ""; 
473		var exchangeCode = ""; 
474		var num = ""; 
475		if(phoneNum != null) { 
476			phoneNum = phoneNum.join(""); 
477			areaCode = phoneNum.substring(0,3); 
478			exchangeCode = phoneNum.substring(3,6); 
479			num = phoneNum.substring(6,10); 
480
481		 
482		jQuery('.apply-now-link').on('click', function(e) { 
483			$(this).closest('.BAAForm').submit(); 
484			const bankerId = '${boeid}'; 
485			const employeeId = ""; 
486			let visitorId = bankerId; 
487			 
488			if('${isEmployee?string("yes", "no")}' == "yes") { 
489				visitorId = employeeId; 
490
491			const htmlElementName = e.target.nodeName; 
492			const isButton = (htmlElementName ==='BUTTON'); 
493			// gets href of clicked anchor tag 
494			let href = e.target.href; 
495 
496			// get action url of form submit button  
497			if(isButton) { 
498				href = document.getElementById('BAAForm').action; 
499
500 
501			const urlParams = new URLSearchParams(href);                    
502			let offerId = ""; 
503 
504			if(urlParams.has('offerid')) { 
505				offerId = urlParams.get('offerid'); 
506
507 
508			if(urlParams.has('offerId')) { 
509				offerId = urlParams.get('offerId'); 
510
511			 
512			window.dataLayer.push({ 
513				'event' : 'apply_payload', 
514				'location_code': locationCode, 
515				'banker_code': '${bCode}', 
516				'offer_id': offerId, 
517				'visitor_id': visitorId, 
518			}); 
519			return false; 
520		}); 
521		jQuery(".BAAForm").on("submit", function(e){ 
522			e.preventDefault();                         
523			var xmlData; 
524			 
525			if ('${isEmployee?string("yes", "no")}' == "yes") {  
526				xmlData = '<?xml version="1.0"?>'+ 
527					"<prefillData>"+  
528						"<versionNumber>1.0</versionNumber>"+  
529						"<applicationData>"+                                         
530							"<bankerInformation>"+  
531								"<employeeFullName>Employee Product</employeeFullName>"+ 
532								"<employeeId>EMPPROD</employeeId>"+ 
533								"<employeePhoneNumber></employeePhoneNumber>"+ 
534								"<locationCode>" + locationCode + "</locationCode>"+ 
535								"<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
536								"<originatingBranchId></originatingBranchId>"+ 
537								"<name>" + 
538									"<first>${bFName!'0'}</first>" + 
539									"<last>${bLName!'0'}</last>" + 
540								"</name>"+ 
541								"<phone>"+ 
542									"<areaCode>" + areaCode + "</areaCode>"+  
543									"<exchange>" + exchangeCode + "</exchange>"+ 
544									"<number>" + num + "</number>"+  
545								"</phone>"+  
546							"</bankerInformation>"+  
547							"<referral>" +  
548								"<divisionNumber></divisionNumber>" +       
549								"<partnerLocationID>" + locationCode + "</partnerLocationID>" +                          
550								"<referralId>EMPPROD</referralId>" + 
551							"</referral>" +  
552						"</applicationData>"+  
553					"</prefillData>";                             
554			} else { 
555				xmlData = '<?xml version="1.0"?>'+ 
556					"<prefillData>"+  
557						"<versionNumber>1.0</versionNumber>"+  
558						"<applicationData>"+  
559							"<bankerInformation>"+  
560								"<locationCode>" + locationCode + "</locationCode>"+ 
561								"<originatingBranchNumber>"+"${bName!'0'}"+"</originatingBranchNumber>"+ 
562								"<employeeID>${boeid!0}</employeeID>"+ 
563								"<name>" + 
564									"<first>${bFName!'0'}</first>" + 
565									"<last>${bLName!'0'}</last>" + 
566								"</name>"+ 
567								"<phone>"+ 
568									"<areaCode>"+areaCode+"</areaCode>"+  
569									"<exchange>"+exchangeCode+"</exchange>"+ 
570									"<number>"+num+"</number>"+  
571								"</phone>"+  
572							"</bankerInformation>"+  
573						"</applicationData>"+  
574					"</prefillData>" 
575
576			console.log("useprcaValue---->"+${useprcaValue}) 
577			if('${useprcaValue}' =='1'){ 
578			  if('${isEmployee?string("yes", "no")}' == "yes"){   						 
579				var employeeFullName = "${fName!'0'}" + ' ' + "${lName!'0'}"; 
580				var firstName = "${fName!'0'}".trim(); 
581				var lastName = "${lName!'0'}".trim(); 
582				var fullName = employeeFullName.trim();  
583					 
584				if (fullName.length <= 19) { 
585					employeeFullName = fullName;  
586				} else if (firstName.charAt(0) + ' ' + lastName.length <= 19) { 
587					employeeFullName = firstName.charAt(0) + ' ' + lastName;  
588				} else { 
589					employeeFullName = firstName.charAt(0) + ' ' + lastName.substring(0, 17); 
590				}							 
591				 var applicationJsonData = { 
592									  "prefillData": { 
593										"versionNumber": "1.0", 
594										"applicationData": { 
595										  "bankerInformation": { 
596											"locationCode": locationCode, 
597											"originatingBranchId": "${bName!'0'}", 
598											"employeeId": "EMPPROD", 
599											"employeeFullName": "Employee Product", 
600											"employeePhoneNumber": phoneNum 
601
602
603
604									}; 
605				}else{ 
606				var employeeFullName = "${fName!'0'}" + ' ' + "${lName!'0'}"; 
607				var firstName = "${fName!'0'}".trim(); 
608				var lastName = "${lName!'0'}".trim(); 
609				var fullName = employeeFullName.trim();  
610					 
611				if (fullName.length <= 19) { 
612					employeeFullName = fullName;  
613				} else if (firstName.charAt(0) + ' ' + lastName.length <= 19) { 
614					employeeFullName = firstName.charAt(0) + ' ' + lastName;  
615				} else { 
616					employeeFullName = firstName.charAt(0) + ' ' + lastName.substring(0, 17); 
617				}							 
618				 var applicationJsonData = { 
619									  "prefillData": { 
620										"versionNumber": "1.0", 
621										"applicationData": { 
622										  "bankerInformation": { 
623											"locationCode": locationCode, 
624											"originatingBranchId": "${bName!'0'}", 
625											"employeeId": "${boeid!0}", 
626											"employeeFullName": employeeFullName, 
627											"employeePhoneNumber": phoneNum 
628
629
630
631									}; 
632
633				var jsonData = JSON.stringify(applicationJsonData); 
634				$(this).children(".appDataBAA").val(jsonData); 
635			}else{ 
636			  $(this).children(".appDataBAA").val(xmlData); 
637
638			 
639			this.submit();                   
640		});                                                                                   
641	}); 
642	function resizeImg(img) { 
643		img.addEventListener("load", function() { 
644			var cardImgWidth = img.width; 
645			var cardImgHeight = img.height; 
646			if(cardImgWidth > cardImgHeight) { 
647				img.style.width = "285px"; 
648			} else { 
649				img.style.width = "150px"; 
650
651		}); 
652
653</script> 
654 
655<style> 
656	:root { 
657		--card-image-size: 280px; 
658		--left-padding: 30px; 
659		--left-width: calc(var(--card-image-size) + var(--left-padding)); 
660		--addition-benefits-gap-desktop: 30px; 
661
662	.SAA-Product-Detail-2024 .tab-card { 
663		align-items: flex-start; 
664		display: flex; 
665		flex-wrap: wrap; 
666		justify-content: center; 
667		max-width: 1336px; 
668  		margin: 0 20px; 
669
670	@media (min-width: 870px) { 
671		.SAA-Product-Detail-2024 .tab-card { 
672			flex-wrap: nowrap; 
673			padding-bottom: 45px; 
674
675
676	@media (min-width: 1376px) { 
677		.SAA-Product-Detail-2024 .tab-card { 
678   			margin: 0 auto; 
679
680
681	@media (min-width: 1336px) { 
682		.SAA-Product-Detail-2024 .tab-card { 
683			align-items: stretch; 
684
685
686 
687	.SAA-Product-Detail-2024 .tab-card__left { 
688		display: flex; 
689		align-items: center; 
690		flex-direction: column; 
691		flex-shrink: 0; 
692		width: 100%; 
693		padding: 40px 0 10px 0; 
694
695	@media (min-width: 870px) { 
696		.SAA-Product-Detail-2024 .tab-card__left { 
697			display: block; 
698			width: var(--left-width); 
699			padding-right: var(--left-padding); 
700
701		.SAA-Product-Detail-2024 .tab-card__left .super-head { 
702			display: none; 
703
704
705    .SAA-Product-Detail-2024 .tab-card__left img { 
706        height: auto; 
707		margin: auto; 
708		margin-bottom: 20px; 
709		display: block; 
710		max-height: var(--card-image-size); 
711		object-fit: contain; 
712		max-width: var(--card-image-size); 
713
714	#content .SAA-Product-Detail-2024 .BAAForm { 
715		width: 100%; 
716
717	#content .SAA-Product-Detail-2024 .apply-now-link { 
718		width: 168px; 
719		padding: 10px 30px; 
720		margin-right: auto; 
721		margin-left: auto; 
722		background-color: var(--ecdma-btn-color); 
723		color: #fff; 
724		text-transform: capitalize; 
725		text-align: center; 
726		text-decoration: none; 
727
728	#content .SAA-Product-Detail-2024 .apply-now-link:hover { 
729		background-color: var(--ecdma-hover-color); 
730
731	.SAA-Product-Detail-2024 .apply-now-link, 
732	.SAA-Product-Detail-2024 .reward-calculator-link, 
733	.SAA-Product-Detail-2024 .transfer-modal-link { 
734		display: block; 
735		text-align: center; 
736		margin-bottom: 10px; 
737
738 
739	.SAA-Product-Detail-2024 .tab-card__right { 
740		flex-grow: 1; 
741		padding: 0 0 40px 0; 
742
743	@media (min-width: 870px) { 
744		.SAA-Product-Detail-2024 .tab-card__right { 
745			padding: 30px 0 30px 0; 
746
747
748	.SAA-Product-Detail-2024 .tab-card__right .super-head { 
749		display: none; 
750
751	@media (min-width: 870px) { 
752		.SAA-Product-Detail-2024 .tab-card__right .super-head { 
753			display: block; 
754
755
756	#content .SAA-Product-Detail-2024 .super-head { 
757		color: #000; 
758		margin-bottom: 18px; 
759
760	#content .SAA-Product-Detail-2024 .super-head--super-script { 
761		font-size: 10px; 
762    	line-height: 13px; 
763
764	#content .SAA-Product-Detail-2024 .tab-card__right .offer-copy p { 
765		margin-bottom: 10px; 
766
767	.SAA-Product-Detail-2024 .tab-card__right .offer-copy { 
768		color: #000; 
769		margin-bottom: 20px; 
770
771	#content .SAA-Product-Detail-2024 .tab-card__right .offer-copy h1, 
772	#content .SAA-Product-Detail-2024 .tab-card__right .offer-copy h2, 
773	#content .SAA-Product-Detail-2024 .tab-card__right .offer-copy h3, 
774	#content .SAA-Product-Detail-2024 .tab-card__right .offer-copy h4, 
775	#content .SAA-Product-Detail-2024 .tab-card__right .offer-copy h5, 
776	#content .SAA-Product-Detail-2024 .tab-card__right .offer-copy h6 { 
777		color: var(--ecdma-text-color); 
778		font-size: 25px; 
779		font-style: normal; 
780		font-weight: 400; 
781		line-height: 1.3; 
782		margin-bottom: 8px; 
783
784	.SAA-Product-Detail-2024 .benefits { 
785        display: flex; 
786		flex-wrap: wrap; 
787		gap: 20px; 
788
789    .SAA-Product-Detail-2024 .benefits__item { 
790		display: flex; 
791		flex-wrap: none; 
792		gap: 10px; 
793		flex: 1; 
794		flex-basis: 100%; 
795
796	@media (min-width: 870px) { 
797		.SAA-Product-Detail-2024 .benefits__item { 
798			flex-basis: calc(50% - 20px); 
799
800
801	.SAA-Product-Detail-2024 .benefits__item .benefitfootnote { 
802		font-size: 85%; 
803
804	#content .SAA-Product-Detail-2024 .tab-card__right .offer-copy h2 sup, 
805	#content .SAA-Product-Detail-2024 .benefits__item h3 sup { 
806		font-size: 75%; 
807		font-weight: normal; 
808
809 
810    .SAA-Product-Detail-2024 .benefits__item img { 
811        width: 20px; 
812        height: 20px; 
813        margin-right: 5px; 
814
815	#content .SAA-Product-Detail-2024 .benefits__item h1, 
816	#content .SAA-Product-Detail-2024 .benefits__item h2, 
817	#content .SAA-Product-Detail-2024 .benefits__item h3, 
818	#content .SAA-Product-Detail-2024 .benefits__item h4, 
819	#content .SAA-Product-Detail-2024 .benefits__item h5, 
820	#content .SAA-Product-Detail-2024 .benefits__item h6 { 
821		color: var(--ecdma-text-color); 
822		font-size: 20px; 
823		font-style: normal; 
824		font-weight: 700; 
825		line-height: 1.3; 
826		margin-bottom: 8px; 
827
828	.SAA-Product-Detail-2024 .svg-container, 
829	.SAA-Product-Detail-2024 .benefits__item h1, 
830	.SAA-Product-Detail-2024 .benefits__item h2, 
831	.SAA-Product-Detail-2024 .benefits__item h3, 
832	.SAA-Product-Detail-2024 .benefits__item h4, 
833	.SAA-Product-Detail-2024 .benefits__item h5, 
834	.SAA-Product-Detail-2024 .benefits__item h6 { 
835		display: inline-block; 
836
837	.SAA-Product-Detail-2024 .svg-container svg, 
838	.SAA-Product-Detail-2024 .svg-container svg rect, 
839	.SAA-Product-Detail-2024 .svg-container svg circle, 
840	.SAA-Product-Detail-2024 .svg-container svg ellipse, 
841	.SAA-Product-Detail-2024 .svg-container svg line, 
842	.SAA-Product-Detail-2024 .svg-container svg polygon, 
843	.SAA-Product-Detail-2024 .svg-container svg polyline, 
844	.SAA-Product-Detail-2024 .svg-container svg path, 
845	.SAA-Product-Detail-2024 .svg-container svg text, 
846	.SAA-Product-Detail-2024 .svg-container svg tspan, 
847	.SAA-Product-Detail-2024 .svg-container svg textPath 
848	.SAA-Product-Detail-2024 .svg-container svg g, 
849	.SAA-Product-Detail-2024 .svg-container svg use { 
850        fill: var(--ecdma-bg-color) !important; 
851		stroke: var(--ecdma-bg-color) !important; 
852
853	.SAA-Product-Detail-2024 .svg-container svg, 
854	.SAA-Product-Detail-2024 .svg-container img { 
855		margin: 0; 
856		max-width: 30px; 
857		height: 30px; 
858
859	.additional-benefit-container { 
860		background-color: #F7F7F7; 
861		padding: 30px 0; 
862		margin-bottom: 30px; 
863
864	.SAA-Product-Detail-2024 .additional-benefit { 
865		max-width: 1336px; 
866  		margin: 0 20px; 
867
868	@media (min-width: 1376px) { 
869		.SAA-Product-Detail-2024 .additional-benefit { 
870    		margin: 0 auto; 
871
872
873	.SAA-Product-Detail-2024 .additional-benefit__layout { 
874		display: flex; 
875		flex-wrap: wrap; 
876		margin: 20px 0; 
877		gap: 20px; 
878
879	@media (min-width: 870px) { 
880		.SAA-Product-Detail-2024 .additional-benefit__layout { 
881			margin: 40px 0; 
882			gap: var(--addition-benefits-gap-desktop); 
883
884
885	#content .SAA-Product-Detail-2024 .additional-benefit__header { 
886		color: #000; 
887		text-align: left; 
888		font-size: 25px; 
889		font-weight: 400; 
890		line-height: 1.4; 
891
892	@media (min-width: 870px) { 
893		#content .SAA-Product-Detail-2024 .additional-benefit__header { 
894			text-align: center; 
895
896
897	 .SAA-Product-Detail-2024 .additional-benefit__item { 
898		display: flex; 
899		flex-wrap: nowrap; 
900		gap: 10px; 
901		flex: 1; 
902		flex-basis: 100%; 
903
904	@media (min-width: 870px) { 
905		.SAA-Product-Detail-2024 .additional-benefit__item { 
906			flex-basis: calc(25% - var(--addition-benefits-gap-desktop)); 
907
908
909	#content .SAA-Product-Detail-2024 .additional-benefit__item h1, 
910	#content .SAA-Product-Detail-2024 .additional-benefit__item h2, 
911	#content .SAA-Product-Detail-2024 .additional-benefit__item h3, 
912	#content .SAA-Product-Detail-2024 .additional-benefit__item h4, 
913	#content .SAA-Product-Detail-2024 .additional-benefit__item h5, 
914	#content .SAA-Product-Detail-2024 .additional-benefit__item h6 { 
915		color: var(--ecdma-text-color); 
916		font-size: 20px; 
917		font-style: normal; 
918		font-weight: 700; 
919		line-height: 1.4; 
920		margin-bottom: 10px; 
921
922	.SAA-Product-Detail-2024 .additional-benefit__button .apply-now-link { 
923		margin: auto; 
924
925	@media (min-width: 870px) { 
926		.SAA-Product-Detail-2024 .additional-benefit__button .apply-now-link { 
927			max-width: var(--card-image-size); 
928
929
930</style> 
Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> url404  [in template "10154#10192#18386842" at line 37, column 30]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${url404}  [in template "10154#10192#18386842" at line 37, column 28]
----
1<#assign url = themeDisplay.getURLCurrent() > 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
3<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
4 
5<#if qstringmap["bankercode"]?has_content> 
6    <#assign bankercode = qstringmap["bankercode"]?first> 
7    <#assign bankercode = htmlUtil.escape(bankercode)> 
8    <#assign bankercode = htmlUtil.escapeJS(bankercode)> 
9    <#assign bankercode = htmlUtil.escapeURL(bankercode)> 
10 
11    <#assign fiData= utilServ.makeCall('crcDDCBankerAssistedAppSql','0&'+bankercode)> 
12    <#if fiData?first?has_content> 
13        <#assign fi = fiData?first> 
14        <#if ((fi.projectId == "12") || (fi.projectId == "13") || (fi.projectId == "14"))> 
15            <#assign subbu_special = fi.offerId> 
16        </#if> 
17    </#if>  
18 
19    <#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetailSql','0&'+bankercode)> 
20    <#list bData as b>         
21      <#assign rLC = b.reallocationcode > 
22      <#assign lc = b.locationcode > 
23      <#assign mappedLC = b.mappedLocationCode > 
24    </#list>    
25 
26    <#assign isEmployee = false> 
27 
28    <#if fiData?first?has_content> 
29        <#assign fi = fiData?first> 
30        <#if fi.projectType == "emp"> 
31            <#assign isEmployee = true> 
32        </#if> 
33    </#if>  
34<#else> 
35    <script> 
36        console.log("MainProductBcode missing"); 
37        //location.href = '${url404}'; 
38    </script> 
39</#if> 
40 
41<#if bankercode?starts_with("amp") && (url?contains("11t1m"))> 
42    <#assign ameriprise = true> 
43<#else> 
44    <#assign ameriprise = false> 
45</#if> 
46 
47<#if mappedLC?has_content && !ameriprise> 
48    <#assign lc = mappedLC > 
49</#if> 
50 
51 
52<#if lc?has_content> 
53    <#assign prefix = "00000" > 
54    <#assign lcWithPrefix = prefix + lc > 
55    <#assign withPrefixLength = lcWithPrefix?length > 
56    <#assign startHere = withPrefixLength - 5> 
57    <#assign lc = lcWithPrefix?substring(startHere)> 
58    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
59    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
60 
61    <#assign clientProfile = clientProfileList?first>  
62    <#assign partnerName=clientProfile.getMarketingNameLong()> 
63    <#assign pbu = clientProfile.getPbu()> 
64    <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
65     
66	<#assign fultonBankpbu = "0727491"> 
67	<#if pbu == fultonBankpbu> 
68		<style> 
69			#hideFultonInfo { 
70				display: none; 
71
72		</style> 
73	</#if> 
74	 
75	<#assign optoutData = utilServ.makeCall('crc_DDCSAAOptOut',pbu+'&'+subbu)> 
76    <#if (optoutData?size == 0)> 
77            <#if (subbu_special?has_content)> 
78                <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu_special)>  
79                <script> 
80                    console.log('new subbu', '${subbu_special!''}'); 
81                </script>  
82            <#else> 
83                <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)>  
84            </#if> 
85            <#if (fiCardsData?size > 0)> 
86                <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fiCardsData[0].offerType + '&' + lc)> 
87                <#assign cardProviderAbbreviated = ''> 
88                <#if (cardProvider?size > 0)> 
89                    <#-- This will be V for visa or M for mastercard. --> 
90                    <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
91                <#else> 
92                    <script> 
93                        console.log('No V or M data') 
94                    </script> 
95                </#if> 
96                <#list fiCardsData as fib> 
97                    <#switch fib.offerType> 
98                        <#case "101"> 
99                            <#assign productURL = "consumer-edr2112"> 
100                            <#assign productName = "Everyday Rewards+"> 
101                            <#break> 
102                        <#case "104"> 
103                            <#assign productURL = "max-cash"> 
104                            <#assign productName = "Max Cash Preferred Card">       
105                            <#break> 
106                        <#case "108"> 
107                            <#assign productURL="consumer-platinum2103"> 
108                            <#assign productName="Platinum Card"> 
109                            <#break> 
110                        <#case "109"> 
111                            <#assign productURL="consumer-platinum2103"> 
112                            <#assign productName="Platinum Card"> 
113                            <#break> 
114                        <#case "115"> 
115                            <#assign productURL = "secured"> 
116                            <#assign productName = "Secured Card" > 
117                            <#break> 
118                        <#case "138"> 
119                            <#assign productURL = "travel-rewards-plus"> 
120                            <#assign productName = "Travel Rewards+" > 
121                            <#break> 
122                        <#case "141"> 
123                            <#assign productURL = "college-real-rewards"> 
124                            <#assign productName = "College Real Rewards" >     
125                            <#break> 
126                        <#case "147"> 
127                            <#assign productURL = "max-cash-secured"> 
128                            <#assign productName = "Max Cash Secured Card" >     
129                            <#break> 
130                        <#case "154"> 
131                            <#assign productURL = "reserve-rewards-plus"> 
132                            <#assign productName = "Reserve Rewards+" > 
133                            <#break> 
134                        <#case "121"> 
135                            <#assign productURL = "business-platinum2103"> 
136                            <#assign productName = "Business Card" > 
137                            <#break> 
138                        <#case "128"> 
139                            <#assign productURL = "business-cash-preferred"> 
140                            <#assign productName = "Business Cash Preferred" > 
141                            <#break> 
142                        <#case "143"> 
143                            <#assign productURL = "business-real-rewards"> 
144                            <#assign productName = "Business Real Rewards Card" > 
145                            <#break> 
146                        <#case "144"> 
147                            <#assign productURL = "smart-business-rewards"> 
148                            <#assign productName = "Smart Business Rewards Card" >     
149                            <#break> 
150                        <#default>                                                         
151                    </#switch> 
152                    <#if productURL?has_content && url?matches(".*/${productURL}\\?.*")> 
153                            <#list product.getSiblings() as card> 
154                                <#if (card.offerType.getData() == fib.offerType)> 
155                                    <div class="page-disclaimer" title="${partnerName!''} - Disclaimer"> 
156                                        <div class="page-disclaimer__content">                                              
157                                            <#if pbuList.getData()?has_content && pbuList.getData()?contains(pbu) && card.disclaimerAssociatedBank.getData()?has_content> 
158                                                <#if isEmployee && card.employeeDisclaimerAssociatedBank?has_content> 
159                                                    ${card.employeeDisclaimerAssociatedBank.getData()} 
160                                                <#else> 
161                                                    ${card.disclaimerAssociatedBank.getData()} 
162                                                </#if> 
163                                            <#else> 
164                                                <#if isEmployee && card.employeeDisclaimerVisa?has_content && cardProviderAbbreviated?contains('V')> 
165                                                    ${card.employeeDisclaimerVisa.getData()} 
166                                                <#elseif isEmployee && card.employeeDisclaimerMasterCard?has_content && cardProviderAbbreviated?contains('M')> 
167                                                    ${card.employeeDisclaimerMasterCard.getData()} 
168                                                <#elseif (card.disclaimerVisa?has_content && cardProviderAbbreviated?contains('V'))> 
169                                                    ${card.disclaimerVisa.getData()} 
170                                                <#elseif (card.disclaimerMasterCard?has_content && cardProviderAbbreviated?contains('M')) > 
171                                                    ${card.disclaimerMasterCard.getData()} 
172                                                </#if> 
173                                            </#if>                                          
174                                        </div> 
175                                    </div> 
176                                    <#break> 
177                                </#if> 
178                            </#list> 
179                        <#break> 
180                    </#if> 
181                </#list> 
182            <#else> 
183                <script> 
184                    console.log("Empty card data"); 
185                </script> 
186            </#if> 
187    <#else> 
188        <script> 
189            console.log("FI opt out"); 
190        </script> 
191    </#if> 
192 
193<#else> 
194    <script> 
195        console.log("No lc for disclaimer"); 
196    </script> 
197</#if> 
Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> qstringmap["bankercode"]  [in template "10154#10192#18386837" at line 14, column 17]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign bCode = qstringmap["bankercod...  [in template "10154#10192#18386837" at line 14, column 1]
----
1<#-- 
2Web content templates are used to lay out the fields defined in a web 
3content structure. 
4 
5Please use the left panel to quickly add commonly used variables. 
6Autocomplete is also available and can be invoked by typing "${". 
7--><#assign aDateTime = .now> 
8<#assign currentYear = aDateTime?string.yyyy> 
9<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
10<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
11<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
12<#assign url404 = '/error/404.html'> 
13 
14<#assign bCode= qstringmap["bankercode"]?first> 
15<#assign bCode = htmlUtil.escape(bCode)> 
16<#assign bCode = htmlUtil.escapeJS(bCode)> 
17 
18<#assign bData = utilServ.makeCall('crcDDCBankerAssistedAppDetail','0&'+bCode)> 
19<#list bData as b>      
20    <#assign lc = b.locationcode > 
21    <#assign rLC = b.reallocationcode > 
22    <#assign mappedLC = b.mappedLocationCode > 
23</#list>  
24 
25<#if bCode?starts_with("amp") && (url?contains("11t1m"))> 
26    <#assign ameriprise = true> 
27<#else> 
28    <#assign ameriprise = false> 
29</#if> 
30<#if mappedLC?has_content && !ameriprise> 
31    <#assign lc = mappedLC > 
32</#if> 
33 
34<#if lc?has_content> 
35 
36    <#assign prefix = "00000" > 
37    <#assign lcWithPrefix = prefix + lc > 
38    <#assign withPrefixLength = lcWithPrefix?length > 
39    <#assign startHere = withPrefixLength - 5> 
40    <#assign lc = lcWithPrefix?substring(startHere)> 
41<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
42    <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
43 
44    <#assign clientProfile = clientProfileList?first> 
45    <#assign pbu = clientProfile.getPbu()> 
46    <#assign subbu = clientProfile.getSUBBRANDBUNBR()>   
47    <#assign partnerName=clientProfile.getMarketingNameLong()> 
48    <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
49    <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
50    <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
51    <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*") && !partnerUrl?matches(r"(?i)^https?\:&#x2F;&#x2F;.*")> 
52        <#-- add protocal if missing  --> 
53        <#assign partnerUrl = 'https://' + partnerUrl> 
54    </#if> 
55    <footer class="page-footer"> 
56        <div class="page-footer__content"> 
57            ${footerContent.getData()} 
58        </div> 
59    </footer> 
60 
61    <!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
62        <script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script> 
63        <style> 
64            #opt-out-button, 
65            .modal__btn.learn-more { 
66                background: #0C2074; 
67                border: 1px solid #0C2074; 
68                color: white; 
69                text-transform: uppercase; 
70                text-decoration: none; 
71                font-size: 16px; 
72                padding: 0.5rem 2rem; 
73                display: inline-block; 
74                border-radius: 0; 
75
76            #opt-out-button:hover, 
77            .modal__btn.learn-more:hover { 
78                color: white; 
79                border-color: #2C76AF !important; 
80                background-color: #2C76AF !important; 
81
82            .modal__btn.learn-more { 
83                background: white; 
84                border: 1px solid #0C2074; 
85                color: #0C2074; 
86
87            #opt-out-button[disabled="true"] { 
88                background-color: rgba(0,0,0,.15); 
89                color: rgba(0,0,0,.45); 
90                border-color: rgba(0,0,0,.25); 
91
92            #opt-out-button:hover[disabled="true"] { 
93                background-color: rgba(0,0,0,.15) !important; 
94                color: rgba(0,0,0,.45) !important; 
95                border-color: rgba(0,0,0,.25) !important; 
96
97            #opt-out-button:focus { 
98                outline-style: solid; 
99                outline-color: white; 
100                outline-offset: -3px; 
101                outline-width: 1px; 
102
103            .opt-out-link svg { 
104                width: 30px; 
105                height: 14px; 
106                width: auto; 
107                vertical-align: middle; 
108
109            .modal__overlay { 
110                position: fixed; 
111                top: 0; 
112                left: 0; 
113                right: 0; 
114                bottom: 0; 
115                background: rgba(0,0,0,0.6); 
116                display: flex; 
117                justify-content: center; 
118                align-items: center; 
119
120 
121            .modal__container { 
122                background-color: #fff; 
123                padding: 30px; 
124                max-width: 500px; 
125                max-height: 100vh; 
126                border-radius: 4px; 
127                overflow-y: auto; 
128                box-sizing: border-box; 
129
130 
131            .modal__header { 
132                display: flex; 
133                justify-content: space-between; 
134                align-items: center; 
135
136 
137            .modal__title { 
138                margin-top: 0; 
139                margin-bottom: 0; 
140                font-weight: 600; 
141                font-size: 20px; 
142                line-height: 1.25; 
143                color: #00449e; 
144                box-sizing: border-box; 
145
146 
147            .modal__close { 
148                background: transparent; 
149                border: 1px solid white; 
150                padding: 4px 8px; 
151
152            .modal__close:hover { 
153                border: 1px solid black; 
154
155 
156            .modal__header .modal__close:before { content: "\2715"; } 
157 
158            .modal__content { 
159                margin-top: 2rem; 
160                margin-bottom: 2rem; 
161                line-height: 1.5; 
162
163 
164            @keyframes mmfadeIn { 
165                from { opacity: 0; } 
166                to { opacity: 1; } 
167
168 
169            @keyframes mmfadeOut { 
170                from { opacity: 1; } 
171                to { opacity: 0; } 
172
173 
174            @keyframes mmslideIn { 
175                from { transform: translateY(15%); } 
176                to { transform: translateY(0); } 
177
178 
179            @keyframes mmslideOut { 
180                from { transform: translateY(0); } 
181                to { transform: translateY(-10%); } 
182
183 
184            .micromodal-slide { 
185                display: none; 
186
187 
188            .micromodal-slide.is-open { 
189                display: block; 
190
191 
192            .micromodal-slide[aria-hidden="false"] .modal__overlay { 
193                animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
194
195 
196            .micromodal-slide[aria-hidden="false"] .modal__container { 
197                animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
198
199 
200            .micromodal-slide[aria-hidden="true"] .modal__overlay { 
201                animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
202
203 
204            .micromodal-slide[aria-hidden="true"] .modal__container { 
205                animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
206
207 
208            .micromodal-slide .modal__container, 
209            .micromodal-slide .modal__overlay { 
210                will-change: transform; 
211
212        </style> 
213 
214        <div class="modal micromodal-slide" id="modal-1" aria-hidden="true"> 
215        <div class="modal__overlay" tabindex="-1" data-micromodal-close> 
216            <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title"> 
217            <header class="modal__header"> 
218                <h2 class="modal__title" id="modal-1-title"> 
219                Your California privacy choices 
220                </h2> 
221                <button class="modal__close" aria-label="Close modal" data-micromodal-close></button> 
222            </header> 
223            <div class="modal__content" id="modal-1-content"> 
224                <div id="message-no-cookie"> 
225                    <p> 
226                    We use technologies, such as cookies, that gather information on our website. That information is used for a variety of purposes, such as to understand how visitors interact with our websites, or to serve advertisements on our websites or on other websites. The use of technologies, such as cookies, constitutes a ‘share’ or ‘sale’ of personal information under the California Privacy Rights Act. You can stop the use of certain third-party tracking technologies that are not considered our service providers by clicking on “Opt-Out” below or by broadcasting the global privacy control signal.</p> 
227                     
228        <p>&nbsp;</p> 
229 
230        <p>Note that due to technological limitations, if you visit our website from a different computer or device, or clear cookies on your browser that store your preferences, you will need to return to this screen to opt-out and/or rebroadcast the signal. You can find a description of the types of tracking technologies, and your options with respect to those technologies, by clicking “Learn more” below.</p> 
231            </div> 
232            <div id="message-with-cookie"> 
233                <p>You have successfully opted-out.</p> 
234            </div> 
235            </div> 
236            <div class="modal__footer"> 
237                <a href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank" class="modal__btn learn-more" aria-label="Learn more">Learn More</a> 
238                <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button> 
239            </div> 
240            </div> 
241        </div> 
242        </div> 
243    <!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
244    <script> 
245        const fdicNode = document.querySelector('.page-footer .fdic');                          
246    </script> 
247    <script> 
248        const copyrightNode = document.querySelector('.page-footer .copyright'); 
249        if (copyrightNode) { 
250            copyrightNode.innerHTML = '© Elan Financial Services ' + ${currentYear}; 
251
252 
253    </script> 
254    <#if url?contains("11t1m")> 
255        <script>        
256            copyrightNode.classList.add("ecdma-footer-client-name-copyright"); 
257            fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
258        </script> 
259    <#else> 
260        <script> 
261            copyrightNode.classList.add("ecdma-footer-client-name-copyright"); 
262            fdicNode.innerHTML='<a class="text-color-white" href="https://login.elancreditcard.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
263            var newNode = document.createElement("div");  
264            newNode.classList.add("member-agreement"); 
265            newNode.innerHTML='<a class="text-color-white" href="https://onboarding.elancreditcard.com/usl/generic/credit-card/application/card-member-agreements?locationCode=${lc!0}" target="_blank">Cardmember Agreements</a>'; 
266            var parent = fdicNode.parentNode; 
267            parent.insertBefore(newNode, fdicNode); 
268        </script> 
269    </#if> 
270 
271    <#if partnerUrl?has_content> 
272        <script> 
273            const homeLink = document.querySelector('.copyright .homelink'); 
274            if(homeLink) { 
275                homeLink.innerHTML="<a class='text-color-white' href='${partnerUrl!''}' title='${partnerName!''}' target='_blank'>Home</a>"; 
276
277        </script> 
278    </#if> 
279 
280    <script> 
281        /* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */ 
282        fdicNode.insertAdjacentHTML('afterend', '<div class="opt-out-container"><a href="javascript:void(0);" class="opt-out-link text-color-white" data-micromodal-trigger="modal-1">Your California privacy choices <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve"><path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#fff"/><path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#06f"/><path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" fill="#fff"/><path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" fill="#06f"/></svg></a></div>'); 
283        /* END CALIFORNIA OPT-OUT MODAL TRIGGER */ 
284    </script> 
285    <!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC --> 
286 
287    <script> 
288        window.getCookieDomain = function() { 
289            var hostname = window.location.hostname.split("."); 
290            return hostname && hostname.slice(hostname.length - 2).join("."); 
291
292        window.setToOptOut = function() { 
293            if (window.getCookie('privacy_optout')) { 
294                    document.getElementById('message-no-cookie').style.display = 'none'; 
295                    document.getElementById('message-with-cookie').style.display = 'block'; 
296                    document.getElementById('opt-out-button').setAttribute('disabled', true) 
297                } else { 
298                    document.getElementById('message-no-cookie').style.display = 'block'; 
299                    document.getElementById('message-with-cookie').style.display = 'none'; 
300
301
302        window.getCookie = function(name) { 
303            var value = '; ' + document.cookie; 
304            var parts = value.split('; ' + name + '='); 
305            if (parts.length === 2) return parts.pop().split(';').shift(); 
306
307        window.californiaOptOut = function() { 
308            if (!window.getCookie('privacy_optout')) { 
309                document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;'; 
310                try { 
311                if (window.CustomEvent) { 
312                    window.dispatchEvent(new CustomEvent('privacy_optout')); 
313                } else { 
314                    var privacyOptoutEvent = document.createEvent('Event'); 
315                    privacyOptoutEvent.initEvent('privacy_optout', true, true); 
316                    window.dispatchEvent(privacyOptoutEvent); 
317
318                window.setToOptOut(); 
319                } catch (err) { 
320                console.error(err); 
321
322
323
324        MicroModal.init({ 
325            onShow: window.setToOptOut 
326        }); 
327        AUI().ready(function() { 
328            // user browser setting for Global Privacy Control to opt out of sharing information with third parties 
329            const isBrowserGpcOptOut = navigator.globalPrivacyControl; 
330            if(isBrowserGpcOptOut === true) { 
331            window.californiaOptOut(); 
332
333        }); 
334    </script> 
335    <!-- END CALIFORNIA OPT-OUT MODAL LOGIC --> 
336 
337</#if>