حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> webContentData.titleMap.ar_SA  [in template "27081859082561#20119#37092" at line 113, column 155]

----
Tip: It's the step after the last dot 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: ${webContentData.titleMap.ar_SA}  [in template "27081859082561#20119#37092" at line 113, column 153]
----
1<article class=""> 
2	<section class="header-gradient-bg pb-4 step-by-step-container"> 
3		<div class="breadcrumb-container container-fluid container-fluid-max-xl mt-4 pt-2 mb-4 pb-2 container-padding"> 
4			<@liferay_portlet["runtime"] 
5				instanceId="page_breadcrumb" 
6				portletName="com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet" 
7			/> 
8		</div> 
9		<div class="container-fluid container-fluid-max-xl container-padding"> 
10			<span class="badge font-size-sm text-white rounded-lg bg-dark rounded-pill font-weight-normal">${languageUtil.get(locale, "step-by-step")}</span> 
11			<#if (title.getData())??> 
12				<h1 class="h2">${title.getData()}</h1> 
13			</#if> 
14			<#if (description.getData())??> 
15				<div class="description">${description.getData()}</div> 
16			</#if> 
17		</div> 
18	</section> 
19	<section> 
20		 
21		<div class="container-fluid container-fluid-max-xl container-padding"> 
22			<div class="driving-steps-guide pt-4 mt-2">			 
23				<div class="row"> 
24					<div class="col-lg-8 col-12">			 
25						<#if (stepsTitle.getData())?? && (stepsTitle.getData()?length !=0)> 
26							<h2 class="mb-3 pb-1 h4">${stepsTitle.getData()}</h2> 
27						</#if> 
28						<#if (stepsDescription.getData())?? && (stepsDescription.getData()?length !=0)> 
29							<div class="overview-description mb-5">${stepsDescription.getData()}</div> 
30						</#if> 
31					 
32						<button class="toggle-all-steps-btn btn btn-outline-primary mb-0 align-self-start " type="button" > 
33							<i class="ri-add-fill"></i> <i class="ri-subtract-fill"></i> 
34							<span class="showall-lbl">${languageUtil.get(locale, "show-all-steps")}	</span> 
35							<span class="hideall-lbl">${languageUtil.get(locale, "hide-all")}	</span> 
36						</button> 
37					 
38						<#if step.getSiblings()?has_content> 
39							<ol class="driving-steps-timeline timeline" role=tablist aria-label="steps"> 
40								<#assign count = 0 /> 
41								 
42								<#list step.getSiblings() as cur_step> 
43									 
44									<#if !(getterUtil.getBoolean(cur_step.isSequenceStep.getData()))> 
45										<#assign count = count + 1 />							 
46									</#if> 
47									 
48									<li class="timeline-item "  role="presentation">							 
49										<#if (cur_step.stepTitle.getData())??> 
50											<h3 onkeydown="onKeyDown(event)" role="tab" tabindex="0" class="step-title d-flex align-items-center justify-content-between mb-0 pb-4 h5" data-toggle="collapse" data-target="#timeline_item_collapse_${cur_step?index}"  
51													aria-expanded="false" aria-controls="timeline_item_collapse_${cur_step?index}"> 
52												 
53												<#if getterUtil.getBoolean(cur_step.isSequenceStep.getData())> 
54													<span class="d-inline-flex border-0 step-index align-items-center justify-content-center text-lowercase">${languageUtil.get(locale, "and")}</span> 
55												<#else>								 
56													<span class="d-inline-flex rounded-circle step-index align-items-center justify-content-center">${count}</span> 
57												</#if> 
58												 
59												${cur_step.stepTitle.getData()} 
60												<span id="timeline_collapse_btn_${cur_step?index}" tabindex="-1" class="toggle-step-btn btn btn-outline-primary bg-transparent border-0 shadow-none"> 
61													<i class="ri-arrow-down-s-line"></i> <i class="ri-arrow-up-s-line"></i> 
62													<span class="show-lbl">${languageUtil.get(locale, "show")}</span> 
63													<span class="hide-lbl">${languageUtil.get(locale, "hide")}</span> 
64												</span> 
65											</h3> 
66										</#if> 
67										<div class="collapse timeline-item-collapse " role="tabpanel" id="timeline_item_collapse_${cur_step?index}"> 
68											<div class="d-flex flex-column c-gap-4 mt-0 pb-4 pt-2"> 
69												<#if (cur_step.stepDescription.getData())??> 
70													<div class="step-des">${cur_step.stepDescription.getData()}</div> 
71												</#if> 
72 
73												<#if (cur_step.stepKeyPoint.stepDurationTitle.getData()) !="" || 
74													(cur_step.stepKeyPoint.stepCostTitle.getData()) !=""> 
75													<div class="step-keys c-gap-3 d-flex align-items-center"> 
76														<#if (cur_step.stepKeyPoint.stepDurationTitle.getData()) !=""> 
77															<div class="step-key-item font-weight-normal"> 
78																<i class="ri-time-line" aria-hidden="true"></i> 
79																${cur_step.stepKeyPoint.stepDurationTitle.getData()} 
80															</div> 
81														</#if> 
82														<#if (cur_step.stepKeyPoint.stepCostTitle.getData()) !=""> 
83															<div class="step-key-item font-weight-normal"> 
84																<img src="/documents/d/guest/oman-rial" alt="oman-rial" /> 
85																${cur_step.stepKeyPoint.stepCostTitle.getData()} 
86															</div> 
87														</#if> 
88													</div> 
89												</#if> 
90 
91												<#if cur_step.serviceLink.getSiblings()?has_content>										 
92														<#list cur_step.serviceLink.getSiblings() as cur_step_serviceLink>																 
93																<#if (cur_step_serviceLink?index == 0) && (cur_step_serviceLink.serviceItem.getData()?length !=0)> 
94																	<ul class="service-links list-unstyled d-flex flex-column c-gap-3 mb-2" role="navigation" aria-label="Services"> 
95																</#if> 
96 
97																 
98																 
99																<#assign 
100																	webContentData = jsonFactoryUtil.createJSONObject(cur_step_serviceLink.serviceItem.getData()) 
101																/> 
102														 
103																<#if webContentData?? && webContentData.title??> 
104																	<li > 
105																		<#assign btnClass = "px-2"/> 
106																		<#if (cur_step_serviceLink?index == 0)> 
107																			<#assign btnClass = "btn btn-primary"/> 
108																		</#if> 
109																		<a class="${btnClass}" data-senna-off="true" href="${cur_step_serviceLink.serviceItem.getFriendlyUrl()}?content=${.vars["reserved-article-id"].data}"> 
110																			<#if themeDisplay.getLanguageId() == "en_US"> 
111																			${webContentData.titleMap.en_US} 
112																			<#else> 
113																			${webContentData.titleMap.ar_SA} 
114																			</#if> 
115																		</a> 
116																	</li> 
117																</#if> 
118																 
119																 
120																 
121																 
122																<#if (cur_step_serviceLink?index == (cur_step.serviceLink.getSiblings()?size - 1)) && (cur_step_serviceLink.serviceItem.getData()?length !=0)> 
123																	</ul> 
124																</#if>													 
125														</#list> 
126												</#if> 
127											</div> 
128										</div>	 
129										<div class="divider mt-0"></div> 
130									</li> 
131								</#list> 
132							</ul> 
133						</#if> 
134					</div> 
135				</div>	 
136			</div> 
137		</div> 
138 
139	</section> 
140</article> 
141 
142 
143 
144<script> 
145	function onKeyDown(event){	 
146		if (event.key === 'Enter' || event.key === ' ') {				 
147				event.target.click(); 
148
149
150	$(document).on('click', '.toggle-all-steps-btn', function() { 
151		const isAllStepsExpanded = $('.step-title[aria-expanded="false"]').length === 0; 
152		$(this).toggleClass('all-open', !isAllStepsExpanded); 
153		setTimeout(function() { 
154			if (isAllStepsExpanded) { 
155				$('.step-title[aria-expanded="true"]').trigger('click'); 
156			} else { 
157				$('.step-title[aria-expanded="false"]').trigger('click'); 
158
159		}, 200); 
160	}); 
161 
162	$(document).on('click', '.step-title', function() { 
163		const isAllStepsExpanded = $('.step-title[aria-expanded="false"]').length === 0; 
164		$('.toggle-all-steps-btn').toggleClass('all-open', isAllStepsExpanded); 
165	}); 
166	 
167</script> 
168<style> 
169.driving-steps-guide .driving-steps-timeline .toggle-step-btn:hover{ 
170   color: var(--btn-outline-primary-color); 
171
172</style>