{"id":1164,"date":"2025-02-05T11:26:39","date_gmt":"2025-02-05T11:26:39","guid":{"rendered":"https:\/\/www.e-gap.com\/our-journay\/"},"modified":"2026-01-14T14:21:01","modified_gmt":"2026-01-14T14:21:01","slug":"our-journay","status":"publish","type":"page","link":"https:\/\/www.e-gap.com\/en\/our-journay\/","title":{"rendered":"Our journay"},"content":{"rendered":"<section class=\"l-section wpb_row us_custom_23b7ca7c height_medium full_height valign_center width_custom\" style=\"--site-content-width:1350px;\"><div class=\"l-section-overlay\" style=\"background:rgba(0,0,0,0.55)\"><\/div><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_bottom type_default stacking_default\"><div class=\"wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_text_column us_custom_6df4bc3a has_text_color\"><div class=\"wpb_wrapper\"><h1><span style=\"color: #11b105;\">E-GAP<\/span> was founded with a clear mission: to accelerate the <span style=\"color: #11b105;\"> transition <\/span>towards <span style=\"color: #11b105;\"> more sustainable mobility<\/span><\/h1>\n<\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default\"><div class=\"wpb_column vc_column_container\"><div class=\"vc_column-inner\"><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row us_custom_94a189e7 height_auto width_custom\" style=\"--site-content-width:1390px;\" id=\"chi-siamo\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_grid cols_2 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_middle type_default stacking_default\" style=\"--columns-gap:2rem;\"><div class=\"wpb_column vc_column_container us_custom_073818dd\"><div class=\"vc_column-inner\"><div class=\"w-image moveimgup align_none\"><div class=\"w-image-h\"><img decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-flotta-2017-1024x1024.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-flotta-2017-1024x1024.jpg 1024w, https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-flotta-2017-300x300.jpg 300w, https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-flotta-2017-150x150.jpg 150w, https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-flotta-2017.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/div><\/div><\/div><div class=\"wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0bec6\" data-id=\"6a4b1ade0bec6\" data-height=\"120\" data-height-mobile=\"0\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"0\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column us_custom_0580ee06 has_text_color\"><div class=\"wpb_wrapper\"><p>2017<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0bfd3\" data-id=\"6a4b1ade0bfd3\" data-height=\"40\" data-height-mobile=\"40\" data-height-tab=\"40\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p>Since 2017, we have created and developed a mobile charging solution based on a fleet of 100 electric vans equipped with integrated storage systems. Our technology ensures service continuity even in areas with limited grid access, thanks to our integrated storage solutions. We have also implemented both permanent and temporary large-scale charging infrastructures, working on complex projects such as the one for Heathrow Airport.<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0c0a8\" data-id=\"6a4b1ade0c0a8\" data-height=\"80\" data-height-mobile=\"80\" data-height-tab=\"80\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"w-hwrapper valign_top align_center\" style=\"--hwrapper-gap:2rem\"><div class=\"w-vwrapper align_none valign_top\" style=\"--vwrapper-gap:0.7rem\"><div class=\"wpb_text_column us_custom_b633a8d0 has_text_color\"><div class=\"wpb_wrapper\"><p style=\"text-align: center;\">100k<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0c352\" data-id=\"6a4b1ade0c352\" data-height=\"5\" data-height-mobile=\"5\" data-height-tab=\"5\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p style=\"text-align: center;\">Charges in 5 EU countries over 8 years<\/p>\n<\/div><\/div><\/div><div class=\"w-vwrapper align_none valign_top\" style=\"--vwrapper-gap:0.7rem\"><div class=\"wpb_text_column us_custom_b633a8d0 has_text_color\"><div class=\"wpb_wrapper\"><p style=\"text-align: center;\">100<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0c555\" data-id=\"6a4b1ade0c555\" data-height=\"5\" data-height-mobile=\"5\" data-height-tab=\"5\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p style=\"text-align: center;\">charging systems deployed with a total capacity of 10 MWh<\/p>\n<\/div><\/div><\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0c634\" data-id=\"6a4b1ade0c634\" data-height=\"80\" data-height-mobile=\"40\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"40\" style=\"clear:both;display:block;\"><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row hide_on_mobiles height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default\"><div class=\"wpb_column vc_column_container\"><div class=\"vc_column-inner\"><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_auto width_custom\" style=\"--site-content-width:1390px;\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default\"><div class=\"wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0ce83\" data-id=\"6a4b1ade0ce83\" data-height=\"80\" data-height-mobile=\"80\" data-height-tab=\"80\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"g-cols wpb_row us_custom_330f44a7 via_grid cols_2 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_middle type_default reversed stacking_default\" style=\"--columns-gap:3rem;\"><div class=\"wpb_column vc_column_container us_custom_d76e72da\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0d1aa\" data-id=\"6a4b1ade0d1aa\" data-height=\"120\" data-height-mobile=\"0\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"0\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column us_custom_0580ee06 has_text_color\"><div class=\"wpb_wrapper\"><p>2021<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0d2a0\" data-id=\"6a4b1ade0d2a0\" data-height=\"40\" data-height-mobile=\"40\" data-height-tab=\"40\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p>In 2021, we established E-GAP ENGINEERING, initiating a path of specialization in the assembly of advanced batteries and strengthening our expertise in battery management. This gives us full control over production quality, optimizing every stage of development\u2014from design to engineering\u2014while offering customized, cutting-edge solutions.<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0d36e\" data-id=\"6a4b1ade0d36e\" data-height=\"40\" data-height-mobile=\"40\" data-height-tab=\"40\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"ult-spacer spacer-6a4b1ade0d383\" data-id=\"6a4b1ade0d383\" data-height=\"120\" data-height-mobile=\"40\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"40\" style=\"clear:both;display:block;\"><\/div><\/div><\/div><div class=\"wpb_column vc_column_container us_custom_60d615b2\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0d4f0\" data-id=\"6a4b1ade0d4f0\" data-height=\"0\" data-height-mobile=\"40\" data-height-tab=\"\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"40\" style=\"clear:both;display:block;\"><\/div><div class=\"w-image moveimgup align_none\"><div class=\"w-image-h\"><img decoding=\"async\" width=\"1024\" height=\"532\" src=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/e-gap-engineering-01-1024x532.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/e-gap-engineering-01-1024x532.jpg 1024w, https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/e-gap-engineering-01-300x156.jpg 300w, https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/e-gap-engineering-01.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/div><\/div><\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0d99a\" data-id=\"6a4b1ade0d99a\" data-height=\"160\" data-height-mobile=\"80\" data-height-tab=\"\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"80\" style=\"clear:both;display:block;\"><\/div><div class=\"g-cols wpb_row us_custom_c8eda998 via_grid cols_2 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_middle type_default stacking_default\" style=\"--columns-gap:3rem;\"><div class=\"wpb_column vc_column_container us_custom_1a1e689b\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0dbae\" data-id=\"6a4b1ade0dbae\" data-height=\"0\" data-height-mobile=\"40\" data-height-tab=\"\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"40\" style=\"clear:both;display:block;\"><\/div><div class=\"w-image moveimgup align_none\"><div class=\"w-image-h\"><img decoding=\"async\" width=\"1024\" height=\"532\" src=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-percorso-1-1024x532.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-percorso-1-1024x532.jpg 1024w, https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-percorso-1-300x156.jpg 300w, https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-percorso-1.jpg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/div><\/div><\/div><div class=\"wpb_column vc_column_container us_custom_bc462eab\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0e11e\" data-id=\"6a4b1ade0e11e\" data-height=\"120\" data-height-mobile=\"0\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"0\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column us_custom_0580ee06 has_text_color\"><div class=\"wpb_wrapper\"><p>2023<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0e215\" data-id=\"6a4b1ade0e215\" data-height=\"40\" data-height-mobile=\"40\" data-height-tab=\"40\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p>In 2023, we designed and developed a 1 MW bidirectional storage system, an advanced solution capable of managing energy flows in both directions. This innovation marked a significant step forward in enhancing our ability to optimize energy resource management. Bidirectional storage offers strategic benefits, such as grid stabilization through the storage of excess energy during peak production and its release during periods of high demand.<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0e2e1\" data-id=\"6a4b1ade0e2e1\" data-height=\"120\" data-height-mobile=\"40\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"40\" style=\"clear:both;display:block;\"><\/div><\/div><\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0e31c\" data-id=\"6a4b1ade0e31c\" data-height=\"180\" data-height-mobile=\"80\" data-height-tab=\"\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"80\" style=\"clear:both;display:block;\"><\/div><div class=\"g-cols wpb_row us_custom_330f44a7 via_grid cols_2 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_middle type_default reversed stacking_default\" style=\"--columns-gap:3rem;\"><div class=\"wpb_column vc_column_container us_custom_d76e72da\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0e516\" data-id=\"6a4b1ade0e516\" data-height=\"120\" data-height-mobile=\"0\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"0\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column us_custom_0580ee06 has_text_color\"><div class=\"wpb_wrapper\"><p>2024<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0e5f3\" data-id=\"6a4b1ade0e5f3\" data-height=\"40\" data-height-mobile=\"40\" data-height-tab=\"40\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p>In 2024, we launched the Fleet-as-a-Service offering, primarily aimed at supporting the energy transition of large fleets, such as public transport systems, with turnkey solutions and full financing. We solidified our position as a strategic player in fleet electrification.<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0e6b3\" data-id=\"6a4b1ade0e6b3\" data-height=\"120\" data-height-mobile=\"40\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"40\" style=\"clear:both;display:block;\"><\/div><\/div><\/div><div class=\"wpb_column vc_column_container us_custom_9c1cbde7\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0e7d0\" data-id=\"6a4b1ade0e7d0\" data-height=\"0\" data-height-mobile=\"40\" data-height-tab=\"\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"40\" style=\"clear:both;display:block;\"><\/div><div class=\"w-image has_ratio align_none\"><div class=\"w-image-h\"><div style=\"padding-bottom:56.25%\"><\/div><img decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/02\/egap-percorso-flotta-1024x768.jpeg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" \/><\/div><\/div><\/div><\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0ec0a\" data-id=\"6a4b1ade0ec0a\" data-height=\"120\" data-height-mobile=\"60\" data-height-tab=\"\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"60\" style=\"clear:both;display:block;\"><\/div><div class=\"g-cols wpb_row us_custom_d1002d48 via_grid cols_2 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_middle type_default stacking_default\" style=\"--columns-gap:3rem;\"><div class=\"wpb_column vc_column_container us_custom_1a1e689b\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0ee37\" data-id=\"6a4b1ade0ee37\" data-height=\"0\" data-height-mobile=\"40\" data-height-tab=\"\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"40\" style=\"clear:both;display:block;\"><\/div><div class=\"w-image moveimgup align_none\"><div class=\"w-image-h\"><img decoding=\"async\" width=\"1024\" height=\"575\" src=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2026\/01\/e-gap-shooting-roma-09.25-20-1024x575.jpg\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2026\/01\/e-gap-shooting-roma-09.25-20-1024x575.jpg 1024w, https:\/\/www.e-gap.com\/wp-content\/uploads\/2026\/01\/e-gap-shooting-roma-09.25-20-300x169.jpg 300w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/div><\/div><\/div><div class=\"wpb_column vc_column_container us_custom_bc462eab\"><div class=\"vc_column-inner\"><div class=\"ult-spacer spacer-6a4b1ade0f388\" data-id=\"6a4b1ade0f388\" data-height=\"120\" data-height-mobile=\"0\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"0\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column us_custom_0580ee06 has_text_color\"><div class=\"wpb_wrapper\"><p>2025<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0f483\" data-id=\"6a4b1ade0f483\" data-height=\"40\" data-height-mobile=\"40\" data-height-tab=\"40\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"\" style=\"clear:both;display:block;\"><\/div><div class=\"wpb_text_column us_custom_6df4bc3a has_text_color\"><div class=\"wpb_wrapper\"><p>With Fleet-as-a-Service, we provide our full expertise to enable a cost-free, low-risk transition to electric mobility.<\/p>\n<p>We are the promoter of Italy&#8217;s first Fleet-as-a-service (FaaS) project for local public transport and plan<br \/>\nto electrify more than 700 buses through direct partnerships with public transport operators and project financing solutions.<\/p>\n<\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0f582\" data-id=\"6a4b1ade0f582\" data-height=\"120\" data-height-mobile=\"40\" data-height-tab=\"60\" data-height-tab-portrait=\"60\" data-height-mobile-landscape=\"40\" style=\"clear:both;display:block;\"><\/div><\/div><\/div><\/div><div class=\"ult-spacer spacer-6a4b1ade0f5bc\" data-id=\"6a4b1ade0f5bc\" data-height=\"60\" data-height-mobile=\"20\" data-height-tab=\"\" data-height-tab-portrait=\"\" data-height-mobile-landscape=\"20\" style=\"clear:both;display:block;\"><\/div><div class=\"w-hwrapper valign_top us_custom_9e671fa8 hide_on_tablets hide_on_mobiles align_none\" style=\"--hwrapper-gap:1.2rem\">[vc_raw_html]PHN2ZyBpZD0iZTR0T2k3Mkc4S2ExIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDAwMCA2MDAwIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiIgdGV4dC1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMS4xMDk2OTIgMTE1Ni40Njk1NzQgMTAyLjA3MDc1MikiPjxwYXRoIGlkPSJlNHRPaTcyRzhLYTQiIGQ9Ik02NTguNzgsNTI0Mi44MXYtMzA4LjE4YzAsMCwwLDI1OC4yNCwwLDI1OC4yNHYtNTQ2LjVjMC0xNTUuOTcsMTI2LjQ0LTI4Mi40LDI4Mi40LTI4Mi40aDIyOS4xYzE1NS45NywwLDI4Mi40LTEyNi40NCwyODIuNC0yODIuNHYtMzA4LjE4YzAsMCwwLDIzOS44LDAsMjM5Ljh2LTU0Ni41YzAtMTU1Ljk3LTEyNi40NC0yODIuNC0yODIuNC0yODIuNHYwYzAsMC04NzAuMzgsMC04NzAuMzgsMC0xNTUuOTcsMC0yODIuNC0xMjYuNDQtMjgyLjQtMjgyLjR2LTMwOC4xOGMwLDAsMCwyODIuMDIsMCwyODIuMDJ2LTgyMy45OGMwLTE1NS45NywxMjYuNDQtMjgyLjQsMjgyLjQtMjgyLjRoNTMzLjdjMCwwLDMzNi42OCwwLDMzNi42OCwwYzE1NS45NywwLDI4Mi40LTEyNi40NCwyODIuNC0yODIuNHYtMzA4LjE4YzAsMCwwLDI1OC4yNCwwLDI1OC4yNHYtNTQ2LjVjMC0xNTUuOTctMTI2LjQ0LTI4Mi40LTI4Mi40LTI4Mi40aC04NzAuMzhjLTE1NS45NywwLTI4Mi40LTEyNi40NC0yODIuNC0yODIuNHYtMzA4LjIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NC45MDk5NzMgMTQuNzAwMTExKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjM1IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hvZmZzZXQ9Ii0xMTQzMiIgc3Ryb2tlLWRhc2hhcnJheT0iMTE0MzIiLz48L2c+PGVsbGlwc2UgaWQ9ImU0dE9pNzJHOEthNSIgcng9IjU4Ljk0OTg1IiByeT0iNTguOTQ5ODUiIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMTIzOC44Nzk1NDcgMzI3Mi4zMDU3NDgpIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1kYXNob2Zmc2V0PSItMjI5Mi45MSIvPjxlbGxpcHNlIGlkPSJlNHRPaTcyRzhLYTYiIHJ4PSI1OC45NDk4NSIgcnk9IjU4Ljk0OTg1IiB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDI2NzIuNTIxOTAxIDE3NTAuMjc3MzI4KSIgZmlsbD0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIwIi8+PGVsbGlwc2UgaWQ9ImU0dE9pNzJHOEthNyIgcng9IjU4Ljk0OTg1IiByeT0iNTguOTQ5ODUiIHRyYW5zZm9ybT0ibWF0cml4KDAgMCAwIDAgMjY3Mi41MjE5MDEgNDYxNS4wNzUzMjkpIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1kYXNob2Zmc2V0PSItMjI5Mi45MSIvPjxlbGxpcHNlIGlkPSJlNHRPaTcyRzhLYTgiIHJ4PSI1OC45NDk4NSIgcnk9IjU4Ljk0OTg1IiB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDEyMzguODc5NTQ3IDEyMS4xMzAzMjEpIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1kYXNob2Zmc2V0PSItMjI5Mi45MSIvPjxlbGxpcHNlIGlkPSJlNHRPaTcyRzhLYTkiIHJ4PSI1OC45NDk4NSIgcnk9IjU4Ljk0OTg1IiB0cmFuc2Zvcm09Im1hdHJpeCgwIDAgMCAwIDE4ODAuODk1NTgxIDU5MDIuMDUwMTUpIiBmaWxsPSIjZmZmIiBzdHJva2Utd2lkdGg9IjAiIHN0cm9rZS1kYXNob2Zmc2V0PSItMjI5Mi45MSIvPg0KPHNjcmlwdD48IVtDREFUQVsNCiFmdW5jdGlvbih0LGUpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9ZSgpOiJmdW5jdGlvbiI9PXR5cGVvZiBfX1NWR0FUT1JfREVGSU5FX18mJl9fU1ZHQVRPUl9ERUZJTkVfXy5hbWQ\/X19TVkdBVE9SX0RFRklORV9fKGUpOigodD0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM\/Z2xvYmFsVGhpczp0fHxzZWxmKS5fX1NWR0FUT1JfUExBWUVSX189dC5fX1NWR0FUT1JfUExBWUVSX198fHt9LHQuX19TVkdBVE9SX1BMQVlFUl9fWyI5MWM4MGQ3NyJdPWUoKSl9KHRoaXMsKGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQodCxlKXt2YXIgbj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihyPXIuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGUoZSl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW25dP2FyZ3VtZW50c1tuXTp7fTtuJTI\/dChPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3UoZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOnQoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gbih0KXtyZXR1cm4obj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0pKHQpfWZ1bmN0aW9uIHIodCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciByPWVbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19ZnVuY3Rpb24gbyh0LGUsbil7cmV0dXJuIGUmJmkodC5wcm90b3R5cGUsZSksbiYmaSh0LG4pLHR9ZnVuY3Rpb24gdSh0LGUsbil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1uLHR9ZnVuY3Rpb24gYSh0KXtyZXR1cm4oYT1PYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfSkodCl9ZnVuY3Rpb24gbCh0LGUpe3JldHVybihsPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fX3Byb3RvX189ZSx0fSkodCxlKX1mdW5jdGlvbiBzKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKHQpe3JldHVybiExfX1mdW5jdGlvbiBmKHQsZSxuKXtyZXR1cm4oZj1zKCk\/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24odCxlLG4pe3ZhciByPVtudWxsXTtyLnB1c2guYXBwbHkocixlKTt2YXIgaT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseSh0LHIpKTtyZXR1cm4gbiYmbChpLG4ucHJvdG90eXBlKSxpfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGModCxlKXtpZihlJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHR9KHQpfWZ1bmN0aW9uIGgodCxlLG4pe3JldHVybihoPSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ\/UmVmbGVjdC5nZXQ6ZnVuY3Rpb24odCxlLG4pe3ZhciByPWZ1bmN0aW9uKHQsZSl7Zm9yKDshT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJm51bGwhPT0odD1hKHQpKTspO3JldHVybiB0fSh0LGUpO2lmKHIpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKTtyZXR1cm4gaS5nZXQ\/aS5nZXQuY2FsbChuKTppLnZhbHVlfX0pKHQsZSxufHx0KX1mdW5jdGlvbiB2KHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBkKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm47aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBkKHQsZSk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpOyJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKTtpZigiTWFwIj09PW58fCJTZXQiPT09bilyZXR1cm4gQXJyYXkuZnJvbSh0KTtpZigiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg\/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk\/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBkKHQsZSl9KHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGQodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheShlKTtuPGU7bisrKXJbbl09dFtuXTtyZXR1cm4gcn1mdW5jdGlvbiB5KHQsZSxuKXtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXJldHVybiB0O3ZhciByPU1hdGgucG93KDEwLGUpO3JldHVybiBNYXRoW25dKCgrdCtOdW1iZXIuRVBTSUxPTikqcikvcn1OdW1iZXIuaXNJbnRlZ2VyfHwoTnVtYmVyLmlzSW50ZWdlcj1mdW5jdGlvbih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJmlzRmluaXRlKHQpJiZNYXRoLmZsb29yKHQpPT09dH0pLE51bWJlci5FUFNJTE9OfHwoTnVtYmVyLkVQU0lMT049MjIyMDQ0NjA0OTI1MDMxM2UtMzEpO3ZhciBnPXAoTWF0aC5wb3coMTAsLTYpKTtmdW5jdGlvbiBwKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo2O3JldHVybiB5KHQsZSwicm91bmQiKX1mdW5jdGlvbiBtKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOmc7cmV0dXJuIE1hdGguYWJzKHQtZSk8bn1wKE1hdGgucG93KDEwLC0yKSkscChNYXRoLnBvdygxMCwtNCkpO3ZhciBiPU1hdGguUEkvMTgwO2Z1bmN0aW9uIHcodCl7cmV0dXJuIHR9ZnVuY3Rpb24gayh0LGUsbil7dmFyIHI9MS1uO3JldHVybiAzKm4qcioodCpyK2UqbikrbipuKm59ZnVuY3Rpb24gXygpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOjAsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MSxyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXToxO3JldHVybiB0PDB8fHQ+MXx8bjwwfHxuPjE\/bnVsbDptKHQsZSkmJm0obixyKT93OmZ1bmN0aW9uKGkpe2lmKGk8PTApcmV0dXJuIHQ+MD9pKmUvdDowPT09ZSYmbj4wP2kqci9uOjA7aWYoaT49MSlyZXR1cm4gbjwxPzErKGktMSkqKHItMSkvKG4tMSk6MT09PW4mJnQ8MT8xKyhpLTEpKihlLTEpLyh0LTEpOjE7Zm9yKHZhciBvLHU9MCxhPTE7dTxhOyl7dmFyIGw9ayh0LG4sbz0odSthKS8yKTtpZihtKGksbCkpYnJlYWs7bDxpP3U9bzphPW99cmV0dXJuIGsoZSxyLG8pfX1mdW5jdGlvbiBBKCl7cmV0dXJuIDF9ZnVuY3Rpb24geCh0KXtyZXR1cm4gMT09PXQ\/MTowfWZ1bmN0aW9uIE8oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MSxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO2lmKDE9PT10KXtpZigwPT09ZSlyZXR1cm4geDtpZigxPT09ZSlyZXR1cm4gQX12YXIgbj0xL3Q7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0Pj0xPzE6KHQrPWUqbiktdCVufX12YXIgUz1NYXRoLnNpbixFPU1hdGguY29zLGo9TWF0aC5hY29zLE09TWF0aC5hc2luLFA9TWF0aC50YW4sQj1NYXRoLmF0YW4yLEk9TWF0aC5QSS8xODAsVD0xODAvTWF0aC5QSSxOPU1hdGguc3FydCxSPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToxLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOjAsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxvPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXToxLHU9YXJndW1lbnRzLmxlbmd0aD40JiZ2b2lkIDAhPT1hcmd1bWVudHNbNF0\/YXJndW1lbnRzWzRdOjAsYT1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06MDtyKHRoaXMsdCksdGhpcy5tPVtlLG4saSxvLHUsYV0sdGhpcy5pPW51bGwsdGhpcy53PW51bGwsdGhpcy5zPW51bGx9cmV0dXJuIG8odCxbe2tleToiZGV0ZXJtaW5hbnQiLGdldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMubTtyZXR1cm4gdFswXSp0WzNdLXRbMV0qdFsyXX19LHtrZXk6ImlzSWRlbnRpdHkiLGdldDpmdW5jdGlvbigpe2lmKG51bGw9PT10aGlzLmkpe3ZhciB0PXRoaXMubTt0aGlzLmk9MT09PXRbMF0mJjA9PT10WzFdJiYwPT09dFsyXSYmMT09PXRbM10mJjA9PT10WzRdJiYwPT09dFs1XX1yZXR1cm4gdGhpcy5pfX0se2tleToicG9pbnQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5tO3JldHVybnt4Om5bMF0qdCtuWzJdKmUrbls0XSx5Om5bMV0qdCtuWzNdKmUrbls1XX19fSx7a2V5OiJ0cmFuc2xhdGVTZWxmIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOjA7aWYoIXQmJiFlKXJldHVybiB0aGlzO3ZhciBuPXRoaXMubTtyZXR1cm4gbls0XSs9blswXSp0K25bMl0qZSxuWzVdKz1uWzFdKnQrblszXSplLHRoaXMudz10aGlzLnM9dGhpcy5pPW51bGwsdGhpc319LHtrZXk6InJvdGF0ZVNlbGYiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjA7aWYodCU9MzYwKXt2YXIgZT1TKHQqPUkpLG49RSh0KSxyPXRoaXMubSxpPXJbMF0sbz1yWzFdO3JbMF09aSpuK3JbMl0qZSxyWzFdPW8qbityWzNdKmUsclsyXT1yWzJdKm4taSplLHJbM109clszXSpuLW8qZSx0aGlzLnc9dGhpcy5zPXRoaXMuaT1udWxsfXJldHVybiB0aGlzfX0se2tleToic2NhbGVTZWxmIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToxLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOjE7aWYoMSE9PXR8fDEhPT1lKXt2YXIgbj10aGlzLm07blswXSo9dCxuWzFdKj10LG5bMl0qPWUsblszXSo9ZSx0aGlzLnc9dGhpcy5zPXRoaXMuaT1udWxsfXJldHVybiB0aGlzfX0se2tleToic2tld1NlbGYiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoZSU9MzYwLCh0JT0zNjApfHxlKXt2YXIgbj10aGlzLm0scj1uWzBdLGk9blsxXSxvPW5bMl0sdT1uWzNdO3QmJih0PVAodCpJKSxuWzJdKz1yKnQsblszXSs9aSp0KSxlJiYoZT1QKGUqSSksblswXSs9byplLG5bMV0rPXUqZSksdGhpcy53PXRoaXMucz10aGlzLmk9bnVsbH1yZXR1cm4gdGhpc319LHtrZXk6InJlc2V0U2VsZiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06MSxlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOjAscj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106MSxpPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowLG89YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0\/YXJndW1lbnRzWzVdOjAsdT10aGlzLm07cmV0dXJuIHVbMF09dCx1WzFdPWUsdVsyXT1uLHVbM109cix1WzRdPWksdVs1XT1vLHRoaXMudz10aGlzLnM9dGhpcy5pPW51bGwsdGhpc319LHtrZXk6InJlY29tcG9zZVNlbGYiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOm51bGwsZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsLHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10\/YXJndW1lbnRzWzNdOm51bGwsaT1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06bnVsbDtyZXR1cm4gdGhpcy5pc0lkZW50aXR5fHx0aGlzLnJlc2V0U2VsZigpLHQmJih0Lnh8fHQueSkmJnRoaXMudHJhbnNsYXRlU2VsZih0LngsdC55KSxlJiZ0aGlzLnJvdGF0ZVNlbGYoZSksbiYmKG4ueCYmdGhpcy5za2V3U2VsZihuLngsMCksbi55JiZ0aGlzLnNrZXdTZWxmKDAsbi55KSksIXJ8fDE9PT1yLngmJjE9PT1yLnl8fHRoaXMuc2NhbGVTZWxmKHIueCxyLnkpLGkmJihpLnh8fGkueSkmJnRoaXMudHJhbnNsYXRlU2VsZihpLngsaS55KSx0aGlzfX0se2tleToiZGVjb21wb3NlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTowLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOjAsbj10aGlzLm0scj1uWzBdKm5bMF0rblsxXSpuWzFdLGk9W1tuWzBdLG5bMV1dLFtuWzJdLG5bM11dXSxvPU4ocik7aWYoMD09PW8pcmV0dXJue29yaWdpbjp7eDpwKG5bNF0pLHk6cChuWzVdKX0sdHJhbnNsYXRlOnt4OnAodCkseTpwKGUpfSxzY2FsZTp7eDowLHk6MH0sc2tldzp7eDowLHk6MH0scm90YXRlOjB9O2lbMF1bMF0vPW8saVswXVsxXS89bzt2YXIgdT1uWzBdKm5bM10tblsxXSpuWzJdPDA7dSYmKG89LW8pO3ZhciBhPWlbMF1bMF0qaVsxXVswXStpWzBdWzFdKmlbMV1bMV07aVsxXVswXS09aVswXVswXSphLGlbMV1bMV0tPWlbMF1bMV0qYTt2YXIgbD1OKGlbMV1bMF0qaVsxXVswXStpWzFdWzFdKmlbMV1bMV0pO2lmKDA9PT1sKXJldHVybntvcmlnaW46e3g6cChuWzRdKSx5OnAobls1XSl9LHRyYW5zbGF0ZTp7eDpwKHQpLHk6cChlKX0sc2NhbGU6e3g6cChvKSx5OjB9LHNrZXc6e3g6MCx5OjB9LHJvdGF0ZTowfTtpWzFdWzBdLz1sLGlbMV1bMV0vPWwsYS89bDt2YXIgcz0wO3JldHVybiBpWzFdWzFdPDA\/KHM9aihpWzFdWzFdKSpULGlbMF1bMV08MCYmKHM9MzYwLXMpKTpzPU0oaVswXVsxXSkqVCx1JiYocz0tcyksYT1CKGEsTihpWzBdWzBdKmlbMF1bMF0raVswXVsxXSppWzBdWzFdKSkqVCx1JiYoYT0tYSkse29yaWdpbjp7eDpwKG5bNF0pLHk6cChuWzVdKX0sdHJhbnNsYXRlOnt4OnAodCkseTpwKGUpfSxzY2FsZTp7eDpwKG8pLHk6cChsKX0sc2tldzp7eDpwKGEpLHk6MH0scm90YXRlOnAocyl9fX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tO3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSl9fSx7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06IiAiO2lmKG51bGw9PT10aGlzLnMpe3ZhciBlPXRoaXMubS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwKHQpfSkpOzE9PT1lWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0mJjE9PT1lWzNdP3RoaXMucz0idHJhbnNsYXRlKCIrZVs0XSt0K2VbNV0rIikiOnRoaXMucz0ibWF0cml4KCIrZS5qb2luKHQpKyIpIn1yZXR1cm4gdGhpcy5zfX1dLFt7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0P0FycmF5LmlzQXJyYXkodCk\/Zih0aGlzLHYodCkpOnQgaW5zdGFuY2VvZiB0aGlzP3QuY2xvbmUoKToobmV3IHRoaXMpLnJlY29tcG9zZVNlbGYodC5vcmlnaW4sdC5yb3RhdGUsdC5za2V3LHQuc2NhbGUsdC50cmFuc2xhdGUpOm5ldyB0aGlzfX1dKSx0fSgpO2Z1bmN0aW9uIEYodCxlLG4pe3JldHVybiB0Pj0uNT9uOmV9ZnVuY3Rpb24gRCh0LGUsbil7cmV0dXJuIDA9PT10fHxlPT09bj9lOnQqKG4tZSkrZX1mdW5jdGlvbiBDKHQsZSxuKXt2YXIgcj1EKHQsZSxuKTtyZXR1cm4gcjw9MD8wOnJ9ZnVuY3Rpb24gcSh0LGUsbil7dmFyIHI9RCh0LGUsbik7cmV0dXJuIHI8PTA\/MDpyPj0xPzE6cn1mdW5jdGlvbiBMKHQsZSxuKXtyZXR1cm4gMD09PXQ\/ZToxPT09dD9uOnt4OkQodCxlLngsbi54KSx5OkQodCxlLnksbi55KX19ZnVuY3Rpb24gVih0LGUsbil7cmV0dXJuIDA9PT10P2U6MT09PXQ\/bjp7eDpDKHQsZS54LG4ueCkseTpDKHQsZS55LG4ueSl9fWZ1bmN0aW9uIEcodCxlLG4pe3ZhciByPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5yb3VuZChEKHQsZSxuKSl9KHQsZSxuKTtyZXR1cm4gcjw9MD8wOnI+PTI1NT8yNTU6cn1mdW5jdGlvbiB6KHQsZSxuKXtyZXR1cm4gMD09PXQ\/ZToxPT09dD9uOntyOkcodCxlLnIsbi5yKSxnOkcodCxlLmcsbi5nKSxiOkcodCxlLmIsbi5iKSxhOkQodCxudWxsPT1lLmE\/MTplLmEsbnVsbD09bi5hPzE6bi5hKX19ZnVuY3Rpb24gWSh0LGUsbil7dmFyIHI9ZS5sZW5ndGg7aWYociE9PW4ubGVuZ3RoKXJldHVybiBGKHQsZSxuKTtmb3IodmFyIGk9bmV3IEFycmF5KHIpLG89MDtvPHI7bysrKWlbb109RCh0LGVbb10sbltvXSk7cmV0dXJuIGl9ZnVuY3Rpb24gVSh0LGUpe2Zvcih2YXIgbj1bXSxyPTA7cjx0O3IrKyluLnB1c2goZSk7cmV0dXJuIG59ZnVuY3Rpb24gVyh0LGUpe2lmKC0tZTw9MClyZXR1cm4gdDt2YXIgbj0odD1PYmplY3QuYXNzaWduKFtdLHQpKS5sZW5ndGg7ZG97Zm9yKHZhciByPTA7cjxuO3IrKyl0LnB1c2godFtyXSl9d2hpbGUoLS1lPjApO3JldHVybiB0fXZhciAkLEg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3IodGhpcyx0KSx0aGlzLmxpc3Q9ZSx0aGlzLmxlbmd0aD1lLmxlbmd0aH1yZXR1cm4gbyh0LFt7a2V5OiJzZXRBdHRyaWJ1dGUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXRoaXMubGlzdCxyPTA7cjx0aGlzLmxlbmd0aDtyKyspbltyXS5zZXRBdHRyaWJ1dGUodCxlKX19LHtrZXk6InJlbW92ZUF0dHJpYnV0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMubGlzdCxuPTA7bjx0aGlzLmxlbmd0aDtuKyspZVtuXS5yZW1vdmVBdHRyaWJ1dGUodCl9fSx7a2V5OiJzdHlsZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy5saXN0LHI9MDtyPHRoaXMubGVuZ3RoO3IrKyluW3JdLnN0eWxlW3RdPWV9fV0pLHR9KCksUT0vLS4vZyxYPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKX07ZnVuY3Rpb24gSih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OkZ9ZnVuY3Rpb24gSyh0KXtyZXR1cm4gdD8iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFycmF5LmlzQXJyYXkodCk\/ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnc7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGU7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIE8odFswXSl8fGU7Y2FzZSAyOnJldHVybiBPKHRbMF0sdFsxXSl8fGU7Y2FzZSA0OnJldHVybiBfKHRbMF0sdFsxXSx0WzJdLHRbM10pfHxlfXJldHVybiBlfSh0LG51bGwpOmZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOnc7c3dpdGNoKHQpe2Nhc2UibGluZWFyIjpyZXR1cm4gdztjYXNlInN0ZXBzIjpyZXR1cm4gTyhlLnN0ZXBzfHwxLGUuanVtcHx8MCl8fG47Y2FzZSJiZXppZXIiOmNhc2UiY3ViaWMtYmV6aWVyIjpyZXR1cm4gXyhlLngxfHwwLGUueTF8fDAsZS54Mnx8MCxlLnkyfHwwKXx8bn1yZXR1cm4gbn0odC50eXBlLHQudmFsdWUsbnVsbCk6bnVsbH1mdW5jdGlvbiBaKHQsZSxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdLGk9ZS5sZW5ndGgtMTtpZih0PD1lWzBdLnQpcmV0dXJuIHI\/WzAsMCxlWzBdLnZdOmVbMF0udjtpZih0Pj1lW2ldLnQpcmV0dXJuIHI\/W2ksMSxlW2ldLnZdOmVbaV0udjt2YXIgbyx1PWVbMF0sYT1udWxsO2ZvcihvPTE7bzw9aTtvKyspe2lmKCEodD5lW29dLnQpKXthPWVbb107YnJlYWt9dT1lW29dfXJldHVybiBudWxsPT1hP3I\/W2ksMSxlW2ldLnZdOmVbaV0udjp1LnQ9PT1hLnQ\/cj9bbywxLGEudl06YS52Oih0PSh0LXUudCkvKGEudC11LnQpLHUuZSYmKHQ9dS5lKHQpKSxyP1tvLHQsbih0LHUudixhLnYpXTpuKHQsdS52LGEudikpfWZ1bmN0aW9uIHR0KHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOm51bGw7cmV0dXJuIHQmJnQubGVuZ3RoPyJmdW5jdGlvbiIhPXR5cGVvZiBlP251bGw6KCJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1udWxsKSxmdW5jdGlvbihyKXt2YXIgaT1aKHIsdCxlKTtyZXR1cm4gbnVsbCE9aSYmbiYmKGk9bihpKSksaX0pOm51bGx9ZnVuY3Rpb24gZXQodCxlKXtyZXR1cm4gdC50LWUudH1mdW5jdGlvbiBudCh0LGUscixpLG8pe3ZhciB1LGE9IkAiPT09clswXSxsPSIjIj09PXJbMF0scz0kW3JdLGY9Rjtzd2l0Y2goYT8odT1yLnN1YnN0cigxKSxyPXUucmVwbGFjZShRLFgpKTpsJiYocj1yLnN1YnN0cigxKSksbihzKSl7Y2FzZSJmdW5jdGlvbiI6aWYoZj1zKGksbyxaLEsscixhLGUsdCksbClyZXR1cm4gZjticmVhaztjYXNlInN0cmluZyI6Zj10dChpLEoocykpO2JyZWFrO2Nhc2Uib2JqZWN0IjppZigoZj10dChpLEoocy5pKSxzLmYpKSYmImZ1bmN0aW9uIj09dHlwZW9mIHMudSlyZXR1cm4gcy51KGUsZixyLGEsdCl9cmV0dXJuIGY\/ZnVuY3Rpb24odCxlLG4pe2lmKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM10pcmV0dXJuIHQgaW5zdGFuY2VvZiBIP2Z1bmN0aW9uKHIpe3JldHVybiB0LnN0eWxlKGUsbihyKSl9OmZ1bmN0aW9uKHIpe3JldHVybiB0LnN0eWxlW2VdPW4ocil9O2lmKEFycmF5LmlzQXJyYXkoZSkpe3ZhciByPWUubGVuZ3RoO3JldHVybiBmdW5jdGlvbihpKXt2YXIgbz1uKGkpO2lmKG51bGw9PW8pZm9yKHZhciB1PTA7dTxyO3UrKyl0W3VdLnJlbW92ZUF0dHJpYnV0ZShlKTtlbHNlIGZvcih2YXIgYT0wO2E8cjthKyspdFthXS5zZXRBdHRyaWJ1dGUoZSxvKX19cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBpPW4ocik7bnVsbD09aT90LnJlbW92ZUF0dHJpYnV0ZShlKTp0LnNldEF0dHJpYnV0ZShlLGkpfX0oZSxyLGYsYSk6bnVsbH1mdW5jdGlvbiBydCh0LGUscixpKXtpZighaXx8Im9iamVjdCIhPT1uKGkpKXJldHVybiBudWxsO3ZhciBvPW51bGwsdT1udWxsO3JldHVybiBBcnJheS5pc0FycmF5KGkpP3U9ZnVuY3Rpb24odCl7aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm4gbnVsbDtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmUmJih0W2VdLmU9Syh0W2VdLmUpKTtyZXR1cm4gdC5zb3J0KGV0KX0oaSk6KHU9aS5rZXlzLG89aS5kYXRhfHxudWxsKSx1P250KHQsZSxyLHUsbyk6bnVsbH1mdW5jdGlvbiBpdCh0LGUsbil7aWYoIW4pcmV0dXJuIG51bGw7dmFyIHI9W107Zm9yKHZhciBpIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIG89cnQodCxlLGksbltpXSk7byYmci5wdXNoKG8pfXJldHVybiByLmxlbmd0aD9yOm51bGx9ZnVuY3Rpb24gb3QodCxlKXtpZighZS5zZXR0aW5ncy5kdXJhdGlvbnx8ZS5zZXR0aW5ncy5kdXJhdGlvbjwwKXJldHVybiBudWxsO3ZhciBuLHIsaSxvLHUsYT1mdW5jdGlvbih0LGUpe2lmKCFlKXJldHVybiBudWxsO3ZhciBuPVtdO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciByPWUubGVuZ3RoLGk9MDtpPHI7aSsrKXt2YXIgbz1lW2ldO2lmKDI9PT1vLmxlbmd0aCl7dmFyIHU9bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIG9bMF0pdT10LmdldEVsZW1lbnRCeUlkKG9bMF0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShvWzBdKSl7dT1bXTtmb3IodmFyIGE9MDthPG9bMF0ubGVuZ3RoO2ErKylpZigic3RyaW5nIj09dHlwZW9mIG9bMF1bYV0pe3ZhciBsPXQuZ2V0RWxlbWVudEJ5SWQob1swXVthXSk7bCYmdS5wdXNoKGwpfXU9dS5sZW5ndGg\/MT09PXUubGVuZ3RoP3VbMF06bmV3IEgodSk6bnVsbH1pZih1KXt2YXIgcz1pdCh0LHUsb1sxXSk7cyYmKG49bi5jb25jYXQocykpfX19ZWxzZSBmb3IodmFyIGYgaW4gZSlpZihlLmhhc093blByb3BlcnR5KGYpKXt2YXIgYz10LmdldEVsZW1lbnRCeUlkKGYpO2lmKGMpe3ZhciBoPWl0KHQsYyxlW2ZdKTtoJiYobj1uLmNvbmNhdChoKSl9fXJldHVybiBuLmxlbmd0aD9uOm51bGx9KHQsZS5lbGVtZW50cyk7cmV0dXJuIGE\/KG49YSxyPWUuc2V0dGluZ3MsaT1yLmR1cmF0aW9uLG89bi5sZW5ndGgsdT1udWxsLGZ1bmN0aW9uKHQsZSl7dmFyIGE9ci5pdGVyYXRpb25zfHwxLzAsbD0oci5hbHRlcm5hdGUmJmElMj09MCleci5kaXJlY3Rpb24+MD9pOjAscz10JWksZj0xKyh0LXMpL2k7ZSo9ci5kaXJlY3Rpb24sci5hbHRlcm5hdGUmJmYlMj09MCYmKGU9LWUpO3ZhciBjPSExO2lmKGY+YSlzPWwsYz0hMCwtMT09PXIuZmlsbCYmKHM9ci5kaXJlY3Rpb24+MD8wOmkpO2Vsc2UgaWYoZTwwJiYocz1pLXMpLHM9PT11KXJldHVybiExO3U9cztmb3IodmFyIGg9MDtoPG87aCsrKW5baF0ocyk7cmV0dXJuIGN9KTpudWxsfWZ1bmN0aW9uIHV0KHQsZSl7Zm9yKHZhciBuPWUucXVlcnlTZWxlY3RvckFsbCgic3ZnIikscj0wO3I8bi5sZW5ndGg7cisrKWlmKG5bcl0uaWQ9PT10LnJvb3QmJiFuW3JdLnN2Z2F0b3JBbmltYXRpb24pcmV0dXJuIG5bcl0uc3ZnYXRvckFuaW1hdGlvbj0hMCxuW3JdO3JldHVybiBudWxsfWZ1bmN0aW9uIGF0KHQpe3ZhciBlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnNoYWRvd1Jvb3R9O3JldHVybiBkb2N1bWVudD9BcnJheS5mcm9tKHQucXVlcnlTZWxlY3RvckFsbCgiOm5vdCgiK1siYSIsImFyZWEiLCJhdWRpbyIsImJyIiwiY2FudmFzIiwiY2lyY2xlIiwiZGF0YWxpc3QiLCJlbWJlZCIsImciLCJoZWFkIiwiaHIiLCJpZnJhbWUiLCJpbWciLCJpbnB1dCIsImxpbmsiLCJvYmplY3QiLCJwYXRoIiwicG9seWdvbiIsInJlY3QiLCJzY3JpcHQiLCJzb3VyY2UiLCJzdHlsZSIsInN2ZyIsInRpdGxlIiwidHJhY2siLCJ2aWRlbyJdLmpvaW4oKSsiKSIpKS5maWx0ZXIoZSkubWFwKGUpOltdfWZ1bmN0aW9uIGx0KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpkb2N1bWVudCxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLHI9dXQodCxlKTtpZihyKXJldHVybiByO2lmKG4+PTIwKXJldHVybiBudWxsO2Zvcih2YXIgaT1hdChlKSxvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciB1PWx0KHQsaVtvXSxuKzEpO2lmKHUpcmV0dXJuIHV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gc3QodCxlKXtpZigkPWUsIXR8fCF0LnJvb3R8fCFBcnJheS5pc0FycmF5KHQuYW5pbWF0aW9ucykpcmV0dXJuIG51bGw7dmFyIG49bHQodCk7aWYoIW4pcmV0dXJuIG51bGw7dmFyIHI9dC5hbmltYXRpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG90KG4sdCl9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hIXR9KSk7cmV0dXJuIHIubGVuZ3RoP3tzdmc6bixhbmltYXRpb25zOnIsYW5pbWF0aW9uU2V0dGluZ3M6dC5hbmltYXRpb25TZXR0aW5ncyxvcHRpb25zOnQub3B0aW9uc3x8dm9pZCAwfTpudWxsfWZ1bmN0aW9uIGZ0KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOk51bWJlcixyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXToidW5kZWZpbmVkIiE9dHlwZW9mIEJpZ0ludCYmQmlnSW50LGk9IjB4IisodC5yZXBsYWNlKC9bXjAtOWEtZkEtRl0rL2csIiIpfHwyNyk7cmV0dXJuIGUmJnImJm4uaXNTYWZlSW50ZWdlciYmIW4uaXNTYWZlSW50ZWdlcigraSk\/bihyKGkpKSVlK2U6K2l9ZnVuY3Rpb24gY3QodCxlLG4pe3JldHVybiF0fHwhbnx8ZT50Lmxlbmd0aD90OnQuc3Vic3RyaW5nKDAsZSkrY3QodC5zdWJzdHJpbmcoZSsxKSxuLG4pfWZ1bmN0aW9uIGh0KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToyNztyZXR1cm4hdHx8dCVlP3QlZTpbMCwxXS5pbmNsdWRlcyhlKT9lOmh0KHQvZSxlKX1mdW5jdGlvbiB2dCh0LGUsbil7aWYodCYmdC5sZW5ndGgpe3ZhciByPWZ0KG4pLGk9aHQocikrNSxvPWN0KHQsaHQociw1KSxpKTtyZXR1cm4gbz1vLnJlcGxhY2UoL1x4N2MkL2csIj09IikucmVwbGFjZSgvXHgyZiQvZywiPSIpLG89ZnVuY3Rpb24odCxlLG4pe3ZhciByPSsoIjB4Iit0LnN1YnN0cmluZygwLDQpKTt0PXQuc3Vic3RyaW5nKDQpO2Zvcih2YXIgaT1mdChlLHIpJXIrbiUyNyxvPVtdLHU9MDt1PHQubGVuZ3RoO3UrPTIpaWYoInwiIT09dFt1XSl7dmFyIGE9KygiMHgiK3RbdV0rdFt1KzFdKS1pO28ucHVzaChhKX1lbHNle3ZhciBsPSsoIjB4Iit0LnN1YnN0cmluZyh1KzEsdSsxKzQpKS1pO3UrPTMsby5wdXNoKGwpfXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxvKX0obz0obz1hdG9iKG8pKS5yZXBsYWNlKC9bXHg0MS1ceDVBXS9nLCIiKSxlLHIpLG89SlNPTi5wYXJzZShvKX19dmFyIGR0PVt7a2V5OiJhbHRlcm5hdGUiLGRlZjohMX0se2tleToiZmlsbCIsZGVmOjF9LHtrZXk6Iml0ZXJhdGlvbnMiLGRlZjowfSx7a2V5OiJkaXJlY3Rpb24iLGRlZjoxfSx7a2V5OiJzcGVlZCIsZGVmOjF9LHtrZXk6ImZwcyIsZGVmOjEwMH1dLHl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3ZhciBpPXRoaXMsbz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtyKHRoaXMsdCksdGhpcy5faWQ9MCx0aGlzLl9ydW5uaW5nPSExLHRoaXMuX3JvbGxpbmdCYWNrPSExLHRoaXMuX2FuaW1hdGlvbnM9ZSx0aGlzLl9zZXR0aW5ncz1uLCghb3x8bzwiMjAyMi0wNS0wMiIpJiZkZWxldGUgdGhpcy5fc2V0dGluZ3Muc3BlZWQsZHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5fc2V0dGluZ3NbdC5rZXldPWkuX3NldHRpbmdzW3Qua2V5XXx8dC5kZWZ9KSksdGhpcy5kdXJhdGlvbj1uLmR1cmF0aW9uLHRoaXMub2Zmc2V0PW4ub2Zmc2V0fHwwLHRoaXMucm9sbGJhY2tTdGFydE9mZnNldD0wfXJldHVybiBvKHQsW3trZXk6ImFsdGVybmF0ZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldHRpbmdzLmFsdGVybmF0ZX19LHtrZXk6ImZpbGwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXR0aW5ncy5maWxsfX0se2tleToiaXRlcmF0aW9ucyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldHRpbmdzLml0ZXJhdGlvbnN9fSx7a2V5OiJkaXJlY3Rpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXR0aW5ncy5kaXJlY3Rpb259fSx7a2V5OiJzcGVlZCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldHRpbmdzLnNwZWVkfX0se2tleToiZnBzIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0dGluZ3MuZnBzfX0se2tleToibWF4RmluaXRlRHVyYXRpb24iLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdGlvbnM+MD90aGlzLml0ZXJhdGlvbnMqdGhpcy5kdXJhdGlvbjp0aGlzLmR1cmF0aW9ufX0se2tleToiX2FwcGx5Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9LG49dGhpcy5fYW5pbWF0aW9ucyxyPW4ubGVuZ3RoLGk9MCxvPTA7bzxyO28rKyllW29dP2krKzooZVtvXT1uW29dKHQsMSksZVtvXSYmaSsrKTtyZXR1cm4gaX19LHtrZXk6Il9yb2xsYmFjayIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPTEvMCxyPW51bGw7dGhpcy5yb2xsYmFja1N0YXJ0T2Zmc2V0PXQsdGhpcy5fcm9sbGluZ0JhY2s9ITAsdGhpcy5fcnVubmluZz0hMDt0aGlzLl9pZD13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbiBpKG8pe2lmKGUuX3JvbGxpbmdCYWNrKXtudWxsPT1yJiYocj1vKTt2YXIgdT1NYXRoLnJvdW5kKHQtKG8tcikqZS5zcGVlZCk7aWYodT5lLmR1cmF0aW9uJiZuIT09MS8wKXt2YXIgYT0hIWUuYWx0ZXJuYXRlJiZ1L2UuZHVyYXRpb24lMj4xLGw9dSVlLmR1cmF0aW9uO3U9KGwrPWE\/ZS5kdXJhdGlvbjowKXx8ZS5kdXJhdGlvbn12YXIgcz0oZS5mcHM\/MWUzL2UuZnBzOjApKmUuc3BlZWQsZj1NYXRoLm1heCgwLHUpO2Y8PW4tcyYmKGUub2Zmc2V0PWYsbj1mLGUuX2FwcGx5KGYpKTt2YXIgYz1lLml0ZXJhdGlvbnM+MCYmLTE9PT1lLmZpbGwmJnU+PWUubWF4RmluaXRlRHVyYXRpb247KHU8PTB8fGUub2Zmc2V0PHV8fGMpJiZlLnN0b3AoKSxlLl9pZD13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkpfX0pKX19LHtrZXk6Il9zdGFydCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOjAsbj0tMS8wLHI9bnVsbCxpPXt9O3RoaXMuX3J1bm5pbmc9ITA7dmFyIG89ZnVuY3Rpb24gbyh1KXtudWxsPT1yJiYocj11KTt2YXIgYT1NYXRoLnJvdW5kKCh1LXIpKnQuc3BlZWQrZSksbD0odC5mcHM\/MWUzL3QuZnBzOjApKnQuc3BlZWQ7aWYoYT49bitsJiYhdC5fcm9sbGluZ0JhY2smJih0Lm9mZnNldD1hLG49YSx0Ll9hcHBseShhLGkpPT09dC5fYW5pbWF0aW9ucy5sZW5ndGgpKXJldHVybiB2b2lkIHQucGF1c2UoITApO3QuX2lkPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobyl9O3RoaXMuX2lkPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobyl9fSx7a2V5OiJfcGF1c2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5faWQmJndpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9pZCksdGhpcy5fcnVubmluZz0hMX19LHtrZXk6InBsYXkiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX3J1bm5pbmcpcmV0dXJuIHRoaXMuX3JvbGxpbmdCYWNrP3RoaXMuX3JvbGxiYWNrKHRoaXMub2Zmc2V0KTp0aGlzLl9zdGFydCh0aGlzLm9mZnNldCl9fSx7a2V5OiJzdG9wIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX3BhdXNlKCksdGhpcy5vZmZzZXQ9MCx0aGlzLnJvbGxiYWNrU3RhcnRPZmZzZXQ9MCx0aGlzLl9yb2xsaW5nQmFjaz0hMSx0aGlzLl9hcHBseSgwKX19LHtrZXk6InJlYWNoZWRUb0VuZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRpb25zPjAmJnRoaXMub2Zmc2V0Pj10aGlzLml0ZXJhdGlvbnMqdGhpcy5kdXJhdGlvbn19LHtrZXk6InJlc3RhcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXTt0aGlzLnN0b3AodCksdGhpcy5wbGF5KHQpfX0se2tleToicGF1c2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fcGF1c2UoKX19LHtrZXk6InJldmVyc2UiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kaXJlY3Rpb249LXRoaXMuZGlyZWN0aW9ufX1dLFt7a2V5OiJidWlsZCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtkZWxldGUgdC5hbmltYXRpb25TZXR0aW5ncyx0Lm9wdGlvbnM9dnQodC5vcHRpb25zLHQucm9vdCwiOTFjODBkNzciKSx0LmFuaW1hdGlvbnMubWFwKChmdW5jdGlvbihlKXtlLnNldHRpbmdzPXZ0KGUucyx0LnJvb3QsIjkxYzgwZDc3IiksZGVsZXRlIGUucyx0LmFuaW1hdGlvblNldHRpbmdzfHwodC5hbmltYXRpb25TZXR0aW5ncz1lLnNldHRpbmdzKX0pKTt2YXIgbj10LnZlcnNpb247aWYoISh0PXN0KHQsZSkpKXJldHVybiBudWxsO3ZhciByPXQub3B0aW9uc3x8e30saT1uZXcgdGhpcyh0LmFuaW1hdGlvbnMsdC5hbmltYXRpb25TZXR0aW5ncyxuKTtyZXR1cm57ZWw6dC5zdmcsb3B0aW9uczpyLHBsYXllcjppfX19LHtrZXk6InB1c2giLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmJ1aWxkKHQpfX0se2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9d2luZG93Ll9fU1ZHQVRPUl9QTEFZRVJfXyYmd2luZG93Ll9fU1ZHQVRPUl9QTEFZRVJfX1siOTFjODBkNzciXTtBcnJheS5pc0FycmF5KGUpJiZlLnNwbGljZSgwKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5idWlsZChlKX0pKX19XSksdH0oKTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPVsibXMiLCJtb3oiLCJ3ZWJraXQiLCJvIl0sbj0wO248ZS5sZW5ndGgmJiF3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lOysrbil3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPXdpbmRvd1tlW25dKyJSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU9d2luZG93W2Vbbl0rIkNhbmNlbEFuaW1hdGlvbkZyYW1lIl18fHdpbmRvd1tlW25dKyJDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXTt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHwod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT1mdW5jdGlvbihlKXt2YXIgbj1EYXRlLm5vdygpLHI9TWF0aC5tYXgoMCwxNi0obi10KSksaT13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlKG4rcil9KSxyKTtyZXR1cm4gdD1uK3IsaX0sd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lPXdpbmRvdy5jbGVhclRpbWVvdXQpfSgpO3ZhciBndD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuLGkpe3IodGhpcyx0KTt2YXIgbz1mdW5jdGlvbih0KXt2YXIgZSxuLHIsaT10JiYxPT09KG51bGw9PT0oZT10Lm93bmVyRG9jdW1lbnQpfHx2b2lkIDA9PT1lfHxudWxsPT09KG49ZS5jaGlsZE5vZGVzKXx8dm9pZCAwPT09bj92b2lkIDA6bi5sZW5ndGgpJiZ3aW5kb3cucGFyZW50IT09d2luZG93LG89e2VsOnQsd2luZG93OndpbmRvd307aWYoIWkpcmV0dXJuIG87dHJ5e3I9d2luZG93LnBhcmVudC5kb2N1bWVudH1jYXRjaCh0KXtyZXR1cm4gb31yZXR1cm4gby53aW5kb3c9d2luZG93LnBhcmVudCxvLmVsPUFycmF5LmZyb20oci5xdWVyeVNlbGVjdG9yQWxsKCJpZnJhbWUsb2JqZWN0IikpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29udGVudFdpbmRvdz09PXdpbmRvd30pKVswXXx8by5lbCxvfShlKTtuPU1hdGgubWF4KDEsbnx8MSksbj1NYXRoLm1pbihuLDEwMCksdGhpcy5lbD1vLmVsLHRoaXMuX2hhbmRsZXJzPVtdLHRoaXMub25UaHJlc2hvbGRDaGFuZ2U9aSYmaS5jYWxsP2k6ZnVuY3Rpb24oKXt9LHRoaXMudGhyZXNob2xkUGVyY2VudD1ufHwxLHRoaXMuY3VycmVudFZpc2liaWxpdHk9bnVsbCx0aGlzLnZpc2liaWxpdHlDYWxjdWxhdG9yPWZ1bmN0aW9uKHQsZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOm4scj0hMSxpPW51bGwsbz1mdW5jdGlvbigpe2Zvcih2YXIgbz0wLHU9bi5pbm5lckhlaWdodCxhPTAsbD1uLmlubmVyV2lkdGgscz10LnBhcmVudE5vZGU7cyBpbnN0YW5jZW9mIEVsZW1lbnQ7KXt2YXIgZj1uLmdldENvbXB1dGVkU3R5bGUocyk7aWYoInZpc2libGUiIT09Zi5vdmVyZmxvd1l8fCJ2aXNpYmxlIiE9PWYub3ZlcmZsb3dYKXt2YXIgYz1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyJ2aXNpYmxlIiE9PWYub3ZlcmZsb3dZJiYobz1NYXRoLm1heChvLGMudG9wKSx1PU1hdGgubWluKHUsYy5ib3R0b20pKSwidmlzaWJsZSIhPT1mLm92ZXJmbG93WCYmKGE9TWF0aC5tYXgoYSxjLmxlZnQpLGw9TWF0aC5taW4obCxjLnJpZ2h0KSl9aWYocz09PXMucGFyZW50Tm9kZSlicmVhaztzPXMucGFyZW50Tm9kZX1yPSExO3ZhciBoPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdj1NYXRoLm1pbihoLmhlaWdodCxNYXRoLm1heCgwLG8taC50b3ApKSxkPU1hdGgubWluKGguaGVpZ2h0LE1hdGgubWF4KDAsaC5ib3R0b20tdSkpLHk9TWF0aC5taW4oaC53aWR0aCxNYXRoLm1heCgwLGEtaC5sZWZ0KSksZz1NYXRoLm1pbihoLndpZHRoLE1hdGgubWF4KDAsaC5yaWdodC1sKSkscD0oaC5oZWlnaHQtdi1kKS9oLmhlaWdodCxtPShoLndpZHRoLXktZykvaC53aWR0aCxiPU1hdGgucm91bmQocCptKjEwMCk7bnVsbCE9PWkmJmk9PT1ifHwoaT1iLGUoYikpfTtyZXR1cm4gZnVuY3Rpb24odCl7ciYmY2xlYXJUaW1lb3V0KHIpLHI9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gbygpfSksMTAwKX19KHRoaXMuZWwsdGhpcy5vblZpc2liaWxpdHlVcGRhdGUuYmluZCh0aGlzKSxvLndpbmRvdyksdGhpcy5iaW5kU2Nyb2xsV2F0Y2hlcnMoKSx0aGlzLnZpc2liaWxpdHlDYWxjdWxhdG9yKCl9cmV0dXJuIG8odCxbe2tleToiYmluZFNjcm9sbFdhdGNoZXJzIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmVsLnBhcmVudE5vZGU7dCYmKHRoaXMuX2hhbmRsZXJzLnB1c2goe2VsZW1lbnQ6dCxldmVudDoic2Nyb2xsIixoYW5kbGVyOnRoaXMudmlzaWJpbGl0eUNhbGN1bGF0b3J9KSx0LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy52aXNpYmlsaXR5Q2FsY3VsYXRvciksdCE9PXQucGFyZW50Tm9kZSYmdCE9PWRvY3VtZW50KTspdD10LnBhcmVudE5vZGV9fSx7a2V5OiJvblZpc2liaWxpdHlVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY3VycmVudFZpc2liaWxpdHk+PXRoaXMudGhyZXNob2xkUGVyY2VudCxuPXQ+PXRoaXMudGhyZXNob2xkUGVyY2VudDtpZihudWxsPT09dGhpcy5jdXJyZW50VmlzaWJpbGl0eXx8ZSE9PW4pcmV0dXJuIHRoaXMuY3VycmVudFZpc2liaWxpdHk9dCx2b2lkIHRoaXMub25UaHJlc2hvbGRDaGFuZ2Uobik7dGhpcy5jdXJyZW50VmlzaWJpbGl0eT10fX0se2tleToiZGVzdHJ1Y3QiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5faGFuZGxlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodC5ldmVudCx0LmhhbmRsZXIpfSkpfX1dKSx0fSgpO2Z1bmN0aW9uIHB0KHQpe3JldHVybiBwKHQpKyIifWZ1bmN0aW9uIG10KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiICI7cmV0dXJuIHQmJnQubGVuZ3RoP3QubWFwKHB0KS5qb2luKGUpOiIifWZ1bmN0aW9uIGJ0KHQpe3JldHVybiBwdCh0LngpKyIsIitwdCh0LnkpfWZ1bmN0aW9uIHd0KHQpe2lmKCF0KXJldHVybiJ0cmFuc3BhcmVudCI7aWYobnVsbD09dC5hfHx0LmE+PTEpe3ZhciBlPWZ1bmN0aW9uKHQpe3JldHVybiAxPT09KHQ9cGFyc2VJbnQodCkudG9TdHJpbmcoMTYpKS5sZW5ndGg\/IjAiK3Q6dH0sbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGFyQXQoMCk9PT10LmNoYXJBdCgxKX0scj1lKHQuciksaT1lKHQuZyksbz1lKHQuYik7cmV0dXJuIG4ocikmJm4oaSkmJm4obykmJihyPXIuY2hhckF0KDApLGk9aS5jaGFyQXQoMCksbz1vLmNoYXJBdCgwKSksIiMiK3IraStvfXJldHVybiJyZ2JhKCIrdC5yKyIsIit0LmcrIiwiK3QuYisiLCIrdC5hKyIpIn1mdW5jdGlvbiBrdCh0KXtyZXR1cm4gdD8idXJsKCMiK3QrIikiOiJub25lIn12YXIgX3Q9e2Y6bnVsbCxpOlYsdTpmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1lKG4pO3Quc2V0QXR0cmlidXRlKCJyeCIscHQoci54KSksdC5zZXRBdHRyaWJ1dGUoInJ5IixwdChyLnkpKX19fSxBdD17ZjpudWxsLGk6ZnVuY3Rpb24odCxlLG4pe3JldHVybiAwPT09dD9lOjE9PT10P246e3dpZHRoOkModCxlLndpZHRoLG4ud2lkdGgpLGhlaWdodDpDKHQsZS5oZWlnaHQsbi5oZWlnaHQpfX0sdTpmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj1lKG4pO3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIscHQoci53aWR0aCkpLHQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHB0KHIuaGVpZ2h0KSl9fX07T2JqZWN0LmZyZWV6ZSh7TToyLEw6MixaOjAsSDoxLFY6MSxDOjYsUTo0LFQ6MixTOjQsQTo3fSk7dmFyIHh0PXt9LE90PW51bGw7ZnVuY3Rpb24gU3QodCl7dmFyIGU9ZnVuY3Rpb24oKXtpZihPdClyZXR1cm4gT3Q7aWYoIm9iamVjdCIhPT0oInVuZGVmaW5lZCI9PXR5cGVvZiBkb2N1bWVudD8idW5kZWZpbmVkIjpuKGRvY3VtZW50KSl8fCFkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMpcmV0dXJue307dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpO3JldHVybiB0JiZ0LnN0eWxlPyh0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS5vcGFjaXR5PSIwLjAxIix0LnN0eWxlLnpJbmRleD0iLTk5OTkiLHQuc3R5bGUubGVmdD0iLTk5OTlweCIsdC5zdHlsZS53aWR0aD0iMXB4Iix0LnN0eWxlLmhlaWdodD0iMXB4IixPdD17c3ZnOnR9KTp7fX0oKS5zdmc7aWYoIWUpcmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBudWxsfTt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5uYW1lc3BhY2VVUkksInBhdGgiKTtyLnNldEF0dHJpYnV0ZU5TKG51bGwsImQiLHQpLHIuc2V0QXR0cmlidXRlTlMobnVsbCwiZmlsbCIsIm5vbmUiKSxyLnNldEF0dHJpYnV0ZU5TKG51bGwsInN0cm9rZSIsIm5vbmUiKSxlLmFwcGVuZENoaWxkKHIpO3ZhciBpPXIuZ2V0VG90YWxMZW5ndGgoKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9ci5nZXRQb2ludEF0TGVuZ3RoKGkqdCk7cmV0dXJue3g6ZS54LHk6ZS55fX19ZnVuY3Rpb24gRXQodCl7cmV0dXJuIHh0W3RdP3h0W3RdOnh0W3RdPVN0KHQpfWZ1bmN0aW9uIGp0KHQsZSxuLHIpe2lmKCF0fHwhcilyZXR1cm4hMTt2YXIgaT1bIk0iLHQueCx0LnldO2lmKGUmJm4mJihpLnB1c2goIkMiKSxpLnB1c2goZS54KSxpLnB1c2goZS55KSxpLnB1c2gobi54KSxpLnB1c2gobi55KSksZT8hbjpuKXt2YXIgbz1lfHxuO2kucHVzaCgiUSIpLGkucHVzaChvLngpLGkucHVzaChvLnkpfXJldHVybiBlfHxufHxpLnB1c2goIkwiKSxpLnB1c2goci54KSxpLnB1c2goci55KSxpLmpvaW4oIiAiKX1mdW5jdGlvbiBNdCh0LGUsbixyKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06MSxvPWp0KHQsZSxuLHIpLHU9RXQobyk7dHJ5e3JldHVybiB1KGkpfWNhdGNoKHQpe3JldHVybiBudWxsfX1mdW5jdGlvbiBQdCh0LGUsbil7cmV0dXJuIHQrKGUtdCkqbn1mdW5jdGlvbiBCdCh0LGUsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJmFyZ3VtZW50c1szXSxpPXt4OlB0KHQueCxlLngsbikseTpQdCh0LnksZS55LG4pfTtyZXR1cm4gciYmKGkuYT1JdCh0LGUpKSxpfWZ1bmN0aW9uIEl0KHQsZSl7cmV0dXJuIE1hdGguYXRhbjIoZS55LXQueSxlLngtdC54KX1mdW5jdGlvbiBUdCh0LGUsbixyKXt2YXIgaT0xLXI7cmV0dXJuIGkqaSp0KzIqaSpyKmUrcipyKm59ZnVuY3Rpb24gTnQodCxlLG4scil7cmV0dXJuIDIqKDEtcikqKGUtdCkrMipyKihuLWUpfWZ1bmN0aW9uIFJ0KHQsZSxuLHIpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg+NCYmdm9pZCAwIT09YXJndW1lbnRzWzRdJiZhcmd1bWVudHNbNF0sbz1NdCh0LGUsbnVsbCxuLHIpO3JldHVybiBvfHwobz17eDpUdCh0LngsZS54LG4ueCxyKSx5OlR0KHQueSxlLnksbi55LHIpfSksaSYmKG8uYT1GdCh0LGUsbixyKSksb31mdW5jdGlvbiBGdCh0LGUsbixyKXtyZXR1cm4gTWF0aC5hdGFuMihOdCh0LnksZS55LG4ueSxyKSxOdCh0LngsZS54LG4ueCxyKSl9ZnVuY3Rpb24gRHQodCxlLG4scixpKXt2YXIgbz1pKmk7cmV0dXJuIGkqbyooci10KzMqKGUtbikpKzMqbyoodCtuLTIqZSkrMyppKihlLXQpK3R9ZnVuY3Rpb24gQ3QodCxlLG4scixpKXt2YXIgbz0xLWk7cmV0dXJuIDMqKG8qbyooZS10KSsyKm8qaSoobi1lKStpKmkqKHItbikpfWZ1bmN0aW9uIHF0KHQsZSxuLHIsaSl7dmFyIG89YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0mJmFyZ3VtZW50c1s1XSx1PU10KHQsZSxuLHIsaSk7cmV0dXJuIHV8fCh1PXt4OkR0KHQueCxlLngsbi54LHIueCxpKSx5OkR0KHQueSxlLnksbi55LHIueSxpKX0pLG8mJih1LmE9THQodCxlLG4scixpKSksdX1mdW5jdGlvbiBMdCh0LGUsbixyLGkpe3JldHVybiBNYXRoLmF0YW4yKEN0KHQueSxlLnksbi55LHIueSxpKSxDdCh0LngsZS54LG4ueCxyLngsaSkpfWZ1bmN0aW9uIFZ0KHQsZSxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXSYmYXJndW1lbnRzWzNdO2lmKHp0KGUpKXtpZihZdChuKSlyZXR1cm4gUnQoZSxuLnN0YXJ0LG4sdCxyKX1lbHNlIGlmKHp0KG4pKXtpZihVdChlKSlyZXR1cm4gUnQoZSxlLmVuZCxuLHQscil9ZWxzZXtpZihVdChlKSlyZXR1cm4gWXQobik\/cXQoZSxlLmVuZCxuLnN0YXJ0LG4sdCxyKTpSdChlLGUuZW5kLG4sdCxyKTtpZihZdChuKSlyZXR1cm4gUnQoZSxuLnN0YXJ0LG4sdCxyKX1yZXR1cm4gQnQoZSxuLHQscil9ZnVuY3Rpb24gR3QodCxlLG4pe3ZhciByPVZ0KHQsZSxuLCEwKTtyZXR1cm4gci5hPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSYmYXJndW1lbnRzWzFdP3QrTWF0aC5QSTp0fShyLmEpL2Iscn1mdW5jdGlvbiB6dCh0KXtyZXR1cm4hdC50eXBlfHwiY29ybmVyIj09PXQudHlwZX1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gbnVsbCE9dC5zdGFydCYmIXp0KHQpfWZ1bmN0aW9uIFV0KHQpe3JldHVybiBudWxsIT10LmVuZCYmIXp0KHQpfXZhciBXdD1uZXcgUjt2YXIgJHQ9e2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQ\/dC5qb2luKCIgIik6IiJ9LGk6ZnVuY3Rpb24odCxlLHIpe2lmKDA9PT10KXJldHVybiBlO2lmKDE9PT10KXJldHVybiByO3ZhciBpPWUubGVuZ3RoO2lmKGkhPT1yLmxlbmd0aClyZXR1cm4gRih0LGUscik7Zm9yKHZhciBvLHU9bmV3IEFycmF5KGkpLGE9MDthPGk7YSsrKXtpZigobz1uKGVbYV0pKSE9PW4oclthXSkpcmV0dXJuIEYodCxlLHIpO2lmKCJudW1iZXIiPT09byl1W2FdPUQodCxlW2FdLHJbYV0pO2Vsc2V7aWYoZVthXSE9PXJbYV0pcmV0dXJuIEYodCxlLHIpO3VbYV09ZVthXX19cmV0dXJuIHV9fSxIdD17ZjpudWxsLGk6WSx1OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPWUobik7dC5zZXRBdHRyaWJ1dGUoIngxIixwdChyWzBdKSksdC5zZXRBdHRyaWJ1dGUoInkxIixwdChyWzFdKSksdC5zZXRBdHRyaWJ1dGUoIngyIixwdChyWzJdKSksdC5zZXRBdHRyaWJ1dGUoInkyIixwdChyWzNdKSl9fX0sUXQ9e2Y6cHQsaTpEfSxYdD17ZjpwdCxpOnF9LEp0PXtmOmZ1bmN0aW9uKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiICI7cmV0dXJuIHQmJnQubGVuZ3RoPjAmJih0PXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcCh0LDQpfSkpKSxtdCh0LGUpfSxpOmZ1bmN0aW9uKHQsZSxuKXt2YXIgcixpLG8sdT1lLmxlbmd0aCxhPW4ubGVuZ3RoO2lmKHUhPT1hKWlmKDA9PT11KWU9VSh1PWEsMCk7ZWxzZSBpZigwPT09YSlhPXUsbj1VKHUsMCk7ZWxzZXt2YXIgbD0obz0ocj11KSooaT1hKS9mdW5jdGlvbih0LGUpe2Zvcih2YXIgbjtlOyluPWUsZT10JWUsdD1uO3JldHVybiB0fHwxfShyLGkpKTwwPy1vOm87ZT1XKGUsTWF0aC5mbG9vcihsL3UpKSxuPVcobixNYXRoLmZsb29yKGwvYSkpLHU9YT1sfWZvcih2YXIgcz1bXSxmPTA7Zjx1O2YrKylzLnB1c2gocChDKHQsZVtmXSxuW2ZdKSkpO3JldHVybiBzfX07ZnVuY3Rpb24gS3QodCxlLG4pe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LnY7aWYoIXJ8fCJnIiE9PXIudHx8ci5zfHwhci52fHwhci5yKXJldHVybiB0O3ZhciBpPW4uZ2V0RWxlbWVudEJ5SWQoci5yKSxvPWkmJmkucXVlcnlTZWxlY3RvckFsbCgic3RvcCIpfHxbXTtyZXR1cm4gci5zPXIudi5tYXAoKGZ1bmN0aW9uKHQsZSl7dmFyIG49b1tlXSYmb1tlXS5nZXRBdHRyaWJ1dGUoIm9mZnNldCIpO3JldHVybntjOnQsbzpuPXAocGFyc2VJbnQobikvMTAwKX19KSksZGVsZXRlIHIudix0fSh0LDAsbil9KSl9dmFyIFp0PXtndDoiZ3JhZGllbnRUcmFuc2Zvcm0iLGM6e3g6ImN4Iix5OiJjeSJ9LHJkOiJyIixmOnt4OiJ4MSIseToieTEifSx0bzp7eDoieDIiLHk6InkyIn19O2Z1bmN0aW9uIHRlKHQsZSxyLGksbyx1LGEsbCl7cmV0dXJuIEt0KHQsMCxsKSxlPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHIsaSxvLHU9dC5sZW5ndGgtMSxhPXt9LGw9MDtsPD11O2wrKykocj10W2xdKS5lJiYoci5lPWUoci5lKSksci52JiYiZyI9PT0oaT1yLnYpLnQmJmkuciYmKG89bi5nZXRFbGVtZW50QnlJZChpLnIpKSYmKGFbaS5yXT17ZTpvLHM6by5xdWVyeVNlbGVjdG9yQWxsKCJzdG9wIil9KTtyZXR1cm4gYX0odCxpLGwpLGZ1bmN0aW9uKGkpe3ZhciBvPXIoaSx0LGVlKTtpZighbylyZXR1cm4ibm9uZSI7aWYoImMiPT09by50KXJldHVybiB3dChvLnYpO2lmKCJnIj09PW8udCl7aWYoIWVbby5yXSlyZXR1cm4ga3Qoby5yKTt2YXIgdT1lW28ucl07cmV0dXJuIGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQucyxyPW4ubGVuZ3RoO3I8ZS5sZW5ndGg7cisrKXt2YXIgaT1uW24ubGVuZ3RoLTFdLmNsb25lTm9kZSgpO2kuaWQ9aWUoaS5pZCksdC5lLmFwcGVuZENoaWxkKGkpLG49dC5zPXQuZS5xdWVyeVNlbGVjdG9yQWxsKCJzdG9wIil9Zm9yKHZhciBvPTAsdT1uLmxlbmd0aCxhPWUubGVuZ3RoLTE7bzx1O28rKyluW29dLnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsd3QoZVtNYXRoLm1pbihvLGEpXS5jKSksbltvXS5zZXRBdHRyaWJ1dGUoIm9mZnNldCIsZVtNYXRoLm1pbihvLGEpXS5vKX0odSxvLnMpLE9iamVjdC5rZXlzKFp0KS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih2b2lkIDAhPT1vW3RdKWlmKCJvYmplY3QiIT09bihadFt0XSkpe3ZhciBlLHI9Imd0Ij09PXQ\/KGU9b1t0XSxBcnJheS5pc0FycmF5KGUpPyJtYXRyaXgoIitlLmpvaW4oIiAiKSsiKSI6IiIpOm9bdF0saT1adFt0XTt1LmUuc2V0QXR0cmlidXRlKGkscil9ZWxzZSBPYmplY3Qua2V5cyhadFt0XSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09b1t0XVtlXSl7dmFyIG49b1t0XVtlXSxyPVp0W3RdW2VdO3UuZS5zZXRBdHRyaWJ1dGUocixuKX19KSl9KSksa3Qoby5yKX1yZXR1cm4ibm9uZSJ9fWZ1bmN0aW9uIGVlKHQsbixyKXtpZigwPT09dClyZXR1cm4gbjtpZigxPT09dClyZXR1cm4gcjtpZihuJiZyKXt2YXIgaT1uLnQ7aWYoaT09PXIudClzd2l0Y2gobi50KXtjYXNlImMiOnJldHVybnt0Omksdjp6KHQsbi52LHIudil9O2Nhc2UiZyI6aWYobi5yPT09ci5yKXt2YXIgbz17dDppLHM6bmUodCxuLnMsci5zKSxyOm4ucn07cmV0dXJuIG4uZ3QmJnIuZ3QmJihvLmd0PVkodCxuLmd0LHIuZ3QpKSxuLmM\/KG8uYz1MKHQsbi5jLHIuYyksby5yZD1DKHQsbi5yZCxyLnJkKSk6bi5mJiYoby5mPUwodCxuLmYsci5mKSxvLnRvPUwodCxuLnRvLHIudG8pKSxvfX1pZigiYyI9PT1uLnQmJiJnIj09PXIudHx8ImMiPT09ci50JiYiZyI9PT1uLnQpe3ZhciB1PSJjIj09PW4udD9uOnIsYT0iZyI9PT1uLnQ\/ZSh7fSxuKTplKHt9LHIpLGw9YS5zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue2M6dS52LG86dC5vfX0pKTtyZXR1cm4gYS5zPSJjIj09PW4udD9uZSh0LGwsYS5zKTpuZSh0LGEucyxsKSxhfX1yZXR1cm4gRih0LG4scil9ZnVuY3Rpb24gbmUodCxlLG4pe2lmKGUubGVuZ3RoPT09bi5sZW5ndGgpcmV0dXJuIGUubWFwKChmdW5jdGlvbihlLHIpe3JldHVybiByZSh0LGUsbltyXSl9KSk7Zm9yKHZhciByPU1hdGgubWF4KGUubGVuZ3RoLG4ubGVuZ3RoKSxpPVtdLG89MDtvPHI7bysrKXt2YXIgdT1yZSh0LGVbTWF0aC5taW4obyxlLmxlbmd0aC0xKV0sbltNYXRoLm1pbihvLG4ubGVuZ3RoLTEpXSk7aS5wdXNoKHUpfXJldHVybiBpfWZ1bmN0aW9uIHJlKHQsZSxuKXtyZXR1cm57bzpxKHQsZS5vLG4ub3x8MCksYzp6KHQsZS5jLG4uY3x8e30pfX1mdW5jdGlvbiBpZSh0KXtyZXR1cm4gdC5yZXBsYWNlKC8tZmlsbC0oWzAtOV0rKSQvLChmdW5jdGlvbih0LGUpe3JldHVybiItZmlsbC0iKygrZSsxKX0pKX1mdW5jdGlvbiBvZSh0LGUsbil7cmV0dXJuIDA9PT10P2U6MT09PXQ\/bjp7Ymx1cjpWKHQsZS5ibHVyLG4uYmx1ciksb2Zmc2V0OkwodCxlLm9mZnNldCxuLm9mZnNldCksY29sb3I6eih0LGUuY29sb3Isbi5jb2xvcil9fXZhciB1ZT17Ymx1cjpWLGJyaWdodG5lc3M6Qyxjb250cmFzdDpDLCJkcm9wLXNoYWRvdyI6b2UsImlubmVyLXNoYWRvdyI6b2UsZ3JheXNjYWxlOkMsImh1ZS1yb3RhdGUiOkQsaW52ZXJ0OkMsb3BhY2l0eTpDLHNhdHVyYXRlOkMsc2VwaWE6Q307ZnVuY3Rpb24gYWUodCxlLG4pe2lmKDA9PT10KXJldHVybiBlO2lmKDE9PT10KXJldHVybiBuO3ZhciByPWUubGVuZ3RoO2lmKHIhPT1uLmxlbmd0aClyZXR1cm4gRih0LGUsbik7Zm9yKHZhciBpLG89W10sdT0wO3U8cjt1Kyspe2lmKGVbdV0udHlwZSE9PW5bdV0udHlwZSlyZXR1cm4gZTtpZighKGk9dWVbZVt1XS50eXBlXSkpcmV0dXJuIEYodCxlLG4pO28ucHVzaCh7dHlwZTplLnR5cGUsdmFsdWU6aSh0LGVbdV0udmFsdWUsblt1XS52YWx1ZSl9KX1yZXR1cm4gb312YXIgbGU9e2JsdXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ\/ZnVuY3Rpb24oZSl7dC5zZXRBdHRyaWJ1dGUoInN0ZERldmlhdGlvbiIsYnQoZSkpfTpudWxsfSxicmlnaHRuZXNzOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4odD1mZShuLGUpKT9mdW5jdGlvbihlKXtlPXB0KGUpLHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoInNsb3BlIixlKX0pKX06bnVsbH0sY29udHJhc3Q6ZnVuY3Rpb24odCxlLG4pe3JldHVybih0PWZlKG4sZSkpP2Z1bmN0aW9uKGUpe3ZhciBuPXB0KCgxLWUpLzIpO2U9cHQoZSksdC5tYXAoKGZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKCJzbG9wZSIsZSksdC5zZXRBdHRyaWJ1dGUoImludGVyY2VwdCIsbil9KSl9Om51bGx9LCJkcm9wLXNoYWRvdyI6ZnVuY3Rpb24odCxlLG4pe3ZhciByPW4uZ2V0RWxlbWVudEJ5SWQoZSsiLWJsdXIiKTtpZighcilyZXR1cm4gbnVsbDt2YXIgaT1uLmdldEVsZW1lbnRCeUlkKGUrIi1vZmZzZXQiKTtpZighaSlyZXR1cm4gbnVsbDt2YXIgbz1uLmdldEVsZW1lbnRCeUlkKGUrIi1mbG9vZCIpO3JldHVybiBvP2Z1bmN0aW9uKHQpe3Iuc2V0QXR0cmlidXRlKCJzdGREZXZpYXRpb24iLGJ0KHQuYmx1cikpLGkuc2V0QXR0cmlidXRlKCJkeCIscHQodC5vZmZzZXQueCkpLGkuc2V0QXR0cmlidXRlKCJkeSIscHQodC5vZmZzZXQueSkpLG8uc2V0QXR0cmlidXRlKCJmbG9vZC1jb2xvciIsd3QodC5jb2xvcikpfTpudWxsfSwiaW5uZXItc2hhZG93IjpmdW5jdGlvbih0LGUsbil7dmFyIHI9bi5nZXRFbGVtZW50QnlJZChlKyItYmx1ciIpO2lmKCFyKXJldHVybiBudWxsO3ZhciBpPW4uZ2V0RWxlbWVudEJ5SWQoZSsiLW9mZnNldCIpO2lmKCFpKXJldHVybiBudWxsO3ZhciBvPW4uZ2V0RWxlbWVudEJ5SWQoZSsiLWNvbG9yLW1hdHJpeCIpO3JldHVybiBvP2Z1bmN0aW9uKHQpe3Iuc2V0QXR0cmlidXRlKCJzdGREZXZpYXRpb24iLGJ0KHQuYmx1cikpLGkuc2V0QXR0cmlidXRlKCJkeCIscHQodC5vZmZzZXQueCkpLGkuc2V0QXR0cmlidXRlKCJkeSIscHQodC5vZmZzZXQueSkpO3ZhciBlPVswLDAsMCwwLHQuY29sb3Iuci8yNTUsMCwwLDAsMCx0LmNvbG9yLmcvMjU1LDAsMCwwLDAsdC5jb2xvci5iLzI1NSwwLDAsMCx0LmNvbG9yLmEsMF07by5zZXRBdHRyaWJ1dGUoInZhbHVlcyIsbXQoZSkpfTpudWxsfSxncmF5c2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ\/ZnVuY3Rpb24oZSl7dC5zZXRBdHRyaWJ1dGUoInZhbHVlcyIsbXQoZnVuY3Rpb24odCl7cmV0dXJuWy4yMTI2Ky43ODc0Kih0PTEtdCksLjcxNTItLjcxNTIqdCwuMDcyMi0uMDcyMip0LDAsMCwuMjEyNi0uMjEyNip0LC43MTUyKy4yODQ4KnQsLjA3MjItLjA3MjIqdCwwLDAsLjIxMjYtLjIxMjYqdCwuNzE1Mi0uNzE1Mip0LC4wNzIyKy45Mjc4KnQsMCwwLDAsMCwwLDEsMF19KGUpKSl9Om51bGx9LCJodWUtcm90YXRlIjpmdW5jdGlvbih0KXtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoInZhbHVlcyIscHQoZSkpfTpudWxsfSxpbnZlcnQ6ZnVuY3Rpb24odCxlLG4pe3JldHVybih0PWZlKG4sZSkpP2Z1bmN0aW9uKGUpe2U9cHQoZSkrIiAiK3B0KDEtZSksdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNldEF0dHJpYnV0ZSgidGFibGVWYWx1ZXMiLGUpfSkpfTpudWxsfSxvcGFjaXR5OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4odD1uLmdldEVsZW1lbnRCeUlkKGUrIi1BIikpP2Z1bmN0aW9uKGUpe3JldHVybiB0LnNldEF0dHJpYnV0ZSgidGFibGVWYWx1ZXMiLCIwICIrcHQoZSkpfTpudWxsfSxzYXR1cmF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoInZhbHVlcyIscHQoZSkpfTpudWxsfSxzZXBpYTpmdW5jdGlvbih0KXtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoInZhbHVlcyIsbXQoZnVuY3Rpb24odCl7cmV0dXJuWy4zOTMrLjYwNyoodD0xLXQpLC43NjktLjc2OSp0LC4xODktLjE4OSp0LDAsMCwuMzQ5LS4zNDkqdCwuNjg2Ky4zMTQqdCwuMTY4LS4xNjgqdCwwLDAsLjI3Mi0uMjcyKnQsLjUzNC0uNTM0KnQsLjEzMSsuODY5KnQsMCwwLDAsMCwwLDEsMF19KGUpKSl9Om51bGx9fTt2YXIgc2U9WyJSIiwiRyIsIkIiXTtmdW5jdGlvbiBmZSh0LGUpe3ZhciBuPXNlLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHQuZ2V0RWxlbWVudEJ5SWQoZSsiLSIrbil8fG51bGx9KSk7cmV0dXJuLTEhPT1uLmluZGV4T2YobnVsbCk\/bnVsbDpufXZhciBjZT17ZmlsbDp0ZSwiZmlsbC1vcGFjaXR5IjpYdCxzdHJva2U6dGUsInN0cm9rZS1vcGFjaXR5IjpYdCwic3Ryb2tlLXdpZHRoIjpRdCwic3Ryb2tlLWRhc2hvZmZzZXQiOntmOnB0LGk6RH0sInN0cm9rZS1kYXNoYXJyYXkiOkp0LG9wYWNpdHk6WHQsdHJhbnNmb3JtOmZ1bmN0aW9uKHQsZSxyLGkpe2lmKCEodD1mdW5jdGlvbih0LGUpe2lmKCF0fHwib2JqZWN0IiE9PW4odCkpcmV0dXJuIG51bGw7dmFyIHI9ITE7Zm9yKHZhciBpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmKHRbaV0mJnRbaV0ubGVuZ3RoPyh0W2ldLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuZSYmKHQuZT1lKHQuZSkpfSkpLHI9ITApOmRlbGV0ZSB0W2ldKTtyZXR1cm4gcj90Om51bGx9KHQsaSkpKXJldHVybiBudWxsO3ZhciBvPWZ1bmN0aW9uKG4saSxvKXt2YXIgdT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbDtyZXR1cm4gdFtuXT9yKGksdFtuXSxvKTplJiZlW25dP2Vbbl06dX07cmV0dXJuIGUmJmUuYSYmdC5vP2Z1bmN0aW9uKGUpe3ZhciBuPXIoZSx0Lm8sR3QpO3JldHVybiBXdC5yZWNvbXBvc2VTZWxmKG4sbygiciIsZSxELDApK24uYSxvKCJrIixlLEwpLG8oInMiLGUsTCksbygidCIsZSxMKSkudG9TdHJpbmcoKX06ZnVuY3Rpb24odCl7cmV0dXJuIFd0LnJlY29tcG9zZVNlbGYobygibyIsdCxWdCxudWxsKSxvKCJyIix0LEQsMCksbygiayIsdCxMKSxvKCJzIix0LEwpLG8oInQiLHQsTCkpLnRvU3RyaW5nKCl9fSwiI2ZpbHRlciI6ZnVuY3Rpb24odCxlLG4scixpLG8sdSxhKXtpZighZS5pdGVtc3x8IXR8fCF0Lmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgbD1mdW5jdGlvbih0LGUpe3ZhciBuPSh0PXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdCYmbGVbdFswXV0\/KGUuZ2V0RWxlbWVudEJ5SWQodFsxXSksbGVbdFswXV0oZS5nZXRFbGVtZW50QnlJZCh0WzFdKSx0WzFdLGUpKTpudWxsfSkpKS5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgcj0wO3I8bjtyKyspdFtyXSYmdFtyXShlW3JdLnZhbHVlKX19KGUuaXRlbXMsYSk7cmV0dXJuIGw\/KHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmU9ZSh0LmUpLHR9KSl9KHQsciksZnVuY3Rpb24oZSl7bChuKGUsdCxhZSkpfSk6bnVsbH0sIiNsaW5lIjpIdCxwb2ludHM6e2Y6bXQsaTpZfSxkOiR0LHI6UXQsIiNzaXplIjpBdCwiI3JhZGl1cyI6X3QsXzpmdW5jdGlvbih0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpc1t0W25dXT1lO2Vsc2UgdGhpc1t0XT1lfX0saGU9e2N1cnJlbnRUaW1lOiJvZmZzZXQiLGR1cmF0aW9uOiJkdXJhdGlvbiIsaGFzRW5kZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjaGVkVG9FbmQoKX0saXNBbHRlcm5hdGU6ImFsdGVybmF0ZSIsaXNQbGF5aW5nOiJfcnVubmluZyIsaXNSb2xsaW5nQmFjazoiX3JvbGxpbmdCYWNrIixzdGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiBlLmlzUGxheWluZz9lLmlzUm9sbGluZ0JhY2s\/InJvbGxiYWNrIjoicGxheWluZyI6ZS5oYXNFbmRlZD8iZW5kZWQiOiJwYXVzZWQifSx0b3RhbFRpbWU6Im1heEZpbml0ZUR1cmF0aW9uIixpdGVyYXRpb25zOiJpdGVyYXRpb25zIixkaXJlY3Rpb246ImRpcmVjdGlvbiIsZmlsbDoiZmlsbCIsaXNSZXZlcnNlZDpmdW5jdGlvbih0LGUpe3JldHVybi0xPT09ZS5kaXJlY3Rpb259LGlzQmFja3dhcmRzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuLTE9PT1lLmZpbGx9LGlzSW5maW5pdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PWUuaXRlcmF0aW9uc30sc3BlZWQ6InNwZWVkIixmcHM6ImZwcyJ9LHZlPXtkZXN0cnVjdDoiZGVzdHJ1Y3QiLHBhdXNlOiJwYXVzZSIscGxheTpmdW5jdGlvbih0LGUpe3JldHVybiBkZSh0LGUuaGFzRW5kZWQ\/InJlc3RhcnQiOiJwbGF5IixlKX0scmVzdGFydDoicmVzdGFydCIscmV2ZXJzZTpmdW5jdGlvbih0LGUpe3JldHVybiBkZSh0LCJyZXZlcnNlIixlLFshMF0pfSxzZWVrOiJzZWVrIixzZWVrQnk6InNlZWtCeSIsc2Vla1RvOiJzZWVrVG8iLHN0b3A6InN0b3AiLHRvZ2dsZToidG9nZ2xlIix0b2dnbGVQbGF5OiJ0b2dnbGUiLHNldDoic2V0In07ZnVuY3Rpb24gZGUodCxlLG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpbXTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaSxvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIG8udW5zaGlmdC5hcHBseShvLHYocikpLChpPXRbZV0pLmNhbGwuYXBwbHkoaSxbdF0uY29uY2F0KHYobykpKSxufX12YXIgeWU9ZnVuY3Rpb24gdChlKXtyKHRoaXMsdCk7dmFyIG49e30saT1bIm9uIiwib2ZmIl0sbz17Z2V0OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gaGVbZV0\/ImZ1bmN0aW9uIj09dHlwZW9mIGhlW2VdP2hlW2VdLmNhbGwodCx0LHIpOnRbaGVbZV1dOnZlW2VdPyJmdW5jdGlvbiI9PXR5cGVvZiB2ZVtlXT92ZVtlXS5jYWxsKHQsdCxyKTpkZSh0LHZlW2VdLHIpOi0xIT09aS5pbmRleE9mKGUpP25bZV06InJlYWR5Ij09PWU\/ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuY2FsbChyLHIpLHJ9OnZvaWQgMH0sc2V0OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4tMSE9PWkuaW5kZXhPZihlKSYmKG5bZV09cil9LG93bktleXM6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5rZXlzKGhlKX0saGFzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWhlW2VdfX07aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiBuZXcgUHJveHkoZSxvKTt2YXIgdT1PYmplY3Qua2V5cyhoZSkuY29uY2F0KE9iamVjdC5rZXlzKHZlKSkuY29uY2F0KGkpLGE9e307cmV0dXJuIHUuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49e2VudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmdldChlLHQsYSl9fTstMSE9PWkuaW5kZXhPZih0KSYmKG4uc2V0PWZ1bmN0aW9uKG4pe3JldHVybiBvLnNldChlLHQsbil9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSx0LG4pfSkpLGF9O2Z1bmN0aW9uIGdlKHQpe3R8fCh0PXRoaXMpO3ZhciBlPXt9O3RoaXMub249ZnVuY3Rpb24odCxuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiYodC5zcGxpdCgvWywgXSsvZykuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF09ZVt0XXx8W10scj9lW3RdLnVuc2hpZnQobik6ZVt0XS5wdXNoKG4pfSkpLCEwKX0sdGhpcy5vZmY9ZnVuY3Rpb24odCxuKXtmb3IodmFyIHIgaW4gZSlpZihlLmhhc093blByb3BlcnR5KHIpJiZyLnN1YnN0cigwLHQubGVuZ3RoKT09PXQpaWYobilmb3IodmFyIGk9MDtpPGVbcl0ubGVuZ3RoO2krKyllW3JdW2ldPT09biYmKGVbcl1baV09bnVsbCk7ZWxzZSBlW3JdPW51bGx9LHRoaXMudHJpZ2dlcj1mdW5jdGlvbigpe3ZhciBuLHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxpPXJbMF0sbz1yLnNsaWNlKDEpO3Q6Zm9yKHZhciB1IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh1KSYmZVt1XSYmKHU9PT1pfHx1LnN1YnN0cigwLGkubGVuZ3RoKzEpPT09aSsiLiIpKWZvcih2YXIgYT0wO2E8KGVbdV18fFtdKS5sZW5ndGg7YSsrKWlmKGVbdV1bYV0mJiExPT09KG49ZVt1XVthXS5hcHBseSh0LG8pKSlicmVhayB0O3JldHVybiBufX12YXIgcGU9ITAsbWU9WyJpdGVyYXRpb25zIiwic3BlZWQiLCJmcHMiLCJkaXJlY3Rpb24iLCJmaWxsIiwiYWx0ZXJuYXRlIl0sYmU9ZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJmwodCxlKX0odSx0KTt2YXIgZSxuLGk9KGU9dSxuPXMoKSxmdW5jdGlvbigpe3ZhciB0LHI9YShlKTtpZihuKXt2YXIgaT1hKHRoaXMpLmNvbnN0cnVjdG9yO3Q9UmVmbGVjdC5jb25zdHJ1Y3Qocixhcmd1bWVudHMsaSl9ZWxzZSB0PXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBjKHRoaXMsdCl9KTtmdW5jdGlvbiB1KHQsZSl7dmFyIG4sbz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtyZXR1cm4gcih0aGlzLHUpLChuPWkuY2FsbCh0aGlzLHQsZSxvKSkuX2hhbmRsZXJzPVtdLG59cmV0dXJuIG8odSxbe2tleToiX2FkanVzdE9mZnNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLGU9dGhpcy5hbHRlcm5hdGU\/Mip0aGlzLmR1cmF0aW9uOnRoaXMuZHVyYXRpb247aWYodCl7aWYoIXRoaXMuX3JvbGxpbmdCYWNrJiYwPT09dGhpcy5vZmZzZXQpcmV0dXJuIHZvaWQodGhpcy5vZmZzZXQ9ZSk7dGhpcy5fcm9sbGluZ0JhY2smJih0aGlzLm9mZnNldCx0aGlzLm1heEZpbml0ZUR1cmF0aW9uKX0hdGhpcy5fcm9sbGluZ0JhY2t8fHRoaXMucm9sbGJhY2tTdGFydE9mZnNldDw9dGhpcy5kdXJhdGlvbj8wIT09dGhpcy5pdGVyYXRpb25zJiYodGhpcy5vZmZzZXQ9TWF0aC5taW4odGhpcy5vZmZzZXQsdGhpcy5tYXhGaW5pdGVEdXJhdGlvbikpOih0aGlzLm9mZnNldD10aGlzLnJvbGxiYWNrU3RhcnRPZmZzZXQtKHRoaXMucm9sbGJhY2tTdGFydE9mZnNldC10aGlzLm9mZnNldCklZSx0aGlzLnJvbGxiYWNrU3RhcnRPZmZzZXQ9MCl9fSx7a2V5OiJyZXZlcnNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF07aWYoIXRoaXMuX3J1bm5pbmcpcmV0dXJuIHRoaXMuX2FkanVzdE9mZnNldCh0KSx0aGlzLl9yb2xsaW5nQmFjaz0hdGhpcy5fcm9sbGluZ0JhY2ssdCYmdGhpcy5wbGF5KCExKSx2b2lkIHRoaXMudHJpZ2dlcigicmV2ZXJzZSIsdGhpcy5vZmZzZXQpO3RoaXMucGF1c2UoITEsITEpLHRoaXMuX2FkanVzdE9mZnNldCgpLHRoaXMuX3JvbGxpbmdCYWNrPSF0aGlzLl9yb2xsaW5nQmFjayx0aGlzLnBsYXkoITEpLHRoaXMudHJpZ2dlcigicmV2ZXJzZSIsdGhpcy5vZmZzZXQpfX0se2tleToicGxheSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06cGUsZT1oKGEodS5wcm90b3R5cGUpLCJwbGF5Iix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiB0PT09cGUmJnRoaXMudHJpZ2dlcigicGxheSIsdGhpcy5vZmZzZXQpLGV9fSx7a2V5OiJwYXVzZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnBlLG49aChhKHUucHJvdG90eXBlKSwicGF1c2UiLHRoaXMpLmNhbGwodGhpcyk7cmV0dXJuIGU9PT1wZSYmdGhpcy50cmlnZ2VyKHQ\/ImVuZCI6InBhdXNlIix0aGlzLm9mZnNldCksbn19LHtrZXk6InJlc3RhcnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9aChhKHUucHJvdG90eXBlKSwicmVzdGFydCIsdGhpcykuY2FsbCh0aGlzLCExKTtyZXR1cm4gdGhpcy50cmlnZ2VyKCJyZXN0YXJ0Iix0aGlzLm9mZnNldCksdH19LHtrZXk6InN0b3AiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0\/YXJndW1lbnRzWzBdOnBlLGU9aChhKHUucHJvdG90eXBlKSwic3RvcCIsdGhpcykuY2FsbCh0aGlzKTtyZXR1cm4gdD09PXBlJiZ0aGlzLnRyaWdnZXIoInN0b3AiLHRoaXMub2Zmc2V0KSxlfX0se2tleToiX2FwcGx5Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOnBlLHI9aChhKHUucHJvdG90eXBlKSwiX2FwcGx5Iix0aGlzKS5jYWxsKHRoaXMsdCk7aWYobj09PXBlKXt2YXIgaT1mdW5jdGlvbigpe3JldHVybiBlLnRyaWdnZXIoImtleWZyYW1lIix0KX07d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShpKX1yZXR1cm4gcn19LHtrZXk6InNlZWtUbyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGk9dGhpcy5fcnVubmluZztpJiZ0aGlzLnBhdXNlKCExLCExKSx0aGlzLm9mZnNldD10aGlzLml0ZXJhdGlvbnM+MD8oZT10LG49MCxyPXRoaXMubWF4RmluaXRlRHVyYXRpb24sZTxuP246ZT5yP3I6ZSk6TWF0aC5tYXgodCwwKSx0aGlzLl9hcHBseSh0aGlzLm9mZnNldCksaSYmdGhpcy5wbGF5KCExKX19LHtrZXk6InNlZWsiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNlZWtUbyhNYXRoLnJvdW5kKHQvMTAwKnRoaXMubWF4RmluaXRlRHVyYXRpb24pKX19LHtrZXk6InNlZWtCeSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2Vla1RvKHRoaXMub2Zmc2V0K3QpfX0se2tleToidG9nZ2xlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9ydW5uaW5nP3RoaXMucGF1c2UoKTp0aGlzLnJlYWNoZWRUb0VuZCgpP3RoaXMucmVzdGFydCgpOnRoaXMucGxheSgpfX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKG1lLmluY2x1ZGVzKHQpKXt2YXIgbj10aGlzLl9ydW5uaW5nO24mJnRoaXMucGF1c2UoITEsITEpLHRoaXMuX3NldHRpbmdzW3RdPWUsbj90aGlzLnBsYXkoITEpOnRoaXMuX2FwcGx5KHRoaXMub2Zmc2V0LHt9LCExKX19fSx7a2V5OiJkZXN0cnVjdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuc3RvcCgpLHRoaXMuX2hhbmRsZXJzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuZWxlbWVudD90LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LmV2ZW50LHQuaGFuZGxlcik6dC5jYWxsYmFjayYmdC5jYWxsYmFjay5jYWxsJiZ0LmNhbGxiYWNrLmNhbGwoKX0pKTt2YXIgZT1mdW5jdGlvbigpe30sbj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO24ucHVzaC5hcHBseShuLHYoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpKSxuLmZvckVhY2goKGZ1bmN0aW9uKG4peyJmdW5jdGlvbiI9PXR5cGVvZiB0W25dP3Rbbl09ZTpkZWxldGUgdFtuXX0pKX19XSxbe2tleToiYnVpbGQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWgoYSh1KSwiYnVpbGQiLHRoaXMpLmNhbGwodGhpcyx0LGNlKTtpZighZSlyZXR1cm4gbnVsbDt2YXIgbj1lLmVsLHI9ZS5vcHRpb25zLGk9ZS5wbGF5ZXIsbz1uZXcgeWUoaSksbD1uZXcgZ2Uobyk7by5vbj1sLm9uLG8ub2ZmPWwub2ZmLGkudHJpZ2dlcj1sLnRyaWdnZXI7dmFyIHM9bi5zdmdhdG9yUGxheWVyJiZuLnN2Z2F0b3JQbGF5ZXIucmVhZHkmJm4uc3ZnYXRvclBsYXllci5yZWFkeS5jYWxsJiZuLnN2Z2F0b3JQbGF5ZXIucmVhZHkuY2FsbCgpO24uc3ZnYXRvclBsYXllcj1vLGZ1bmN0aW9uKHQpe3ZhciBlLG4scj10JiYxPT09KG51bGw9PT0oZT10Lm93bmVyRG9jdW1lbnQpfHx2b2lkIDA9PT1lfHxudWxsPT09KG49ZS5jaGlsZE5vZGVzKXx8dm9pZCAwPT09bj92b2lkIDA6bi5sZW5ndGgpJiZ3aW5kb3cucGFyZW50IT09d2luZG93LGk9bnVsbD09dD92b2lkIDA6dC5maXJzdEVsZW1lbnRDaGlsZDtpZighcnx8IWl8fCJhIiE9PWkudGFnTmFtZXx8aS5nZXRBdHRyaWJ1dGUoInRhcmdldCIpKXJldHVybjtpLnNldEF0dHJpYnV0ZU5TKG51bGwsInRhcmdldCIsIl9wYXJlbnQiKX0obiksZnVuY3Rpb24odCxlLG4pe2lmKCJjbGljayI9PT1uLnN0YXJ0KXt2YXIgcj1mdW5jdGlvbigpe3N3aXRjaChuLmNsaWNrKXtjYXNlImZyZWV6ZSI6cmV0dXJuIXQuX3J1bm5pbmcmJnQucmVhY2hlZFRvRW5kKCk\/dC5yZXN0YXJ0KCk6dC50b2dnbGUoKTtjYXNlInJlc3RhcnQiOnJldHVybiB0Lm9mZnNldD4wP3QucmVzdGFydCgpOnQucGxheSgpO2Nhc2UicmV2ZXJzZSI6cmV0dXJuIHQuX3J1bm5pbmc\/dC5yZXZlcnNlKCk6dC5yZWFjaGVkVG9FbmQoKT8xPT09dC5maWxsP3QucmV2ZXJzZSghMCk6dC5yZXN0YXJ0KCk6dC5wbGF5KCk7Y2FzZSJub25lIjpkZWZhdWx0OmlmKHQuX3J1bm5pbmcpcmV0dXJuO3JldHVybiB0LnJlYWNoZWRUb0VuZCgpP3QucmVzdGFydCgpOnQucGxheSgpfX07cmV0dXJuIHQuX2hhbmRsZXJzLnB1c2goe2VsZW1lbnQ6ZSxldmVudDoiY2xpY2siLGhhbmRsZXI6cn0pLHZvaWQgZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIscil9aWYoImhvdmVyIj09PW4uc3RhcnQpe3ZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuIHQucmVhY2hlZFRvRW5kKCk\/dC5yZXN0YXJ0KCk6dC5fcm9sbGluZ0JhY2s\/dC5yZXZlcnNlKCk6dC5wbGF5KCl9O3QuX2hhbmRsZXJzLnB1c2goe2VsZW1lbnQ6ZSxldmVudDoibW91c2VlbnRlciIsaGFuZGxlcjppfSksZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIixpKTt2YXIgbz1mdW5jdGlvbigpe3N3aXRjaChuLmhvdmVyKXtjYXNlImZyZWV6ZSI6cmV0dXJuIHQucGF1c2UoKTtjYXNlInJlc2V0IjpyZXR1cm4gdC5zdG9wKCk7Y2FzZSJyZXZlcnNlIjppZih0LnJldmVyc2UoKSx0Ll9ydW5uaW5nKXJldHVybjtyZXR1cm4gdC5wbGF5KCk7Y2FzZSJub25lIjpkZWZhdWx0OnJldHVybn19O3JldHVybiB0Ll9oYW5kbGVycy5wdXNoKHtlbGVtZW50OmUsZXZlbnQ6Im1vdXNlbGVhdmUiLGhhbmRsZXI6b30pLHZvaWQgZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIixvKX1pZigic2Nyb2xsIj09PW4uc3RhcnQpe3ZhciB1PW5ldyBndChlLG4uc2Nyb2xsfHwyNSwoZnVuY3Rpb24oZSl7ZT90LnJlYWNoZWRUb0VuZCgpP3QucmVzdGFydCgpOnQucGxheSgpOnQucGF1c2UoKX0pKTtyZXR1cm4gdm9pZCB0Ll9oYW5kbGVycy5wdXNoKHtjYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiB1LmRlc3RydWN0KCl9fSl9aWYoInByb2dyYW1tYXRpYyI9PT1uLnN0YXJ0KXJldHVybjt0LnBsYXkoKX0oaSxuLHIpLGZ1bmN0aW9uKHQsZSxuKXt2YXIgcjsiZnVuY3Rpb24iPT10eXBlb2YgRXZlbnQ\/cj1uZXcgRXZlbnQoInJlYWR5Iik6KHI9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50IikpLmluaXRFdmVudCgicmVhZHkiLCEwLCEwKTtpZih0LmRpc3BhdGNoRXZlbnQociksIW58fCFuLmxlbmd0aClyZXR1cm47bi5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5yZWFkeSh0KX0pKX0obixuLnN2Z2F0b3JQbGF5ZXIscyl9fV0pLHV9KHl0KTtyZXR1cm4gYmUuaW5pdCgpLGJlfSkpOw0KKGZ1bmN0aW9uKHMsaSxvLHcsZCxhLGIpeyhhPUFycmF5LmZyb20oZC5xdWVyeVNlbGVjdG9yQWxsKCdzdmcjJyArIGkucm9vdCkpLmZpbHRlcihuPT4gIW4uc3ZnYXRvclBsYXllcilbMF18fHt9KS5zdmdhdG9yUGxheWVyPXtyZWFkeTooZnVuY3Rpb24oYSl7Yj1bXTtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGM\/KGIucHVzaChjKSxhLnN2Z2F0b3JQbGF5ZXIpOmJ9fSkoYSl9O3dbb109d1tvXXx8e307d1tvXVtzXT13W29dW3NdfHxbXTt3W29dW3NdLnB1c2goaSk7fSkoJzkxYzgwZDc3Jyx7InJvb3QiOiJlNHRPaTcyRzhLYTEiLCJ2ZXJzaW9uIjoiMjAyMi0wNS0wNCIsImFuaW1hdGlvbnMiOlt7ImVsZW1lbnRzIjp7ImU0dE9pNzJHOEthNCI6eyJzdHJva2UtZGFzaG9mZnNldCI6W3sidCI6MCwidiI6LTExNDMyLCJlIjpbMC40MiwwLDAuNTgsMV19LHsidCI6MTQwMCwidiI6LTg1NzQsImUiOlswLjQyLDAsMSwxXX0seyJ0IjoxODAwLCJ2IjotODU3NCwiZSI6WzAuNDIsMCwwLjU4LDFdfSx7InQiOjM3MDAsInYiOi01NDQxLjE5MjMwOCwiZSI6WzAuNDIsMCwxLDFdfSx7InQiOjQxMDAsInYiOi01NTQxLjE5LCJlIjpbMC4yOTUsMCwwLjU4LDFdfSx7InQiOjY4MDAsInYiOi0yNjY0LjAzMzY1NCwiZSI6WzAuNDIsMCwxLDFdfSx7InQiOjcyMDAsInYiOi0yNjY0LjAzLCJlIjpbMC40MiwwLDAuNTgsMV19LHsidCI6OTMwMCwidiI6MH1dfSwiZTR0T2k3Mkc4S2E1Ijp7InRyYW5zZm9ybSI6eyJkYXRhIjp7Im8iOnsieCI6MTIzOC44Nzk1NDcsInkiOjMyNzIuMzA1NzQ4LCJ0eXBlIjoiY29ybmVyIn19LCJrZXlzIjp7InMiOlt7InQiOjMwMDAsInYiOnsieCI6MCwieSI6MH0sImUiOlswLDAsMC40NiwwLjk5NV19LHsidCI6MzcwMCwidiI6eyJ4IjoxLCJ5IjoxfX1dfX19LCJlNHRPaTcyRzhLYTYiOnsidHJhbnNmb3JtIjp7ImRhdGEiOnsibyI6eyJ4IjoyNjcyLjUyMTkwMSwieSI6MTc1MC4yNzczMjgsInR5cGUiOiJjb3JuZXIifX0sImtleXMiOnsicyI6W3sidCI6NzAwLCJ2Ijp7IngiOjAsInkiOjB9LCJlIjpbMCwwLDAuNDEsMS4wMzVdfSx7InQiOjE0MDAsInYiOnsieCI6MSwieSI6MX19XX19fSwiZTR0T2k3Mkc4S2E3Ijp7InRyYW5zZm9ybSI6eyJkYXRhIjp7Im8iOnsieCI6MjY3Mi41MjE5MDEsInkiOjQ2MTUuMDc1MzI5LCJ0eXBlIjoiY29ybmVyIn19LCJrZXlzIjp7InMiOlt7InQiOjYwMDAsInYiOnsieCI6MCwieSI6MH0sImUiOlswLDAsMC41OCwxXX0seyJ0Ijo2ODAwLCJ2Ijp7IngiOjEsInkiOjF9fV19fX0sImU0dE9pNzJHOEthOCI6eyJ0cmFuc2Zvcm0iOnsiZGF0YSI6eyJvIjp7IngiOjEyMzguODc5NTQ3LCJ5IjoxMjEuMTMwMzIxLCJ0eXBlIjoiY29ybmVyIn19LCJrZXlzIjp7InMiOlt7InQiOjAsInYiOnsieCI6MCwieSI6MH0sImUiOlswLDAsMC41OCwxXX0seyJ0Ijo3MDAsInYiOnsieCI6MSwieSI6MX19XX19fSwiZTR0T2k3Mkc4S2E5Ijp7InRyYW5zZm9ybSI6eyJkYXRhIjp7Im8iOnsieCI6MTg4MC44OTU1ODEsInkiOjU5MDIuMDUwMTUsInR5cGUiOiJjb3JuZXIifX0sImtleXMiOnsicyI6W3sidCI6ODEwMCwidiI6eyJ4IjowLCJ5IjowfSwiZSI6WzAsMCwwLjU4LDFdfSx7InQiOjg4MDAsInYiOnsieCI6MSwieSI6MX19XX19fX0sInMiOiJNREdBMk1EZ3lUMFl5T05UWmlOMk0zT1RZNFROMkkzTUVzM05rd0wzTlRJNU5ERXpPRFBNM016Y3pOek0zVU5qTXpNamsyWWpjd1VOemsyWTFnMllUZEppTnpCTE56WkhOelBVeU9UUXhNemhXTU56TXlPVUUzTURkaUJObU5LTnprMk9EZEppTnpBM05qYzFOMkxFeU9UUXhSRE00TUR6TXlPVFprU3pjd0hOek0zTXpJNU5ERVF6T0RNelNqSTVOaldnM016ZGlObU5KTkV6azNOVFk0TjJKWVdObU5MTWprME1UWlRrTmpnM016ZGhObVBNek16STVOMkUzTkN6WmpRelpqTm1JeUlPVFF4TXpjek5UTkFtTXpNeU9UWmtOelJjM1lUSTVOREV6T0xETTNNemM0TkF8In1dLCJvcHRpb25zIjoiTURGQXhaVGd5TWprM1lGVGRpTmpoVE56bFlPTjJJeU9UUXhNamtQM1lUWmhOemszTmpGY3pOek15T1RNek1FamszWVRaaE56azNXTmpjek56TXlPVFFYeFZ6TTVNemM0TkFNfCJ9LCdfX1NWR0FUT1JfUExBWUVSX18nLHdpbmRvdyxkb2N1bWVudCkNCl1dPjwvc2NyaXB0Pg0KPC9zdmc+[\/vc_raw_html]<\/div><div class=\"ult-spacer spacer-6a4b1ade0f6e5\" data-id=\"6a4b1ade0f6e5\" data-height=\"200\" data-height-mobile=\"0\" data-height-tab=\"0\" data-height-tab-portrait=\"0\" data-height-mobile-landscape=\"0\" style=\"clear:both;display:block;\"><\/div><\/div><\/div><\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"E-GAP was founded with a clear mission: to accelerate the transition towards more sustainable mobility 2017 Since 2017, we have created and developed a mobile charging solution based on a fleet of 100 electric vans equipped with integrated storage systems. Our technology ensures service continuity even in areas with limited grid access, thanks to our...","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-1164","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Our journay | E-GAP<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.e-gap.com\/en\/our-journay\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Our journay | E-GAP\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.e-gap.com\/en\/our-journay\/\" \/>\n<meta property=\"og:site_name\" content=\"E-GAP\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-14T14:21:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/03\/E-GAP-board.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.e-gap.com\\\/en\\\/our-journay\\\/\",\"url\":\"https:\\\/\\\/www.e-gap.com\\\/en\\\/our-journay\\\/\",\"name\":\"Our journay | E-GAP\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/www.e-gap.com\\\/en\\\/#website\"},\"datePublished\":\"2025-02-05T11:26:39+00:00\",\"dateModified\":\"2026-01-14T14:21:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.e-gap.com\\\/en\\\/our-journay\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.e-gap.com\\\/en\\\/our-journay\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.e-gap.com\\\/en\\\/our-journay\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.e-gap.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Our journay\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/www.e-gap.com\\\/en\\\/#website\",\"url\":\"http:\\\/\\\/www.e-gap.com\\\/en\\\/\",\"name\":\"E-GAP\",\"description\":\"E-GAP | Un unico partner per guidare la transizione energetica della tua flotta\",\"publisher\":{\"@id\":\"http:\\\/\\\/www.e-gap.com\\\/en\\\/#organization\"},\"alternateName\":\"E-GAP | semplifichiamo la transizione energetica della tua flotta\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/www.e-gap.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/www.e-gap.com\\\/en\\\/#organization\",\"name\":\"E-GAP | semplifichiamo la transizione energetica della tua flotta\",\"alternateName\":\"E-GAP | Un unico partner per guidare la transizione energetica della tua flotta\",\"url\":\"http:\\\/\\\/www.e-gap.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/www.e-gap.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"http:\\\/\\\/www.e-gap.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/egap-logo-w.svg\",\"contentUrl\":\"http:\\\/\\\/www.e-gap.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/egap-logo-w.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"E-GAP | semplifichiamo la transizione energetica della tua flotta\"},\"image\":{\"@id\":\"http:\\\/\\\/www.e-gap.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/e.gap.italia\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/e-gap\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Our journay | E-GAP","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.e-gap.com\/en\/our-journay\/","og_locale":"en_US","og_type":"article","og_title":"Our journay | E-GAP","og_url":"https:\/\/www.e-gap.com\/en\/our-journay\/","og_site_name":"E-GAP","article_modified_time":"2026-01-14T14:21:01+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/03\/E-GAP-board.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.e-gap.com\/en\/our-journay\/","url":"https:\/\/www.e-gap.com\/en\/our-journay\/","name":"Our journay | E-GAP","isPartOf":{"@id":"http:\/\/www.e-gap.com\/en\/#website"},"datePublished":"2025-02-05T11:26:39+00:00","dateModified":"2026-01-14T14:21:01+00:00","breadcrumb":{"@id":"https:\/\/www.e-gap.com\/en\/our-journay\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.e-gap.com\/en\/our-journay\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.e-gap.com\/en\/our-journay\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.e-gap.com\/en\/"},{"@type":"ListItem","position":2,"name":"Our journay"}]},{"@type":"WebSite","@id":"http:\/\/www.e-gap.com\/en\/#website","url":"http:\/\/www.e-gap.com\/en\/","name":"E-GAP","description":"E-GAP | Un unico partner per guidare la transizione energetica della tua flotta","publisher":{"@id":"http:\/\/www.e-gap.com\/en\/#organization"},"alternateName":"E-GAP | semplifichiamo la transizione energetica della tua flotta","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.e-gap.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/www.e-gap.com\/en\/#organization","name":"E-GAP | semplifichiamo la transizione energetica della tua flotta","alternateName":"E-GAP | Un unico partner per guidare la transizione energetica della tua flotta","url":"http:\/\/www.e-gap.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/www.e-gap.com\/en\/#\/schema\/logo\/image\/","url":"http:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/01\/egap-logo-w.svg","contentUrl":"http:\/\/www.e-gap.com\/wp-content\/uploads\/2025\/01\/egap-logo-w.svg","width":"1024","height":"1024","caption":"E-GAP | semplifichiamo la transizione energetica della tua flotta"},"image":{"@id":"http:\/\/www.e-gap.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.instagram.com\/e.gap.italia\/","https:\/\/www.linkedin.com\/company\/e-gap\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.e-gap.com\/en\/wp-json\/wp\/v2\/pages\/1164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.e-gap.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.e-gap.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.e-gap.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.e-gap.com\/en\/wp-json\/wp\/v2\/comments?post=1164"}],"version-history":[{"count":10,"href":"https:\/\/www.e-gap.com\/en\/wp-json\/wp\/v2\/pages\/1164\/revisions"}],"predecessor-version":[{"id":1545,"href":"https:\/\/www.e-gap.com\/en\/wp-json\/wp\/v2\/pages\/1164\/revisions\/1545"}],"wp:attachment":[{"href":"https:\/\/www.e-gap.com\/en\/wp-json\/wp\/v2\/media?parent=1164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}