Ā 

Ā 

Ā 

Ā 

Ā 

22 de febrero de 2021 COMUNICACIƓN


Indicadores de Actividad del Sector Servicios (IASS). Base 2015. Canarias y EspaƱa.

diciembre de 2020


Ā 

Ā 

Ā 

La variaciĆ³n mensual de la cifra de negocios del Sector Servicios de Mercado es del 2,6% en Canarias, frente al 4,1% del conjunto nacional, una vez que se eliminan los efectos estacionales y de calendario

Ā 

La tasa anual se sitĆŗa en el -30% en la serie corregida de efectos estacionales y de calendario, frente al -10% en la serie corregida de efectos estacionales y de calendario del conjunto nacional

Ā 

Ā 

ANƁLISIS DE LA EVOLUCIƓN MENSUAL

Ā 

La variaciĆ³n mensual del Ć­ndice general de la cifra de negocios del Sector Servicios de Mercado entre los meses de diciembre y noviembre, eliminando los efectos estacionales y de calendario, es del 2,6%. Esta tasa es 3,3 puntos inferior a la de noviembre, y 1,5 puntos inferior a la del conjunto nacional (4,1%).

Ā 

Ā 

ƍndice general de cifra de negocios del Sector Servicios de Mercado

Corregido de efectos estacionales y de calendario. Tasa mensual. Porcentaje

Ā 

Ā 

Si se eliminan los efectos estacionales y de calendario, el Comercio sube un 3% y Otros Servicios sube un 2,4%. En el grupo de Otros Servicios, Transporte y almacenamiento (4,5%), HostelerĆ­a (8,5%), InformaciĆ³n y comunicaciones (-1,3%), Actividades profesionales, cientĆ­ficas y tĆ©cnicas (-7,7%), y Actividades administrativas y servicios auxiliares (20,8%).

Ā 

Ā 

ƍndice cifra de negocios: General y por sectores.

Tasa mensual. Porcentaje.

diciembre de 2020

Canarias
EspaƱa
ƍndice original ƍndice corregido de efectos estacionales y de calendario ƍndice original ƍndice corregido de efectos estacionales y de calendario
ƍndice general 17,1 2,6 12,2 4,1
Comercio 19,0 3,0 12,1 4,1
Transporte y almacenamiento 10,9 4,5 3,4 3,9
HostelerĆ­a 12,6 8,5 25,9 17,9
InformaciĆ³n y comunicaciones 7,9 -1,3 11,2 -1,0
Actividades profesionales cientƭficas y tƩcnicas 15,2 -7,7 20,4 0,2
Actividades administrativas y servicios auxiliares 16,1 20,8 10,1 6,0

Ā 

Ā 

ANƁLISIS DE LA EVOLUCIƓN ANUAL

Ā 

El ƍndice general de cifra de negocios del Sector Servicios de Mercado corregido de efectos estacionales y de calendario experimenta una caida del 30% en diciembre respecto al mismo mes de 2019. Esta tasa es 1,5 puntos superior a la registrada en noviembre, y 20 puntos por abajo de la registrada a nivel nacional (-10%). La serie original presenta una variaciĆ³n anual del -27%, lo que supone 4,2 puntos por encima de la registrada en noviembre.

Ā 

Ā 

ƍndice general de cifra de negocios del Sector Servicios de Mercado. Canarias y EspaƱa

Corregido de efectos estacionales y de calendario. Tasa anual. Porcentaje.

Ā 

Ā 

Si se eliminan los efectos estacionales y de calendario, el Comercio baja un -15,6% y Otros servicios baja un -49,3%. En el grupo de Otros Servicios, Transporte y almacenamiento (-27,5%), HostelerĆ­a (-68,9%), InformaciĆ³n y comunicaciones (-4,7%), Actividades profesionales, cientĆ­ficas y tĆ©cnicas (-19,7%), y Actividades administrativas y servicios auxiliares (-55,4%).

Ā 

Ā 

ƍndice cifra de negocios: General y por sectores.

Tasa anual. Porcentaje.

diciembre de 2020

Canarias
EspaƱa
ƍndice original ƍndice corregido de efectos estacionales y de calendario ƍndice original ƍndice corregido de efectos estacionales y de calendario
ƍndice general -27,0 -30,0 -8,7 -10,0
Comercio -13,4 -15,6 -5,2 -6,8
Transporte y almacenamiento -27,1 -27,5 -10,5 -11,7
HostelerĆ­a -67,3 -68,9 -52,9 -52,7
InformaciĆ³n y comunicaciones -4,6 -4,7 -5,7 -6,5
Actividades profesionales cientƭficas y tƩcnicas -19,7 -19,7 -1,4 -2,5
Actividades administrativas y servicios auxiliares -56,9 -55,4 -24,2 -24,9

Ā 

Ā 

ANƁLISIS COMPARADO POR CCAA

Ā 

Ā 

ƍndices de cifra de negocios

La tasa anual de la cifra de negocios del Sector Servicios de Mercado disminuye respecto a noviembre de 2019 en todas las comunidades autĆ³nomas. Canarias (-27%) y Islas Baleares (-23,8%) presentan los mayores descensos, mientras que RegiĆ³n de Murcia (-0,5%) es la que presentan los menores descensos.

Ā 

Ā 

ƍndices generales cifra de negocios: nacional y por comunidades autĆ³nomas. Tasa anual. Porcentaje.

diciembre de 2020

Ā 

Ā 

ƍndices de ocupaciĆ³n

La tasa anual de ocupaciĆ³n del Sector Servicios de Mercado disminuye respecto a noviembre de 2019 en todas las comunidades autĆ³nomas. Canarias (-10,9%) y Islas Baleares (-10,6%) presentan los mayores descensos, mientras que Castilla - La Mancha (-2,7%) y Galicia (-3,3%) son las que presentan los menores descensos.

Ā 

Ā 

ƍndices generales de ocupaciĆ³n: nacional y por comunidades autĆ³nomas. Tasa anual. Porcentaje.

diciembre de 2020

Ā 

Ā 

REVISIONES Y ACTUALIZACIƓN DE DATOS

Ā 

Se han actualizado los datos de las series de IASS correspondientes a los cinco Ćŗltimos meses. En el caso de las series ajustadas de calendario y desestacionalizadas y ajustadas de calendario, siguiendo el estĆ”ndar del INE se revisa la serie desde su comienzo.

Ā 

Ā 

NOTA METODOLƓGICA

Ā 

La informaciĆ³n de base de este indicador procede de una encuesta mensual a empresas que realiza el Instituto Nacional de EstadĆ­stica (INE) y que recibe el ISTAC mediante acuerdo de intercambio de informaciĆ³n entre ambos organismos para la publicaciĆ³n de un mayor detalle en la comunidad autĆ³noma.

Este informe anticipa los trabajos que estamos desarrollando en el marco del proyecto ā€œMĆ©todos economĆ©tricos aplicados a series de coyuntura econĆ³mica ECOMAC (MAC/5.11.a/004)ā€, realizado en colaboraciĆ³n con las oficinas de estadĆ­sticas de Azores y Madeira y financiado por el Programa de CooperaciĆ³n INTERREG V-A EspaƱa-Portugal MAC (Madeira-Azores-Canarias) 2014-2020.

El objetivo principal de este proyecto es la construcciĆ³n de modelos economĆ©tricos que permitan ajustar las series de los principales indicadores de la coyuntura de los efectos de calendario y de la estacionalidad. Los resultados presentados en este informe permiten adelantar los trabajos que estamos desarrollando y que serĆ”n publicados a finales de 2020.

Ā  Ā  Ā  Ā 

MĆ”s informaciĆ³n

ISTAC - ComunicaciĆ³n

www.gobiernodecanarias.org/istac/noticias

922 92 28 41 - 928 29 32 71

@istac_es

Ā 

Ā 

