Во время обработки запрошенного шаблона произошла ошибка...
Range start index 0 is out of bounds, because the sliced string has only 0 character(s). (Note that indices are 0-based).
The blamed expression:
==> 0..underline  [in template "18771710#18771743#347743556" at line 83, column 77]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${.vars["reserved-article-title"].dat...  [in template "18771710#18771743#347743556" at line 83, column 38]
----
1<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" 
2   integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" 
3   crossorigin=""/> 
4<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" 
5   integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" 
6   crossorigin=""></script> 
7<#assign dataInicial_Data = getterUtil.getString(dataInicial.getData())> 
8<#if validator.isNotNull(dataInicial_Data)> 
9	<#assign dataInicial_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataInicial_Data, locale)> 
10    <#assign dataInicial = dateUtil.getDate(dataInicial_DateObj, "dd/MM/yyyy", locale)> 
11</#if> 
12 
13<#assign dataFinal_Data = getterUtil.getString(dataFinal.getData())> 
14<#if validator.isNotNull(dataFinal_Data)> 
15	<#assign dataFinal_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataFinal_Data, locale)> 
16    <#assign dataFinal = dateUtil.getDate(dataFinal_DateObj, "dd/MM/yyyy", locale)> 
17</#if> 
18 
19<#if dataInicial == dataFinal > 
20    <#assign sData =  dataInicial> 
21<#else> 
22    <#assign sData =  dataInicial + " - " + dataFinal> 
23</#if> 
24 
25<#assign urlImatge = ""> 
26<#assign descImatge = ""> 
27<#assign entryIdImatge = ""> 
28<#if imatge.getData()?? && imatge.getData() != ""> 
29    <#assign urlImatge = imatge.getData()> 
30    <#assign descImatge = imatge.getAttribute("alt")> 
31    <#assign entryIdImatge = "data-fileentryid='" + imatge.getAttribute("fileEntryId") + "'"> 
32<#else> 
33    <#if imatge.urlExterna?? && imatge.urlExterna.getData() != ""> 
34        <#assign urlImatge = imatge.urlExterna.getData()> 
35    </#if> 
36    <#if imatge.descImatgeExterna?? && imatge.descImatgeExterna.getData() != ""> 
37        <#assign descImatge = imatge.descImatgeExterna.getData()> 
38    </#if> 
39</#if> 
40 
41<script type="application/ld+json"> 
42
43"@context": "https://schema.org", 
44"@type": "Event", 
45"name": "${.vars['reserved-article-title'].data}", 
46<#if validator.isNotNull(dataInicial_DateObj)> 
47"startDate": "${dateUtil.getDate(dataInicial_DateObj, "yyyy-MM-dd", locale)}", 
48</#if> 
49<#if validator.isNotNull(dataFinal_DateObj)> 
50"endDate": "${dateUtil.getDate(dataFinal_DateObj, "yyyy-MM-dd", locale)}", 
51</#if> 
52"location": { 
53        "@type": "Place", 
54		<#if nomLloc.getData()?has_content > 
55        "name": "${nomLloc.getData()}", 
56		<#else> 
57		    "name": "${.vars['reserved-article-title'].data}", 
58		</#if> 
59		<#if municipi.getData()?has_content || carrer.getData()?has_content> 
60        "address": { 
61          "@type": "PostalAddress", 
62					<#if carrer.getData()?has_content> 
63          "streetAddress": "${carrer.getData()}", 
64					</#if>					 
65					<#if municipi.getData()?has_content> 
66          "addressLocality": "${municipi.getData()}" 
67					</#if> 
68
69		</#if> 
70}, 
71<#if urlImatge != ""> 
72"image": [ 
73  "${urlImatge}" 
74], 
75</#if> 
76"description": "${htmlUtil.toInputSafe(htmlUtil.stripHtml(descripcio.getData()))}", 
77"url": "https://www.barcelonaesmoltmes.cat${portalUtil.getCurrentURL(request)}" 
78
79</script> 
80 
81<h2 class="title my-4 text-left"> 
82	<#assign underline = (.vars['reserved-article-title'].data?length/3)?int>	 
83    <span class="text-big-underline">${.vars['reserved-article-title'].data[0..underline]}</span>${.vars['reserved-article-title'].data[underline+1..]} 
84</h2> 
85 
86<div class="row"> 
87    <#if urlImatge != ""> 
88        <div class="col-lg-5 col-12"> 
89    	    <img src="${urlImatge}" alt="${descImatge}" ${entryIdImatge} class="img-fluid"  /> 
90    	</div>		 
91        <div class="col-lg-7 col-12"> 
92    <#else> 
93         <div class="col-12"> 
94    </#if>  
95            <div class="shadow border p-3 mb-4 text-left"> 
96                ${descripcio.getData()} 
97            </div> 
98    </div> 
99</div> 
100                 
101<div class="row"> 
102    <div class="col text-left"> 
103        <p class="mb-1 mt-3">${mesInfo.getData()} </p> 
104     
105        <h4 class="mt-4">${languageUtil.get(locale, "turisme.agenda.quan")}</h4> 
106        <p class="mb-1"><b>${sData}</b></p> 
107        <#if horari?? && horari.getData()?has_content> 
108            <p class="mb-1">${horari.getData()}</p> 
109        </#if> 
110     
111        <h4 class="mt-4">${languageUtil.get(locale, "turisme.agenda.on")}</h4>   
112        <#if nomLloc.getData()?has_content > 
113            <p class="mb-1">${nomLloc.getData()}</p> 
114        </#if> 
115        <#if carrer.getData()?has_content > 
116            <p class="mb-1"> ${carrer.getData()} </p> 
117        </#if>  
118        <p class="mb-1"><b>${municipi.getData()}</b></p> 
119        
120       
121        <h4 class="mt-4">${languageUtil.get(locale, "turisme.agenda.mesInfo")}</h4>               
122        <#if organitzador.getData()?has_content > 
123            <p class="mb-1">${organitzador.getData()}</p> 
124        </#if> 
125        <#if telefon.getData()?has_content > 
126            <p class="mb-1">Tel. ${telefon.getData() }</p> 
127        </#if> 
128        <#if entrada.getData()?has_content > 
129            <p class="mb-1">${entrada.getData() }</p> 
130        </#if> 
131        <#if web.getData()?has_content > 
132            <p class="mb-1"><a href="${web.getData()}" target="_blank">Web</a></p> 
133        </#if> 
134        <#list recursos.arxiu.getSiblings() as cur_arxiu> 
135            <#assign urlDoc = ""> 
136            <#if cur_arxiu.getData()?? && cur_arxiu.getData() != ""> 
137                <#assign urlDoc = cur_arxiu.getData()> 
138            <#else> 
139                <#if cur_arxiu.urlExterna2?? && cur_arxiu.urlExterna2.getData() != ""> 
140                    <#assign urlDoc = cur_arxiu.urlExterna2.getData()> 
141                </#if> 
142            </#if> 
143            <#if urlDoc != ""> 
144                <p class="mb-1"><a href="${urlDoc}" target="_blank"> 
145                    <#if cur_arxiu.titolAdjunt?? && cur_arxiu.titolAdjunt.getData()?has_content> 
146                	    ${cur_arxiu.titolAdjunt.getData()} 
147                	<#else> 
148                		${languageUtil.format(locale, "download-x", "Arxiu adjunt", false)} 
149                	</#if> 
150                </a></p> 
151            </#if> 
152        </#list> 
153    </div> 
154</div> 
155 
156<#assign adjunts = false> 
157<#if recursos.arxiu?? && recursos.arxiu.getSiblings()?has_content > 
158    <#list recursos.arxiu.getSiblings() as cur_arxiu> 
159        <#if cur_arxiu.getData()?has_content > 
160            <#assign adjunts = true> 
161            <#break> 
162        </#if> 
163    </#list> 
164</#if> 
165 
166<#if adjunts > 
167<div class="row"> 
168        <div class="col"> 
169        </div> 
170</div> 
171</#if> 
172 
173<div class="row"> 
174    <h4 class="col mt-4 text-left">${languageUtil.get(locale, "detail.mapa")}</h4> 
175</div> 
176<div class="row"> 
177    <div class="col-12"> 
178        <#assign journalArticleId = .vars["reserved-article-id"].data> 
179		<div id="mapa_${journalArticleId}" class="embed-responsive embed-responsive-16by9"></div>   
180        <#assign indicacions= languageUtil.get(locale,"agenda.indicacions") > 
181        <script> 
182			jQuery(document).ready(function() { 
183			// Llista de cartografies. 
184			var tiles = L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { 
185						  maxZoom: 18, 
186						  attribution: "&copy; Diputació de Barcelona" 
187						}), 
188			googleStreets = L.tileLayer("https://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}&hl=ca", { 
189						  maxZoom: 20, 
190						  subdomains: ["mt0", "mt1", "mt2", "mt3"], 
191						  attribution: "&copy; Diputació de Barcelona" 
192						}); 
193			// Punt central del mapa. 
194			var latlng = L.latLng(${latitud.getData()},${longitud.getData()}); 
195			 
196			var map_google = L.map("mapa_${journalArticleId}", {center: latlng, zoom: 15, layers: [googleStreets]}); 
197			<#assign marcador="<a href='${web.getData()}' target='_blank'>${.vars['reserved-article-title'].data}</a><br/>${nomLloc.getData()}<br/><a href='https://www.google.es/maps/place/${latitud.getData()},${longitud.getData()}'  target='_blank'>${indicacions}</a> " > 
198			L.marker([${latitud.getData()},${longitud.getData()}]).addTo(map_google).bindPopup("${marcador}"); 
199			}); 
200            </script> 
201    </div> 
202</div>