LS0tCnRpdGxlOiAnICcKcGFnZXRpdGxlOiBDb211bmljYWNpw7NuIElBU1MgMjAyME0xMgpwYXJhbXM6CiAgZmVjaGE6IDIyIGRlIGZlYnJlcm8gZGUgMjAyMQpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKLS0tCgo8aW1nIHNyYz0iLi4vaW1hZ2VzL2xvZ29faXN0YWMuanBnIiBhbGlnbj0ibGVmdCIgYWx0PSIiLz48YnIvPgo8YnIvPgo8YnIvPgo8YnIvPgo8YnIvPgoKCgoKJm5ic3A7CgoKCgombmJzcDsKCgoKCiZuYnNwOwoKCgombmJzcDsKCgpgYGB7ciBpbmNsdWRlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0V9Cm9wdGlvbnMoc2NpcGVuID0gOTk5KQoKbGlicmFyeSh4bHN4KQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KGRhdGEudGFibGUpCmxpYnJhcnkocGx5cikKbGlicmFyeSh6b28pCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShqc29ubGl0ZSkKCnNvdXJjZSgiLi4vc2NyL0Z1bmN0aW9ucy5SIikKCiMgTEVDVFVSQSBERSBEQVRPUyBKU09OIERFIExBIEFQSSBERUwgSU5FCiMgw41uZGljZSBnZW5lcmFsIGRlIENpZnJhcyBkZSBOZWdvY2lvcyBOYWNpb25hbCB5IHBvciBDQ0FBCkNOX2pzb24gPC0gZnJvbUpTT04oImh0dHBzOi8vc2VydmljaW9zLmluZS5lcy93c3RlbXB1cy9qcy9FUy9EQVRPU19UQUJMQS8yNTg5Nz9kYXRlPTIwMTkwMTAxOiIpCiMgw41uZGljZSBkZSBDaWZyYXMgZGUgTmVnb2Npb3MgYWp1c3RhZG8gZGUgZXN0YWNpb25hbGlkYWQgeSBjYWxlbmRhcmlvIEVTIChJLiBnZW5lcmFsIHkgc2VjdG9yZXMpCkNOX3NhY19qc29uIDwtIGZyb21KU09OKCJodHRwczovL3NlcnZpY2lvcy5pbmUuZXMvd3N0ZW1wdXMvanMvRVMvREFUT1NfVEFCTEEvMjU4OTM/ZGF0ZT0yMDE5MDEwMToiKQojIMONbmRpY2UgZGUgQ2lmcmFzIGRlIE5lZ29jaW9zIEVTIChJLiBnZW5lcmFsIHkgc2VjdG9yZXMpCkNOX3NlY3RvcmVzX2pzb24gPC0gZnJvbUpTT04oImh0dHBzOi8vc2VydmljaW9zLmluZS5lcy93c3RlbXB1cy9qcy9FUy9EQVRPU19UQUJMQS8yNTg5MT9kYXRlPTIwMTkwMTAxOiIpCiMgw41uZGljZSBkZSBPY3VwYWNpw7NuIGFqdXN0YWRvIGRlIGVzdGFjaW9uYWxpZGFkIHBvciBDQ0FBCk9DX2pzb24gPC0gZnJvbUpTT04oImh0dHBzOi8vc2VydmljaW9zLmluZS5lcy93c3RlbXB1cy9qcy9FUy9EQVRPU19UQUJMQS8yNTg5OT9kYXRlPTIwMTkwMTAxOiIpCgoKCiMgRVhUUkFDQ0nDk04gREUgTE9TIERBVEEuRlJBTUUgREUgTE9TIEpTT04KQ04gPC0gRXh0cmFjdF9kZihDTl9qc29uKQpDTl9zYWMgPC0gRXh0cmFjdF9kZihDTl9zYWNfanNvbikgJT4lIGZpbHRlcihTZWN0b3IgJWluJSBjKCJUb3RhbCBzZXJ2aWNpb3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21lcmNpbyBhbCBwb3IgbWF5b3IgeSBhbCBwb3IgbWVub3I7IHJlcGFyYWNpw7NuIGRlIHZlaMOtY3Vsb3MgZGUgbW90b3IgeSBtb3RvY2ljbGV0YXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3N0ZWxlcsOtYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluZm9ybWFjacOzbiB5IGNvbXVuaWNhY2lvbmVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aXZpZGFkZXMgcHJvZmVzaW9uYWxlcywgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKSkKCkNOX3NlY3RvcmVzIDwtIEV4dHJhY3RfZGYoQ05fc2VjdG9yZXNfanNvbiklPiUgZmlsdGVyKFNlY3RvciAlaW4lIGMoIlRvdGFsIHNlcnZpY2lvcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbWVyY2lvIGFsIHBvciBtYXlvciB5IGFsIHBvciBtZW5vcjsgcmVwYXJhY2nDs24gZGUgdmVow61jdWxvcyBkZSBtb3RvciB5IG1vdG9jaWNsZXRhcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRyYW5zcG9ydGUgeSBhbG1hY2VuYW1pZW50byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvc3RlbGVyw61hIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5mb3JtYWNpw7NuIHkgY29tdW5pY2FjaW9uZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY3RpdmlkYWRlcyBwcm9mZXNpb25hbGVzLCBjaWVudMOtZmljYXMgeSB0w6ljbmljYXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBY3RpdmlkYWRlcyBhZG1pbmlzdHJhdGl2YXMgeSBzZXJ2aWNpb3MgYXV4aWxpYXJlcyIpKQpPQyA8LSBFeHRyYWN0X2RmKE9DX2pzb24pCgojIEPDgUxDVUxPIERFIExBUyBUQVNBUwojIFRWQQpZX1RWQSA8LSBjYmluZChhcy5EYXRlKFkkRkVDSEEpLGFzLmRhdGEuZnJhbWUoVFZBKHN1YnNldChZLHNlbGVjdCA9IC1GRUNIQSksMTIpKSkKY29sbmFtZXMoWV9UVkEpIDwtIGNvbG5hbWVzKFkpCgojIFRWTQpZX1RWTSA8LSBjYmluZChhcy5EYXRlKFkkRkVDSEEpLGFzLmRhdGEuZnJhbWUoVFZNKHN1YnNldChZLHNlbGVjdCA9IC1GRUNIQSkpKSkKY29sbmFtZXMoWV9UVk0pIDwtIGNvbG5hbWVzKFkpCgojIExlbmd0aApuIDwtIG5yb3coZmlsdGVyKENOX3NhYywgU2VjdG9yID09ICJUb3RhbCBzZXJ2aWNpb3MiICYgR0VPID09ICJUb3RhbCBOYWNpb25hbCIgJiBNRURJREEgPT0gIlZhcmlhY2nDs24gbWVuc3VhbCIpKQoKIyBGZWNoYQptZXMgPC0gZm9ybWF0KGFzLnllYXJtb24odGltZShZWywyXSlbbnJvdyhZKV0pLCIlQiIpCm1lc19wcmV2IDwtIGZvcm1hdChhcy55ZWFybW9uKHRpbWUoWVssMl0pW25yb3coWSktMV0pLCIlQiIpCmFueW8gPC0gZm9ybWF0KGFzLnllYXJtb24odGltZShZWywyXSlbbnJvdyhZKV0pLCIlWSIpCmFueW9fcHJldiA8LSBmb3JtYXQoYXMueWVhcm1vbih0aW1lKFlbLDJdKVtucm93KFkpLTEyXSksIiVZIikKCmBgYAoKYGBge2NzcywgZWNobz1GQUxTRX0KLmJveEJvcmRlciB7CiAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CiAgICAgcGFkZGluZzogNXB4OwogICAgIGJhY2tncm91bmQ6ICNEMEQzRDQ7CiAgICAgY29sb3I6IGJsYWNrOwogICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7Cn0KCi5sZXQgcDpmaXJzdC1sZXR0ZXIgewogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQpgYGAKCgoKCiZuYnNwOwoKPGRpdj4KPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0Ij48Zm9udCBzaXplPSI0Ij4qKmByIHBhcmFtcyRmZWNoYWAqKjwvZm9udD48L3NwYW4+Cjxmb250IHNpemU9IjgiPioqQ09NVU5JQ0FDScOTTioqPC9mb250Pgo8L2Rpdj4KKioqCjxmb250IHNpemU9IjUiPkluZGljYWRvcmVzIGRlIEFjdGl2aWRhZCBkZWwgU2VjdG9yIFNlcnZpY2lvcyAoSUFTUykuIEJhc2UgMjAxNS4gQ2FuYXJpYXMgeSBFc3Bhw7FhLiA8ZGl2IGNsYXNzPSJsZXQiPjxwPiAqKmByIE1lc19ub21icmUoQ04kTUVTW25yb3coQ04pXSlgIGRlIGByIENOJEFOWU9bbnJvdyhDTildYCoqICA8L2Rpdj48L3A+PC9mb250PiAKCioqKgoKCgoKJm5ic3A7CgombmJzcDsKCiZuYnNwOwoKPGZvbnQgc2l6ZT0iNSI+PHAgYWxpZ24gPSAiY2VudGVyIj4gKipMYSB2YXJpYWNpw7NuIG1lbnN1YWwgZGUgbGEgY2lmcmEgZGUgbmVnb2Npb3MgZGVsIFNlY3RvciBTZXJ2aWNpb3MgZGUgTWVyY2FkbyBlcyBkZWwgYHIgZm9ybWF0KHJvdW5kKFlfVFZNJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZNKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUgZW4gQ2FuYXJpYXMsIGZyZW50ZSBhbCBgciAgZm9ybWF0KHJvdW5kKGZpbHRlcihDTl9zYWMsIFNlY3RvciA9PSAiVG90YWwgc2VydmljaW9zIiAmIEdFTyA9PSAiVG90YWwgTmFjaW9uYWwiICYgTUVESURBID09ICJWYXJpYWNpw7NuIG1lbnN1YWwiKSRWQUxPUltuXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSBkZWwgY29uanVudG8gbmFjaW9uYWwsIHVuYSB2ZXogcXVlIHNlIGVsaW1pbmFuIGxvcyBlZmVjdG9zIGVzdGFjaW9uYWxlcyB5IGRlIGNhbGVuZGFyaW8gKiogIDwvcD48L2ZvbnQ+IAoKJm5ic3A7Cgo8Zm9udCBzaXplPSI1Ij48cCBhbGlnbiA9ICJjZW50ZXIiPiAqKkxhIHRhc2EgYW51YWwgc2Ugc2l0w7phIGVuIGVsIGByIGZvcm1hdChyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWQSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlIGVuIGxhIHNlcmllIGNvcnJlZ2lkYSBkZSBlZmVjdG9zIGVzdGFjaW9uYWxlcyB5IGRlIGNhbGVuZGFyaW8sIGZyZW50ZSBhbCBgciBmb3JtYXQocm91bmQoZmlsdGVyKENOX3NhYywgU2VjdG9yID09ICJUb3RhbCBzZXJ2aWNpb3MiICYgR0VPID09ICJUb3RhbCBOYWNpb25hbCIgJiBNRURJREEgPT0gIlZhcmlhY2nDs24gYW51YWwiKSRWQUxPUltuXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSBlbiBsYSBzZXJpZSBjb3JyZWdpZGEgZGUgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSBjYWxlbmRhcmlvIGRlbCBjb25qdW50byBuYWNpb25hbCAqKiAgPC9wPjwvZm9udD4gCgoKJm5ic3A7CgombmJzcDsKCgoKPGRpdiBjbGFzcz0iYm94Qm9yZGVyIj48cCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPgo8Zm9udCBzaXplPSI2Ij4gKipBTsOBTElTSVMgREUgTEEgRVZPTFVDScOTTiBNRU5TVUFMKiogIDwvZm9udD4gCjwvcD48L2Rpdj4KCiZuYnNwOwoKPGZvbnQgc2l6ZT0iNCI+PHAgYWxpZ24gPSAianVzdGlmeSI+TGEgdmFyaWFjacOzbiBtZW5zdWFsIGRlbCDDrW5kaWNlIGdlbmVyYWwgZGUgbGEgY2lmcmEgZGUgbmVnb2Npb3MgZGVsIFNlY3RvciBTZXJ2aWNpb3MgZGUKTWVyY2FkbyBlbnRyZSBsb3MgbWVzZXMgZGUgYHIgbWVzYCB5IGByIG1lc19wcmV2YCwgZWxpbWluYW5kbyBsb3MgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSAKY2FsZW5kYXJpbywgZXMgZGVsIGByIGZvcm1hdChyb3VuZChZX1RWTSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWTSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlLiBFc3RhIHRhc2EgZXMgYHIgZm9ybWF0KGFicyhyb3VuZChZX1RWTSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWTSldLVlfVFZNJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZNKS0xXSwxKSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCBwdW50b3MgYHIgc3VwX2luZihyb3VuZChZX1RWTSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWTSldLVlfVFZNJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZNKS0xXSwxKSlgIGEgbGEgZGUgYHIgbWVzX3ByZXZgLCB5IGByIGZvcm1hdChhYnMocm91bmQoWV9UVk0kSU5ESUNFLkdFTkVSQUxfU0FDW25yb3coWV9UVk0pXS1yb3VuZChmaWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIikkVkFMT1Jbbl0sMSksMSkpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAgcHVudG9zCmByIHN1cF9pbmYocm91bmQoWV9UVk0kSU5ESUNFLkdFTkVSQUxfU0FDW25yb3coWV9UVk0pXS1maWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIikkVkFMT1Jbbl0sMSkpYCBhIGxhIGRlbCBjb25qdW50byBuYWNpb25hbCAoYHIgIGZvcm1hdChyb3VuZChmaWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIikkVkFMT1Jbbl0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpLjwvcD48L2ZvbnQ+IAoKJm5ic3A7CgombmJzcDsKCjxmb250IHNpemU9IjQiPjxwIGFsaWduID0gImp1c3RpZnkiPiAqKsONbmRpY2UgZ2VuZXJhbCBkZSBjaWZyYSBkZSBuZWdvY2lvcyBkZWwgU2VjdG9yIFNlcnZpY2lvcyBkZSBNZXJjYWRvKioKCkNvcnJlZ2lkbyBkZSBlZmVjdG9zIGVzdGFjaW9uYWxlcyB5IGRlIGNhbGVuZGFyaW8uIFRhc2EgbWVuc3VhbC4gUG9yY2VudGFqZQo8L3A+PC9mb250PiAKCgpgYGB7ciBldmFsID0gRkFMU0UsIGVjaG8gPSBGQUxTRSwgZmlnLndpZHRoID0gMTAsIGZpZy5oZWlnaHQgPSA2LCB3YXJuaW5nID0gRkFMU0V9CkRhdGEgPC0gc3Vic2V0KFlfVFZNLCBGRUNIQSA+PSBhcy5EYXRlKCIyMDE5LTAxLTAxIiksIHNlbGVjdCA9IGMoRkVDSEEsSU5ESUNFLkdFTkVSQUxfU0FDKSkKRGF0YSRGRUNIQSA8LSBhcy5mYWN0b3IoZm9ybWF0KGFzLnllYXJtb24oRGF0YSRGRUNIQSksIiViICVZIikpCiNEYXRhIDwtIGFzLmRhdGEuZnJhbWUoY2JpbmQoIkZFQ0hBIiA9IGFzLmZhY3Rvcihmb3JtYXQoYXMueWVhcm1vbihEYXRhJEZFQ0hBKSwiJWIgJVkiKSksRGF0YSRJTkRJQ0UuR0VORVJBTF9TQUMpKQpjb2xuYW1lcyhEYXRhKSA8LSBjKCJGZWNoYSIsIlZhbG9yIikKI0RhdGEkRmVjaGEgPC0gYXMuZmFjdG9yKERhdGEkRmVjaGEpCiNEYXRhJFZhbG9yIDwtIGFzLm51bWVyaWMoRGF0YSRWYWxvcikKCnAgPC0gZ2dwbG90KGRhdGEgPSBEYXRhLCBhZXMoeCA9IGZhY3Rvcihhcy5jaGFyYWN0ZXIoRGF0YSRGZWNoYSksIGxldmVsID0gRmVjaGEpLCB5ID0gVmFsb3IpKSArCiAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiLCBmaWxsID0gIiMwMDhiZDAiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB5bGFiKCIgIikgKwogIHhsYWIoIiAiKSArCiAgbGFicyhjb2xvdXIgPSAiICIpICsKICBndWlkZXMoZmlsbCA9IGd1aWRlX2xlZ2VuZCh0aXRsZSA9ICIgIikpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICJzb2xpZCIsIGNvbG9yID0gImJsYWNrIiwgc2l6ZSA9IDAuMjUpICsKICB0aGVtZShheGlzLnRpdGxlLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGU9OTApLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpIAogICAgIysgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKFZhbG9yLDEpKSwgCiAgICAjbnVkZ2VfeSA9IC0yLCBzaXplID0gMywKICAgICNpbmhlcml0LmFlcyA9IFRSVUUpCmdncGxvdGx5KHAsdG9vbHRpcCA9IGMgKCJGZWNoYSIsICJWYWxvciIpKQpgYGAKCgpgYGB7ciBlY2hvID0gRkFMU0UsIGZpZy53aWR0aCA9IDEwLCBmaWcuaGVpZ2h0ID0gNiwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQpFU1AgPC0gZmlsdGVyKENOX3NhYywgU2VjdG9yID09ICJUb3RhbCBzZXJ2aWNpb3MiICYgR0VPID09ICJUb3RhbCBOYWNpb25hbCIgJiBNRURJREEgPT0gIlZhcmlhY2nDs24gbWVuc3VhbCIpCkVTUCA8LSBzdWJzZXQoRVNQLCBzZWxlY3QgPSBjKEdFTyxNRVMsQU5ZTyxWQUxPUikgKQpFU1AkR0VPIDwtICJFc3Bhw7FhIgpDQU4gPC0gY2JpbmQoR0VPID0gIkNhbmFyaWFzIixNRVMgPSBFU1AkTUVTLEFOWU8gPSBFU1AkQU5ZTyxWQUxPUiA9IFlfVFZNWyhucm93KFlfVFZNKS1ucm93KEVTUCkrMSk6bnJvdyhZX1RWTSksIklORElDRS5HRU5FUkFMX1NBQyJdKQoKRVNQIDwtIEVTUFsobnJvdyhFU1ApLTEyKTpucm93KEVTUCksXQpDQU4gPC0gQ0FOWyhucm93KENBTiktMTIpOm5yb3coQ0FOKSxdCgpEYXRhIDwtIHJiaW5kKEVTUCxDQU4pCiNEYXRhJFZBTE9SIDwtIGFzLm51bWVyaWMoRGF0YSRWQUxPUikKRGF0YSRWQUxPUiA8LXJvdW5kKGFzLm51bWVyaWMoRGF0YSRWQUxPUiksMSkKRGF0YSA8LSByZW5hbWUoRGF0YSwgVmFsb3IgPSBWQUxPUikKCkZlY2hhIDwtIGFzLmZhY3Rvcihmb3JtYXQoYXMueWVhcm1vbihZX1RWQVsobnJvdyhZX1RWQSktbnJvdyhFU1ApKzEpOm5yb3coWV9UVkEpLCJGRUNIQSJdKSwiJWIgJVkiKSkKCkRhdGEgPC0gY2JpbmQoRGF0YSxGZWNoYSA9IEZlY2hhKQoKRGF0YTIgPC0gRGF0YSAKRGF0YTJbRGF0YSRBTllPICE9IENOJEFOWU9bbnJvdyhDTildIHwgRGF0YSRNRVMgIT0gQ04kTUVTW25yb3coQ04pXSxdJFZhbG9yIDwtTkEKZm9yIChpIGluIDE6bnJvdyhEYXRhMikpewogIGlmIChpcy5uYShEYXRhMiRWYWxvcltpXSk9PUYpe0RhdGEyJFZhbG9yW2ldPC1wYXN0ZTAoRGF0YTIkVmFsb3JbaV0sIiAlIil9Cn0KCgpEYXRhJEZlY2hhIDwtIGZhY3RvcihEYXRhJEZlY2hhLCBsZXZlbHMgPSAgdW5pcXVlKERhdGEkRmVjaGEpKQoKcCA8LSBnZ3Bsb3QoZGF0YSA9IERhdGEsIGFlcyh4ID0gRmVjaGEsIHkgPSBWYWxvciwgZ3JvdXAgPSBHRU8sIGZpbGwgPSBHRU8pKSsKICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIsIHBvc2l0aW9uPSJkb2RnZSIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHlsYWIoIiAiKSArCiAgeGxhYigiICIpICsKICBsYWJzKGNvbG91ciA9ICIgIikgKwogIGd1aWRlcyhmaWxsID0gZ3VpZGVfbGVnZW5kKHRpdGxlID0gIiAiKSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGxpbmV0eXBlID0gInNvbGlkIiwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4yNSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJFc3Bhw7FhIj0iIzdCMjQxQyIsIkNhbmFyaWFzIj0iIzAwOGJkMCIpKSsKICB0aGVtZShheGlzLnRpdGxlLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGU9OTApLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueSA9IGVsZW1lbnRfYmxhbmsoKSkrIAogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwLCB2anVzdCA9ICJlbmUgMjAxOSIsIGZhY2UgPSAiYm9sZCIpKSsKICBnZW9tX3RleHQoYWVzKGxhYmVsID0gRGF0YTIkVmFsb3IpLCAKICAgICNwb3NpdGlvbj1wb3NpdGlvbl9zdGFjayh2anVzdCA9IDApLCAKICAgIG51ZGdlX3kgPSBjKDIuNSwgMiksCiAgICBudWRnZV94ID0gYygwLjIsIC0wLjMpLAogICAgc2l6ZSA9Mi41LAogICAgaW5oZXJpdC5hZXMgPSBUUlVFKSAKCmdncGxvdGx5KHAsIHRvb2x0aXAgPSBjICgiY29sb3VyIiwgInkiLCAieCIpKQoKYGBgCgoKCgombmJzcDsKCiZuYnNwOwoKPGZvbnQgc2l6ZT0iNCI+PHAgYWxpZ24gPSAianVzdGlmeSI+IFNpIHNlIGVsaW1pbmFuIGxvcyBlZmVjdG9zIGVzdGFjaW9uYWxlcyB5IGRlIGNhbGVuZGFyaW8sIGVsIENvbWVyY2lvIGByIGJhamFfc3ViZShZX1RWTSRDT01FUkNJT19TQUNbbnJvdyhZX1RWTSldKWAgdW4gYHIgZm9ybWF0KHJvdW5kKFlfVFZNJENPTUVSQ0lPX1NBQ1tucm93KFlfVFZNKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUgeSBPdHJvcyBTZXJ2aWNpb3MgYHIgYmFqYV9zdWJlKFlfVFZNJE9UUk9TLlNFUlZJQ0lPU19TQUNbbnJvdyhZX1RWTSldKWAgdW4gYHIgZm9ybWF0KHJvdW5kKFlfVFZNJE9UUk9TLlNFUlZJQ0lPU19TQUNbbnJvdyhZX1RWTSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlLiBFbiBlbCBncnVwbyBkZSBPdHJvcyBTZXJ2aWNpb3MsIFRyYW5zcG9ydGUgeSBhbG1hY2VuYW1pZW50byAoYHIgZm9ybWF0KHJvdW5kKFlfVFZNJFRSQU5TUE9SVEUuWS5BTE1BQ0VOQU1JRU5UT19TQUNbbnJvdyhZX1RWTSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSwgSG9zdGVsZXLDrWEgKGByIGZvcm1hdChyb3VuZChZX1RWTSRIT1NURUxFUklBX1NBQ1tucm93KFlfVFZNKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpLCBJbmZvcm1hY2nDs24geSBjb211bmljYWNpb25lcyAoYHIgZm9ybWF0KHJvdW5kKFlfVFZNJElORk9STUFDSU9OLlkuQ09NVU5JQ0FDSU9ORVNfU0FDW25yb3coWV9UVk0pXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSksIEFjdGl2aWRhZGVzIHByb2Zlc2lvbmFsZXMsIGNpZW50w61maWNhcyB5IHTDqWNuaWNhcyAoYHIgZm9ybWF0KHJvdW5kKFlfVFZNJEFDVElWSURBREVTLlBST0ZFU0lPTkFMRVMuQ0lFTlRJRklDQVMuWS5URUNOSUNBU19TQUNbbnJvdyhZX1RWTSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSwgeSBBY3RpdmlkYWRlcyBhZG1pbmlzdHJhdGl2YXMgeSBzZXJ2aWNpb3MgYXV4aWxpYXJlcyAoYHIgZm9ybWF0KHJvdW5kKFlfVFZNJEFDVElWSURBREVTLkFETUlOSVNUUkFUSVZBUy5ZLlNFUlZJQ0lPUy5BVVhJTElBUkVTX1NBQ1tucm93KFlfVFZNKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpLgo8L3A+PC9mb250PiAKCgombmJzcDsKCiZuYnNwOwoKCjxmb250IHNpemU9IjQiPjxwIGFsaWduID0gImp1c3RpZnkiPiAqKsONbmRpY2UgY2lmcmEgZGUgbmVnb2Npb3M6IEdlbmVyYWwgeSBwb3Igc2VjdG9yZXMuKioKClRhc2EgbWVuc3VhbC4gUG9yY2VudGFqZS48ZGl2IGNsYXNzPSJsZXQiPjxwPmByIE1lc19ub21icmUoQ04kTUVTW25yb3coQ04pXSlgIGRlIGByIENOJEFOWU9bbnJvdyhDTildYCAgPC9kaXY+PC9wPjwvZm9udD4gCgo8L3A+PC9mb250PiAKCgpgYGB7ciBlY2hvID0gRkFMU0UsIGV2YWwgPSBGQUxTRSwgcmVzdWx0cyA9ICdhc2lzJywgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQoKZGF0YSA8LSBzdWJzZXQoWV9UVk1bbnJvdyhZX1RWTSksXSxzZWxlY3QgPSBjKCJJTkRJQ0UuR0VORVJBTCIsIkNPTUVSQ0lPIiwiVFJBTlNQT1JURS5ZLkFMTUFDRU5BTUlFTlRPIiAgLCJIT1NURUxFUklBIiwiSU5GT1JNQUNJT04uWS5DT01VTklDQUNJT05FUyIsIkFDVElWSURBREVTLlBST0ZFU0lPTkFMRVMuQ0lFTlRJRklDQVMuWS5URUNOSUNBUyIsIkFDVElWSURBREVTLkFETUlOSVNUUkFUSVZBUy5ZLlNFUlZJQ0lPUy5BVVhJTElBUkVTIikpCmNvbG5hbWVzKGRhdGEpIDwtIGMoIsONbmRpY2UgZ2VuZXJhbCIsIkNvbWVyY2lvIiwiVHJhbnNwb3J0ZSB5IGFsbWFjZW5hbWllbnRvIiwiSG9zdGVsZXLDrWEiLCJJbmZvcm1hY2nDs24geSBjb211bmljYWNpb25lcyIsIkFjdGl2aWRhZGVzIHByb2Zlc2lvbmFsZXMgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKQpkYXRhIDwtIHQocm91bmQoZGF0YSwxKSkKZGF0YV9zYWMgPC0gc3Vic2V0KFlfVFZNW25yb3coWV9UVk0pLF0sc2VsZWN0ID0gYygiSU5ESUNFLkdFTkVSQUxfU0FDIiwiQ09NRVJDSU9fU0FDIiwiVFJBTlNQT1JURS5ZLkFMTUFDRU5BTUlFTlRPX1NBQyIgICwiSE9TVEVMRVJJQV9TQUMiLCJJTkZPUk1BQ0lPTi5ZLkNPTVVOSUNBQ0lPTkVTX1NBQyIsIkFDVElWSURBREVTLlBST0ZFU0lPTkFMRVMuQ0lFTlRJRklDQVMuWS5URUNOSUNBU19TQUMiLCJBQ1RJVklEQURFUy5BRE1JTklTVFJBVElWQVMuWS5TRVJWSUNJT1MuQVVYSUxJQVJFU19TQUMiKSkKY29sbmFtZXMoZGF0YV9zYWMpIDwtIGMoIsONbmRpY2UgZ2VuZXJhbCIsIkNvbWVyY2lvIiwiVHJhbnNwb3J0ZSB5IGFsbWFjZW5hbWllbnRvIiwiSG9zdGVsZXLDrWEiLCJJbmZvcm1hY2nDs24geSBjb211bmljYWNpb25lcyIsIkFjdGl2aWRhZGVzIHByb2Zlc2lvbmFsZXMgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKQpkYXRhX3NhYyA8LSB0KHJvdW5kKGRhdGFfc2FjLDEpKQoKREFUQSA8LSBjYmluZChkYXRhLGRhdGFfc2FjKQpjb2xuYW1lcyhEQVRBKSA8LSBjKCIiLCIiKQoKdGFibGFzKGZvcm1hdChEQVRBLGJpZy5tYXJrPSIuIixkZWNpbWFsLm1hcmsgPSAiLCIpLDEpCmBgYAoKCmBgYHtyIGVjaG8gPSBGQUxTRSwgcmVzdWx0cyA9ICdhc2lzJywgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQpkYXRhIDwtIHN1YnNldChZX1RWTVtucm93KFlfVFZNKSxdLHNlbGVjdCA9IGMoIklORElDRS5HRU5FUkFMIiwiQ09NRVJDSU8iLCJUUkFOU1BPUlRFLlkuQUxNQUNFTkFNSUVOVE8iICAsIkhPU1RFTEVSSUEiLCJJTkZPUk1BQ0lPTi5ZLkNPTVVOSUNBQ0lPTkVTIiwiQUNUSVZJREFERVMuUFJPRkVTSU9OQUxFUy5DSUVOVElGSUNBUy5ZLlRFQ05JQ0FTIiwiQUNUSVZJREFERVMuQURNSU5JU1RSQVRJVkFTLlkuU0VSVklDSU9TLkFVWElMSUFSRVMiKSkKY29sbmFtZXMoZGF0YSkgPC0gYygiw41uZGljZSBnZW5lcmFsIiwiQ29tZXJjaW8iLCJUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8iLCJIb3N0ZWxlcsOtYSIsIkluZm9ybWFjacOzbiB5IGNvbXVuaWNhY2lvbmVzIiwiQWN0aXZpZGFkZXMgcHJvZmVzaW9uYWxlcyBjaWVudMOtZmljYXMgeSB0w6ljbmljYXMiLCJBY3RpdmlkYWRlcyBhZG1pbmlzdHJhdGl2YXMgeSBzZXJ2aWNpb3MgYXV4aWxpYXJlcyIpCmRhdGEgPC0gdChyb3VuZChkYXRhLDEpKQpkYXRhX3NhYyA8LSBzdWJzZXQoWV9UVk1bbnJvdyhZX1RWTSksXSxzZWxlY3QgPSBjKCJJTkRJQ0UuR0VORVJBTF9TQUMiLCJDT01FUkNJT19TQUMiLCJUUkFOU1BPUlRFLlkuQUxNQUNFTkFNSUVOVE9fU0FDIiAgLCJIT1NURUxFUklBX1NBQyIsIklORk9STUFDSU9OLlkuQ09NVU5JQ0FDSU9ORVNfU0FDIiwiQUNUSVZJREFERVMuUFJPRkVTSU9OQUxFUy5DSUVOVElGSUNBUy5ZLlRFQ05JQ0FTX1NBQyIsIkFDVElWSURBREVTLkFETUlOSVNUUkFUSVZBUy5ZLlNFUlZJQ0lPUy5BVVhJTElBUkVTX1NBQyIpKQpjb2xuYW1lcyhkYXRhX3NhYykgPC0gYygiw41uZGljZSBnZW5lcmFsIiwiQ29tZXJjaW8iLCJUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8iLCJIb3N0ZWxlcsOtYSIsIkluZm9ybWFjacOzbiB5IGNvbXVuaWNhY2lvbmVzIiwiQWN0aXZpZGFkZXMgcHJvZmVzaW9uYWxlcywgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKQpkYXRhX3NhYyA8LSB0KHJvdW5kKGRhdGFfc2FjLDEpKQoKREFUQSA8LSBjYmluZChkYXRhLGRhdGFfc2FjKQpjb2xuYW1lcyhEQVRBKSA8LSBjKCIiLCIiKQoKRVNQX3NhYyA8LSBmaWx0ZXIoQ05fc2FjLCBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIiAmIAogICAgICAgICAgICAgICAgICAgICAgTUVTID09IENOJE1FU1tucm93KENOKV0gJiBBTllPID09Q04kQU5ZT1tucm93KENOKV0pCiMgUmVjb2RpZmljYW1vcyBsb3Mgc2VjdG9yZXMgcGFyYSBxdWUgY29pbmNpZGFuIGxvcyBub21icmVzCkVTUF9zYWNbRVNQX3NhYyRTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIsXSRTZWN0b3IgPC0gYXMuY2hhcmFjdGVyKCLDjW5kaWNlIGdlbmVyYWwiKQpFU1Bfc2FjW0VTUF9zYWMkU2VjdG9yID09ICJDb21lcmNpbyBhbCBwb3IgbWF5b3IgeSBhbCBwb3IgbWVub3I7IHJlcGFyYWNpw7NuIGRlIHZlaMOtY3Vsb3MgZGUgbW90b3IgeSBtb3RvY2ljbGV0YXMiLF0kU2VjdG9yIDwtIGFzLmNoYXJhY3RlcigiQ29tZXJjaW8iKQoKcm93bmFtZXMoRVNQX3NhYykgPC0gRVNQX3NhYyRTZWN0b3IKRVNQX3NhYyA8LSBzdWJzZXQoRVNQX3NhYywgc2VsZWN0ID0gYyhWQUxPUikpCmNvbG5hbWVzKEVTUF9zYWMpIDwtIGMoIiIpCgpFU1AgPC0gZmlsdGVyKENOX3NlY3RvcmVzLCBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBtZW5zdWFsIiAmIAogICAgICAgICAgICAgICAgICAgICAgTUVTID09IENOJE1FU1tucm93KENOKV0gJiBBTllPID09Q04kQU5ZT1tucm93KENOKV0pIAojIFJlY29kaWZpY2Ftb3MgbG9zIHNlY3RvcmVzIHBhcmEgcXVlIGNvaW5jaWRhbiBsb3Mgbm9tYnJlcwpFU1BbRVNQJFNlY3RvciA9PSAiVG90YWwgc2VydmljaW9zIixdJFNlY3RvciA8LSBhcy5jaGFyYWN0ZXIoIsONbmRpY2UgZ2VuZXJhbCIpCkVTUFtFU1AkU2VjdG9yID09ICJDb21lcmNpbyBhbCBwb3IgbWF5b3IgeSBhbCBwb3IgbWVub3I7IHJlcGFyYWNpw7NuIGRlIHZlaMOtY3Vsb3MgZGUgbW90b3IgeSBtb3RvY2ljbGV0YXMiLF0kU2VjdG9yIDwtIGFzLmNoYXJhY3RlcigiQ29tZXJjaW8iKQoKcm93bmFtZXMoRVNQKSA8LSBFU1AkU2VjdG9yCkVTUCA8LSBzdWJzZXQoRVNQLCBzZWxlY3QgPSBjKFZBTE9SKSkKY29sbmFtZXMoRVNQKSA8LSBjKCIiKQoKREFUQSA8LSBjYmluZChEQVRBLEVTUCxFU1Bfc2FjKQpjb2xuYW1lcyhEQVRBKSA8LSBjKCLDjW5kaWNlIG9yaWdpbmFsIiwgIsONbmRpY2UgY29ycmVnaWRvIGRlIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbyIsCiAgICAgICAgICAgICAgICAgICAgIsONbmRpY2Ugb3JpZ2luYWwiLCAiw41uZGljZSBjb3JyZWdpZG8gZGUgZWZlY3RvcyBlc3RhY2lvbmFsZXMgeSBkZSBjYWxlbmRhcmlvIikKCnRhYmxhc19FQyhmb3JtYXQoREFUQSxiaWcubWFyaz0iLiIsZGVjaW1hbC5tYXJrID0gIiwiKSwxKQpgYGAKCgombmJzcDsKCgombmJzcDsKCgo8ZGl2IGNsYXNzPSJib3hCb3JkZXIiPjxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+Cjxmb250IHNpemU9IjYiPiAqKkFOw4FMSVNJUyBERSBMQSBFVk9MVUNJw5NOIEFOVUFMKiogIDwvZm9udD4gCjwvcD48L2Rpdj4KCiZuYnNwOwoKPGZvbnQgc2l6ZT0iNCI+PHAgYWxpZ24gPSAianVzdGlmeSI+RWwgw41uZGljZSBnZW5lcmFsIGRlIGNpZnJhIGRlIG5lZ29jaW9zIGRlbCBTZWN0b3IgU2VydmljaW9zIGRlIE1lcmNhZG8gY29ycmVnaWRvIGRlIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbyBleHBlcmltZW50YSB1bmEgYHIgY2FpZGFfc3ViaWRhKFlfVFZBJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZBKV0pYCBkZWwgYHIgZm9ybWF0KGFicyhyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWQSldLDEpKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSBlbiBgciBtZXNgIHJlc3BlY3RvIGFsIG1pc21vIG1lcyBkZSBgciBhbnlvX3ByZXZgLiBFc3RhIHRhc2EgZXMgYHIgZm9ybWF0KGFicyhyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWQSldLVlfVFZBJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZBKS0xXSwxKSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCBwdW50b3MgYHIgc3VwX2luZihyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWQSldLVlfVFZBJElORElDRS5HRU5FUkFMX1NBQ1tucm93KFlfVFZBKS0xXSwxKSlgIGEgbGEgcmVnaXN0cmFkYSBlbiBgciBtZXNfcHJldmAsIHkgYHIgZm9ybWF0KGFicyhyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTF9TQUNbbnJvdyhZX1RWQSldLWZpbHRlcihDTl9zYWMsIFNlY3RvciA9PSAiVG90YWwgc2VydmljaW9zIiAmIEdFTyA9PSAiVG90YWwgTmFjaW9uYWwiICYgTUVESURBID09ICJWYXJpYWNpw7NuIGFudWFsIikkVkFMT1Jbbl0sMSkpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAgcHVudG9zIHBvciBgciBhYmFqb19lbmNpbWEoWV9UVkEkSU5ESUNFLkdFTkVSQUxfU0FDW25yb3coWV9UVkEpXS1maWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBhbnVhbCIpJFZBTE9SW25dKWAgZGUgbGEgcmVnaXN0cmFkYSBhIG5pdmVsIG5hY2lvbmFsIChgciBmaWx0ZXIoQ05fc2FjLCBTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIgJiBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBhbnVhbCIpJFZBTE9SW25dYCUpLiBMYSBzZXJpZSBvcmlnaW5hbCBwcmVzZW50YSB1bmEgdmFyaWFjacOzbiBhbnVhbCBkZWwgYHIgIGZvcm1hdChyb3VuZChZX1RWQSRJTkRJQ0UuR0VORVJBTFtucm93KFlfVFZBKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUsIGxvIHF1ZSBzdXBvbmUgYHIgIGZvcm1hdChhYnMocm91bmQoWV9UVkEkSU5ESUNFLkdFTkVSQUxbbnJvdyhZX1RWQSldLVlfVFZBJElORElDRS5HRU5FUkFMW25yb3coWV9UVkEpLTFdLDEpKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgIHB1bnRvcyBwb3IgYHIgYWJham9fZW5jaW1hKFlfVFZBJElORElDRS5HRU5FUkFMW25yb3coWV9UVkEpXS1ZX1RWQSRJTkRJQ0UuR0VORVJBTFtucm93KFlfVFZBKS0xXSlgIGRlIGxhIHJlZ2lzdHJhZGEgZW4gYHIgbWVzX3ByZXZgLjwvcD48L2ZvbnQ+IAoKCiZuYnNwOwoKJm5ic3A7Cgo8Zm9udCBzaXplPSI0Ij48cCBhbGlnbiA9ICJqdXN0aWZ5Ij4gKirDjW5kaWNlIGdlbmVyYWwgZGUgY2lmcmEgZGUgbmVnb2Npb3MgZGVsIFNlY3RvciBTZXJ2aWNpb3MgZGUgTWVyY2Fkby4gQ2FuYXJpYXMgeSBFc3Bhw7FhKioKCkNvcnJlZ2lkbyBkZSBlZmVjdG9zIGVzdGFjaW9uYWxlcyB5IGRlIGNhbGVuZGFyaW8uIFRhc2EgYW51YWwuIFBvcmNlbnRhamUuCjwvcD48L2ZvbnQ+IAoKYGBge3IgZWNobyA9IEZBTFNFLCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodCA9IDYsIHdhcm5pbmcgPSBGQUxTRX0KRVNQIDwtIGZpbHRlcihDTl9zYWMsIFNlY3RvciA9PSAiVG90YWwgc2VydmljaW9zIiAmIEdFTyA9PSAiVG90YWwgTmFjaW9uYWwiICYgTUVESURBID09ICJWYXJpYWNpw7NuIGFudWFsIikKRVNQIDwtIHN1YnNldChFU1AsIHNlbGVjdCA9IGMoR0VPLE1FUyxBTllPLFZBTE9SKSApCkVTUCRHRU8gPC0gIkVzcGHDsWEiCkNBTiA8LSBjYmluZChHRU8gPSAiQ2FuYXJpYXMiLE1FUyA9IEVTUCRNRVMsQU5ZTyA9IEVTUCRBTllPLFZBTE9SID0gWV9UVkFbKG5yb3coWV9UVkEpLW5yb3coRVNQKSsxKTpucm93KFlfVFZBKSwiSU5ESUNFLkdFTkVSQUxfU0FDIl0pCgpEYXRhIDwtIHJiaW5kKEVTUCxDQU4pCkRhdGEkVkFMT1IgPC0gYXMubnVtZXJpYyhEYXRhJFZBTE9SKQoKI0ZlY2hhIDwtIGFzLmZhY3RvcihwYXN0ZTAoZm9ybWF0KGFzLnllYXJtb24oWV9UVkFbKG5yb3coWV9UVkEpLW5yb3coRVNQKSsxKTpucm93KFlfVFZBKSwiRkVDSEEiXSksIiViIiksIERhdGEkQU5ZTykpCkZlY2hhIDwtIGFzLmZhY3Rvcihmb3JtYXQoYXMueWVhcm1vbihZX1RWQVsobnJvdyhZX1RWQSktbnJvdyhFU1ApKzEpOm5yb3coWV9UVkEpLCJGRUNIQSJdKSwiJWIgJVkiKSkKCkRhdGEgPC0gY2JpbmQoRGF0YSxGZWNoYSA9IEZlY2hhKQpEYXRhIDwtIHJlbmFtZShEYXRhLCBWYWxvciA9IFZBTE9SKQoKI2RhdGUgPC0gYyhhcy5EYXRlKFlfVFZBWyhucm93KFlfVFZBKS1ucm93KEVTUCkrMSk6bnJvdyhZX1RWQSksIkZFQ0hBIl0pLGFzLkRhdGUoWV9UVkFbKG5yb3coWV9UVkEpLW5yb3coRVNQKSsxKTpucm93KFlfVFZBKSwiRkVDSEEiXSkpCgojRGF0YSA8LSBjYmluZChEYXRhLGRhdGUgPSBkYXRlKQoKI3ggPSAgZmFjdG9yKGFzLmNoYXJhY3RlcihEYXRhJGZlY2hhKSwgbGV2ZWwgPSBEYXRhJGZlY2hhKQoKRGF0YSRGZWNoYSA8LSBmYWN0b3IoRGF0YSRGZWNoYSwgbGV2ZWxzID0gIHVuaXF1ZShEYXRhJEZlY2hhKSkKCkRhdGEyIDwtIERhdGEgCkRhdGEyJFZhbG9yIDwtIHJvdW5kKERhdGEyJFZhbG9yLDEpCkRhdGEyW0RhdGEkQU5ZTyAhPSBDTiRBTllPW25yb3coQ04pXSB8IERhdGEkTUVTICE9IENOJE1FU1tucm93KENOKV0sXSRWYWxvciA8LU5BCgoKcCA8LSBnZ3Bsb3QoZGF0YSA9IERhdGEsIGFlcyh4ID0gRmVjaGEsIHkgPSBWYWxvciwgZ3JvdXAgPSBHRU8sIGNvbG91ciA9IEdFTykpKwogIGdlb21fbGluZShzaXplID0gMC44KSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgbGluZXR5cGUgPSAic29saWQiLCBjb2xvciA9ICJibGFjayIsIHNpemUgPSAwLjI1KSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gRmVjaGFbMV0sIGxpbmV0eXBlID0gInNvbGlkIiwgY29sb3IgPSAiYmxhY2siKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShheGlzLnRpdGxlLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGU9OTApLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTAsIHZqdXN0ID0gImVuZSAyMDE5IiwgZmFjZSA9ICJib2xkIikpICsKICB5bGFiKCIgIikgICsKICBndWlkZXMoZmlsbCA9IGd1aWRlX2xlZ2VuZCh0aXRsZSA9ICIgIikpKwogIHNjYWxlX2NvbG91cl9tYW51YWwodmFsdWVzPWMoIkVzcGHDsWEiPSIjN0IyNDFDIiwiQ2FuYXJpYXMiPSIjMDA4YmQwIikpKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBhcy5jaGFyYWN0ZXIoRGF0YTIkVmFsb3IpLCAKICAgICAgICAgICAgeCA9IERhdGEyJEZlY2hhW25yb3coRGF0YTIpXQogICksIHNpemUgPSAzLCB2anVzdCA9IDEsIG51ZGdlX3kgPSAyKSAgCgoKZ2dwbG90bHkocCwgdG9vbHRpcCA9IGMgKCJjb2xvdXIiLCAieSIsICJ4IikpCgpgYGAKCgombmJzcDsKCiZuYnNwOwoKPGZvbnQgc2l6ZT0iNCI+PHAgYWxpZ24gPSAianVzdGlmeSI+IFNpIHNlIGVsaW1pbmFuIGxvcyBlZmVjdG9zIGVzdGFjaW9uYWxlcyB5IGRlIGNhbGVuZGFyaW8sIGVsIENvbWVyY2lvIGByIGJhamFfc3ViZShZX1RWQSRDT01FUkNJT19TQUNbbnJvdyhZX1RWQSldKWAgdW4gYHIgZm9ybWF0KHJvdW5kKFlfVFZBJENPTUVSQ0lPX1NBQ1tucm93KFlfVFZBKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUgeSBPdHJvcyBzZXJ2aWNpb3MgYHIgYmFqYV9zdWJlKFlfVFZBJE9UUk9TLlNFUlZJQ0lPU19TQUNbbnJvdyhZX1RWQSldKWAgdW4gYHIgZm9ybWF0KHJvdW5kKFlfVFZBJE9UUk9TLlNFUlZJQ0lPU19TQUNbbnJvdyhZX1RWQSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlLiBFbiBlbCBncnVwbyBkZSBPdHJvcyBTZXJ2aWNpb3MsIFRyYW5zcG9ydGUgeSBhbG1hY2VuYW1pZW50byAoYHIgZm9ybWF0KHJvdW5kKFlfVFZBJFRSQU5TUE9SVEUuWS5BTE1BQ0VOQU1JRU5UT19TQUNbbnJvdyhZX1RWQSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSwgSG9zdGVsZXLDrWEgKGByIGZvcm1hdChyb3VuZChZX1RWQSRIT1NURUxFUklBX1NBQ1tucm93KFlfVFZBKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpLCBJbmZvcm1hY2nDs24geSBjb211bmljYWNpb25lcyAoYHIgZm9ybWF0KHJvdW5kKFlfVFZBJElORk9STUFDSU9OLlkuQ09NVU5JQ0FDSU9ORVNfU0FDW25yb3coWV9UVkEpXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSksIEFjdGl2aWRhZGVzIHByb2Zlc2lvbmFsZXMsIGNpZW50w61maWNhcyB5IHTDqWNuaWNhcyAoYHIgZm9ybWF0KHJvdW5kKFlfVFZBJEFDVElWSURBREVTLlBST0ZFU0lPTkFMRVMuQ0lFTlRJRklDQVMuWS5URUNOSUNBU19TQUNbbnJvdyhZX1RWQSldLDEpLGRlY2ltYWwubWFyaz0iLCIsYmlnLm1hcms9Ii4iKWAlKSwgeSBBY3RpdmlkYWRlcyBhZG1pbmlzdHJhdGl2YXMgeSBzZXJ2aWNpb3MgYXV4aWxpYXJlcyAoYHIgZm9ybWF0KHJvdW5kKFlfVFZBJEFDVElWSURBREVTLkFETUlOSVNUUkFUSVZBUy5ZLlNFUlZJQ0lPUy5BVVhJTElBUkVTX1NBQ1tucm93KFlfVFZBKV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpLgo8L3A+PC9mb250PiAKCgoKJm5ic3A7CgombmJzcDsKCgo8Zm9udCBzaXplPSI0Ij48cCBhbGlnbiA9ICJqdXN0aWZ5Ij4gKirDjW5kaWNlIGNpZnJhIGRlIG5lZ29jaW9zOiBHZW5lcmFsIHkgcG9yIHNlY3RvcmVzLioqCgpUYXNhIGFudWFsLiBQb3JjZW50YWplLjxkaXYgY2xhc3M9ImxldCI+PHA+YHIgTWVzX25vbWJyZShDTiRNRVNbbnJvdyhDTildKWAgZGUgYHIgQ04kQU5ZT1tucm93KENOKV1gICA8L2Rpdj48L3A+PC9mb250PiAKCjwvcD48L2ZvbnQ+IAoKCmBgYHtyIGVjaG8gPSBGQUxTRSwgZXZhbCA9IEZBTFNFLCByZXN1bHRzID0gJ2FzaXMnfQoKZGF0YSA8LSBzdWJzZXQoWV9UVkFbbnJvdyhZX1RWQSksXSxzZWxlY3QgPSBjKCJJTkRJQ0UuR0VORVJBTCIsIkNPTUVSQ0lPIiwiVFJBTlNQT1JURS5ZLkFMTUFDRU5BTUlFTlRPIiAgLCJIT1NURUxFUklBIiwiSU5GT1JNQUNJT04uWS5DT01VTklDQUNJT05FUyIsIkFDVElWSURBREVTLlBST0ZFU0lPTkFMRVMuQ0lFTlRJRklDQVMuWS5URUNOSUNBUyIsIkFDVElWSURBREVTLkFETUlOSVNUUkFUSVZBUy5ZLlNFUlZJQ0lPUy5BVVhJTElBUkVTIikpCmNvbG5hbWVzKGRhdGEpIDwtIGMoIsONbmRpY2UgZ2VuZXJhbCIsIkNvbWVyY2lvIiwiVHJhbnNwb3J0ZSB5IGFsbWFjZW5hbWllbnRvIiwiSG9zdGVsZXLDrWEiLCJJbmZvcm1hY2nDs24geSBjb211bmljYWNpb25lcyIsIkFjdGl2aWRhZGVzIHByb2Zlc2lvbmFsZXMgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKQpkYXRhIDwtIHQocm91bmQoZGF0YSwxKSkKZGF0YV9zYWMgPC0gc3Vic2V0KFlfVFZBW25yb3coWV9UVkEpLF0sc2VsZWN0ID0gYygiSU5ESUNFLkdFTkVSQUxfU0FDIiwiQ09NRVJDSU9fU0FDIiwiVFJBTlNQT1JURS5ZLkFMTUFDRU5BTUlFTlRPX1NBQyIgICwiSE9TVEVMRVJJQV9TQUMiLCJJTkZPUk1BQ0lPTi5ZLkNPTVVOSUNBQ0lPTkVTX1NBQyIsIkFDVElWSURBREVTLlBST0ZFU0lPTkFMRVMuQ0lFTlRJRklDQVMuWS5URUNOSUNBU19TQUMiLCJBQ1RJVklEQURFUy5BRE1JTklTVFJBVElWQVMuWS5TRVJWSUNJT1MuQVVYSUxJQVJFU19TQUMiKSkKY29sbmFtZXMoZGF0YV9zYWMpIDwtIGMoIsONbmRpY2UgZ2VuZXJhbCIsIkNvbWVyY2lvIiwiVHJhbnNwb3J0ZSB5IGFsbWFjZW5hbWllbnRvIiwiSG9zdGVsZXLDrWEiLCJJbmZvcm1hY2nDs24geSBjb211bmljYWNpb25lcyIsIkFjdGl2aWRhZGVzIHByb2Zlc2lvbmFsZXMgY2llbnTDrWZpY2FzIHkgdMOpY25pY2FzIiwiQWN0aXZpZGFkZXMgYWRtaW5pc3RyYXRpdmFzIHkgc2VydmljaW9zIGF1eGlsaWFyZXMiKQpkYXRhX3NhYyA8LSB0KHJvdW5kKGRhdGFfc2FjLDEpKQoKREFUQSA8LSBjYmluZChkYXRhLGRhdGFfc2FjKQpjb2xuYW1lcyhEQVRBKSA8LSBjKCIiLCIiKQoKdGFibGFzKGZvcm1hdChEQVRBLGJpZy5tYXJrPSIuIixkZWNpbWFsLm1hcmsgPSAiLCIpLDEpCmBgYAoKCmBgYHtyIGVjaG8gPSBGQUxTRSwgcmVzdWx0cyA9ICdhc2lzJywgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFfQpkYXRhIDwtIHN1YnNldChZX1RWQVtucm93KFlfVFZBKSxdLHNlbGVjdCA9IGMoIklORElDRS5HRU5FUkFMIiwiQ09NRVJDSU8iLCJUUkFOU1BPUlRFLlkuQUxNQUNFTkFNSUVOVE8iICAsIkhPU1RFTEVSSUEiLCJJTkZPUk1BQ0lPTi5ZLkNPTVVOSUNBQ0lPTkVTIiwiQUNUSVZJREFERVMuUFJPRkVTSU9OQUxFUy5DSUVOVElGSUNBUy5ZLlRFQ05JQ0FTIiwiQUNUSVZJREFERVMuQURNSU5JU1RSQVRJVkFTLlkuU0VSVklDSU9TLkFVWElMSUFSRVMiKSkKY29sbmFtZXMoZGF0YSkgPC0gYygiw41uZGljZSBnZW5lcmFsIiwiQ29tZXJjaW8iLCJUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8iLCJIb3N0ZWxlcsOtYSIsIkluZm9ybWFjacOzbiB5IGNvbXVuaWNhY2lvbmVzIiwiQWN0aXZpZGFkZXMgcHJvZmVzaW9uYWxlcyBjaWVudMOtZmljYXMgeSB0w6ljbmljYXMiLCJBY3RpdmlkYWRlcyBhZG1pbmlzdHJhdGl2YXMgeSBzZXJ2aWNpb3MgYXV4aWxpYXJlcyIpCmRhdGEgPC0gdChyb3VuZChkYXRhLDEpKQpkYXRhX3NhYyA8LSBzdWJzZXQoWV9UVkFbbnJvdyhZX1RWQSksXSxzZWxlY3QgPSBjKCJJTkRJQ0UuR0VORVJBTF9TQUMiLCJDT01FUkNJT19TQUMiLCJUUkFOU1BPUlRFLlkuQUxNQUNFTkFNSUVOVE9fU0FDIiAgLCJIT1NURUxFUklBX1NBQyIsIklORk9STUFDSU9OLlkuQ09NVU5JQ0FDSU9ORVNfU0FDIiwiQUNUSVZJREFERVMuUFJPRkVTSU9OQUxFUy5DSUVOVElGSUNBUy5ZLlRFQ05JQ0FTX1NBQyIsIkFDVElWSURBREVTLkFETUlOSVNUUkFUSVZBUy5ZLlNFUlZJQ0lPUy5BVVhJTElBUkVTX1NBQyIpKQpjb2xuYW1lcyhkYXRhX3NhYykgPC0gYygiw41uZGljZSBnZW5lcmFsIiwiQ29tZXJjaW8iLCJUcmFuc3BvcnRlIHkgYWxtYWNlbmFtaWVudG8iLCJIb3N0ZWxlcsOtYSIsIkluZm9ybWFjacOzbiB5IGNvbXVuaWNhY2lvbmVzIiwiQWN0aXZpZGFkZXMgcHJvZmVzaW9uYWxlcyBjaWVudMOtZmljYXMgeSB0w6ljbmljYXMiLCJBY3RpdmlkYWRlcyBhZG1pbmlzdHJhdGl2YXMgeSBzZXJ2aWNpb3MgYXV4aWxpYXJlcyIpCmRhdGFfc2FjIDwtIHQocm91bmQoZGF0YV9zYWMsMSkpCgpEQVRBIDwtIGNiaW5kKGRhdGEsZGF0YV9zYWMpCmNvbG5hbWVzKERBVEEpIDwtIGMoIiIsIiIpCgpFU1Bfc2FjIDwtIGZpbHRlcihDTl9zYWMsIEdFTyA9PSAiVG90YWwgTmFjaW9uYWwiICYgTUVESURBID09ICJWYXJpYWNpw7NuIGFudWFsIiAmIAogICAgICAgICAgICAgICAgICAgICAgTUVTID09IENOJE1FU1tucm93KENOKV0gJiBBTllPID09Q04kQU5ZT1tucm93KENOKV0pCiMgUmVjb2RpZmljYW1vcyBsb3Mgc2VjdG9yZXMgcGFyYSBxdWUgY29pbmNpZGFuIGxvcyBub21icmVzCkVTUF9zYWNbRVNQX3NhYyRTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIsXSRTZWN0b3IgPC0gYXMuY2hhcmFjdGVyKCLDjW5kaWNlIGdlbmVyYWwiKQpFU1Bfc2FjW0VTUF9zYWMkU2VjdG9yID09ICJDb21lcmNpbyBhbCBwb3IgbWF5b3IgeSBhbCBwb3IgbWVub3I7IHJlcGFyYWNpw7NuIGRlIHZlaMOtY3Vsb3MgZGUgbW90b3IgeSBtb3RvY2ljbGV0YXMiLF0kU2VjdG9yIDwtIGFzLmNoYXJhY3RlcigiQ29tZXJjaW8iKQoKcm93bmFtZXMoRVNQX3NhYykgPC0gRVNQX3NhYyRTZWN0b3IKRVNQX3NhYyA8LSBzdWJzZXQoRVNQX3NhYywgc2VsZWN0ID0gYyhWQUxPUikpCmNvbG5hbWVzKEVTUF9zYWMpIDwtIGMoIiIpCgpFU1AgPC0gZmlsdGVyKENOX3NlY3RvcmVzLCBHRU8gPT0gIlRvdGFsIE5hY2lvbmFsIiAmIE1FRElEQSA9PSAiVmFyaWFjacOzbiBhbnVhbCIgJiAKICAgICAgICAgICAgICAgICAgICAgIE1FUyA9PSBDTiRNRVNbbnJvdyhDTildICYgQU5ZTyA9PUNOJEFOWU9bbnJvdyhDTildKSAKIyBSZWNvZGlmaWNhbW9zIGxvcyBzZWN0b3JlcyBwYXJhIHF1ZSBjb2luY2lkYW4gbG9zIG5vbWJyZXMKRVNQW0VTUCRTZWN0b3IgPT0gIlRvdGFsIHNlcnZpY2lvcyIsXSRTZWN0b3IgPC0gYXMuY2hhcmFjdGVyKCLDjW5kaWNlIGdlbmVyYWwiKQpFU1BbRVNQJFNlY3RvciA9PSAiQ29tZXJjaW8gYWwgcG9yIG1heW9yIHkgYWwgcG9yIG1lbm9yOyByZXBhcmFjacOzbiBkZSB2ZWjDrWN1bG9zIGRlIG1vdG9yIHkgbW90b2NpY2xldGFzIixdJFNlY3RvciA8LSBhcy5jaGFyYWN0ZXIoIkNvbWVyY2lvIikKCnJvd25hbWVzKEVTUCkgPC0gRVNQJFNlY3RvcgpFU1AgPC0gc3Vic2V0KEVTUCwgc2VsZWN0ID0gYyhWQUxPUikpCmNvbG5hbWVzKEVTUCkgPC0gYygiIikKCkRBVEEgPC0gY2JpbmQoREFUQSxFU1AsRVNQX3NhYykKY29sbmFtZXMoREFUQSkgPC0gYygiw41uZGljZSBvcmlnaW5hbCIsICLDjW5kaWNlIGNvcnJlZ2lkbyBkZSBlZmVjdG9zIGVzdGFjaW9uYWxlcyB5IGRlIGNhbGVuZGFyaW8iLAogICAgICAgICAgICAgICAgICAgICLDjW5kaWNlIG9yaWdpbmFsIiwgIsONbmRpY2UgY29ycmVnaWRvIGRlIGVmZWN0b3MgZXN0YWNpb25hbGVzIHkgZGUgY2FsZW5kYXJpbyIpCgp0YWJsYXNfRUMoZm9ybWF0KERBVEEsYmlnLm1hcms9Ii4iLGRlY2ltYWwubWFyayA9ICIsIiksMSkKYGBgCgombmJzcDsKCiZuYnNwOwoKPGRpdiBjbGFzcz0iYm94Qm9yZGVyIj48cCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPgo8Zm9udCBzaXplPSI2Ij4gKipBTsOBTElTSVMgQ09NUEFSQURPIFBPUiBDQ0FBKiogIDwvZm9udD4gCjwvcD48L2Rpdj4KCgombmJzcDsKCiZuYnNwOwoKPGZvbnQgc2l6ZT0iNSI+PHAgYWxpZ24gPSAianVzdGlmeSI+PHU+ICoqw41uZGljZXMgZGUgY2lmcmEgZGUgbmVnb2Npb3MqKiA8L3U+PC9wPjwvZm9udD4gCgoKYGBge3IgaW5jbHVkZT1GQUxTRX0KQ0NBQV9UVkFfbGFzdCA8LSAgZmlsdGVyKENOLCBNRURJREEgPT0gIlZhcmlhY2nDs24gYW51YWwiICYgTUVTID09IENOJE1FU1tucm93KENOKV0gJiBBTllPID09IGFueW8pCkNDQUFfVFZBX2xhc3QkU2VjdG9yIDwtIGFzLmZhY3RvcihDQ0FBX1RWQV9sYXN0JFNlY3RvcikKbGV2ZWxzKENDQUFfVFZBX2xhc3QkU2VjdG9yKVtsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpPT0iQmFsZWFycywgSWxsZXMiXSA8LSAiSXNsYXMgQmFsZWFyZXMiCmxldmVscyhDQ0FBX1RWQV9sYXN0JFNlY3RvcilbbGV2ZWxzKENDQUFfVFZBX2xhc3QkU2VjdG9yKT09Ik11cmNpYSwgUmVnacOzbiBkZSJdIDwtICJSZWdpw7NuIGRlIE11cmNpYSIKbGV2ZWxzKENDQUFfVFZBX2xhc3QkU2VjdG9yKVtsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpPT0iQXN0dXJpYXMsIFByaW5jaXBhZG8gZGUiXSA8LSAiUHJpbmNpcGFkbyBkZSBBc3R1cmlhcyIKbGV2ZWxzKENDQUFfVFZBX2xhc3QkU2VjdG9yKVtsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpPT0iTWFkcmlkLCBDb211bmlkYWQgZGUiXSA8LSAiQ29tdW5pZGFkIGRlIE1hZHJpZCIKbGV2ZWxzKENDQUFfVFZBX2xhc3QkU2VjdG9yKVtsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpPT0iTmF2YXJyYSwgQ29tdW5pZGFkIEZvcmFsIGRlIl0gPC0gIkNvbXVuaWRhZCBGb3JhbCBkZSBOYXZhcnJhIgpsZXZlbHMoQ0NBQV9UVkFfbGFzdCRTZWN0b3IpW2xldmVscyhDQ0FBX1RWQV9sYXN0JFNlY3Rvcik9PSJSaW9qYSwgTGEiXSA8LSAiTGEgUmlvamEiCmxldmVscyhDQ0FBX1RWQV9sYXN0JFNlY3RvcilbbGV2ZWxzKENDQUFfVFZBX2xhc3QkU2VjdG9yKT09IlRvdGFsIHNlcnZpY2lvcyJdIDwtICJOQUNJT05BTCIKCgoKCkNDQUFfVFZBX2xhc3QgPC0gYXJyYW5nZShDQ0FBX1RWQV9sYXN0LGRlc2MoVkFMT1IpKQpgYGAKCgo8Zm9udCBzaXplPSI0Ij48cCBhbGlnbiA9ICJqdXN0aWZ5Ij5MYSB0YXNhIGFudWFsIGRlIGxhIGNpZnJhIGRlIG5lZ29jaW9zIGRlbCBTZWN0b3IgU2VydmljaW9zIGRlIE1lcmNhZG8gYHIgY3JlY19jY2FhKENDQUFfVFZBX2xhc3QkVkFMT1IpWywxXWAgcmVzcGVjdG8gYSBgciBtZXNfcHJldmAgZGUgYHIgYW55b19wcmV2YCBgciBjcmVjX2NjYWEoQ0NBQV9UVkFfbGFzdCRWQUxPUilbLDJdYCBsYXMgY29tdW5pZGFkZXMgYXV0w7Nub21hcy4gYHIgQ0NBQV9UVkFfbGFzdCRTZWN0b3JbbnJvdyhDQ0FBX1RWQV9sYXN0KV1gIChgciBmb3JtYXQocm91bmQoQ0NBQV9UVkFfbGFzdCRWQUxPUltucm93KENDQUFfVFZBX2xhc3QpXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSkgeSBgciBDQ0FBX1RWQV9sYXN0JFNlY3Rvcltucm93KENDQUFfVFZBX2xhc3QpLTFdYCAoYHIgZm9ybWF0KHJvdW5kKENDQUFfVFZBX2xhc3QkVkFMT1JbbnJvdyhDQ0FBX1RWQV9sYXN0KS0xXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSkgcHJlc2VudGFuIGxvcyBtYXlvcmVzIGByIGRlc2NfaW5jcihtaW4oQ0NBQV9UVkFfbGFzdCRWQUxPUikpYCwgbWllbnRyYXMgcXVlIGByIENDQUFfVFZBX2xhc3QkU2VjdG9yWzFdYCAoYHIgZm9ybWF0KHJvdW5kKENDQUFfVFZBX2xhc3QkVkFMT1JbMV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpIGVzIGxhIHF1ZSBgciBtYXhfc3ViX2JhaihtYXgoQ0NBQV9UVkFfbGFzdCRWQUxPUikpYC4gPC9wPjwvZm9udD4gCgoKJm5ic3A7CgombmJzcDsKCjxmb250IHNpemU9IjQiPjxwIGFsaWduID0gImp1c3RpZnkiPiAqKsONbmRpY2VzIGdlbmVyYWxlcyBjaWZyYSBkZSBuZWdvY2lvczogbmFjaW9uYWwgeSBwb3IgY29tdW5pZGFkZXMgYXV0w7Nub21hcy4gVGFzYSBhbnVhbC4gUG9yY2VudGFqZS4qKiA8ZGl2IGNsYXNzPSJsZXQiPjxwPioqYHIgTWVzX25vbWJyZShDTiRNRVNbbnJvdyhDTildKWAqKiAqKmRlIGByIENOJEFOWU9bbnJvdyhDTildYCoqIDwvZGl2PjwvcD48L2ZvbnQ+IAoKPC9wPjwvZm9udD4gCgoKYGBge3IgZWNobyA9IEZBTFNFLCBmaWcud2lkdGggPSAxMCwgZmlnLmhlaWdodCA9IDYsIHdhcm5pbmcgPSBGQUxTRSwgY29tbWVudD1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KRGF0YSA8LSBzdWJzZXQoQ0NBQV9UVkFfbGFzdCwgc2VsZWN0ID0gYyhTZWN0b3IsVkFMT1IpKQpjb2xuYW1lcyhEYXRhKSA8LSBjKCJDQ0FBIiwiVmFsb3IiKQoKcCA8LSBnZ3Bsb3QoZGF0YSA9IERhdGEsIGFlcyh4ID0gcmVvcmRlcihDQ0FBLFZhbG9yKSwgeSA9IFZhbG9yLCBmaWxsID0gQ0NBQSkpICsKICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHlsYWIoIiAiKSArCiAgeGxhYigiICIpICsKICBsYWJzKGNvbG91ciA9ICIgIikgKwogIGd1aWRlcyhmaWxsID0gZ3VpZGVfbGVnZW5kKHRpdGxlID0gIiAiKSkgKyBjb29yZF9mbGlwKCkgKwogIHRoZW1lKGF4aXMudGl0bGUueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiTkFDSU9OQUwiICAgPSAiIzdCMjQxQyIsICJBbmRhbHVjw61hIiAgID0gIiNEMEQzRDQiLCAgICAgICAgICAgICAgCiJBcmFnw7NuIiAgID0gIiNEMEQzRDQiLCAiUHJpbmNpcGFkbyBkZSBBc3R1cmlhcyIgICA9ICIjRDBEM0Q0IiwgICAgICAgCiJJc2xhcyBCYWxlYXJlcyIgICA9ICIjRDBEM0Q0IiwgIkNhbmFyaWFzIiAgID0gIiMwMDhiZDAiLCAgICAgICAgICAgICAgICAgICAgIAoiQ2FudGFicmlhIiAgID0gIiNEMEQzRDQiLCAiQ2FzdGlsbGEgeSBMZcOzbiIgICA9ICIjRDBEM0Q0IiwgICAgICAgICAgICAgIAoiQ2FzdGlsbGEgLSBMYSBNYW5jaGEiICAgPSAiI0QwRDNENCIsICJDYXRhbHXDsWEiICAgPSAiI0QwRDNENCIsICAgICAgICAgICAgICAgICAgICAgCiJDb211bml0YXQgVmFsZW5jaWFuYSIgICA9ICIjRDBEM0Q0IiwgIkV4dHJlbWFkdXJhIiAgID0gIiNEMEQzRDQiLCAgICAgICAgICAgICAgICAgIAoiR2FsaWNpYSIgICA9ICIjRDBEM0Q0IiwgIkNvbXVuaWRhZCBkZSBNYWRyaWQiICAgID0gIiNEMEQzRDQiLCAgICAgICAgCiJSZWdpw7NuIGRlIE11cmNpYSIgICA9ICIjRDBEM0Q0IiwgIkNvbXVuaWRhZCBGb3JhbCBkZSBOYXZhcnJhIiAgID0gIiNEMEQzRDQiLCAgIAoiUGHDrXMgVmFzY28iICAgPSAiI0QwRDNENCIsICJMYSBSaW9qYSIgICA9ICIjRDBEM0Q0IiAgICAgKSkgKwogIGdlb21fdGV4dChhZXMobGFiZWwgPSBwYXN0ZTAoVmFsb3IsIiUiKSksIAogICAgbnVkZ2VfeSA9IC0yLCBzaXplID0gMywKICAgIGluaGVyaXQuYWVzID0gVFJVRQogICkKZ2dwbG90bHkocCx0b29sdGlwID0gYyAoIkNDQUEiLCAiVmFsb3IiKSkKYGBgCgombmJzcDsKCiZuYnNwOwoKCjxmb250IHNpemU9IjUiPjxwIGFsaWduID0gImp1c3RpZnkiPjx1PiAqKsONbmRpY2VzIGRlIG9jdXBhY2nDs24qKiA8L3U+PC9wPjwvZm9udD4gCgoKCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpDQ0FBX09DX1RWQV9sYXN0IDwtICBmaWx0ZXIoT0MsIE1FRElEQSA9PSAiVmFyaWFjacOzbiBhbnVhbCIgJiBNRVMgPT0gQ04kTUVTW25yb3coQ04pXSAmIEFOWU8gPT0gYW55bykKQ0NBQV9PQ19UVkFfbGFzdCRHRU8gPC0gYXMuZmFjdG9yKENDQUFfT0NfVFZBX2xhc3QkR0VPKQpsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pW2xldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTyk9PSJCYWxlYXJzLCBJbGxlcyJdIDwtICJJc2xhcyBCYWxlYXJlcyIKbGV2ZWxzKENDQUFfT0NfVFZBX2xhc3QkR0VPKVtsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pPT0iTXVyY2lhLCBSZWdpw7NuIGRlIl0gPC0gIlJlZ2nDs24gZGUgTXVyY2lhIgpsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pW2xldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTyk9PSJBc3R1cmlhcywgUHJpbmNpcGFkbyBkZSJdIDwtICJQcmluY2lwYWRvIGRlIEFzdHVyaWFzIgpsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pW2xldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTyk9PSJNYWRyaWQsIENvbXVuaWRhZCBkZSJdIDwtICJDb211bmlkYWQgZGUgTWFkcmlkIgpsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pW2xldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTyk9PSJOYXZhcnJhLCBDb211bmlkYWQgRm9yYWwgZGUiXSA8LSAiQ29tdW5pZGFkIEZvcmFsIGRlIE5hdmFycmEiCmxldmVscyhDQ0FBX09DX1RWQV9sYXN0JEdFTylbbGV2ZWxzKENDQUFfT0NfVFZBX2xhc3QkR0VPKT09IlJpb2phLCBMYSJdIDwtICJMYSBSaW9qYSIKbGV2ZWxzKENDQUFfT0NfVFZBX2xhc3QkR0VPKVtsZXZlbHMoQ0NBQV9PQ19UVkFfbGFzdCRHRU8pPT0iVG90YWwgTmFjaW9uYWwiXSA8LSAiTkFDSU9OQUwiCgoKCgpDQ0FBX09DX1RWQV9sYXN0IDwtIGFycmFuZ2UoQ0NBQV9PQ19UVkFfbGFzdCxkZXNjKFZBTE9SKSkKYGBgCgoKPGZvbnQgc2l6ZT0iNCI+PHAgYWxpZ24gPSAianVzdGlmeSI+TGEgdGFzYSBhbnVhbCBkZSBvY3VwYWNpw7NuIGRlbCBTZWN0b3IgU2VydmljaW9zIGRlIE1lcmNhZG8gYHIgY3JlY19jY2FhKENDQUFfT0NfVFZBX2xhc3QkVkFMT1IpWywxXWAgcmVzcGVjdG8gYSBgciBtZXNfcHJldmAgZGUgYHIgYW55b19wcmV2YCBgciBjcmVjX2NjYWEoQ0NBQV9PQ19UVkFfbGFzdCRWQUxPUilbLDJdYCBsYXMgY29tdW5pZGFkZXMgYXV0w7Nub21hcy4gYHIgQ0NBQV9PQ19UVkFfbGFzdCRHRU9bbnJvdyhDQ0FBX1RWQV9sYXN0KV1gIChgciBmb3JtYXQocm91bmQoQ0NBQV9PQ19UVkFfbGFzdCRWQUxPUltucm93KENDQUFfT0NfVFZBX2xhc3QpXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSkgeSBgciBDQ0FBX09DX1RWQV9sYXN0JEdFT1tucm93KENDQUFfT0NfVFZBX2xhc3QpLTFdYCAoYHIgZm9ybWF0KHJvdW5kKENDQUFfT0NfVFZBX2xhc3QkVkFMT1JbbnJvdyhDQ0FBX09DX1RWQV9sYXN0KS0xXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSkgcHJlc2VudGFuIGxvcyBtYXlvcmVzIGByIGRlc2NfaW5jcihtaW4oQ0NBQV9PQ19UVkFfbGFzdCRWQUxPUikpYCwgbWllbnRyYXMgcXVlIGByIENDQUFfT0NfVFZBX2xhc3QkR0VPWzFdYCAoYHIgZm9ybWF0KHJvdW5kKENDQUFfT0NfVFZBX2xhc3QkVkFMT1JbMV0sMSksZGVjaW1hbC5tYXJrPSIsIixiaWcubWFyaz0iLiIpYCUpIHkgYHIgQ0NBQV9PQ19UVkFfbGFzdCRHRU9bMl1gIChgciBmb3JtYXQocm91bmQoQ0NBQV9PQ19UVkFfbGFzdCRWQUxPUlsyXSwxKSxkZWNpbWFsLm1hcms9IiwiLGJpZy5tYXJrPSIuIilgJSkgc29uIGxhcyBxdWUgYHIgbWF4X3N1Yl9iYWoobWF4KENDQUFfT0NfVFZBX2xhc3QkVkFMT1IpKWAuIDwvcD48L2ZvbnQ+IAoKCiZuYnNwOwoKJm5ic3A7Cgo8Zm9udCBzaXplPSI0Ij48cCBhbGlnbiA9ICJqdXN0aWZ5Ij4gKirDjW5kaWNlcyBnZW5lcmFsZXMgZGUgb2N1cGFjacOzbjogbmFjaW9uYWwgeSBwb3IgY29tdW5pZGFkZXMgYXV0w7Nub21hcy4gVGFzYSBhbnVhbC4gUG9yY2VudGFqZS4qKiA8ZGl2IGNsYXNzPSJsZXQiPjxwPioqYHIgTWVzX25vbWJyZShDTiRNRVNbbnJvdyhDTildKWAqKiAqKmRlIGByIENOJEFOWU9bbnJvdyhDTildYCoqIDwvZGl2PjwvcD48L2ZvbnQ+IAo8L3A+PC9mb250PiAKCgpgYGB7ciBlY2hvID0gRkFMU0UsIGZpZy53aWR0aCA9IDEwLCBmaWcuaGVpZ2h0ID0gNiwgd2FybmluZyA9IEZBTFNFLCBjb21tZW50PUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpEYXRhIDwtIHN1YnNldChDQ0FBX09DX1RWQV9sYXN0LCBzZWxlY3QgPSBjKEdFTyxWQUxPUikpCmNvbG5hbWVzKERhdGEpIDwtIGMoIkNDQUEiLCJWYWxvciIpCgpwIDwtIGdncGxvdChkYXRhID0gRGF0YSwgYWVzKHggPSByZW9yZGVyKENDQUEsVmFsb3IpLCB5ID0gVmFsb3IsIGZpbGwgPSBDQ0FBKSkgKwogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgeWxhYigiICIpICsKICB4bGFiKCIgIikgKwogIGxhYnMoY29sb3VyID0gIiAiKSArCiAgZ3VpZGVzKGZpbGwgPSBndWlkZV9sZWdlbmQodGl0bGUgPSAiICIpKSArIGNvb3JkX2ZsaXAoKSArCiAgdGhlbWUoYXhpcy50aXRsZS54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWFqb3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5ncmlkLm1pbm9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci55ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJOQUNJT05BTCIgICA9ICIjN0IyNDFDIiwgIkFuZGFsdWPDrWEiICAgPSAiI0QwRDNENCIsICAgICAgICAgICAgICAKIkFyYWfDs24iICAgPSAiI0QwRDNENCIsICJQcmluY2lwYWRvIGRlIEFzdHVyaWFzIiAgID0gIiNEMEQzRDQiLCAgICAgICAKIklzbGFzIEJhbGVhcmVzIiAgID0gIiNEMEQzRDQiLCAiQ2FuYXJpYXMiICAgPSAiIzAwOGJkMCIsICAgICAgICAgICAgICAgICAgICAgCiJDYW50YWJyaWEiICAgPSAiI0QwRDNENCIsICJDYXN0aWxsYSB5IExlw7NuIiAgID0gIiNEMEQzRDQiLCAgICAgICAgICAgICAgCiJDYXN0aWxsYSAtIExhIE1hbmNoYSIgICA9ICIjRDBEM0Q0IiwgIkNhdGFsdcOxYSIgICA9ICIjRDBEM0Q0IiwgICAgICAgICAgICAgICAgICAgICAKIkNvbXVuaXRhdCBWYWxlbmNpYW5hIiAgID0gIiNEMEQzRDQiLCAiRXh0cmVtYWR1cmEiICAgPSAiI0QwRDNENCIsICAgICAgICAgICAgICAgICAgCiJHYWxpY2lhIiAgID0gIiNEMEQzRDQiLCAiQ29tdW5pZGFkIGRlIE1hZHJpZCIgICAgPSAiI0QwRDNENCIsICAgICAgICAKIlJlZ2nDs24gZGUgTXVyY2lhIiAgID0gIiNEMEQzRDQiLCAiQ29tdW5pZGFkIEZvcmFsIGRlIE5hdmFycmEiICAgPSAiI0QwRDNENCIsICAgCiJQYcOtcyBWYXNjbyIgICA9ICIjRDBEM0Q0IiwgIkxhIFJpb2phIiAgID0gIiNEMEQzRDQiICAgICApKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHBhc3RlMChWYWxvciwiJSIpKSwgCiAgICBudWRnZV95ID0gLTEsIHNpemUgPSAzLAogICAgaW5oZXJpdC5hZXMgPSBUUlVFCiAgKQpnZ3Bsb3RseShwLHRvb2x0aXAgPSBjICgiQ0NBQSIsICJWYWxvciIpKQpgYGAKCgombmJzcDsKCiZuYnNwOwoKPGRpdiBjbGFzcz0iYm94Qm9yZGVyIj48cCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPgo8Zm9udCBzaXplPSI2Ij4gKipSRVZJU0lPTkVTIFkgQUNUVUFMSVpBQ0nDk04gREUgREFUT1MqKiAgPC9mb250PiAKPC9wPjwvZGl2PgoKJm5ic3A7Cgo8Zm9udCBzaXplPSI0Ij48cCBhbGlnbiA9ICJqdXN0aWZ5Ij4gU2UgaGFuIGFjdHVhbGl6YWRvIGxvcyBkYXRvcyBkZSBsYXMgc2VyaWVzIGRlIElBU1MgY29ycmVzcG9uZGllbnRlcyBhIGxvcyBjaW5jbyDDumx0aW1vcyBtZXNlcy4gRW4gZWwgY2FzbyBkZSBsYXMgc2VyaWVzIGFqdXN0YWRhcyBkZSBjYWxlbmRhcmlvIHkgZGVzZXN0YWNpb25hbGl6YWRhcyB5IGFqdXN0YWRhcyBkZSBjYWxlbmRhcmlvLCBzaWd1aWVuZG8gZWwgZXN0w6FuZGFyIGRlbCBJTkUgc2UgcmV2aXNhIGxhIHNlcmllIGRlc2RlIHN1IGNvbWllbnpvLjwvcD48L2ZvbnQ+IAoKCiZuYnNwOwoKJm5ic3A7Cgo8ZGl2IGNsYXNzPSJib3hCb3JkZXIiPjxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+Cjxmb250IHNpemU9IjYiPiAqKk5PVEEgTUVUT0RPTMOTR0lDQSoqICA8L2ZvbnQ+IAo8L3A+PC9kaXY+CgombmJzcDsKCjxmb250IHNpemU9IjQiPjxwIGFsaWduID0gImp1c3RpZnkiPiBMYSBpbmZvcm1hY2nDs24gZGUgYmFzZSBkZSBlc3RlIGluZGljYWRvciBwcm9jZWRlIGRlIHVuYSBlbmN1ZXN0YSBtZW5zdWFsIGEgZW1wcmVzYXMgcXVlIHJlYWxpemEgZWwgSW5zdGl0dXRvIE5hY2lvbmFsIGRlIEVzdGFkw61zdGljYSAoSU5FKSB5IHF1ZSByZWNpYmUgZWwgSVNUQUMgbWVkaWFudGUgYWN1ZXJkbyBkZSBpbnRlcmNhbWJpbyBkZSBpbmZvcm1hY2nDs24gZW50cmUgYW1ib3Mgb3JnYW5pc21vcyBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB1biBtYXlvciBkZXRhbGxlIGVuIGxhIGNvbXVuaWRhZCBhdXTDs25vbWEuIDwvcD48L2ZvbnQ+IAoKCjxmb250IHNpemU9IjQiPjxwIGFsaWduID0gImp1c3RpZnkiPiBFc3RlIGluZm9ybWUgYW50aWNpcGEgbG9zIHRyYWJham9zIHF1ZSBlc3RhbW9zIGRlc2Fycm9sbGFuZG8gZW4gZWwgbWFyY28gZGVsIHByb3llY3RvIOKAnE3DqXRvZG9zIGVjb25vbcOpdHJpY29zIGFwbGljYWRvcyBhIHNlcmllcyBkZSBjb3l1bnR1cmEgZWNvbsOzbWljYSBFQ09NQUMgKE1BQy81LjExLmEvMDA0KeKAnSwgcmVhbGl6YWRvIGVuIGNvbGFib3JhY2nDs24gY29uIGxhcyBvZmljaW5hcyBkZSBlc3RhZMOtc3RpY2FzIGRlIEF6b3JlcyB5IE1hZGVpcmEgeSBmaW5hbmNpYWRvIHBvciBlbCBQcm9ncmFtYSBkZSBDb29wZXJhY2nDs24gSU5URVJSRUcgVi1BIEVzcGHDsWEtUG9ydHVnYWwgTUFDIChNYWRlaXJhLUF6b3Jlcy1DYW5hcmlhcykgMjAxNC0yMDIwLiA8L3A+PC9mb250PiAKCgo8Zm9udCBzaXplPSI0Ij48cCBhbGlnbiA9ICJqdXN0aWZ5Ij4gRWwgb2JqZXRpdm8gcHJpbmNpcGFsIGRlIGVzdGUgcHJveWVjdG8gZXMgbGEgY29uc3RydWNjacOzbiBkZSBtb2RlbG9zIGVjb25vbcOpdHJpY29zIHF1ZSBwZXJtaXRhbiBhanVzdGFyIGxhcyBzZXJpZXMgZGUgbG9zIHByaW5jaXBhbGVzIGluZGljYWRvcmVzIGRlIGxhIGNveXVudHVyYSBkZSBsb3MgZWZlY3RvcyBkZSBjYWxlbmRhcmlvIHkgZGUgbGEgZXN0YWNpb25hbGlkYWQuIExvcyByZXN1bHRhZG9zIHByZXNlbnRhZG9zIGVuIGVzdGUgaW5mb3JtZSBwZXJtaXRlbiBhZGVsYW50YXIgbG9zIHRyYWJham9zIHF1ZSBlc3RhbW9zIGRlc2Fycm9sbGFuZG8geSBxdWUgc2Vyw6FuIHB1YmxpY2Fkb3MgYSBmaW5hbGVzIGRlIDIwMjAuIDwvcD48L2ZvbnQ+CgoKCiZuYnNwOwombmJzcDsKJm5ic3A7CiZuYnNwOwoKKipNw6FzIGluZm9ybWFjacOzbioqCgpJU1RBQyAtIENvbXVuaWNhY2nDs24gCgpbd3d3LmdvYmllcm5vZGVjYW5hcmlhcy5vcmcvaXN0YWMvbm90aWNpYXNdKGh0dHA6Ly93d3cuZ29iaWVybm9kZWNhbmFyaWFzLm9yZy9pc3RhYy9ub3RpY2lhcy8pCgppc3RhY0Bnb2JpZXJub2RlY2FuYXJpYXMgCgo5MjIgOTIgMjggNDEgLSA5MjggMjkgMzIgNzEgCgpAaXN0YWNfZXMKCiZuYnNwOwo8L2ZvbnQ+Cgo8aW1nIHNyYz0iLi4vaW1hZ2VzL2xvZ29faXN0YWMuanBnIiBhbGlnbj0icmlnaHQiIGFsdD0iIi8+CgombmJzcDsKCjxpbWcgc3JjPSIuLi9pbWFnZXMvTUFDLnBuZyIgYWxpZ249ImxlZnQiIGFsdD0iIi8gd2lkdGg9IjMwMCIgaGVpZ2h0PSIxMDAiPgo8aW1nIHNyYz0iLi4vaW1hZ2VzL0lOVEVSUkVHLnBuZyIgYWxpZ249ImxlZnQiIGFsdD0iIi8gd2lkdGg9IjMwMCIgaGVpZ2h0PSIxMDAiPgoK