From: HTTrack Website Copier Subject: Local mirror Date: Fri, 30 Jul 2010 07:18:41 GMT Message-ID: Content-Type: multipart/related; boundary="----=_MIMEPart_1280474321_1725595808_=----"; type="text/html" MIME-Version: 1.0 This message is a RFC MIME-compliant multipart message. ------=_MIMEPart_1280474321_1725595808_=---- Content-disposition: attachment; filename="www.laopiniondezamora.es/zamora/2010/07/30/claustro-seo-incumple-garantias-termicas-humedad-piezas/452920.html" Content-Type: text/html Content-Transfer-Encoding: 8bit Content-ID: El claustro de la Seo «incumple las garantías térmicas y de humedad» para las piezas - La Opinión de Zamora
ÚLTIMA HORA
La tasa del paro alcanza su nivel más alto desde 1.997 subiendo al 20,09%

El claustro de la Seo «incumple las garantías térmicas y de humedad» para las piezas

El claustro de la Catedral «se aleja de las garantías necesarias de estabilidad térmica y humedad en función de la época del año».

 
Enviar
Imprimir
Aumentar el texto
Reducir el texto

Así se refiere Castro al proyecto presentado por el Cabildo en consonancia con la Concejalía de Turismo del Ayuntamiento de Zamora una vez que la comisión de Patrimonio de la Junta de Castilla y León haya estudiado «de manera sumamente meticulosa» la petición.
Las salas en las que en la actualidad se exponen los tapices se encuentran en la planta superior del cuerpo de edificación de la parte oeste correspondiente al claustro clasicista construido entre 1592 y 1612. Las dimensiones de esta sala, sobre todo, en lo que a altura se refiere, incumplen los mínimos requisitos para la exposición sin olvidar que la escalera de acceso registra grietas derivadas de cesiones de los elementos portantes. La adaptación del claustro de la Catedral a la exposición temporal de la colección contempla un acondicionamiento al detalle que cuida la climatización, la iluminación y la protección del entorno para ofrecer las máximas garantías ambientales con el objetivo difundir una de las mejores tapicerías universales que servirá, a su vez, para la promoción turística de Zamora. Sin embargo y, a pesar de que el proyecto descarta cualquier tipo de climatización y preveía la instalación de humidificadores, estas condiciones no son suficientes para el servicio regional de Patrimonio en referencia a este bien catalogado y de un valor incalculable.
La materialización del proyecto transitorio es independiente de la construcción de un museo diocesano que albergue la magnífica colección en el futuro, si bien la crisis económica hace inviable a día de hoy plantear esta infraestructura a cualquier institución pública que sustente la financiación para la adecuación transitoria del espacio museístico.
El proyecto nace como consecuencia del encargo realizado por el Cabildo de la Seo de Zamora con la finalidad de definir las operaciones de adaptación del claustro de la Catedral para la instalación de la exposición temporal de la colección de tapices flamencos de la Catedral. Las especiales características de la colección supeditan cualquier proceso de intervención a la pertinente aprobación por parte de la comisión de Patrimonio de la Junta de Castilla y León.

COMPARTIR
 

Los blogs de laopiniondezamora.es

El placer es mío

La sexóloga Amaranta Ratón resuelve las dudas sexuales de nuestros lectores

 

Vivir el flamenco

Felix Rodríguez trata el mundo de flamenco desde este completo blog

 

Deporte & Medio

El blog de Manuel López-Sueiras. Sobre deporte y medio ambiente

 

Blog fotográfico

Las mejores imagenes captadas por la cámara de Emilio Fraile

 

Fondo Sur

El Zamora C.F. como tema principal del blog de Manuel Herrera

 

A pedir de boca

El blog gastronómico de Ana María Cavero

 

Por la escuadra

El blog de Elena Martínez. Un punto de vista femenino sobre el fútbol.

 

En clave de Z

El Blog de la cultura musical zamorana. Por Jesús M. Calleja

 

Cocinando con Espe Saavedra

Recetas sencillas para el día a día.
Por Espe Saavedra

 
pensiones baratas, hostales baratos, casas rurales baratas, hoteles baratos, albergues, apartamentos, campings. Alojamientos por menos de 50 €
Suscribasé a la edición papel
www.ibercoches.es
www.iberpisos.es
Marca:
Modelo:
Provincia:
  CONÓZCANOS:  CONTACTO |  LA OPINIÓN DE ZAMORA |  LOCALIZACIÓN Y DELEGACIONES |  PROMOCIONES    PUBLICIDAD:  TARIFAS |  AGENCIAS |  CONTRATAR  
laopiniondezamora.es es un producto de Editorial Prensa Ibérica
Queda terminantemente prohibida la reproducción total o parcial de los contenidos ofrecidos a través de este medio, salvo autorización expresa de laopiniondezamora.es. Así mismo, queda prohibida toda reproducción a los efectos del artículo 32.1, párrafo segundo, Ley 23/2006 de la Propiedad intelectual.
 


  Aviso legal
  
  
Otros medios del grupo Editorial Prensa Ibérica
Diari de Girona  | Diario de Ibiza  | Diario de Mallorca  | Empordà  | Faro de Vigo  | Información  | La Opinión A Coruña  |  La Opinión de Granada  |  La Opinión de Málaga  | La Opinión de Murcia  | La Opinión de Tenerife  | La Provincia  |  La Nueva España  | Levante-EMV  | Mallorca Zeitung  | Regió 7  | Superdeporte  | The Adelaide Review  | 97.7 La Radio  | Blog Mis-Recetas  | Euroresidentes  | Lotería de Navidad 2009
------=_MIMEPart_1280474321_1725595808_=---- Content-disposition: attachment; filename="estaticos02.laopiniondezamora.es_/elementosWeb/css/estilos.css" Content-Type: text/css Content-Transfer-Encoding: base64 Content-ID: LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDQUJFQ0VS QSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQouZW5s YWNlUlNTDQp7DQogYmFja2dyb3VuZDogI2ZmZiB1cmwoJ2h0dHA6Ly9lc3RhdGljb3MwMi5sYW9waW5p b25kZXphbW9yYS5lcy9yc3MvcnNzLmdpZicpIDI1cHggMS41cHggbm8tcmVwZWF0Ow0KIHBhZGRpbmct cmlnaHQ6IDE4cHg7DQp9DQoNCi5tZW51ZWRpY2lvbnsNCglGT05ULVNJWkU6IDEwcHg7DQoJRkxPQVQ6 IGxlZnQ7DQoJQ09MT1I6ICM2NjY2NjY7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsNCglwYWRkaW5nLWJvdHRvbTogMHB4Ow0KCXBhZGRpbmctdG9wOiAwcHg7 DQoJbWFyZ2luLXRvcDogNXB4Ow0KCWhlaWdodDogMTlweDsNCn0NCi5tZW51ZWRpY2lvbiBBew0KCUZP TlQtU0laRTogMTBweDsNCglDT0xPUjogIzY2NjY2NjsNCglmb250LWZhbWlseTogVGFob21hLCBBcmlh bCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KfQ0KLm1lbnVl ZGljaW9uIEE6aG92ZXJ7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsNCn0NCi5tZW51ZWRpY2lv biBTUEFOIHsNCglDT0xPUjogIzBEM0M2QTsNCglmb250LXdlaWdodDogYm9sZDsNCn0NCi5tZW51Y29u ZmlndXJhY2lvbiB7DQoJRk9OVC1TSVpFOiAxMHB4Ow0KCUJBQ0tHUk9VTkQ6ICNmZmY7DQoJRkxPQVQ6 IHJpZ2h0Ow0KCUZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0aWNhOw0KCVRFWFQtQUxJR046IHJpZ2h0 Ow0KCWhlaWdodDogMTdweDsNCglwYWRkaW5nLXRvcDogMnB4Ow0KfQ0KLm1lbnVjb25maWd1cmFjaW9u IEEgew0KCUZPTlQtV0VJR0hUOiBub3JtYWw7IENPTE9SOiAjMDAwOyBURVhULURFQ09SQVRJT046IG5v bmUNCn0NCi5tZW51Y29uZmlndXJhY2lvbiBBOmhvdmVyIHsNCglDT0xPUjogIzY2NjY2NjsgVEVYVC1E RUNPUkFUSU9OOiB1bmRlcmxpbmUNCn0NCi5idXNjYWRvciB7DQoJRk9OVC1TSVpFOiAxMHB4Ow0KCUZM T0FUOiBsZWZ0Ow0KCUNPTE9SOiAjMDAwOw0KCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWY7DQoJaGVpZ2h0OiA3N3B4Ow0KCXdpZHRoOiAzMjBweDsNCn0NCi5sb2dv IHsNCgloZWlnaHQ6IDc3cHg7DQoJZmxvYXQ6IGxlZnQ7DQp9DQouZWx0aWVtcG8gew0KCUZPTlQtU0la RTogMTFweDsNCglGTE9BVDogcmlnaHQ7DQoJQ09MT1I6ICNGRkZGRkY7DQoJZm9udC1mYW1pbHk6IFRh aG9tYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCgloZWlnaHQ6IDc3cHg7DQoJd2lkdGg6 IDMxMHB4Ow0KfQ0KLmNhYmVjZXJhIHsNCgl3aWR0aDogOTkwcHg7DQoJYmFja2dyb3VuZC1jb2xvcjog I2I0MWM1NTsNCgloZWlnaHQ6NzdweDsNCn0NCi5jYWJlY2VyYSBoMXsNCgltYXJnaW46IDBweDsNCglw YWRkaW5nOiAwcHg7DQp9DQouY2FiZWNlcmFfaW50ZXJpb3Igew0KCXdpZHRoOiA5OTBweDsNCgliYWNr Z3JvdW5kLWNvbG9yOiAjYjQxYzU1Ow0KCWhlaWdodDphdXRvOw0KfQ0KLmZlY2hhIHsNCglmb250LXNp emU6IDExcHg7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJp ZjsNCgljb2xvcjogI0ZGRkZGRjsNCn0NCi5ob3Jhew0KCWZvbnQtc2l6ZTogMTJweDsNCglmb250LWZh bWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWNvbG9yOiAjRkZGRkZG Ow0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KLmlyX2FfaGVtZXJvdGVjYSB7DQoJRk9OVC1TSVpFOiA5 cHg7DQoJQ09MT1I6ICNGRkZGRkY7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGlj YSwgc2Fucy1zZXJpZjsNCglmb250LXdlaWdodDogYm9sZDsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsN Cn0NCi5pcl9hX2hlbWVyb3RlY2E6aG92ZXJ7DQoJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7DQp9 DQouZW5sYWNlc190aWVtcG8gew0KCUZPTlQtU0laRTogMTBweDsNCglDT0xPUjogI0ZGRkZGRjsNCglm b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWZvbnQtd2Vp Z2h0OiBib2xkOw0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KfQ0KLmVubGFjZXNfdGllbXBvOmhvdmVy ew0KCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOw0KfQ0KLnRleHRvc19jYWJlY2VyYSB7DQoJRk9O VC1TSVpFOiA5cHg7DQoJQ09MT1I6ICNGRkZGRkY7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWws IEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250LXdlaWdodDogYm9sZDsNCgl0ZXh0LWRlY29yYXRp b246bm9uZTsNCn0NCi5jb21ib3Mgew0KCUZPTlQtU0laRTogMTBweDsNCglDT0xPUjogIzAwMDAwMDsN Cglmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWJvcmRl cjogMXB4IHNvbGlkICNDMkM2Q0Y7DQp9DQouYnVzY2Fyew0KCS8qcG9zaXRpb246IHJlbGF0aXZlOw0K CXRvcDogNnB4Ow0KCSovDQoJdmVydGljYWwtYWxpZ246Ym90dG9tOw0KfQ0KDQouYm9yZGVyLWJvdHRv bSB7DQoJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4Ow0KCWJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlk Ow0KCWJvcmRlci1ib3R0b20tY29sb3I6ICNFOUU5RTk7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp YWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250LXNpemU6IDlweDsNCglmb250LXdlaWdodDog bm9ybWFsOw0KfQ0KLmJvcmRlci1yaWdodCB7DQoJYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7DQoJYm9y ZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDsNCglib3JkZXItcmlnaHQtY29sb3I6ICNFOUU5RTk7DQoJZm9u dC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250LXNpemU6 IDEwcHg7DQoJY29sb3I6ICNGRkZGRkY7DQp9DQouYm9yZGVfY2FuYWwgew0KCWJvcmRlcjogMXB4IHNv bGlkICNEREREREQ7DQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gTUVOVVMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0qLw0KLnNlcGFyYWRvcl9tZW51IHsNCglmbG9hdDogbGVmdDsNCgliYWNrZ3JvdW5kLWlt YWdlOiB1cmwoaHR0cDovL2VzdGF0aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NX ZWIvbWVkaWF3ZWIvaW1hZ2VzL3NlcGFyYWRvcl9tZW51LmpwZyk7DQoJaGVpZ2h0OiAyMnB4Ow0KCXdp ZHRoOiAxcHg7DQp9DQoubWVudXByaW5jaXBhbHsNCgljb2xvcjogI2ZmZmZmZjsNCglmb250LWZhbWls eTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWZvbnQtc2l6ZTogMTFweDsN Cglmb250LXdlaWdodDogYm9sZDsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsNCgliYWNrZ3JvdW5kLWNv bG9yOiAjOTRBOEM5Ow0KfQ0KLm1lbnVwcmluY2lwYWxfc2VsZWMgQXsNCgljb2xvcjogIzAwMDAwMDsN Cglmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWZvbnQt c2l6ZTogMTFweDsNCglmb250LXdlaWdodDogYm9sZDsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsNCgli YWNrZ3JvdW5kLWNvbG9yOiAjZWJlOGUxOw0KCWJvcmRlci10b3A6IDFweCBzb2xpZCAjRkZGRkZGOw0K CXdpZHRoOiAxNDRweDsNCglmbG9hdDogbGVmdDsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJdmVydGlj YWwtYWxpZ246IGJvdHRvbTsNCglwYWRkaW5nLXRvcDogNXB4Ow0KCXBhZGRpbmctYm90dG9tOiA0cHg7 DQoJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4Ow0KCWJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkOw0K CWJvcmRlci1ib3R0b20tY29sb3I6ICNFQkU4RTE7DQp9DQoubWVudXByaW5jaXBhbCBBew0KCWNvbG9y OiAjZmZmZmZmOw0KCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy aWY7DQoJZm9udC1zaXplOiAxMXB4Ow0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KCXRleHQtZGVjb3JhdGlv bjpub25lOw0KCWJhY2tncm91bmQtY29sb3I6ICM5NEE4Qzk7DQoJYm9yZGVyLXRvcDogc29saWQgMXB4 ICNGRkZGRkY7DQoJYm9yZGVyLWJvdHRvbTpzb2xpZCAxcHggI0ZGRkZGRjsNCgl3aWR0aDogMTQwcHg7 DQoJZmxvYXQ6IGxlZnQ7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCXZlcnRpY2FsLWFsaWduOiBib3R0 b207DQoJcGFkZGluZy10b3A6IDVweDsNCglwYWRkaW5nLWJvdHRvbTogNHB4Ow0KfQ0KLm1lbnVwcmlu Y2lwYWwgQTpob3ZlciB7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsNCn0NCg0KDQouY29udGVu ZWRvcl9zdWJtZW51IHsNCgl3aWR0aDogOTkwcHg7DQovKglvdmVyZmxvdzpoaWRkZW47Ki8NCgl0ZXh0 LWFsaWduOmxlZnQ7DQoJbWFyZ2luLWxlZnQ6YXV0bzsNCgltYXJnaW4tcmlnaHQ6YXV0bzsNCglwYWRk aW5nLXRvcDogN3B4Ow0KCXBhZGRpbmctYm90dG9tOjdweDsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjZWJl OGUxOw0KCWJvcmRlci1ib3R0b206IHNvbGlkIDFweCAjZGRkZGRkOw0KCS8qYm9yZGVyLWxlZnQ6IHNv bGlkIDFweCAjZGRkZGRkOw0KCWJvcmRlci1yaWdodDogc29saWQgMXB4ICNkZGRkZGQ7Ki8NCglmb250 LWZhbWlseTogVGFob21hLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJZm9udC1zaXplOiA5cHg7DQoJ Y29sb3I6ICNjYmNiY2I7DQoJdmVydGljYWwtYWxpZ246bWlkZGxlOw0KfQ0KLnN1Ym1lbnUxIHsNCgl0 ZXh0LWRlY29yYXRpb246bm9uZTsNCn0NCi5zdWJtZW51MiB7DQoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7 DQp9DQouc3VibWVudTMgew0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KCXBvc2l0aW9uOiByZWxhdGl2 ZTsNCglsZWZ0OiAwcHg7DQp9DQouc3VibWVudTQgew0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KCXBv c2l0aW9uOiByZWxhdGl2ZTsNCglsZWZ0OiAyMDBweDsNCn0NCi5zdWJtZW51NSB7DQoJdGV4dC1kZWNv cmF0aW9uOm5vbmU7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCWxlZnQ6IDQyMHB4Ow0KfQ0KLnN1Ym1l bnU2IHsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJbGVmdDog NTMwcHg7DQp9DQouc3VibWVudTcgew0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KCXBvc2l0aW9uOiBy ZWxhdGl2ZTsNCglsZWZ0OiAxMTBweDsNCn0NCi5zdWJtZW51OCB7DQoJdGV4dC1kZWNvcmF0aW9uOm5v bmU7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KLnN1Ym1lbnU5IHsNCgl0ZXh0LWRlY29yYXRpb246 bm9uZTsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJbGVmdDogNTAwcHg7DQp9DQouc3VibWVudTEwIHsN Cgl0ZXh0LWRlY29yYXRpb246bm9uZTsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQp9DQouc3VibWVudTEg QSwgLnN1Ym1lbnUyIEEsIC5zdWJtZW51MyBBLCAuc3VibWVudTQgQSwgLnN1Ym1lbnU1IEEsIC5zdWJt ZW51NiBBLCAuc3VibWVudTcgQSwgLnN1Ym1lbnU4IEEsIC5zdWJtZW51OSBBLCAuc3VibWVudTEwIEEg ew0KCWNvbG9yOiAjMDAwMDAwOw0KCWZvbnQtc2l6ZTogMTJweDsNCgl0ZXh0LWRlY29yYXRpb246bm9u ZTsNCglwYWRkaW5nLXJpZ2h0OiA2cHg7DQoJcGFkZGluZy1sZWZ0OiA2cHg7DQp9DQouc3VibWVudTEg QTpob3ZlciwgLnN1Ym1lbnUyIEE6aG92ZXIsIC5zdWJtZW51MyBBOmhvdmVyLCAuc3VibWVudTQgQTpo b3ZlciwgLnN1Ym1lbnU1IEE6aG92ZXIsIC5zdWJtZW51NiBBOmhvdmVyLCAuc3VibWVudTcgQTpob3Zl ciwgLnN1Ym1lbnU4IEE6aG92ZXIsIC5zdWJtZW51OSBBOmhvdmVyLCAuc3VibWVudTEwIEE6aG92ZXIg ew0KCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOw0KfQ0KLnNlY2Npb25fc2VsZWNjaW9uYWRhIEF7 DQovKgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsqLw0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0K LnRpdHVsb1NlY2Npb24gew0KCWZvbnQtZmFtaWx5OiBHZW9yZ2lhLCAiVGltZXMgTmV3IFJvbWFuIiwg VGltZXMsIHNlcmlmOw0KCWZvbnQtc2l6ZTogMjJweDsNCglmb250LXdlaWdodDogYm9sZDsNCgljb2xv cjogI0ZGRkZGRjsNCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7DQoJbGV0dGVyLXNwYWNpbmc6IDBweDsN Cn0NCi50aXR1bG9TZXJ2aWNpbyB7DQoNCglmb250LWZhbWlseTogR2VvcmdpYSwgIlRpbWVzIE5ldyBS b21hbiIsIFRpbWVzLCBzZXJpZjsNCglmb250LXNpemU6IDIycHg7DQoJZm9udC13ZWlnaHQ6IGJvbGQ7 DQoJY29sb3I6ICNGRkZGRkY7DQoJdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KCWxldHRlci1zcGFjaW5n OiAwcHg7DQp9DQoucmFkaW9ib3RvbiB7DQoJbWFyZ2luOiA1cHg7DQp9DQouY29udGVuZWRvclVsdGlt YV9ob3JhIHsNCgl3aWR0aDogOTkwcHg7DQoJbWFyZ2luLXJpZ2h0OiBhdXRvOw0KCW1hcmdpbi1sZWZ0 OiBhdXRvOw0KCWhlaWdodDogMzZweDsNCn0NCi5pbWFnZW5fdWx0aW1hSG9yYSB7DQoJYmFja2dyb3Vu ZC1hdHRhY2htZW50OiBzY3JvbGw7DQoJYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9lc3RhdGlj b3MubGFvcGluaW9uZGV6YW1vcmEuZXMvZWxlbWVudG9zSW50L3VsdGltYWhvcmEvaW1hZ2VuZXMvdWx0 aW1hX2hvcmFDYWJlY2VyYS5qcGcpOw0KCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQoJYmFj a2dyb3VuZC1wb3NpdGlvbjogMHB4IDBweDsNCgloZWlnaHQ6IDM2cHg7DQoJd2lkdGg6IDE5NXB4Ow0K CWZsb2F0OiBsZWZ0Ow0KfQ0KLnRleHRvX3VsdGltYUhvcmEgew0KCWZvbnQtZmFtaWx5OiBBcmlhbCwg SGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWZvbnQtc2l6ZTogMTdweDsNCglsaW5lLWhlaWdodDogMzRw eDsNCglmb250LXdlaWdodDogYm9sZDsNCgljb2xvcjogI0ZGRkZGRjsNCgl0ZXh0LWFsaWduOiBsZWZ0 Ow0KCW1hcmdpbi1sZWZ0OiA1MnB4Ow0KfQ0KLmZvbmRvX3VsdGltYUhvcmEgew0KCWJhY2tncm91bmQt YXR0YWNobWVudDogc2Nyb2xsOw0KCWJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vZXN0YXRpY29z Lmxhb3BpbmlvbmRlemFtb3JhLmVzL2VsZW1lbnRvc0ludC91bHRpbWFob3JhL2ltYWdlbmVzL2ZvbmRv X2xhc3RILmpwZyk7DQoJYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCgliYWNrZ3JvdW5kLXBv c2l0aW9uOiAwcHggMHB4Ow0KCWZsb2F0OiBsZWZ0Ow0KCWhlaWdodDogMzZweDsNCgl3aWR0aDogNzk1 cHg7DQp9DQouaW5zZXJ0YXJfdWx0aW1hSG9yYSB7DQoJZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7DQovKglmb250LXNpemU6IDEycHg7Ki8NCglsaW5lLWhlaWdodDogMzRweDsN Ci8qCWNvbG9yOiAjMDAwMDAwOyovDQoJdGV4dC1hbGlnbjogbGVmdDsNCgltYXJnaW4tcmlnaHQ6IDIw cHg7DQoJbWFyZ2luLWxlZnQ6IDVweDsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsNCglmb250LXNpemU6 IDE0cHg7DQoJZm9udC13ZWlnaHQ6IGJvbGQ7DQoJY29sb3I6ICMwMDM5Njk7DQp9DQouaW5zZXJ0YXJf dWx0aW1hSG9yYSBhIHsNCglmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsN Ci8qCWZvbnQtc2l6ZTogMTJweDsqLw0KCWxpbmUtaGVpZ2h0OiAzNHB4Ow0KLyoJY29sb3I6ICMwMDAw MDA7Ki8NCgl0ZXh0LWFsaWduOiBsZWZ0Ow0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KCWZvbnQtc2l6 ZTogMTRweDsNCglmb250LXdlaWdodDogYm9sZDsNCgljb2xvcjogIzAwMzk2OTsNCn0NCi5pbnNlcnRh cl91bHRpbWFIb3JhIGE6aG92ZXIgew0KLyoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsqLw0KCQ0K CXRleHQtZGVjb3JhdGlvbjpub25lOw0KCWNvbG9yOiAjQkM2NTA1OwkNCn0NCiNlc3RhZG9Db25leGlv bnsNCgltYXJnaW4tcmlnaHQ6IDEwcHg7DQp9DQpib2R5IHsNCglmb250LWZhbWlseTogVGFob21hLCBB cmlhbCwgSGVsdmV0aWNhOw0KCWZvbnQtc2l6ZTogNzUlOw0KCWZvbnQtc3R5bGU6IG5vcm1hbDsNCglm b250LXdlaWdodDogbm9ybWFsOw0KCWNvbG9yOiAjMDAwMDAwOw0KCXRleHQtYWxpZ246Y2VudGVyOw0K CW1hcmdpbi10b3A6IDBweDsNCglwYWRkaW5nLXRvcDogMHB4Ow0KCWJhY2tncm91bmQtY29sb3I6I0ZG RkZGRjsNCg0KfQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIENPTlRFTkVET1JFUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0qLw0KLmNvbnRlbmVkb3Igew0KCXdpZHRoOiA5OTBweDsNCi8qCW92ZXJmbG93OmhpZGRlbjsq Lw0KCXRleHQtYWxpZ246bGVmdDsNCgltYXJnaW4tbGVmdDphdXRvOw0KCW1hcmdpbi1yaWdodDphdXRv Ow0KfQ0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENPTlRF TkVET1JFUyBERSBOT1RJQ0lBUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi5ub3RpY2lhc3sNCgl3aWR0aDogNjU0cHg7DQoJZmxv YXQ6IGxlZnQ7DQoJbWFyZ2luLXRvcDogMHB4Ow0KCXBhZGRpbmctdG9wOiAwcHg7DQoJYm9yZGVyLXJp Z2h0OiAxcHggZG90dGVkICNjZmNmY2Y7DQoJcGFkZGluZy1yaWdodDo2cHg7DQp9DQouc2VydmljaW9z IHsNCgl3aWR0aDogMzIwcHg7DQoJbWFyZ2luLXRvcDogMTBweDsNCglmbG9hdDogcmlnaHQ7DQoJbWFy Z2luLWxlZnQ6NXB4Ow0KfQ0KLm5vdGljaWFzaXpxIHsNCgl3aWR0aDogMzE4cHg7DQoJZmxvYXQ6IGxl ZnQ7DQoJbWFyZ2luLXJpZ2h0OiA3cHg7DQoNCn0NCi5ub3RpY2lhc2RlciB7DQoJd2lkdGg6IDMyMHB4 Ow0KCWZsb2F0OiBsZWZ0Ow0KCXBhZGRpbmctbGVmdDogNnB4Ow0KCWJvcmRlci1sZWZ0LXdpZHRoOiAx cHg7DQoJYm9yZGVyLWxlZnQtc3R5bGU6IGRvdHRlZDsNCglib3JkZXItbGVmdC1jb2xvcjogI2NmY2Zj ZjsNCn0NCiogaHRtbCAubm90aWNpYXNkZXINCnsNCiB3aWR0aDogMzIwcHg7DQogYm9yZGVyLWxlZnQt d2lkdGg6IDFweDsNCiBib3JkZXItbGVmdC1zdHlsZTogZG90dGVkOw0KIGJvcmRlci1sZWZ0LWNvbG9y OiAjY2ZjZmNmOw0KIHBhZGRpbmctbGVmdDogM3B4Ow0KIGZsb2F0OiBsZWZ0Ow0KfQ0KLm5vdGljaWFz aXpxMiB7DQoJd2lkdGg6IDE0OHB4Ow0KCWZsb2F0OiBsZWZ0Ow0KCXBhZGRpbmctdG9wOiA0cHg7DQoJ bWFyZ2luLXJpZ2h0OiA3cHg7DQoJcGFkZGluZy1yaWdodDogN3B4Ow0KCWJvcmRlci1yaWdodC13aWR0 aDogMXB4Ow0KCWJvcmRlci1yaWdodC1zdHlsZTogZG90dGVkOw0KCWJvcmRlci1yaWdodC1jb2xvcjog I0NGQ0ZDRjsNCn0NCi5ibG9xdWVjbGVhciB7DQoJY2xlYXI6IGxlZnQ7DQoJaGVpZ2h0OiA0cHg7DQoJ d2lkdGg6IGF1dG87DQoJbWFyZ2luOiAwcHg7DQoJZm9udC1zaXplOiAxcHg7DQp9DQouYmxvcXVlY2xl YXJjZXJvDQp7DQogbWFyZ2luOiAwOw0KIHBhZGRpbmc6IDA7DQogbGluZS1oZWlnaHQ6IDA7DQogY2xl YXI6IGJvdGg7DQp9DQouYmxvcXVlY2xlYXJfZm90b25vdGljaWEgew0KCWNsZWFyOiBsZWZ0Ow0KCWhl aWdodDogMHB4Ow0KCXdpZHRoOiBhdXRvOw0KCW1hcmdpbjogMHB4Ow0KCXBvc2l0aW9uOnJlbGF0aXZl Ow0KCWZvbnQtc2l6ZTogMXB4Ow0KCW1hcmdpbi1ib3R0b206IC00cHg7DQp9DQoNCi5ibG9xdWVjbGVh cl92aWRlbyB7DQoJY2xlYXI6IGJvdGg7DQp9DQoNCi5ub3RpY2lhc2RlcjIgew0KCXdpZHRoOiAxNTBw eDsNCglmbG9hdDogbGVmdDsNCglwYWRkaW5nLXRvcDogNHB4Ow0KfQ0KLmltcHJlc2FpenEgew0KCXdp ZHRoOiAyMDZweDsNCglmbG9hdDogbGVmdDsNCglib3JkZXItcmlnaHQtd2lkdGg6IDFweDsNCglib3Jk ZXItcmlnaHQtc3R5bGU6IGRvdHRlZDsNCglib3JkZXItcmlnaHQtY29sb3I6ICNjZmNmY2Y7DQoJcGFk ZGluZy1yaWdodDogNXB4Ow0KCW1hcmdpbi1yaWdodDogNXB4Ow0KfQ0KLmltcHJlc2FkZXIgew0KCXdp ZHRoOiA0MzBweDsNCglmbG9hdDogbGVmdDsNCglwYWRkaW5nLWxlZnQ6IDBweDsNCglwYWRkaW5nLXJp Z2h0OiAwcHg7DQoJbWFyZ2luLWxlZnQ6IDVweDsNCglwYWRkaW5nLXRvcDogMnB4Ow0KfQ0KLmRvc2Nv bHVtbmFzIHsNCglwYWRkaW5nOjVweDsNCgl3aWR0aDogMzEycHg7DQoJaGVpZ2h0OjEzMHB4Ow0KCWZs b2F0OiBsZWZ0Ow0KCW1hcmdpbi10b3A6IDBweDsNCgltYXJnaW4tbGVmdDogM3B4Ow0KCXBhZGRpbmct bGVmdDogNXB4Ow0KCWJvcmRlcjogZG90dGVkIDFweCAjY2ZjZmNmOw0KCWJhY2tncm91bmQtY29sb3I6 I0YwRjFGNjsNCn0NCi5jdWF0cm9jb2x1bW5hcyB7DQoJd2lkdGg6IDE1NnB4Ow0KCWZsb2F0OiBsZWZ0 Ow0KCW1hcmdpbi10b3A6IDBweDsNCgltYXJnaW4tbGVmdDogN3B4Ow0KCXBhZGRpbmctbGVmdDogN3B4 Ow0KCWJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7DQoJYm9yZGVyLWxlZnQtc3R5bGU6IGRvdHRlZDsNCgli b3JkZXItbGVmdC1jb2xvcjogI2NmY2ZjZjsNCn0NCi51bmFjb2x1bW5hIHsNCgl3aWR0aDogMTQwcHg7 DQoJZmxvYXQ6IGxlZnQ7DQoJbWFyZ2luLXRvcDogMHB4Ow0KfQ0KLm5vZGVzYm9yZGEgew0KIG92ZXJm bG93OiBoaWRkZW47DQogd2lkdGg6MTAwJTsNCiB9DQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gIFNFUlZJQ0lPUyBUSVBPIDEgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLnNlcnZpY2lvIHsN CgltYXJnaW4tYm90dG9tOiAxMHB4Ow0KCWNsZWFyOiByaWdodDsNCgl3aWR0aDogMzIwcHg7DQoJbWFy Z2luLXRvcDogMHB4Ow0KCS8qb3ZlcmZsb3c6IGhpZGRlbjsqLw0KfQ0KLnNlcnZpY2lvX2ZvbmRvYXp1 bCB7DQoJYmFja2dyb3VuZC1jb2xvcjogI0YwRjFGNjsNCgl3aWR0aDogMzIwcHg7DQoJbWFyZ2luLXRv cDogMHB4Ow0KCW92ZXJmbG93OiBoaWRkZW47DQp9DQoNCi5zZXJ2aWNpb19jaW50aWxsbyB7DQoJZm9u dC1mYW1pbHk6IFRhaG9tYSwgSGVsdmV0aWNhOw0KCWZvbnQtc2l6ZTogMTBweDsNCglmb250LXdlaWdo dDogYm9sZDsNCgljb2xvcjogIzAwMzk2OTsNCglmbG9hdDogbm9uZTsNCgl0ZXh0LWRlY29yYXRpb246 IG5vbmU7DQoJYmFja2dyb3VuZC1jb2xvcjogI0YwRjFGNjsNCgl0ZXh0LXRyYW5zZm9ybTogdXBwZXJj YXNlOw0KCWxpbmUtaGVpZ2h0OiAxNnB4Ow0KCXBhZGRpbmctbGVmdDogNXB4Ow0KfQ0KDQouc2Vydmlj aW9fdGl0dWxvIHsNCglmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmOw0KCWZvbnQtc2l6ZTogMTBweDsNCglmb250LXdlaWdodDogYm9sZDsNCgljb2xvcjogIzkyQUFD NjsNCgloZWlnaHQ6IDE0cHg7DQoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCglsaW5lLWhlaWdodDog MTRweDsNCn0NCg0KLnNlcnZpY2lvX2ltYWdlbml6cSB7DQoJZmxvYXQ6IGxlZnQ7DQoJbWFyZ2luLXJp Z2h0OiA1cHg7DQoJY2xlYXI6IGJvdGg7DQoJb3ZlcmZsb3c6IGhpZGRlbjsNCn0NCg0KLnNlcnZpY2lv X2VubGFjZSB7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJp ZjsNCglmb250LXNpemU6IDEycHg7DQoJZm9udC13ZWlnaHQ6IG5vcm1hbDsNCgl0ZXh0LWRlY29yYXRp b246bm9uZTsNCgljb2xvcjogIzAwMDAwMDsNCgltYXJnaW46IDBweCA1cHggMHB4IDBweDsNCglsaW5l LWhlaWdodDogMTNweDsNCn0NCi5zZXJ2aWNpb19lbmxhY2U6aG92ZXJ7DQoJdGV4dC1kZWNvcmF0aW9u OnVuZGVybGluZTsNCn0NCg0KLnNlcnZpY2lvX2VubGFjZXBlcSB7DQoJZm9udC1mYW1pbHk6IFRhaG9t YSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250LXNpemU6IDExcHg7DQoJZm9udC13 ZWlnaHQ6IG5vcm1hbDsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsNCgljb2xvcjogIzAwMDAwMDsNCglt YXJnaW46IDBweCA1cHggMHB4IDBweDsNCglsaW5lLWhlaWdodDogMTNweDsNCn0NCi5zZXJ2aWNpb19l bmxhY2VwZXE6aG92ZXJ7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsNCn0NCi5zZXJ2aWNpb19l bmxhY2VuZWdyaXRhIHsNCglmb250LWZhbWlseTogVGFob21hLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 DQoJZm9udC1zaXplOiAxMXB4Ow0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KCXRleHQtZGVjb3JhdGlvbjpu b25lOw0KCWNvbG9yOiAjMDAwMDAwOw0KCW1hcmdpbjogMHB4IDVweCAwcHggMHB4Ow0KfQ0KLnNlcnZp Y2lvX2VubGFjZW5lZ3JpdGE6aG92ZXIgew0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7DQp9DQou c2VydmljaW9fZW5sYWNlcGVxYXp1bCB7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgSGVsdmV0aWNhLCBz YW5zLXNlcmlmOw0KCWZvbnQtc2l6ZTogMTBweDsNCglmb250LXdlaWdodDogYm9sZDsNCgl0ZXh0LWRl Y29yYXRpb246bm9uZTsNCgljb2xvcjogIzg1QTBDNjsNCgltYXJnaW46IDBweCA1cHggMHB4IDBweDsN CglsaW5lLWhlaWdodDogMTNweDsNCn0NCi5zZXJ2aWNpb19lbmxhY2VwZXFhenVsOmhvdmVyew0KCXRl eHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7DQp9DQouc2VydmljaW9fZmVjaGEgew0KCWZvbnQtZmFtaWx5 OiBUYWhvbWEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250LXNpemU6IDEwcHg7DQoJY29sb3I6 ICM5OTk5OTk7DQoJdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KCW1h cmdpbi10b3A6IDJweDsNCgltYXJnaW4tYm90dG9tOiAycHg7DQp9DQouc2VydmljaW8gSDIgew0KCUZP TlQtV0VJR0hUOiBib2xkOw0KCUZPTlQtU0laRTogMThweDsNCglDT0xPUjogI0U2OTIwMDsNCglGT05U LVNUWUxFOiBub3JtYWw7DQoJRk9OVC1GQU1JTFk6QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsN CglURVhULURFQ09SQVRJT046IG5vbmU7DQoJbGluZS1oZWlnaHQ6MTZweDsNCgl0ZXh0LWRlY29yYXRp b246IG5vbmU7DQoJbWFyZ2luLXRvcDogM3B4Ow0KCW1hcmdpbi1ib3R0b206IDNweDsNCn0NCg0KLnNl cnZpY2lvIEgzLCAuc2VydmljaW9fZm9uZG9henVsIEgzIHsNCglGT05ULVdFSUdIVDogbm9ybWFsOw0K CUZPTlQtU0laRTogMThweDsNCglDT0xPUjogIzAwMzk2OTsNCglGT05ULVNUWUxFOiBub3JtYWw7DQoJ Rk9OVC1GQU1JTFk6QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglURVhULURFQ09SQVRJT046 IG5vbmU7DQoJbGluZS1oZWlnaHQ6MThweDsNCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7DQoJbWFyZ2lu LXRvcDogM3B4Ow0KCW1hcmdpbi1ib3R0b206IDNweDsNCn0NCi5zZXJ2aWNpbyBINCB7DQoJRk9OVC1X RUlHSFQ6IGJvbGQ7DQoJRk9OVC1TSVpFOiAxNHB4Ow0KCUNPTE9SOiAjMDAzOTY5Ow0KCUZPTlQtU1RZ TEU6IG5vcm1hbDsNCglGT05ULUZBTUlMWTpBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCVRF WFQtREVDT1JBVElPTjogbm9uZTsNCglsaW5lLWhlaWdodDoxN3B4Ow0KCXRleHQtZGVjb3JhdGlvbjog bm9uZTsNCgltYXJnaW4tdG9wOiAzcHg7DQoJbWFyZ2luLWJvdHRvbTogM3B4Ow0KfQ0KDQovKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIENPTVBMRU1FTlRPUyBERSBT RVJWSUNJT1MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov DQouc2VydmljaW9fYWRkLCAuc2VydmljaW9fYWRkIEEgew0KCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEhl bHZldGljYTsNCglmb250LXNpemU6IDEycHg7DQoJY29sb3I6ICM4NUEwQzY7DQoJdGV4dC1kZWNvcmF0 aW9uOiBub25lOw0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KCW1hcmdpbi10b3A6IDRweDsNCgltYXJnaW4t Ym90dG9tOiAwcHg7DQoJZmxvYXQ6IG5vbmU7DQp9DQouc2VydmljaW9fYWRkIEE6aG92ZXIgew0KCXRl eHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOw0KfQ0KDQoNCi5maW5fc2VydmljaW8gew0KCXBhZGRpbmct cmlnaHQ6IDJweDsNCglwYWRkaW5nLWxlZnQ6IDJweDsNCglib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsN Cglib3JkZXItdG9wLWNvbG9yOiAjQ0NDQ0NDOw0KCW1hcmdpbjogNHB4IDBweDsNCglib3JkZXItdG9w LXdpZHRoOiAxcHg7DQoJcGFkZGluZy1ib3R0b206IDNweDsNCgljbGVhcjogYm90aDsNCn0NCg0KLmV4 dHJhc19iYXJyYXsNCgl3aWR0aDogOTkwcHg7DQoJYmFja2dyb3VuZC1jb2xvcjogIzk0QThDOTsNCglm b250LWZhbWlseTpBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWZvbnQtc2l6ZTogMThweDsN Cglmb250LXdlaWdodDogbm9ybWFsOw0KCWNvbG9yOiAjRkZGRkZGOw0KCWZsb2F0OiBsZWZ0Ow0KCW1h cmdpbi10b3A6IDVweDsNCgltYXJnaW4tYm90dG9tOiA1cHg7DQoJbGluZS1oZWlnaHQ6IDIzcHg7DQp9 DQouZXh0cmFzX2JhcnJhX2VubGFjZSB7DQoJZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNh bnMtc2VyaWY7DQoJZm9udC1zaXplOiA5cHg7DQoJY29sb3I6ICNGRkZGRkY7DQp9DQouZXh0cmFzIHsN CglmbG9hdDogbGVmdDsNCi8qLwloZWlnaHQ6IDI4MHB4OyovDQoJd2lkdGg6IDE1MHB4Ow0KCWZvbnQt ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7DQoJZm9udC1zaXplOiAxMXB4Ow0KfQ0KLmV4 dHJhc19zZXBhcmFkb3Igew0KCWZsb2F0OiBsZWZ0Ow0KCWJvcmRlci1yaWdodC13aWR0aDogMXB4Ow0K CWJvcmRlci1yaWdodC1zdHlsZTogZG90dGVkOw0KCWJvcmRlci1yaWdodC1jb2xvcjogIzk5OTk5OTsN CgltYXJnaW4tcmlnaHQ6IDlweDsNCgloZWlnaHQ6IDIwMHB4Ow0KCXBhZGRpbmctcmlnaHQ6IDhweDsN Cn0NCg0KLmV4dHJhc190aXR1bG8gew0KCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEhlbHZldGljYSwgc2Fu cy1zZXJpZjsNCglmb250LXNpemU6IDEwcHg7DQoJZm9udC13ZWlnaHQ6IGJvbGQ7DQoJY29sb3I6ICNG RkZGRkY7DQoJbGluZS1oZWlnaHQ6IDExcHg7DQoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCgliYWNr Z3JvdW5kLWNvbG9yOiAjMDEzNzY1Ow0KCWhlaWdodDogMTRweDsNCglwYWRkaW5nLXRvcDogM3B4Ow0K CXBhZGRpbmctbGVmdDogNnB4Ow0KDQp9DQouZXh0cmFzX0gzIHsNCglGT05ULVNJWkU6IDEyNSU7DQoJ Q09MT1I6ICMwMDM5Njk7DQoJRk9OVC1GQU1JTFk6QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsN CglURVhULURFQ09SQVRJT046IG5vbmU7DQoJbGluZS1oZWlnaHQ6MjBweDsNCgl0ZXh0LWRlY29yYXRp b246IG5vbmU7DQoJbWFyZ2luLXRvcDogM3B4Ow0KCW1hcmdpbi1ib3R0b206IDNweDsNCglmb250LXdl aWdodDogYm9sZDsNCn0NCi5leHRyYXNfSDQgew0KCUZPTlQtV0VJR0hUOiBib2xkOw0KCUZPTlQtU0la RTogMTEwJTsNCglDT0xPUjogIzAwMzk2OTsNCglGT05ULUZBTUlMWTogQXJpYWwsIEhlbHZldGljYSwg c2Fucy1zZXJpZjsNCglURVhULURFQ09SQVRJT046IG5vbmU7DQoJbGluZS1oZWlnaHQ6MThweDsNCgl0 ZXh0LWRlY29yYXRpb246IG5vbmU7DQoJbWFyZ2luLXRvcDogM3B4Ow0KCW1hcmdpbi1ib3R0b206IDNw eDsNCn0NCi5leHRyYXNfSDUgew0KCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7 DQoJZm9udC1zaXplOiA5NSU7DQoJZm9udC13ZWlnaHQ6IGJvbGQ7DQoJY29sb3I6ICMwMDM5Njk7DQoJ dGV4dC1kZWNvcmF0aW9uOiBub25lOw0KCWxpbmUtaGVpZ2h0OiAxNnB4Ow0KCW1hcmdpbi10b3A6IDNw eDsNCgltYXJnaW4tYm90dG9tOiAzcHg7DQp9DQoubWFzbGVpZG9fc2VsZWN7DQoJZm9udC1mYW1pbHk6 IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsNCglmb250LXNpemU6MTBweDsNCglmb250LXdlaWdodDpi b2xkOw0KCWJhY2tncm91bmQtY29sb3I6ICNGOEY5RkI7DQoJbGluZS1oZWlnaHQ6IDIycHg7DQoJYm9y ZGVyLXRvcC13aWR0aDogMXB4Ow0KCWJvcmRlci1yaWdodC13aWR0aDogMXB4Ow0KCWJvcmRlci1sZWZ0 LXdpZHRoOiAxcHg7DQoJYm9yZGVyLXRvcC1zdHlsZTogZG90dGVkOw0KCWJvcmRlci1yaWdodC1zdHls ZTogZG90dGVkOw0KCWJvcmRlci1sZWZ0LXN0eWxlOiBkb3R0ZWQ7DQoJYm9yZGVyLXRvcC1jb2xvcjog Izk5OTk5OTsNCglib3JkZXItcmlnaHQtY29sb3I6ICM5OTk5OTk7DQoJYm9yZGVyLWxlZnQtY29sb3I6 ICM5OTk5OTk7DQp9DQoubWFzbGVpZG8sIC5tYXNsZWlkbyBBew0KCWZvbnQtZmFtaWx5OiBUYWhvbWEs IEFyaWFsLCBIZWx2ZXRpY2E7DQoJZm9udC1zaXplOjEwcHg7DQoJZm9udC13ZWlnaHQ6bm9ybWFsOw0K CWxpbmUtaGVpZ2h0OiAyMnB4Ow0KCWJvcmRlci10b3Atd2lkdGg6IDFweDsNCglib3JkZXItcmlnaHQt d2lkdGg6IDFweDsNCglib3JkZXItbGVmdC13aWR0aDogMXB4Ow0KCWJvcmRlci10b3Atc3R5bGU6IGRv dHRlZDsNCglib3JkZXItcmlnaHQtc3R5bGU6IGRvdHRlZDsNCglib3JkZXItbGVmdC1zdHlsZTogZG90 dGVkOw0KCWJvcmRlci10b3AtY29sb3I6ICM5OTk5OTk7DQoJYm9yZGVyLXJpZ2h0LWNvbG9yOiAjOTk5 OTk5Ow0KCWJvcmRlci1sZWZ0LWNvbG9yOiAjOTk5OTk5Ow0KfQ0KLm1hc2xlaWRvX2N1ZXJwb3sNCgli b3JkZXI6IDFweCBkb3R0ZWQgIzk5OTk5OTsNCgl3aWR0aDogMzE4cHg7DQoJYmFja2dyb3VuZC1jb2xv cjogI0Y4RjlGQjsNCn0NCi5tYXNsZWlkb19pbnRlcmlvciB7DQoJcGFkZGluZy10b3A6IDNweDsNCglw YWRkaW5nLXJpZ2h0OiA4cHg7DQoJcGFkZGluZy1ib3R0b206IDNweDsNCglwYWRkaW5nLWxlZnQ6IDhw eDsNCn0NCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBOVUVWT1MgRVNUSUxPUyBDQUpB UyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQouc2VydmljaW9fZGVzY3JpcGNpb24g ew0KCWZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KCWZvbnQtc2l6ZTog MTJweDsNCgljb2xvcjogIzZkNmY3MDsNCn0NCi5zZXJ2aWNpb19udWV2b1RpdHVsbyB7DQoJZm9udC1m YW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJZm9udC1zaXplOiAxOHB4Ow0KCWNv bG9yOiAjMjE2ODdlOw0KfQ0KLnNlcnZpY2lvX251ZXZvVGV4dCwgLnNlcnZpY2lvX251ZXZvVGV4dCBh IHsNCglmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250LXNpemU6 IDExcHg7DQoJZm9udC13ZWlnaHQ6IG5vcm1hbDsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsNCgljb2xv cjogIzAwMDAwMDsNCglsaW5lLWhlaWdodDogMTNweDsNCglwYWRkaW5nLWJvdHRvbTogNXB4Ow0KfQ0K LnNlcnZpY2lvX251ZXZvVGV4dCBhOmhvdmVyIHsNCg0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7 DQoNCn0NCi5zZXJ2aWNpb19udWV2YUltZyB7DQoJdGV4dC1hbGlnbjogbGVmdDsNCglwYWRkaW5nLXJp Z2h0OiA3cHg7DQp9DQouc2VydmljaW9fYm9yZGVDYWphIHsNCglib3JkZXI6IDFweCBzb2xpZCAjY2Zk NGQ4Ow0KCXBhZGRpbmc6IDJweDsNCn0NCi5zZXJ2aWNpb19ib3JkZUNhamEyIHsNCglib3JkZXI6IDFw eCBkYXNoZWQgI2NmZDRkODsNCgl3aWR0aDogMzE2cHg7DQoNCn0NCg0KLnNlcnZpY2lvX2JvcmRlQ2Fq YTMgew0KCWJvcmRlcjogMXB4IHNvbGlkICNjZmQ0ZDg7DQoJd2lkdGg6IDMxNnB4Ow0KfQ0KLnNlcnZp Y2lvX2ZvbmRvQ2FqYTIgew0KCW1hcmdpbjogMnB4Ow0KCXdpZHRoOiAzMTZweDsNCn0NCi5zZXJ2aWNp b19lbmxhY2VBenVsLCAuc2VydmljaW9fZW5sYWNlQXp1bCBBew0KCWZvbnQtZmFtaWx5OiBUYWhvbWEs IEhlbHZldGljYTsNCglmb250LXNpemU6IDExcHg7DQoJY29sb3I6ICM3ODk3QTk7DQoJdGV4dC1kZWNv cmF0aW9uOiBub25lOw0KCWZvbnQtd2VpZ2h0OiBub3JtYWw7DQoJbWFyZ2luLXRvcDogN3B4Ow0KCW1h cmdpbi1ib3R0b206IDBweDsNCglmbG9hdDogbm9uZTsNCgl0ZXh0LWRlY29yYXRpb246bm9uZTsNCn0N Cg0KLnNlcnZpY2lvX2VubGFjZUF6dWwgQXsNCnRleHQtZGVjb3JhdGlvbjpub25lOw0KfS5zZXJ2aWNp b19saW5lYUluZiB7DQoJY2xlYXI6IGJvdGg7DQoJbWFyZ2luLXRvcDogNXB4Ow0KCW1hcmdpbi1ib3R0 b206IDVweDsNCgloZWlnaHQ6IDJweDsNCglib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7DQoJYm9yZGVy LWJvdHRvbS1zdHlsZTogZGFzaGVkOw0KCWJvcmRlci1ib3R0b20tY29sb3I6ICNFMkUyRTI7DQp9DQou c2VydmljaW9fdGV4dG9NYXl1c2N1bGFQZWsgew0KCWZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOw0KCWZvbnQtc2l6ZTogMTBweDsNCgl0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNl Ow0KCWNvbG9yOiAjNjY2NjY2Ow0KCW1hcmdpbi10b3A6IDNweDsNCgltYXJnaW4tYm90dG9tOiAzcHg7 DQp9DQouc2VydmljaW9fdGl0dWxhcl9mb25kbyB7DQoJZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7DQoJZm9udC1zaXplOiAxNXB4Ow0KCWZvbnQtd2VpZ2h0OiBib2xkOw0KCWNv bG9yOiAjNTY2Mzc4Ow0KCWxpbmUtaGVpZ2h0OiAyMHB4Ow0KfQ0KDQouc2VydmljaW9fZm9uZG9Fbmxh Y2VzIHsNCglmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250LXNp emU6IDEwcHg7DQoJZm9udC13ZWlnaHQ6IG5vcm1hbDsNCgljb2xvcjogI0NBQ0JENTsNCglsaW5lLWhl aWdodDogMTZweDsNCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7DQoJYmFja2dyb3VuZC1jb2xvcjogI0Y3 RjhGOTsNCn0NCi5zZXJ2aWNpb19mb25kb0VubGFjZXMgYXsNCglmb250LWZhbWlseTogQXJpYWwsIEhl bHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250LXNpemU6IDEwcHg7DQoJZm9udC13ZWlnaHQ6IG5vcm1h bDsNCgljb2xvcjogIzY5Nzc5NDsNCglsaW5lLWhlaWdodDogMTZweDsNCgl0ZXh0LWRlY29yYXRpb246 IG5vbmU7DQoNCn0NCi5zZXJ2aWNpb19mb25kb0VubGFjZXMgYTpob3ZlcnsNCgl0ZXh0LWRlY29yYXRp b246IHVuZGVybGluZTsNCg0KfQ0KLnNlcnZpY2lvX2Rvc2ZpbGFzIHsNCglmb250LWZhbWlseTogIlRp bWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCglmb250LXNpemU6IDE4cHg7DQoJbGluZS1oZWln aHQ6IDMwcHg7DQoJY29sb3I6ICM2NjY2NjY7DQoJdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KCWJhY2tn cm91bmQtY29sb3I6ICNGOEY4Rjg7DQoJcGFkZGluZy1sZWZ0OiA3cHg7DQp9DQouc2VydmljaW9fZG9z ZmlsYXMyIHsNCglmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250 LXNpemU6IDE4cHg7DQoJbGluZS1oZWlnaHQ6IDMwcHg7DQoJY29sb3I6ICM2NjY2NjY7DQoJdGV4dC1k ZWNvcmF0aW9uOiBub25lOw0KCXBhZGRpbmctbGVmdDogN3B4Ow0KfQ0KLnNlcnZpY2lvX2Rvc2ZpbGFz U29tYnJhIHsNCgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cDovL2VzdGF0aWNvczAyLmxhb3Bpbmlv bmRlemFtb3JhLmVzL2VsZW1lbnRvc1dlYi9nZXN0aW9uQ2FqYXMvY29tdW4vSW1hZ2UvZm9uZG9fZGVn cmFTZXJ2aWNpb3MucG5nKTsNCgliYWNrZ3JvdW5kLXJlcGVhdDogIHJlcGVhdC14Ow0KCXBhZGRpbmct dG9wOiAxM3B4Ow0KCXBhZGRpbmctYm90dG9tOiA1cHg7DQp9DQouc2VydmljaW9fdGV4dG9jb2xvciB7 DQoJZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJZm9udC1zaXplOiAx MXB4Ow0KCWZvbnQtd2VpZ2h0OiBub3JtYWw7DQoJY29sb3I6ICNCRTZGMDM7DQoJdGV4dC1kZWNvcmF0 aW9uOiBub25lOw0KfQ0KLnNlcnZpY2lvX3RleHRvY29sb3JHcmlzIHsNCglmb250LWZhbWlseTogQXJp YWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCglmb250LXNpemU6IDExcHg7DQoJZm9udC13ZWlnaHQ6 IG5vcm1hbDsNCgljb2xvcjogIzgxN0U3ODsNCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7DQoJcGFkZGlu ZzogNHB4Ow0KfQ0KLnNlcnZpY2lvX2JvcmRlRm90byB7DQoJYm9yZGVyOiAxcHggc29saWQgI0RCRENE RDsNCglwYWRkaW5nOiAycHg7DQp9DQouc2VydmljaW9fZm9uZG9Db2xvclREIHsNCgliYWNrZ3JvdW5k LWNvbG9yOiAjRkJGQkZCOw0KfQ0KLnZlcnN1cyB7DQoJYmFja2dyb3VuZC1jb2xvcjojRjlGOUY5Ow0K CWJvcmRlcjoxcHggZGFzaGVkICNDQ0NDQ0M7DQoJZmxvYXQ6bGVmdDsNCgl3aWR0aDozMjBweDsNCn0N Ci52ZXJzdXMgLmFuZ3VsbyB7DQoJbWFyZ2luLXRvcDogLTJweDsNCgltYXJnaW4tcmlnaHQ6IC0ycHg7 DQoJbWFyZ2luLWJvdHRvbTogMDsNCgltYXJnaW4tbGVmdDogMzAwcHg7DQp9DQouc2VydmljaW9zX3Ry YWZpY2FiZWNlcmEgewogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9lc3RhdGljb3MwMi5s YW9waW5pb25kZXphbW9yYS5lcy9lbGVtZW50b3NXZWIvbWVkaWF3ZWIvaW1hZ2VzL3NlcnZpY2lvcy9j YWphX3RyYWZpY28vY2FiZWNlcmFfdHJhZmljby5wbmcpOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5v LXJlcGVhdDsKICAgIGhlaWdodDogNDRweDsKICAgIHdpZHRoOiAzMTRweDsKICAgIGZvbnQtZmFtaWx5 OiAiVHJlYnVjaGV0IE1TIiwgVGFob21hOwogICAgZm9udC1zaXplOiAyMHB4OwogICAgbGluZS1oZWln aHQ6IDQwcHg7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgY29sb3I6ICNGRkZGRkY7CiAgICBi YWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9Ci5zZXJ2aWNp b190cmVzbGFkb3MgewogICAgd2lkdGg6IDMxMnB4OwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7 CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7CiAgICBib3JkZXItbGVmdC13aWR0aDogMXB4Owog ICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlk OwogICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjY2Zk MWQzOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2NmZDFkMzsKICAgIGJvcmRlci1sZWZ0LWNvbG9y OiAjY2ZkMWQzOwp9Ci5zZXJ2aWNpb190cmVzbGFkb3NCbGFuY28gewogICAgYm9yZGVyLXJpZ2h0LXdp ZHRoOiAxcHg7CiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7CiAgICBib3JkZXItbGVmdC13aWR0 aDogMXB4OwogICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci1ib3R0b20tc3R5 bGU6IHNvbGlkOwogICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXJpZ2h0LWNv bG9yOiAjRkZGRkZGOwogICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogI0ZGRkZGRjsKICAgIGJvcmRlci1s ZWZ0LWNvbG9yOiAjRkZGRkZGOwp9DQoNCg0KDQouc2VydmljaW9zX21vZHVsb3Mgew0KCWJhY2tncm91 bmQtaW1hZ2U6IHVybChodHRwOi8vZXN0YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvZWxlbWVu dG9zV2ViL21lZGlhd2ViL2ltYWdlcy9zZXJ2aWNpb3MvbW9kdWxvcy9jYWJlY2VyYS5wbmcpOw0KCWJh Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQoJaGVpZ2h0OiA0NHB4Ow0KCXdpZHRoOiAzMTRweDsN Cglmb250LWZhbWlseTogIlRyZWJ1Y2hldCBNUyIsIFRhaG9tYTsNCglmb250LXNpemU6IDIwcHg7bGlu ZS1oZWlnaHQ6IDQwcHg7DQoJZm9udC13ZWlnaHQ6IG5vcm1hbDsNCgljb2xvcjogI0ZGRkZGRjsNCgli YWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7DQoJdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLnNlcnZp Y2lvX2JvcmRlQ2FqYTQgew0KCWJvcmRlcjogMXB4IGRhc2hlZCAjY2ZkNGQ4Ow0KCXdpZHRoOiAzMDJw eDsNCg0KfQ0KLnB1Yl83Mjh4OTAgew0KCWhlaWdodDogOTBweDsNCgl3aWR0aDogNzQycHg7DQoJZmxv YXQ6IGxlZnQ7DQoJYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9lc3RhdGljb3MwMi5sYW9waW5p b25kZXphbW9yYS5lcy8vZWxlbWVudG9zV2ViL21lZGlhd2ViL2ltYWdlcy9wdWJsaWNpZGFkL3B1Ymxp Y2lkYWQuanBnKTsNCgliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KCWJhY2tncm91bmQtcG9z aXRpb246IGxlZnQgdG9wOw0KCXRleHQtYWxpZ246IHJpZ2h0Ow0KfQ0KLnB1Yl8yMzR4OTAgew0KCWZs b2F0OiBub25lOw0KCWhlaWdodDogOTBweDsNCgl3aWR0aDogMjQ4cHg7DQoJYmFja2dyb3VuZC1pbWFn ZTogdXJsKGh0dHA6Ly9lc3RhdGljb3MwMi5sYW9waW5pb25kZXphbW9yYS5lcy8vZWxlbWVudG9zV2Vi L21lZGlhd2ViL2ltYWdlcy9wdWJsaWNpZGFkL3B1YmxpY2lkYWQuanBnKTsNCgliYWNrZ3JvdW5kLXJl cGVhdDogbm8tcmVwZWF0Ow0KCWJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wOw0KCXRleHQtYWxp Z246IHJpZ2h0Ow0KfQ0KLnB1Yl82NDB4MzAgew0KCWJhY2tncm91bmQtY29sb3I6ICNlNWU1ZTU7DQoJ ZmxvYXQ6IGxlZnQ7DQoJaGVpZ2h0OiA0NXB4Ow0KCXdpZHRoOiA2NDBweDsNCn0NCi5wdWJfMzQweDI1 MCB7DQoJdGV4dC1hbGlnbjogY2VudGVyOw0KCWJhY2tncm91bmQtaW1hZ2U6IHVybChodHRwOi8vZXN0 YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvL2VsZW1lbnRvc1dlYi9tZWRpYXdlYi9pbWFnZXMv cHVibGljaWRhZC9wdWJsaWNpZGFkMi5qcGcpOw0KCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7 DQoJYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIHRvcDsNCglwYWRkaW5nLXRvcDogMTRweDsNCn0N Cg0KI2FudW5jaW9fZ29vZ2xlDQp7DQogcGFkZGluZzogNXB4Ow0KIHBhZGRpbmctbGVmdDogMTVweDsN CiBwYWRkaW5nLWJvdHRvbTogMDsNCn0NCiNhbnVuY2lvX2dvb2dsZSBwDQp7DQogbWFyZ2luOiAwOw0K IHBhZGRpbmc6IDA7DQp9DQoNCi5hbnVuY2lvc19nb29nbGUNCnsNCiBib3JkZXI6IDFweCBzb2xpZCAj ZTNlM2UzOw0KIGJvcmRlci10b3A6IDA7DQogd2lkdGg6IDY1MHB4Ow0KfQ0KLmFudW5jaW9zX2dvb2ds ZQ0Kew0KIGZvbnQtZmFtaWx5OiBUYWhvbWEsQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7DQp9DQoN Ci50ZXh0b19nb29nbGUNCnsNCiBiYWNrZ3JvdW5kLWNvbG9yOiAjRUJFOEUxOw0KIGJvcmRlcjogMXB4 IHNvbGlkICNFQkU4RTE7DQogYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlM2UzZTM7DQogd2lkdGg6 IDY1MHB4Ow0KIG1hcmdpbjogMDsNCiBwYWRkaW5nOiAwOw0KIHBhZGRpbmctdG9wOiAycHg7DQogcGFk ZGluZy1ib3R0b206IDJweDsNCiBjb2xvcjogIzY2NjY2NjsNCiBmb250LXNpemU6IDExcHg7DQp9DQoN Ci50aXRsZV9hbnVuY2lvDQp7DQogY29sb3I6ICMwMDM5Njk7DQogZm9udC1zaXplOiAxNHB4Ow0KIGZv bnQtd2VpZ2h0OiBib2xkOw0KfQ0KDQoudGV4dG9fYW51bmNpbw0Kew0KIGZvbnQtc2l6ZToxMnB4Ow0K fQ0KDQoudXJsX21vc3RyYXINCnsNCiBwYWRkaW5nLWJvdHRvbTogN3B4Ow0KIGNvbG9yOiAjQ0E3RDBC Ow0KIGZvbnQtc2l6ZTogMTJweDsNCn0NCg0KLmVzcGFjaW8NCnsNCiBtYXJnaW46IDAgMCAwOw0KIHBh ZGRpbmc6IDAgMnB4IDJweDsNCiBmb250LXNpemU6IDVweDsNCiBmb250LXdlaWdodDogbm9ybWFsOw0K IGNsZWFyOiBsZWZ0Ow0KfQ0KI2FudW5jaW9zX2dvb2dsZV9kY2hhew0KYm9yZGVyOjFweCBzb2xpZCAj ZWVlZWVlOw0KYm9yZGVyLXRvcDowcHg7DQp3aWR0aDogMTAwJTsNCmJhY2tncm91bmQtY29sb3I6I0Y5 RjlGOTsNCn0NCiNhbnVuY2lvc19nb29nbGVfZGNoYSAjYW51bmNpb19nb29nbGVfZGNoYXsNCglwYWRk aW5nLWxlZnQ6N3B4Ow0KfQ0KI2FudW5jaW9zX2dvb2dsZV9kY2hhIC50aXRsZXsNCgliYWNrZ3JvdW5k LWNvbG9yOiNFOUVERjE7DQoJYm9yZGVyLWJvdHRvbToxcHggc29saWQgI0RERERERDsNCgljb2xvcjoj Q0E3RDBCOw0KCWZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmOw0KCWZvbnQtc2l6 ZToxMXB4Ow0KCWZvbnQtd2VpZ2h0OmJvbGQ7DQoJbGluZS1oZWlnaHQ6MWVtOw0KCW1hcmdpbi1ib3R0 b206NHB4Ow0KCW1hcmdpbi10b3A6M3B4Ow0KCW91dGxpbmU6bWVkaXVtIG5vbmU7DQoJcGFkZGluZzo1 cHg7DQoJdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOw0KfQ0KI2FudW5jaW9zX2dvb2dsZV9kY2hhIC50 aXRsZSBhewkNCgliYWNrZ3JvdW5kLWNvbG9yOiNFOUVERjE7DQoJY29sb3I6IzU2NjM3ODsNCglmb250 LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsNCglmb250LXNpemU6MTFweDsNCglmb250 LXdlaWdodDpib2xkOw0KCW1hcmdpbi1ib3R0b206N3B4Ow0KCW1hcmdpbi10b3A6M3B4Ow0KCW91dGxp bmU6bWVkaXVtIG5vbmU7DQoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7DQoJdGV4dC10cmFuc2Zvcm06dXBw ZXJjYXNlOw0KfQ0KI2FudW5jaW9zX2dvb2dsZV9kY2hhIC50aXR1bG9fYW51bmNpbyBhew0KCWNvbG9y OiMwMDM5Njk7DQoJZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7DQoJZm9udC1z aXplOjEycHg7DQoJZm9udC13ZWlnaHQ6Ym9sZDsNCgltYXJnaW4tYm90dG9tOjJweDsNCgltYXJnaW4t dG9wOjNweDsNCglvdXRsaW5lOm1lZGl1bSBub25lOw0KCXRleHQtZGVjb3JhdGlvbjpub25lOw0KfQ0K I2FudW5jaW9zX2dvb2dsZV9kY2hhIC50ZXh0b19hbnVuY2lvew0KCWNvbG9yOiMwMDAwMDA7DQoJbWFy Z2luLWJvdHRvbTozcHg7DQoJbWFyZ2luLXRvcDoxcHg7DQoJb3V0bGluZTptZWRpdW0gbm9uZTsNCgl0 ZXh0LWRlY29yYXRpb246bm9uZTsNCn0NCiNhbnVuY2lvc19nb29nbGVfZGNoYSAuZXNwYWNpb3sNCglj bGVhcjpsZWZ0Ow0KCWZvbnQtd2VpZ2h0Om5vcm1hbDsNCgltYXJnaW46MHB4IDAgMHB4Ow0KCXBhZGRp bmc6OHB4IDJweCAycHg7DQoJZm9udC1zaXplOjVweDsNCn1BIHsKCWZvbnQtc2l6ZTogMTAwJTsKCWZv bnQtc3R5bGU6IG5vcm1hbDsKLyoJZm9udC13ZWlnaHQ6IGJvbGRlcjsqLwoJY29sb3I6ICMwMDM5Njk7 Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCn0KCkE6aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9u OiB1bmRlcmxpbmU7Cn0KCi5zZXJ2aWNpb3MgYQp7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5z ZXJ2aWNpb3MgYTpob3Zlcgp7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLm5vdGljaWFf dGV4dG8gcCBhCnsKCWZvbnQtd2VpZ2h0OiBib2xkZXI7Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgRElWUyBERSBOT1RJQ0lBUyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLnJzc3sKCWZv bnQtZmFtaWx5OiBUYWhvbWEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMTFweDsK CWZvbnQtd2VpZ2h0OiBib2xkOwoJY29sb3I6ICMwMDM1NjM7Cglib3JkZXItYm90dG9tLXdpZHRoOiAx cHg7Cglib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsKCWJvcmRlci1ib3R0b20tY29sb3I6ICNDRUNF Q0U7CglwYWRkaW5nLWJvdHRvbTogM3B4OwoJcGFkZGluZy10b3A6IDNweDsKCXBhZGRpbmctbGVmdDog M3B4OwoJbWFyZ2luLWJvdHRvbTogNHB4OwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cn0KLnJzcyBBewoJ Zm9udC1mYW1pbHk6IFRhaG9tYSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJZm9udC1zaXplOiAxMXB4 OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cgljb2xvcjogIzAwMzU2MzsKCXRleHQtZGVjb3JhdGlvbjpub25l Owp9Ci5yc3MgQTpob3ZlciB7Cgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOwp9Ci5ub3RpY2lhdGlw bzEgewoJY29sb3I6ICMwMDAwMDA7CglwYWRkaW5nLWJvdHRvbTogLTRweDsKCWZsb2F0OiBsZWZ0OwoJ bWFyZ2luOiAwcHg7CglsaW5lLWhlaWdodDogMTdweDsKCXdpZHRoOiAxMDAlOwp9Ci5ub3RpY2lhdGlw bzIgewoJYmFja2dyb3VuZC1jb2xvcjogI0YwRjFGNjsKCWNvbG9yOiAjMDAwMDAwOwoJZmxvYXQ6IGxl ZnQ7CgltYXJnaW46IDBweDsKCXBhZGRpbmctYm90dG9tOiA1cHg7CglsaW5lLWhlaWdodDogMTdweDsK CXdpZHRoOiAxMDAlOwp9CgpIMSwgSDEgQSB7CglGT05ULVNJWkU6IDMwcHg7CglDT0xPUjogIzAwMzk2 OTsKCUZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJVEVYVC1ERUNPUkFU SU9OOiBub25lOwoJZm9udC1zdHlsZTogbm9ybWFsOwoJZm9udC13ZWlnaHQ6IGJvbGRlcjsKCWxpbmUt aGVpZ2h0OiAxLjFlbTsKCW1hcmdpbi1ib3R0b206IDRweDsKCW1hcmdpbi10b3A6IDFweDsKCW91dGxp bmUtY29sb3I6LW1vei11c2UtdGV4dC1jb2xvcjsKCW91dGxpbmUtc3R5bGU6bm9uZTsKCW91dGxpbmUt d2lkdGg6bWVkaXVtOwp9CkgxIEE6aG92ZXIsIEgyIEE6aG92ZXIsIEgzIEE6aG92ZXIsIEg0IEE6aG92 ZXIsIEg1IEE6aG92ZXIsIEg2IEE6aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJY29sb3I6 ICNCQzY1MDU7Cgp9CkgyLCBIMiBBIHsKCUZPTlQtU0laRTogMjJweDsKCUNPTE9SOiAjMDAzOTY5OwoJ Rk9OVC1TVFlMRTogbm9ybWFsOwoJRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy aWY7CglURVhULURFQ09SQVRJT046IG5vbmU7CglsaW5lLWhlaWdodDpub3JtYWw7Cgl0ZXh0LWRlY29y YXRpb246IG5vbmU7CgltYXJnaW4tdG9wOiAzcHg7CgltYXJnaW4tYm90dG9tOiA3cHg7CgkvKmNsZWFy OiBsZWZ0OyovCgkJb3V0bGluZS1jb2xvcjotbW96LXVzZS10ZXh0LWNvbG9yOwoJb3V0bGluZS1zdHls ZTpub25lOwoJb3V0bGluZS13aWR0aDptZWRpdW07Cglmb250LXdlaWdodDogYm9sZDsKfQoKSDMsIEgz IEEgewoJRk9OVC1TSVpFOiAxOXB4OwoJQ09MT1I6ICMwMDM5Njk7CglGT05ULUZBTUlMWTogQXJpYWws IEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCVRFWFQtREVDT1JBVElPTjogbm9uZTsKCWxpbmUtaGVpZ2h0 Om5vcm1hbDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCW1hcmdpbi10b3A6IDNweDsKCW1hcmdpbi1i b3R0b206IDhweDsKCW91dGxpbmUtY29sb3I6LW1vei11c2UtdGV4dC1jb2xvcjsKCW91dGxpbmUtc3R5 bGU6bm9uZTsKCW91dGxpbmUtd2lkdGg6bWVkaXVtOwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KSDQsIEg0 IEEgewoJRk9OVC1XRUlHSFQ6IGJvbGQ7CglGT05ULVNJWkU6IDExMCU7CglDT0xPUjogIzAwMzk2OTsK CUZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJVEVYVC1ERUNPUkFUSU9O OiBub25lOwoJbGluZS1oZWlnaHQ6MTdweDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCW1hcmdpbi10 b3A6IDNweDsKCW1hcmdpbi1ib3R0b206IDNweDsKCW91dGxpbmUtY29sb3I6LW1vei11c2UtdGV4dC1j b2xvcjsKCW91dGxpbmUtc3R5bGU6bm9uZTsKCW91dGxpbmUtd2lkdGg6bWVkaXVtOwp9CgpINSwgSDUg QSB7CglGT05ULVdFSUdIVDogYm9sZDsKCUZPTlQtU0laRTogMTAwJTsKCUNPTE9SOiAjMDAzOTY5OwoJ Rk9OVC1TVFlMRTogbm9ybWFsOwoJRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy aWY7CglURVhULURFQ09SQVRJT046IG5vbmU7CglsaW5lLWhlaWdodDoxNXB4OwoJdGV4dC1kZWNvcmF0 aW9uOiBub25lOwoJbWFyZ2luLXRvcDogM3B4OwoJbWFyZ2luLWJvdHRvbTogM3B4OwoJb3V0bGluZS1j b2xvcjotbW96LXVzZS10ZXh0LWNvbG9yOwoJb3V0bGluZS1zdHlsZTpub25lOwoJb3V0bGluZS13aWR0 aDptZWRpdW07Cn0KSDYsIEg2IEEgewoJRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7Cglmb250LXNpemU6IDIwMCU7Cgljb2xvcjogI0Y1QTcwMzsKCWxpbmUtaGVpZ2h0OiAyNXB4 OwoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCWZvbnQtc3R5bGU6IGl0YWxpYzsKCW1hcmdpbi10b3A6IDJw eDsKCW1hcmdpbi1ib3R0b206IDJweDsKCW91dGxpbmUtY29sb3I6LW1vei11c2UtdGV4dC1jb2xvcjsK CW91dGxpbmUtc3R5bGU6bm9uZTsKCW91dGxpbmUtd2lkdGg6bWVkaXVtOwp9Cgoubm90aWNpYWludGVy aW9yIHsKCWZsb2F0OmxlZnQ7CglwYWRkaW5nLXRvcDogM3B4OwoJcGFkZGluZy1yaWdodDogMHB4OwoJ cGFkZGluZy1ib3R0b206IDNweDsKCXBhZGRpbmctbGVmdDogMHB4OwoJbWFyZ2luLXJpZ2h0OiA1cHg7 Cn0KLm5vdGljaWFpbnRlcmlvcl9ub2Zsb2F0IHsKCXBhZGRpbmctdG9wOiAwcHg7CglwYWRkaW5nLXJp Z2h0OiA1cHg7CglwYWRkaW5nLWJvdHRvbTogMHB4OwoJcGFkZGluZy1sZWZ0OiA2cHg7Cn0KLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgQ09NUExFTUVOVE9TIERFIE5PVElDSUFTIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwouc2VjY2lvbl9ub3RpY2lh ewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsKCWZvbnQtc2l6ZTogMTFweDsK CWZvbnQtd2VpZ2h0OiBib2xkOwoJY29sb3I6ICNDQTdEMEI7CglmbG9hdDogbm9uZTsKCWZvbnQtc3R5 bGU6IG5vcm1hbDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCW1hcmdpbi10b3A6IDJweDsKCW1hcmdp bi1ib3R0b206IC0ycHg7Cglmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7Cn0KLmVwaWdyYWZlewoJZm9u dC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsKCWZvbnQtc2l6ZTogMTFweDsKCWZvbnQt d2VpZ2h0OiBub3JtYWw7Cgljb2xvcjogI0NBN0QwQjsKCWZsb2F0OiBub25lOwoJZm9udC1zdHlsZTog bm9ybWFsOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJbWFyZ2luLXRvcDogMnB4OwoJbWFyZ2luLWJv dHRvbTogLTJweDsKCWZvbnQtdmFyaWFudDogbm9ybWFsOwp9Ci5lcGlncmFmZSBhewoJZm9udC1mYW1p bHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsKCWZvbnQtc2l6ZTogMTFweDsKCWZvbnQtd2VpZ2h0 OiBub3JtYWw7Cgljb2xvcjogI0NBN0QwQjsKCWZsb2F0OiBub25lOwoJZm9udC1zdHlsZTogbm9ybWFs OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJZm9udC12YXJpYW50OiBub3JtYWw7Cn0KLmVwaWdyYWZl IGE6aG92ZXJ7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLnN1YnRpdHVsbyBoMiBhIHsK CWZvbnQtc2l6ZToxMDAlOwoJZm9udC13ZWlnaHQ6Ym9sZGVyOwoJY29sb3I6ICMwMDM5Njk7Cgl0ZXh0 LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLnN1YnRpdHVsbyBoMiBhOmhvdmVyIHsKCXRleHQtZGVj b3JhdGlvbjogdW5kZXJsaW5lOwoJY29sb3I6ICMwMDM5Njk7Cn0KCi5zdWJ0aXR1bG8gaDIgewoJRk9O VC1XRUlHSFQ6IG5vcm1hbDsKCUZPTlQtU0laRTogMTE0JTsKCUNPTE9SOiAjMDAwMDAwOwoJRk9OVC1T VFlMRTogbm9ybWFsOwoJRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CglU RVhULURFQ09SQVRJT046IG5vbmU7CglsaW5lLWhlaWdodDoxN3B4OwoJdGV4dC1kZWNvcmF0aW9uOiBu b25lOwoJbWFyZ2luLXRvcDogM3B4OwoJbWFyZ2luLWJvdHRvbTogM3B4Owp9CgoKLmZpcm1hIHsKCWNv bG9yOiAjMDAwMDAwOwoJcGFkZGluZy1ib3R0b206IC00cHg7CglmbG9hdDogbm9uZTsKCW1hcmdpbjog MHB4OwoJbGluZS1oZWlnaHQ6IDE3cHg7Cgl2aXNpYmlsaXR5OiBoaWRkZW47CglkaXNwbGF5OiBub25l Owp9CgouZmlybWFPcGluaW9uIHsKCWNvbG9yOiAjMDAwMDAwOwoJcGFkZGluZy1ib3R0b206IC00cHg7 CglmbG9hdDogbm9uZTsKCW1hcmdpbjogMHB4OwoJbGluZS1oZWlnaHQ6IDE3cHg7Cgl2aXNpYmlsaXR5 OiB2aXNpYmxlOwoJZGlzcGxheTogYmxvY2s7Cn0KCi5hY3R1YWxpemFkYXsKCWZvbnQtZmFtaWx5OiBU YWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7Cglmb250LXNpemU6IDExcHg7Cglmb250LXdlaWdodDogYm9s ZDsKCWNvbG9yOiAjRjNBNjBBOwoJZm9udC1zdHlsZTogbm9ybWFsOwp9Ci5jaW50aWxsbyB7Cglmb250 LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMTFweDsKCWZv bnQtd2VpZ2h0OiBib2xkOwoJY29sb3I6ICM3NTkyOUI7CglmbG9hdDogbm9uZTsKCXRleHQtZGVjb3Jh dGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNGN0Y4Rjk7Cgl0ZXh0LXRyYW5zZm9ybTogdXBw ZXJjYXNlOwoJdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tOwoJcGFkZGluZy1sZWZ0OiA1cHg7Cgls aW5lLWhlaWdodDogMTNweDsKCW1hcmdpbi1yaWdodDogMHB4OwoJbWFyZ2luLWxlZnQ6IDBweDsKCW1h cmdpbi10b3A6IDhweDsKCS8qYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OwoJYm9yZGVyLWJvdHRvbS1z dHlsZTogc29saWQ7Cglib3JkZXItYm90dG9tLWNvbG9yOiAjRURFRkYxOyovCgltYXJnaW4tYm90dG9t OiA4cHg7Cn0KLmFudGV0aXR1bG8gewoJZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7Cglmb250LXNpemU6IDEycHg7Cglmb250LXdlaWdodDogYm9sZDsKCWNvbG9yOiAjNjc4MDhE OwoJZmxvYXQ6IG5vbmU7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cgl2ZXJ0aWNhbC1hbGlnbjogdGV4 dC1ib3R0b207CglwYWRkaW5nLWxlZnQ6IDNweDsKCWxpbmUtaGVpZ2h0OiAxN3B4OwoJbWFyZ2luLXJp Z2h0OiAwcHg7CgltYXJnaW4tYm90dG9tOiAzcHg7CgltYXJnaW4tbGVmdDogMHB4OwoJbWFyZ2luLXRv cDogMnB4Owp9Ci5hbXBsaWFjaW9uIHsKCWZvbnQtZmFtaWx5OiAiR2VvcmdpYSIsIFRhaG9tYSwgSGVs dmV0aWNhOwoJZm9udC1zaXplOiAxMXB4OwoJZm9udC13ZWlnaHQ6IGJvbGRlcjsKCWNvbG9yOiAjOEJB NUM5OwoJZm9udC1zdHlsZTogbm9ybWFsOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJdGV4dC10cmFu c2Zvcm06IHVwcGVyY2FzZTsKCWxldHRlci1zcGFjaW5nOiAwLjFlbTsKfQouY29tZW50YXJpb3NfbmFy YW5qYSB7Cglmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhOwoJZm9udC1zaXplOiAx MnB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cgljb2xvcjogI0YzQTYwQTsKCWZvbnQtc3R5bGU6IG5vcm1h bDsKfQouY29tZW50YXJpb3MgewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsK CWZvbnQtc2l6ZTogODAlOwoJZm9udC1zdHlsZTogbm9ybWFsOwoJZm9udC13ZWlnaHQ6IG5vcm1hbDsK CWxpbmUtaGVpZ2h0OjE1cHg7Cgljb2xvcjogIzAwMDAwMDsKfQouY29tZW50YXJpb3NfZW52aW8gewoJ Zm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6 ZTogMTFweDsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTsKCWNvbG9y OiAjMDAwMDAwOwoJbWFyZ2luOiAwcHggNXB4IDBweCAwcHg7CglsaW5lLWhlaWdodDogMTNweDsKfQoK LmNvbnRlbmVkb3JfcGFnaW5hZG8gewoJaGVpZ2h0OiAxNXB4OwoJZmxvYXQ6IHJpZ2h0OwoJbWFyZ2lu LXRvcDogLTIzcHg7CglwYWRkaW5nLXJpZ2h0OiAtMTBweDsKfQouY29udGVuZWRvcl9wYWdpbmFkbzIg ewoJaGVpZ2h0OiAxNXB4OwoJZmxvYXQ6IHJpZ2h0OwoJbWFyZ2luLXRvcDogMHB4OwoJcGFkZGluZy1y aWdodDogMHB4Owp9Ci5wYWdpbmFkb19jb21lbnRhcmlvc3sKCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFy aWFsLCBIZWx2ZXRpY2E7Cglmb250LXNpemU6IDExcHg7CglwYWRkaW5nLXRvcDogMnB4OwoJcGFkZGlu Zy1yaWdodDogNXB4OwoJcGFkZGluZy1ib3R0b206IDJweDsKCXBhZGRpbmctbGVmdDogNXB4OwoJY29s b3I6ICM5MDkwOTA7Cglib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKCWJvcmRlci1yaWdodC1zdHlsZTog c29saWQ7Cglib3JkZXItcmlnaHQtY29sb3I6ICNDN0M3Qzc7Cn0KLnBhZ2luYWRvX2NvbWVudGFyaW9z ICBhewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsKCWZvbnQtc2l6ZTogMTFw eDsKCWNvbG9yOiAjOTA5MDkwOwp9Ci5wYWdpbmFkb19jb21lbnRhcmlvcyBhOmhvdmVyewoJZm9udC1m YW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsKCWZvbnQtc2l6ZTogMTFweDsKCWNvbG9yOiAj QkJCQkJCOwp9Ci5wYWdpbmFkb19zZWxlY2Npb25hZG8gewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp YWwsIEhlbHZldGljYTsKCWZvbnQtc2l6ZTogMTFweDsKCXBhZGRpbmctdG9wOiAycHg7CglwYWRkaW5n LXJpZ2h0OiA1cHg7CglwYWRkaW5nLWJvdHRvbTogMnB4OwoJcGFkZGluZy1sZWZ0OiA1cHg7Cgljb2xv cjogIzMzMzMzMzsKCWJvcmRlci1yaWdodC13aWR0aDogMXB4OwoJYm9yZGVyLXJpZ2h0LXN0eWxlOiBz b2xpZDsKCWJvcmRlci1yaWdodC1jb2xvcjogI0M3QzdDNzsKCWZvbnQtd2VpZ2h0OiBib2xkOwp9Ci5w YWdpbmFkb191bHRpbW8gYXsKCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7Cglm b250LXNpemU6IDExcHg7CglwYWRkaW5nLXRvcDogMnB4OwoJcGFkZGluZy1yaWdodDogNXB4OwoJcGFk ZGluZy1ib3R0b206IDJweDsKCXBhZGRpbmctbGVmdDogNXB4OwoJY29sb3I6ICM5MDkwOTA7Cn0KLnBh Z2luYWRvX3VsdGltbyBhOmhvdmVyewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGlj YTsKCWZvbnQtc2l6ZTogMTFweDsKCXBhZGRpbmctdG9wOiAycHg7CglwYWRkaW5nLXJpZ2h0OiA1cHg7 CglwYWRkaW5nLWJvdHRvbTogMnB4OwoJcGFkZGluZy1sZWZ0OiA1cHg7Cgljb2xvcjogI0JCQkJCQjsK fQoKLm5vdGljaWFkZCwgLm5vdGljaWFkZCBBIHsKCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBI ZWx2ZXRpY2E7Cglmb250LXNpemU6IDEycHg7Cgljb2xvcjogIzg1QTBDNjsKCXRleHQtZGVjb3JhdGlv bjogbm9uZTsKCWZvbnQtd2VpZ2h0OiBib2xkOwoJbWFyZ2luLXRvcDogM3B4OwoJbWFyZ2luLWJvdHRv bTogM3B4OwoJZmxvYXQ6IG5vbmU7CgltYXJnaW4tbGVmdDogNXB4Owp9Ci8qIEFQT1lPUyAqLwouYXBv eW9zewoJbWFyZ2luLXRvcDoxMHB4OwoJbWFyZ2luLWxlZnQ6IDVweDsKCWNsZWFyOiBib3RoOwp9Cgog Lm5vdGljaWFkZDIgIHsKCWZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJ Zm9udC1zaXplOiAxMXB4OwoJY29sb3I6ICMwMDM5Njk7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cgls aW5lLWhlaWdodDogMTNweDsKCW1hcmdpbi1ib3R0b206IDJweDsKfQogLm5vdGljaWFkZDIgQSB7Cglm b250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMTFweDsK CWNvbG9yOiAjMEI0NzVCOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJbGluZS1oZWlnaHQ6IDEzcHg7 Cn0KLmljb25vQm9ycmFyIHsKCWNsZWFyOiBsZWZ0OwoJaGVpZ2h0OiBhdXRvOwp9Cgoubm90aWNpYWRk MywgLm5vdGljaWFkZDMgQSB7Cglmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJp ZjsKCWZvbnQtc2l6ZTogMTBweDsKCWNvbG9yOiAjMDAzOTY5OwoJdGV4dC1kZWNvcmF0aW9uOiBub25l OwoJbWFyZ2luLXRvcDogMnB4OwoJbWFyZ2luLWJvdHRvbTogMnB4OwoJZm9udC13ZWlnaHQ6IGJvbGQ7 Cn0KLm5vdGljaWFkZCBBOmhvdmVyLCAubm90aWNpYWRkMiBBOmhvdmVyLCAubm90aWNpYWRkMyBBOmhv dmVyIHsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9Ci5ub3RpY2lhX2ZlY2hhIHsKCWZvbnQt ZmFtaWx5OiBUYWhvbWEsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMTBweDsKCWNv bG9yOiAjOTk5OTk5OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJZm9udC13ZWlnaHQ6IGJvbGQ7Cglt YXJnaW4tdG9wOiAycHg7CgltYXJnaW4tYm90dG9tOiAycHg7Cn0KLmZpbl9ub3RpY2lhIHsKCglmb250 LXdlaWdodDogbm9ybWFsOwoJdG9wOiAtNXB4OwoJcGFkZGluZy1yaWdodDogMnB4OwoJcGFkZGluZy1s ZWZ0OiAycHg7Cglib3JkZXItdG9wLXN0eWxlOiBkb3R0ZWQ7Cglib3JkZXItdG9wLWNvbG9yOiAjQ0ND Q0NDOwoJbWFyZ2luOiA1cHggMHB4IDJweDsKCWJvcmRlci10b3Atd2lkdGg6IDFweDsKCXBhZGRpbmct dG9wOiAwcHg7CgljbGVhcjogbGVmdDsKCXBhZGRpbmctYm90dG9tOiA1cHg7Cn0KLmZpbl9ub3RpY2lh cGVxIHsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cgl0b3A6IC01cHg7CglwYWRkaW5nLXJpZ2h0OiAycHg7 CglwYWRkaW5nLWxlZnQ6IDJweDsKCWJvcmRlci10b3Atc3R5bGU6IGRvdHRlZDsKCWJvcmRlci10b3At Y29sb3I6ICNDQ0NDQ0M7CgltYXJnaW46IDJweCAwcHg7Cglib3JkZXItdG9wLXdpZHRoOiAxcHg7Cglw YWRkaW5nLXRvcDogMHB4OwoJY2xlYXI6IGxlZnQ7CglwYWRkaW5nLWJvdHRvbTogNXB4Owp9Ci5leHRy YUhUTUwgewoJY29sb3I6ICMwMDM5Njk7CglwYWRkaW5nLXRvcDogMHB4OwoJcGFkZGluZy1yaWdodDog NXB4OwoJcGFkZGluZy1ib3R0b206IDBweDsKCW92ZXJmbG93OiBoaWRkZW47Cgl3aWR0aDoxMDAlOwp9 Ci5leHRyYUhUTUwgQSB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cglmb250LXdlaWdodDogYm9sZDsK fQouZXh0cmFIVE1MIEE6aG92ZXJ7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQovKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIElNQUdFTkVTIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwov KgouY3VhZHJvX211bHRpbWVkaWEgewoJZmxvYXQ6IHJpZ2h0OwoJY2xlYXI6bm9uZTsKCXdpZHRoOiAz MjBweDsKCW1hcmdpbi1sZWZ0OjE1cHg7CgltYXJnaW4tYm90dG9tOjE1cHg7Cn0KKi8KCgouY3VhZHJv X211bHRpbWVkaWEgewoJZmxvYXQ6IHJpZ2h0OwoJY2xlYXI6bGVmdDsKCXdpZHRoOjMzMHB4OwoJcGFk ZGluZy1sZWZ0OjEwcHg7Cn0KCi5pbWFnZW5fZGVyZWNoYSB7CglmbG9hdDogcmlnaHQ7CgljbGVhcjps ZWZ0Owp9Ci5ub3RpY2lhX2ltYWdlbl9kZXJlY2hhIHsKCWZsb2F0OiByaWdodDsKCW1hcmdpbjowcHgg MHB4IDBweCAxMHB4OwoKfQoKLmltYWdlbl9penF1aWVyZGEgewoJZmxvYXQ6IGxlZnQ7CgltYXJnaW4t cmlnaHQ6IDVweDsKCS8qY2xlYXI6IGJvdGg7Ki8KCS8qb3ZlcmZsb3c6IGhpZGRlbjsqLwp9Ci8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgQ09NUExFTUVOVE9TIERF IElNQUdFTkVTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q LwouY29udHJvbGFkb3IgewoJZmxvYXQ6IHJpZ2h0OwoJcG9zaXRpb246IHJlbGF0aXZlOwoJdG9wOiAy cHg7CglwYWRkaW5nLXJpZ2h0OiAxMHB4Owp9CgouY29udHJvbGFkb3JEb3NDb2x1bW5hcyB7CglmbG9h dDogcmlnaHQ7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0b3A6IDJweDsKCXBhZGRpbmctcmlnaHQ6IDEw cHg7Cgl6LWluZGV4OiAyOwoJbWFyZ2luLWJvdHRvbTogLTE4cHg7Cn0KCi5jb250cm9sYWRvckhvcml6 b250YWwgewoJZmxvYXQ6IHRvcDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRvcDogMnB4OwoJcGFkZGlu Zy1sZWZ0OiAyNzBweDsKCXotaW5kZXg6IDI7CgltYXJnaW4tYm90dG9tOiAtMThweDsKfQoKLmNvbnRy b2xhZG9yVmVydGljYWwgewoJZmxvYXQ6IHRvcDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRvcDogMnB4 OwoJcGFkZGluZy1sZWZ0OiAxMTBweDsKCXotaW5kZXg6IDI7CgltYXJnaW4tYm90dG9tOiAtMThweDsK fQoKLmVubGFjZSB7Cglmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNl cmlmOwoJZm9udC1zaXplOiAxMXB4OwoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCXRleHQtZGVjb3JhdGlv bjpub25lOwoJY29sb3I6ICMwMDAwMDA7CgltYXJnaW46IDBweCA1cHggMHB4IDBweDsKCWxpbmUtaGVp Z2h0OiAxM3B4Owp9Ci5lbmxhY2VwZXEgewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMTFweDsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cgl0 ZXh0LWRlY29yYXRpb246bm9uZTsKCWNvbG9yOiAjMDAwMDAwOwoJbWFyZ2luOiAwcHggNXB4IDBweCAw cHg7CglsaW5lLWhlaWdodDogMTNweDsKfQouZW5sYWNlbmVncml0YSB7Cglmb250LWZhbWlseTogVGFo b21hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJZm9udC1zaXplOiAxMnB4OwoJZm9udC13 ZWlnaHQ6IGJvbGQ7Cgl0ZXh0LWRlY29yYXRpb246bm9uZTsKCWNvbG9yOiAjMDAwMDAwOwoJbWFyZ2lu OiAwcHggNXB4IDBweCAwcHg7Cn0KLmVubGFjZW5lZ3JpdGFwZXEgewoJZm9udC1mYW1pbHk6IFRhaG9t YSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMTFweDsKCWZvbnQtd2Vp Z2h0OiBib2xkOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cgljb2xvcjogIzAwMDAwMDsKCW1hcmdpbjog MHB4IDVweCAwcHggMHB4Owp9Ci5lbmxhY2VuZWdyaXRhMTAgewoJZm9udC1mYW1pbHk6IFRhaG9tYSwg QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMTBweDsKCWZvbnQtd2VpZ2h0 OiBib2xkOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cgljb2xvcjogIzAwMDAwMDsKCW1hcmdpbjogMHB4 IDBweCAwcHggMHB4Owp9Ci5lbmxhY2UgYTpob3ZlciwgLmVubGFjZXBlcSBhOmhvdmVyLCAuZW5sYWNl bmVncml0YSBhOmhvdmVyLCAuZW5sYWNlbmVncml0YXBlcSBhOmhvdmVyLCAuZW5sYWNlbmVncml0YTEw IGE6aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsKfQoKLmNpbnRpbGxvMiB7Cgl3aWR0 aDogMTAwJTsKCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7Cglmb250LXNpemU6 IDExcHg7Cglmb250LXdlaWdodDogYm9sZDsKCWNvbG9yOiAjMDAzOTY5OwoJZmxvYXQ6IG5vbmU7Cgl0 ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjQzhENEUyOwoJdGV4dC10cmFu c2Zvcm06IHVwcGVyY2FzZTsKCWxpbmUtaGVpZ2h0OiAxNnB4Owp9Ci5tZW51aW1wcmVzYSB7CglGT05U LVNJWkU6IDEwcHg7CglGT05ULUZBTUlMWTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhOwoJRk9OVC1X RUlHSFQ6IG5vcm1hbDsKCWxpbmUtaGVpZ2h0OiAxNHB4OwoJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4 OwoJYm9yZGVyLWJvdHRvbS1zdHlsZTogZG90dGVkOwoJYm9yZGVyLWJvdHRvbS1jb2xvcjogI0NmY2Zj ZjsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoubWVudWltcHJlc2EgQSB7CglDT0xPUjogIzAwMDsKCUZM T0FUOiBub25lOwoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJp ZjsKCVRFWFQtREVDT1JBVElPTjogbm9uZTsKCn0KLm1lbnVpbXByZXNhIEE6aG92ZXIgewoJQ09MT1I6 ICM2NjY2NjY7CglURVhULURFQ09SQVRJT046IHVuZGVybGluZQp9Ci5zZWNjaW9uIHsKCWZsb2F0OiBu b25lOwoJbWFyZ2luLXRvcDogMHB4OwoJbWFyZ2luLWJvdHRvbTogNXB4Owp9Cgouc2VjY2lvbiBIMSwg LnNlY2Npb24gSDEgQXsKCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7Cglmb250LXNpemU6IDExcHg7Cglmb250LXdlaWdodDogYm9sZDsKCWNvbG9yOiAjRjNBNjBB OwoJZm9udC1zdHlsZTogbm9ybWFsOwoJbWFyZ2luLXRvcDogMHB4OwoJbGluZS1oZWlnaHQ6IDE3cHg7 CgltYXJnaW4tYm90dG9tOiAwcHg7Cgl0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Cn0KLnNlY2Npb24g SDIsIC5zZWNjaW9uIEgyIEEgewoJRk9OVC1TSVpFOiA5OCU7CglDT0xPUjogIzAwMzk2OTsKCUZPTlQt U1RZTEU6IG5vcm1hbDsKCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7CglURVhULURFQ09SQVRJT046IG5vbmU7CglsaW5lLWhlaWdodDoxM3B4OwoJdGV4dC1kZWNv cmF0aW9uOiBub25lOwoJdGV4dC1pbmRlbnQ6IDBweDsKfQoKLnNlY2Npb24gSDEgQTpob3ZlciwgLnNl Y2Npb24gSDIgQTpob3ZlciB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQouYmFycmEgewoJ d2lkdGg6IDEwMCU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjOTRBOEM5OwoJZm9udC1mYW1pbHk6ICJHZW9y Z2lhIiwgIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKCWZvbnQtc2l6ZTogMThweDsKCWZv bnQtd2VpZ2h0OiBub3JtYWw7Cgljb2xvcjogI0ZGRkZGRjsKCWZsb2F0OiBsZWZ0OwoJbWFyZ2luLXRv cDogNXB4OwoJbWFyZ2luLWJvdHRvbTogNXB4OwoJbGluZS1oZWlnaHQ6IDIzcHg7Cgl2ZXJ0aWNhbC1h bGlnbjogbWlkZGxlOwp9Ci5iYXJyYV9lbmxhY2UgewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWws IEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogOXB4OwoJY29sb3I6ICNGRkZGRkY7Cn0K Lm5vdGljaWFfdGl0dWxhciBoMXsKCUZPTlQtU0laRTogMzBweDsKCUNPTE9SOiAjMDAzOTY5OwoJRk9O VC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CglURVhULURFQ09SQVRJT046IG5v bmU7Cglmb250LXN0eWxlOiBub3JtYWw7Cglmb250LXdlaWdodDogbm9ybWFsOwoJbGluZS1oZWlnaHQ6 IDMycHg7CgltYXJnaW4tdG9wOiAycHg7CgltYXJnaW4tYm90dG9tOiAycHg7Cn0KLm5vdGljaWFfZW50 cmFkaWxsYSB7Cglmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhOwoJZm9udC1zaXpl OiAxMTUlOwoJZm9udC1zdHlsZTogbm9ybWFsOwoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCWNvbG9yOiAj MDAwMDAwOwoJbGluZS1oZWlnaHQ6IDE5cHg7Cn0KLm5vdGljaWFfdGV4dG8gaDIsIC5ub3RpY2lhX3Rl eHRvIHAgewoJRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Cglmb250LXNp emU6IDExMCU7Cglmb250LXN0eWxlOiBub3JtYWw7Cglmb250LXdlaWdodDogbm9ybWFsOwoJY29sb3I6 ICMwMDAwMDA7CglsaW5lLWhlaWdodDoxOHB4Owp9Ci5ub3RpY2lhX3RleHRvMSB7CglGT05ULUZBTUlM WTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKCWZvbnQtc2l6ZTogMTEwJTsKCWZvbnQtc3R5 bGU6IG5vcm1hbDsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cgljb2xvcjogIzAwMDAwMDsKfQoubm90aWNp YV90ZXh0bzIgewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsKCWZvbnQtc2l6 ZTogMTMwJTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cgljb2xvcjog IzAwMDAwMDsKfQoubm90aWNpYV90ZXh0bzMgewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhl bHZldGljYTsKCWZvbnQtc2l6ZTogMTUwJTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWZvbnQtd2VpZ2h0 OiBub3JtYWw7Cgljb2xvcjogIzAwMDAwMDsKfQoubm90aWNpYV90ZXh0bzQgewoJZm9udC1mYW1pbHk6 IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsKCWZvbnQtc2l6ZTogMTcwJTsKCWZvbnQtc3R5bGU6IG5v cm1hbDsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cgljb2xvcjogIzAwMDAwMDsKfQoubm90aWNpYV90ZXh0 bzUgewoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsKCWZvbnQtc2l6ZTogMTkw JTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWZvbnQtd2VpZ2h0OiBub3JtYWw7Cgljb2xvcjogIzAwMDAw MDsKfQoKLmZpbGEtbGVmdHtmbG9hdDpsZWZ0O2NsZWFyOmxlZnQ7bWFyZ2luOjBweDttYXJnaW4tYm90 dG9tOjNweDttYXJnaW4tcmlnaHQ6M3B4O19tYXJnaW4tcmlnaHQ6MHB4O30KCi5maWxhLXJpZ2h0e2Zs b2F0OnJpZ2h0O2NsZWFyOnJpZ2h0O21hcmdpbjowcHg7bWFyZ2luLWJvdHRvbTozcHg7bWFyZ2luLWxl ZnQ6M3B4O30KCgoubm90aWNpYXNpenEgZGl2e2xpbmUtaGVpZ2h0OjE3cHg7fQoubm90aWNpYXNkZXIg ZGl2e2xpbmUtaGVpZ2h0OjE3cHg7fQojYWN0dWFsaXphZGEgZGl2e2xpbmUtaGVpZ2h0OjE3cHg7fQoK LmZpbGEtbGVmdCAudmVydGljYWx7bWFyZ2luLXJpZ2h0OjNweDt9Ci5maWxhLXJpZ2h0IC52ZXJ0aWNh bHttYXJnaW4tbGVmdDozcHg7fQoKLmZpbl9ub3RpY2lhIHsKYm9yZGVyLXRvcDoxcHggZG90dGVkICND Q0NDQ0M7CmNsZWFyOmxlZnQ7CmZvbnQtd2VpZ2h0Om5vcm1hbDsKbWFyZ2luOjBweCAwIDJweDsKcGFk ZGluZzowIDJweCA1cHg7Cn0KLmZvdG9ub3RpY2lhPmRpdnsKCW1hcmdpbi1sZWZ0OjVweDsKCW1hcmdp bi1yaWdodDo1cHg7Cn0KLmZvdG9ub3RpY2lhPmRpdi5jaW50aWxsbywgLmZvdG9ub3RpY2lhPmRpdi5j dWFkcm9faW1hZ2VuZXMsLnRyYW1hX2F6dWw+ZGl2LmNpbnRpbGxvLC50cmFtYV9henVsPmRpdi5jdWFk cm9faW1hZ2VuZXMsLnRyYW1hX3ZlcmRlPmRpdi5jaW50aWxsbywudHJhbWFfdmVyZGU+ZGl2LmN1YWRy b19pbWFnZW5lcywudHJhbWFfYW1hcmlsbG8+ZGl2LmNpbnRpbGxvLC50cmFtYV9hbWFyaWxsbz5kaXYu Y3VhZHJvX2ltYWdlbmVzLC50cmFtYV9saWxhPmRpdi5jaW50aWxsbywudHJhbWFfbGlsYT5kaXYuY3Vh ZHJvX2ltYWdlbmVzLC50cmFtYV9ncmlzPmRpdi5jaW50aWxsbywudHJhbWFfZ3Jpcz5kaXYuY3VhZHJv X2ltYWdlbmVzLC50cmFtYV9yb2pvPmRpdi5jaW50aWxsbywudHJhbWFfcm9qbz5kaXYuY3VhZHJvX2lt YWdlbmVzewoJbWFyZ2luLWxlZnQ6MHB4OwoJbWFyZ2luLXJpZ2h0OjBweDsKfQoubm90aWNpYSwgLmZv dG9ub3RpY2lhLCAudmlkZW9ub3RpY2lhewoJb3ZlcmZsb3c6aGlkZGVuOwoJbGluZS1oZWlnaHQ6MTdw eDsKfQoudHJhbWFfYXp1bHsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZjc7Cn0KLnRyYW1hX2F6dWw+ ZGl2ewoJbWFyZ2luLWxlZnQ6NXB4OwoJbWFyZ2luLXJpZ2h0OjVweDsKfQoudHJhbWFfZ3Jpc3sKCWJh Y2tncm91bmQtY29sb3I6ICNmMGYwZjA7Cn0KLnRyYW1hX2dyaXM+ZGl2ewoJbWFyZ2luLWxlZnQ6NXB4 OwoJbWFyZ2luLXJpZ2h0OjVweDsKfQoudHJhbWFfcm9qb3sKCWJhY2tncm91bmQtY29sb3I6ICNmN2Vi ZTk7Cn0KLnRyYW1hX3Jvam8+ZGl2ewoJbWFyZ2luLWxlZnQ6NXB4OwoJbWFyZ2luLXJpZ2h0OjVweDsK fQoudHJhbWFfbGlsYXsKCWJhY2tncm91bmQtY29sb3I6ICNmM2VkZjQ7Cn0KLnRyYW1hX2xpbGE+ZGl2 ewoJbWFyZ2luLWxlZnQ6NXB4OwoJbWFyZ2luLXJpZ2h0OjVweDsKfQoudHJhbWFfYW1hcmlsbG97Cgli YWNrZ3JvdW5kLWNvbG9yOiAjZjFlZmM2Owp9Ci50cmFtYV9hbWFyaWxsbz5kaXZ7CgltYXJnaW4tbGVm dDo1cHg7CgltYXJnaW4tcmlnaHQ6NXB4Owp9Ci50cmFtYV92ZXJkZXsKCWJhY2tncm91bmQtY29sb3I6 ICNlZGY0ZWU7Cn0KLnRyYW1hX3ZlcmRlPmRpdnsKCW1hcmdpbi1sZWZ0OjVweDsKCW1hcmdpbi1yaWdo dDo1cHg7Cn0KI3ZpZGVvX2Jhc2ljb3tvdmVyZmxvdzogaGlkZGVuOyB3aWR0aDogMzE4cHg7IGhlaWdo dDogMjAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMDIsIDIwMiwgMjAyKTsgdGV4dC1hbGlnbjog Y2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBmbG9hdDogbGVmdDt9CgojYWN0dWFsaXphZGEg LmJsb3F1ZWNsZWFyCnsKIGxpbmUtaGVpZ2h0OjA7Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBD T01FTlRBUklPUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgkJCgkJLmF2YXRhcnsKCQkJZmxvYXQ6 bGVmdDsKCQkJd2lkdGg6IDY0cHg7CgkJfQoJCS5jb250ZW5pZG97CgkJCW1hcmdpbi1sZWZ0OjcwcHg7 CgkJfQoJCS5jb21lbnRhcmlvc3sKCQkJbWFyZ2luLXJpZ2h0Ojk1cHg7CgkJCS8qYm9yZGVyOiAxcHgg c29saWQgI0E1QzBFNjsqLwoJCQkvKmJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7Ki8KCQkJcGFkZGlu ZzogNXB4OwoJCQlsaW5lLWhlaWdodDogbm9ybWFsOwoJCQljb2xvcjogIzMzMzMzMzsKCQkJbWFyZ2lu LXRvcDogNXB4OwoJCQlmb250LXNpemU6IDEzcHg7CgkJCQoJCX0KCQkuZGVzdGFjYWRvewoJCQlib3Jk ZXI6IDBweCBzb2xpZCAjMDAzOTY5OwoJCQljb2xvcjogIzAwMDAwMDsKCQkJYmFja2dyb3VuZDogI2Y2 ZjJiMiB1cmwoJ2h0dHA6Ly9lc3RhdGljb3MwMi5sYW9waW5pb25kZXphbW9yYS5lcy9lbGVtZW50b3NX ZWIvbWVkaWF3ZWIvaW1hZ2VzL2NvbWVudGFyaW9zL2ZvbmRvX2NoaW5jaGV0YS5qcGcnKSByZXBlYXQt eTsKCQkJLypwYWRkaW5nOiAycHg7Ki8KCQkJbWFyZ2luLXRvcDogMTBweDsKCQkJcGFkZGluZy1sZWZ0 OiAzNXB4OwoJCX0KCQkudm90b3NDb21lbnRhcmlvc3sKCQkJZmxvYXQ6cmlnaHQ7CgkJCXdpZHRoOiA5 MHB4OwoJCQkKCQl9CgkJLnZvdGFjaW9uUG9zaXRpdmF7CgkJCW1hcmdpbi1sZWZ0OjI3cHg7CgkJCXdp ZHRoOiAzNnB4OwoJCQloZWlnaHQ6IDIzcHg7CgkJCWJhY2tncm91bmQ6IHVybCgnaHR0cDovL2VzdGF0 aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVzL2VsZW1lbnRvc1dlYi9tZWRpYXdlYi9pbWFnZXMvY29t ZW50YXJpb3Mvdm90b3MuanBnJyk7CgkJfQoJCS52b3RhY2lvbk5lZ2F0aXZhewoJCQltYXJnaW4tbGVm dDoyN3B4OwoJCQl3aWR0aDogMzZweDsKCQkJaGVpZ2h0OiAyM3B4OwoJCQliYWNrZ3JvdW5kOiB1cmwo J2h0dHA6Ly9lc3RhdGljb3MwMi5sYW9waW5pb25kZXphbW9yYS5lcy9lbGVtZW50b3NXZWIvbWVkaWF3 ZWIvaW1hZ2VzL2NvbWVudGFyaW9zL3ZvdG9zX3Jvam9zLmpwZycpOwoJCX0KCQkudm90YWNpb25OZXV0 cmF7CgkJCW1hcmdpbi1sZWZ0OjI3cHg7CgkJCXdpZHRoOiAzNnB4OwoJCQloZWlnaHQ6IDIzcHg7CgkJ CWJhY2tncm91bmQ6IHVybCgnaHR0cDovL2VzdGF0aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVzL2Vs ZW1lbnRvc1dlYi9tZWRpYXdlYi9pbWFnZXMvY29tZW50YXJpb3Mvdm90b3NfZ3Jpcy5qcGcnKTsKCQl9 CgkJLnZvdGFjaW9uUG9zaXRpdmEgZGl2LCAudm90YWNpb25OZWdhdGl2YSBkaXYsIC52b3RhY2lvbk5l dXRyYSBkaXZ7CgkJCXBhZGRpbmc6IDNweDsKCQkJcGFkZGluZy10b3A6IDJweDsKCQkJcGFkZGluZy1i b3R0b206IDE4cHg7CgkJCXBhZGRpbmctcmlnaHQ6IDEwcHg7CgkJCWxpbmUtaGVpZ2h0OiAxMHB4OwoJ CQl0ZXh0LWFsaWduOmNlbnRlcjsKCQkJZm9udC1zaXplOiAxMHB4OwoJCQljb2xvcjogd2hpdGU7CgkJ CWZvbnQtd2VpZ2h0OiBib2xkOwoJCX0KCQkubnVtVm90b3N7CgkJCXRleHQtYWxpZ246Y2VudGVyOwoJ CQlmb250LXNpemU6IDlweDsKCQl9CgkJLmNvbWVudGFyaW9zX25hcmFuamF7CgkJCWZvbnQtc2l6ZTog MTBweDsKCQkJZm9udC13ZWlnaHQ6IG5vcm1hbDsKCQl9CgkJLmlkQ29tZW50YXJpb3sKCQkJZm9udC1z aXplOiAxMXB4OwoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgkJLmNvbWVudGFyaW8taXpxewoJCQl3 aWR0aDogMjhweDsKCQkJZmxvYXQ6bGVmdDsKCQkJbWFyZ2luOiAtNXB4OwoJCQltYXJnaW4tbGVmdDog LTM1cHg7CgkJCW1hcmdpbi10b3A6IC0xMnB4OwoJCX0KCQkuY29tZW50YXJpby1pbmZ7CgkJCWhlaWdo dDogMjFweDsKCQkJYmFja2dyb3VuZDogdXJsKCdodHRwOi8vZXN0YXRpY29zMDIubGFvcGluaW9uZGV6 YW1vcmEuZXMvZWxlbWVudG9zV2ViL21lZGlhd2ViL2ltYWdlcy9jb21lbnRhcmlvcy9waWVfY29tZW50 YXJpby5qcGcnKSBuby1yZXBlYXQgcmlnaHQ7CgkJCW1hcmdpbi1yaWdodDogLTEzcHg7CgkJCW1hcmdp bi1ib3R0b206IC0xM3B4OwoJCX0KCgkJI2N1YWRyb0NvbWVudGFyaW9zIC5maW5fbm90aWNpYXsKCQkJ Ym9yZGVyLWNvbG9yOiAjNjY2NjY2OwoJCX0KCQkKCQkuaW5mb19jb21lbnRhcmlvc3sKCQkJY29sb3I6 ICNGM0E2MEE7CgkJCW1hcmdpbjogMTBweDsKCQkJZm9udC1zaXplOiAxMnB4OwoJCQlmb250LXN0eWxl OiBpdGFsaWM7CgkJCWZvbnQtd2VpZ2h0OiBib2xkOwoJCX0KCQkKCQkuaW5mb19jb21lbnRhcmlvcyBh ewoJCQljb2xvcjogIzAwMzk2OTsKCQkJZm9udC1zaXplOiAxMnB4OwoJCQlmb250LXN0eWxlOiBpdGFs aWM7CgkJCWZvbnQtd2VpZ2h0OiBib2xkOwoJCX0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZJTiBD T01FTlRBUklPUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KDQouZW5sYWNlX3BpZSB7DQoJZm9udC1m YW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsNCglmb250LXNpemU6IDEycHg7DQoJY29sb3I6 ICM4MTgxODE7DQoJdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0KLmVubGFjZV9waWUgYTpob3ZlciB7 DQoJdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7DQp9DQoubGV0cmFfcGVxdWVueWEgew0KCWZvbnQt ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7DQoJZm9udC1zaXplOiAxMHB4Ow0KCWNvbG9y OiAjQjZCNkI2Ow0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCglmb250LXdlaWdodDogYm9sZDsNCn0N Cg0KLmZ1dGJvbF9jYWphIHsNCgl3aWR0aDogYXV0bzsNCglib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAj OTk5OTk5Ow0KCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOTk5OTk5Ow0KCWJvcmRlci1sZWZ0OiAx cHggc29saWQgIzk5OTk5OTsNCglwYWRkaW5nLXJpZ2h0OiA1cHg7DQoJcGFkZGluZy1ib3R0b206IDVw eDsNCglwYWRkaW5nLWxlZnQ6IDVweDsNCgl6LWluZGV4OiAwOw0KfQ0KLmZ1dGJvbF9jYWJlY2VyYSB7 DQoJd2lkdGg6IGF1dG87DQoJaGVpZ2h0OiAyM3B4Ow0KCXBhZGRpbmctbGVmdDogNXB4Ow0KCWJhY2tn cm91bmQtaW1hZ2U6IHVybChodHRwOi8vZXN0YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvL2Vs ZW1lbnRvc1dlYi9tZWRpYXdlYi9pbWFnZXMvY3VhZHJvRnV0Ym9sL2xvZ29fZnV0Ym9sLmpwZyk7DQoJ YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCgl6LWluZGV4OiAxOw0KCWJvcmRlci1ib3R0b20t d2lkdGg6IDFweDsNCglib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsNCglib3JkZXItYm90dG9tLWNv bG9yOiAjNjY2NjY2Ow0KfQ0KLmZ1dGJvbF9wZXN0YW55YSB7DQoJd2lkdGg6IDcwcHg7DQoJbWFyZ2lu LWxlZnQ6IDJweDsNCglmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhOw0KCWZvbnQt c2l6ZTogOXB4Ow0KCWxpbmUtaGVpZ2h0OiAyMHB4Ow0KCWZvbnQtd2VpZ2h0OiBub3JtYWw7DQoJdGV4 dC1kZWNvcmF0aW9uOiBub25lOw0KCWZsb2F0OiByaWdodDsNCgloZWlnaHQ6IDIxcHg7DQoJcGFkZGlu Zy1sZWZ0OiAycHg7DQoJYmFja2dyb3VuZC1jb2xvcjogI0U0RTRFNDsNCglwYWRkaW5nLXJpZ2h0OiAy cHg7DQoJYm90dG9tOiAwcHg7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXRleHQtYWxpZ246IGNlbnRl cjsNCgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KCXotaW5kZXg6IDI7DQoJYm9yZGVyOiAxcHggc29s aWQgIzk5OTk5OTsNCgl0b3A6IDFweDsNCn0NCi5mdXRib2xfcGVzdGFueWEgQXsNCgl0ZXh0LWRlY29y YXRpb246IG5vbmU7DQoJY29sb3I6ICM2NjY2NjY7DQoJaGVpZ2h0OiAyMXB4Ow0KfQ0KLmZ1dGJvbF9w ZXN0YW55YSBBOmhvdmVyew0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7DQp9DQouZnV0Ym9sX3Bl c3Rhbnlhc2VsZWMgew0KCXdpZHRoOiA3MHB4Ow0KCW1hcmdpbi1sZWZ0OiAycHg7DQoJYm9yZGVyLXRv cC13aWR0aDogMXB4Ow0KCWJvcmRlci1yaWdodC13aWR0aDogMXB4Ow0KCWJvcmRlci1sZWZ0LXdpZHRo OiAxcHg7DQoJYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7DQoJYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xp ZDsNCglib3JkZXItbGVmdC1zdHlsZTogc29saWQ7DQoJYm9yZGVyLXRvcC1jb2xvcjogIzY2NjY2NjsN Cglib3JkZXItcmlnaHQtY29sb3I6ICM2NjY2NjY7DQoJYm9yZGVyLWxlZnQtY29sb3I6ICM2NjY2NjY7 DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsNCglmb250LXNpemU6IDEwcHg7 DQoJbGluZS1oZWlnaHQ6IDE4cHg7DQoJZm9udC13ZWlnaHQ6IG5vcm1hbDsNCgl0ZXh0LWRlY29yYXRp b246IG5vbmU7DQoJZmxvYXQ6IHJpZ2h0Ow0KCWhlaWdodDogMjFweDsNCglwYWRkaW5nLXJpZ2h0OiAy cHg7DQoJcGFkZGluZy1sZWZ0OiAycHg7DQoJYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsNCglib3Jk ZXItYm90dG9tLXdpZHRoOiAxcHg7DQoJYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7DQoJYm9yZGVy LWJvdHRvbS1jb2xvcjogI0ZGRkZGRjsNCglwb3NpdGlvbjogcmVsYXRpdmU7DQoJdGV4dC1hbGlnbjog Y2VudGVyOw0KCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQoJYm90dG9tOiAtMXB4Ow0KfQ0KLmZ1dGJv bF90YWJsYSB7DQoJYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsNCglmb250LWZhbWlseTogVGFob21h LCBBcmlhbCwgSGVsdmV0aWNhOw0KCWZvbnQtc2l6ZTogMTFweDsNCgl0ZXh0LWRlY29yYXRpb246IG5v bmU7DQp9DQouZnV0Ym9sX3RhYmxhY2FiZWNlcmEgew0KCWJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQg Izk5OTk5OTsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOw0KCWZvbnQtZmFtaWx5OiBUYWhvbWEs IEFyaWFsLCBIZWx2ZXRpY2E7DQoJZm9udC1zaXplOiAxMXB4Ow0KCWZvbnQtd2VpZ2h0OiBib2xkOw0K CXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCgljb2xvcjogIzY2NjY2NjsNCn0NCi5mdXRib2xfdGFibGF0 ZCBBIHsNCglmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhOw0KCWZvbnQtc2l6ZTog MTFweDsNCgljb2xvcjogIzMzMzMzMzsNCgl0ZXh0LWRlY29yYXRpb246IG5vbmU7DQp9DQouZnV0Ym9s X3RhYmxhdGQgQTpob3ZlcnsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOw0KCX0NCi5mdXRib2xf dGFibGF0ZCB7DQoNCglib3JkZXItYm90dG9tOiAxcHggZG90dGVkICNEREREREQ7DQp9DQouZnV0Ym9s X3BpZSB7DQoJd2lkdGg6IGF1dG87DQoJYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNDQ0NDQ0M7DQoJ dGV4dC1hbGlnbjogcmlnaHQ7DQoJcGFkZGluZy1yaWdodDogNXB4Ow0KCXBhZGRpbmctYm90dG9tOiAz cHg7DQp9DQouZnV0Ym9sX3NlcGFyYWRvciB7DQoJYm9yZGVyLWxlZnQ6IDFweCBkb3R0ZWQgIzk5OTk5 OTsNCgltYXJnaW4tbGVmdDogNHB4Ow0KCXBhZGRpbmctbGVmdDogNXB4Ow0KCWhlaWdodDogYXV0bzsN Cn0NCg0KLmZ1dGJvbF9jYWphX2xhdCB7DQoJd2lkdGg6IGF1dG87DQoJYm9yZGVyLXJpZ2h0OiAxcHgg c29saWQgIzk5OTk5OTsNCglib3JkZXItYm90dG9tOiAxcHggc29saWQgIzk5OTk5OTsNCglib3JkZXIt bGVmdDogMXB4IHNvbGlkICM5OTk5OTk7DQoJcGFkZGluZy1yaWdodDogNXB4Ow0KCXBhZGRpbmctYm90 dG9tOiA1cHg7DQoJcGFkZGluZy1sZWZ0OiA1cHg7DQoJei1pbmRleDogMDsNCn0NCi5mdXRib2xfdGFi bGF0ZF9sYXQgQSB7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsNCglmb250 LXNpemU6IDExcHg7DQoJY29sb3I6ICMzMzMzMzM7DQoJdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0K LmZ1dGJvbF90YWJsYXRkX2xhdCBBOmhvdmVyew0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7DQoJ fQ0KLmZ1dGJvbF9jYWJlY2VyYV9sYXQgew0KCXdpZHRoOiBhdXRvOw0KCWhlaWdodDogMjNweDsNCglw YWRkaW5nLWxlZnQ6IDVweDsNCgl6LWluZGV4OiAxOw0KCWJvcmRlci1ib3R0b20td2lkdGg6IDFweDsN Cglib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsNCglib3JkZXItYm90dG9tLWNvbG9yOiAjNjY2NjY2 Ow0KfQ0KLmZ1dGJvbF9wZXN0YW55YV9sYXQgew0KCXdpZHRoOiA3MHB4Ow0KCW1hcmdpbi1sZWZ0OiAy cHg7DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsNCglmb250LXNpemU6IDlw eDsNCglsaW5lLWhlaWdodDogMjBweDsNCglmb250LXdlaWdodDogbm9ybWFsOw0KCXRleHQtZGVjb3Jh dGlvbjogbm9uZTsNCglmbG9hdDogcmlnaHQ7DQoJaGVpZ2h0OiAyMXB4Ow0KCXBhZGRpbmctbGVmdDog MnB4Ow0KCWJhY2tncm91bmQtY29sb3I6ICNFNEU0RTQ7DQoJcGFkZGluZy1yaWdodDogMnB4Ow0KCWJv dHRvbTogMHB4Ow0KCXBvc2l0aW9uOiByZWxhdGl2ZTsNCgl0ZXh0LWFsaWduOiBjZW50ZXI7DQoJdmVy dGljYWwtYWxpZ246IG1pZGRsZTsNCgl6LWluZGV4OiAyOw0KCWJvcmRlcjogMXB4IHNvbGlkICM5OTk5 OTk7DQoJdG9wOiAxcHg7DQp9DQouZnV0Ym9sX3Blc3RhbnlhX2xhdCBBew0KCXRleHQtZGVjb3JhdGlv bjogbm9uZTsNCgljb2xvcjogIzY2NjY2NjsNCgloZWlnaHQ6IDIxcHg7DQp9DQouZnV0Ym9sX3Blc3Rh bnlhX2xhdCBBOmhvdmVyew0KCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7DQp9DQouZnV0Ym9sX3Bl c3Rhbnlhc2VsZWNfbGF0IHsNCgl3aWR0aDogNzBweDsNCgltYXJnaW4tbGVmdDogMnB4Ow0KCWJvcmRl ci10b3Atd2lkdGg6IDFweDsNCglib3JkZXItcmlnaHQtd2lkdGg6IDFweDsNCglib3JkZXItbGVmdC13 aWR0aDogMXB4Ow0KCWJvcmRlci10b3Atc3R5bGU6IHNvbGlkOw0KCWJvcmRlci1yaWdodC1zdHlsZTog c29saWQ7DQoJYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOw0KCWJvcmRlci10b3AtY29sb3I6ICM2NjY2 NjY7DQoJYm9yZGVyLXJpZ2h0LWNvbG9yOiAjNjY2NjY2Ow0KCWJvcmRlci1sZWZ0LWNvbG9yOiAjNjY2 NjY2Ow0KCWZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7DQoJZm9udC1zaXplOiAx MHB4Ow0KCWxpbmUtaGVpZ2h0OiAxOHB4Ow0KCWZvbnQtd2VpZ2h0OiBub3JtYWw7DQoJdGV4dC1kZWNv cmF0aW9uOiBub25lOw0KCWZsb2F0OiByaWdodDsNCgloZWlnaHQ6IDIxcHg7DQoJcGFkZGluZy1yaWdo dDogMnB4Ow0KCXBhZGRpbmctbGVmdDogMnB4Ow0KCWJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7DQoJ Ym9yZGVyLWJvdHRvbS13aWR0aDogMXB4Ow0KCWJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkOw0KCWJv cmRlci1ib3R0b20tY29sb3I6ICNGRkZGRkY7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXRleHQtYWxp Z246IGNlbnRlcjsNCgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOw0KCWJvdHRvbTogLTFweDsNCn0NCi5m dXRib2xfdGFibGFfbGF0IHsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOw0KCWZvbnQtZmFtaWx5 OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7DQoJZm9udC1zaXplOiAxMXB4Ow0KCXRleHQtZGVjb3Jh dGlvbjogbm9uZTsNCn0NCi5mdXRib2xfdGFibGFjYWJlY2VyYV9sYXQgew0KCWJvcmRlci1ib3R0b206 IDFweCBkb3R0ZWQgIzk5OTk5OTsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOw0KCWZvbnQtZmFt aWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7DQoJZm9udC1zaXplOiAxMXB4Ow0KCWZvbnQtd2Vp Z2h0OiBib2xkOw0KCXRleHQtZGVjb3JhdGlvbjogbm9uZTsNCgljb2xvcjogIzY2NjY2NjsNCn0NCi5m dXRib2xfdGFibGF0ZF9sYXQgew0KDQoJYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjREREREREOw0K fQ0KLmZ1dGJvbF9waWVfbGF0IHsNCgl3aWR0aDogYXV0bzsNCglib3JkZXItYm90dG9tOiAycHggc29s aWQgI0NDQ0NDQzsNCgl0ZXh0LWFsaWduOiByaWdodDsNCglwYWRkaW5nLXJpZ2h0OiA1cHg7DQoJcGFk ZGluZy1ib3R0b206IDNweDsNCgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cDovL2VzdGF0aWNvczAy Lmxhb3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvbWVkaWF3ZWIvaW1hZ2VzL2N1YWRyb0Z1 dGJvbC9sb2dvX2Z1dGJvbC5qcGcpOw0KCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQp9DQou ZnV0Ym9sX3NlcGFyYWRvcl9sYXQgew0KCWJvcmRlci1sZWZ0OiAxcHggZG90dGVkICM5OTk5OTk7DQoJ bWFyZ2luLWxlZnQ6IDRweDsNCglwYWRkaW5nLWxlZnQ6IDVweDsNCgloZWlnaHQ6IDYwcHg7DQp9DQoN Cg0KLmZ1dGJvbF9ob3JhcmlvIHsNCndpZHRoOiBhdXRvOw0KdGV4dC1hbGlnbjogcmlnaHQ7DQpmb250 LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhLCBTYW5zLXNlcmlmOw0KZm9udC1zaXplOiA5 cHg7DQptYXJnaW4tdG9wOiAzcHg7DQp9DQoNCi5ub3RpY2lhZGRmdXRib2wsIC5ub3RpY2lhZGRmdXRi b2wgQSB7DQpmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhOw0KZm9udC1zaXplOiA5 cHg7DQpjb2xvcjogIzg1QTBDNjsNCnRleHQtZGVjb3JhdGlvbjogbm9uZTsNCmZvbnQtd2VpZ2h0OiBi b2xkOw0KbWFyZ2luLXRvcDogM3B4Ow0KbWFyZ2luLWJvdHRvbTogM3B4Ow0KZmxvYXQ6IG5vbmU7DQp9 DQoNCg0KLmN1YWRyb19mbGVjaGFzIHsNCglmbG9hdDogcmlnaHQ7DQoJbWFyZ2luLXRvcDogLTEycHg7 DQoJZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsNCglmb250LXNpemU6IDEwcHg7 DQoJZm9udC13ZWlnaHQ6IG5vcm1hbDsNCgljb2xvcjogIzY2NjY2NjsNCn0NCi50ZXh0b19mbGVjaGFz IHsNCglmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgSGVsdmV0aWNhOw0KCWZvbnQtc2l6ZTogMTBw eDsNCgljb2xvcjogIzY2NjY2NjsNCn0NCi5lZGl0b3JfZ2FsZXJpYUZvdG9zewogYmFja2dyb3VuZC1p bWFnZTogdXJsKGh0dHA6Ly9lc3RhdGljb3MwMi5sYW9waW5pb25kZXphbW9yYS5lcy8vZWxlbWVudG9z V2ViL21lZGlhd2ViL2ltYWdlcy9pY29ub3MvZm90b3MuZ2lmKTsKIGJhY2tncm91bmQtcmVwZWF0OiBu by1yZXBlYXQ7CiBsaW5lLWhlaWdodDogMTdweDsKIGZvbnQtZmFtaWx5OiBUYWhvbWEsIFRpbWVzLCBz ZXJpZjsKIGZvbnQtc2l6ZTogMTFweDsKIGNvbG9yOiAjMEI0NzVCICFpbXBvcnRhbnQ7CiB0ZXh0LWRl Y29yYXRpb246IG5vbmU7CiBtYXJnaW4tdG9wOiAycHg7CiBtYXJnaW4tYm90dG9tOiAycHg7CiBiYWNr Z3JvdW5kLXBvc2l0aW9uOiAwcHggM3B4OwogcGFkZGluZy1sZWZ0OiAyMHB4OwogIAp9Ci5lZGl0b3Jf Z2FsZXJpYUZvdG9zIGEsIC5lZGl0b3JfZ2FsZXJpYVZpZGVvIGEsIC5lZGl0b3JfZ2FsZXJpYUF1ZGlv IGEsIC5lZGl0b3JfYmxvZ3MgYSwgLmVkaXRvcl9kb2N1bWVudG9zIGEsCi5lZGl0b3JfZW5jdWVzdGFz IGEsIC5lZGl0b3JfZm9yb3MgYSwgLmVkaXRvcl9jaGF0IGEsIC5lZGl0b3JfaW5mb2dyYWZpYSBhLCAu ZWRpdG9yX2VubGFjZSBhLCAuZWRpdG9yX2VubGFjZUNvbG9yIGEKewogbGluZS1oZWlnaHQ6IDE3cHg7 CiBmb250LWZhbWlseTogVGFob21hLCBUaW1lcywgc2VyaWY7CiBmb250LXNpemU6IDExcHg7CiBjb2xv cjogIzBCNDc1QiAhaW1wb3J0YW50OwogdGV4dC1kZWNvcmF0aW9uOiBub25lOwogYmFja2dyb3VuZC1w b3NpdGlvbjogMHB4IDNweDsgIAp9CgouZWRpdG9yX2dhbGVyaWFGb3RvcyBhOmhvdmVyLCAuZWRpdG9y X2dhbGVyaWFWaWRlbyBhOmhvdmVyLCAuZWRpdG9yX2dhbGVyaWFBdWRpbyBhOmhvdmVyLCAuZWRpdG9y X2Jsb2dzIGE6aG92ZXIsIC5lZGl0b3JfZG9jdW1lbnRvcyBhOmhvdmVyLAouZWRpdG9yX2VuY3Vlc3Rh cyBhOmhvdmVyLCAuZWRpdG9yX2Zvcm9zIGE6aG92ZXIsIC5lZGl0b3JfY2hhdCBhOmhvdmVyLCAuZWRp dG9yX2luZm9ncmFmaWEgYTpob3ZlciwgLmVkaXRvcl9lbmxhY2UgYTpob3ZlciwgLmVkaXRvcl9lbmxh Y2VDb2xvciBhOmhvdmVyCnsKIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgogCiAKLmVkaXRv cl9nYWxlcmlhVmlkZW97CiBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cDovL2VzdGF0aWNvczAyLmxh b3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvbWVkaWF3ZWIvaW1hZ2VzL2ljb25vcy92aWRl by5naWYpOwogYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKIGJhY2tncm91bmQtcG9zaXRpb246 IDBweCAzcHg7CiBwYWRkaW5nLWxlZnQ6IDIwcHg7CiBsaW5lLWhlaWdodDogMTdweDsKIGZvbnQtZmFt aWx5OiBUYWhvbWEsIFRpbWVzLCBzZXJpZjsKIGZvbnQtc2l6ZTogMTFweDsKIGNvbG9yOiAjMEI0NzVC OwogdGV4dC1kZWNvcmF0aW9uOiBub25lOwogbWFyZ2luLXRvcDogMnB4OwogbWFyZ2luLWJvdHRvbTog MnB4OwogCn0KIAouZWRpdG9yX2dhbGVyaWFBdWRpb3sKIGJhY2tncm91bmQtaW1hZ2U6IHVybChodHRw Oi8vZXN0YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvL2VsZW1lbnRvc1dlYi9tZWRpYXdlYi9p bWFnZXMvaWNvbm9zL2F1ZGlvLmdpZik7CiBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogYmFj a2dyb3VuZC1wb3NpdGlvbjogMHB4IDNweDsKIHBhZGRpbmctbGVmdDogMjBweDsKIGxpbmUtaGVpZ2h0 OiAxN3B4OwogZm9udC1mYW1pbHk6IFRhaG9tYSwgVGltZXMsIHNlcmlmOwogZm9udC1zaXplOiAxMXB4 OwogY29sb3I6ICMwQjQ3NUI7CiB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiBtYXJnaW4tdG9wOiAycHg7 CiBtYXJnaW4tYm90dG9tOiAycHg7CiAKfQogCi5lZGl0b3JfYmxvZ3N7CiBiYWNrZ3JvdW5kLWltYWdl OiB1cmwoaHR0cDovL2VzdGF0aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIv bWVkaWF3ZWIvaW1hZ2VzL2ljb25vcy9ibG9ncy5naWYpOwogYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJl cGVhdDsKIGJhY2tncm91bmQtcG9zaXRpb246IDBweCAzcHg7CiBwYWRkaW5nLWxlZnQ6IDIwcHg7CiBs aW5lLWhlaWdodDogMTdweDsKIGZvbnQtZmFtaWx5OiBUYWhvbWEsIFRpbWVzLCBzZXJpZjsKIGZvbnQt c2l6ZTogMTFweDsKIGNvbG9yOiAjMEI0NzVCOwogdGV4dC1kZWNvcmF0aW9uOiBub25lOwogbWFyZ2lu LXRvcDogMnB4OwogbWFyZ2luLWJvdHRvbTogMnB4OwogCn0KIAouZWRpdG9yX2RvY3VtZW50b3N7CiBi YWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cDovL2VzdGF0aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVz Ly9lbGVtZW50b3NXZWIvbWVkaWF3ZWIvaW1hZ2VzL2ljb25vcy9kb2N1bWVudG9zLmdpZik7CiBiYWNr Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogYmFja2dyb3VuZC1wb3NpdGlvbjogMHB4IDNweDsKIHBh ZGRpbmctbGVmdDogMjBweDsKIGxpbmUtaGVpZ2h0OiAxN3B4OwogZm9udC1mYW1pbHk6IFRhaG9tYSwg VGltZXMsIHNlcmlmOwogZm9udC1zaXplOiAxMXB4OwogY29sb3I6ICMwQjQ3NUI7CiB0ZXh0LWRlY29y YXRpb246IG5vbmU7CiBtYXJnaW4tdG9wOiAycHg7CiBtYXJnaW4tYm90dG9tOiAycHg7CiAKfQogCi5l ZGl0b3JfZW5jdWVzdGFzewogYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9lc3RhdGljb3MwMi5s YW9waW5pb25kZXphbW9yYS5lcy8vZWxlbWVudG9zV2ViL21lZGlhd2ViL2ltYWdlcy9pY29ub3MvZW5j dWVzdGFzLmdpZik7CiBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogYmFja2dyb3VuZC1wb3Np dGlvbjogMHB4IDNweDsKIHBhZGRpbmctbGVmdDogMjBweDsKIGxpbmUtaGVpZ2h0OiAxN3B4OwogZm9u dC1mYW1pbHk6IFRhaG9tYSwgVGltZXMsIHNlcmlmOwogZm9udC1zaXplOiAxMXB4OwogY29sb3I6ICMw QjQ3NUI7CiB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiBtYXJnaW4tdG9wOiAycHg7CiBtYXJnaW4tYm90 dG9tOiAycHg7CiAKfQogCi5lZGl0b3JfZm9yb3N7CiBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaHR0cDov L2VzdGF0aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvbWVkaWF3ZWIvaW1h Z2VzL2ljb25vcy9mb3Jvcy5naWYpOwogYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKIGJhY2tn cm91bmQtcG9zaXRpb246IDBweCAzcHg7CiBwYWRkaW5nLWxlZnQ6IDIwcHg7CiBsaW5lLWhlaWdodDog MTdweDsKIGZvbnQtZmFtaWx5OiBUYWhvbWEsIFRpbWVzLCBzZXJpZjsKIGZvbnQtc2l6ZTogMTFweDsK IGNvbG9yOiAjMEI0NzVCOwogdGV4dC1kZWNvcmF0aW9uOiBub25lOwogbWFyZ2luLXRvcDogMnB4Owog bWFyZ2luLWJvdHRvbTogMnB4OwogCn0KIAouZWRpdG9yX2NoYXR7CiBiYWNrZ3JvdW5kLWltYWdlOiB1 cmwoaHR0cDovL2VzdGF0aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvbWVk aWF3ZWIvaW1hZ2VzL2ljb25vcy9jaGF0LmdpZik7CiBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0 OwogYmFja2dyb3VuZC1wb3NpdGlvbjogMHB4IDNweDsKIHBhZGRpbmctbGVmdDogMjBweDsKIGxpbmUt aGVpZ2h0OiAxN3B4OwogZm9udC1mYW1pbHk6IFRhaG9tYSwgVGltZXMsIHNlcmlmOwogZm9udC1zaXpl OiAxMXB4OwogY29sb3I6ICMwQjQ3NUI7CiB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiBtYXJnaW4tdG9w OiAycHg7CiBtYXJnaW4tYm90dG9tOiAycHg7CiAKfQogCi5lZGl0b3JfaW5mb2dyYWZpYXsKIGJhY2tn cm91bmQtaW1hZ2U6IHVybChodHRwOi8vZXN0YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvL2Vs ZW1lbnRvc1dlYi9tZWRpYXdlYi9pbWFnZXMvaWNvbm9zL2luZm9ncmFmaWFzLmdpZik7CiBiYWNrZ3Jv dW5kLXJlcGVhdDogbm8tcmVwZWF0OwogYmFja2dyb3VuZC1wb3NpdGlvbjogMHB4IDNweDsKIHBhZGRp bmctbGVmdDogMjBweDsKIGxpbmUtaGVpZ2h0OiAxN3B4OwogZm9udC1mYW1pbHk6IFRhaG9tYSwgVGlt ZXMsIHNlcmlmOwogZm9udC1zaXplOiAxMXB4OwogY29sb3I6ICMwQjQ3NUI7CiB0ZXh0LWRlY29yYXRp b246IG5vbmU7CiBtYXJnaW4tdG9wOiAycHg7CiBtYXJnaW4tYm90dG9tOiAycHg7CiAKfQogCi5lZGl0 b3JfY29uY3Vyc29zewogYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9lc3RhdGljb3MwMi5sYW9w aW5pb25kZXphbW9yYS5lcy8vZWxlbWVudG9zV2ViL21lZGlhd2ViL2ltYWdlcy9pY29ub3MvY29uY3Vy c29zLmdpZik7CiBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogYmFja2dyb3VuZC1wb3NpdGlv bjogMHB4IDNweDsKIHBhZGRpbmctbGVmdDogMjBweDsKIGxpbmUtaGVpZ2h0OiAxN3B4OwogZm9udC1m YW1pbHk6IFRhaG9tYSwgVGltZXMsIHNlcmlmOwogZm9udC1zaXplOiAxMXB4OwogY29sb3I6ICMwQjQ3 NUI7CiB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiBtYXJnaW4tdG9wOiAycHg7CiBtYXJnaW4tYm90dG9t OiAycHg7CiAKfQogCi5lZGl0b3JfZW5sYWNlewogZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhl bHZldGljYTsKIGZvbnQtc2l6ZTogMTAwJTsKIGZvbnQtc3R5bGU6IG5vcm1hbDsKIGNvbG9yOiAjMEI0 NzVCOwogdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CiAKLmVkaXRvcl9lbmxhY2VDb2xvcnsKIGZvbnQt ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7CiBmb250LXNpemU6IDEwMCU7CiBmb250LXN0 eWxlOiBub3JtYWw7CiBjb2xvcjogI0U2OEUwRDsKIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQogCi5l ZGl0b3JfdGV4dG9Db2xvcnsKIGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBIZWx2ZXRpY2E7CiBm b250LXNpemU6IDEwMCU7CiBmb250LXN0eWxlOiBub3JtYWw7CiBmb250LXdlaWdodDogbm9ybWFsOwog Y29sb3I6ICNFNjhFMEQ7CiB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KIAouZWRpdG9yX3RleHRvUmVz YWx0YWRvewogZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIEhlbHZldGljYTsKIGZvbnQtc2l6ZTog MTAwJTsKIGZvbnQtc3R5bGU6IG5vcm1hbDsKIGZvbnQtd2VpZ2h0OiBib2xkOwogY29sb3I6ICMwMDAw MDA7CiB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLmVkaXRvcl9ldXJvcmVzaWRlbnRlc3sKIGJhY2tn cm91bmQtaW1hZ2U6IHVybChodHRwOi8vZXN0YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvL2Vs ZW1lbnRvc1dlYi9tZWRpYXdlYi9pbWFnZXMvaWNvbm9zL2V1cm9yZXNpZGVudGVzLmpwZyk7CiBiYWNr Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogYmFja2dyb3VuZC1wb3NpdGlvbjogMHB4IDNweDsKIHBh ZGRpbmctbGVmdDogMjBweDsKIGxpbmUtaGVpZ2h0OiAxN3B4OwogZm9udC1mYW1pbHk6IFRhaG9tYSwg VGltZXMsIHNlcmlmOwogZm9udC1zaXplOiAxMXB4OwogY29sb3I6ICMwQjQ3NUI7CiB0ZXh0LWRlY29y YXRpb246IG5vbmU7CiBtYXJnaW4tdG9wOiAycHg7CiBtYXJnaW4tYm90dG9tOiAycHg7IAp9CgouZWRp dG9yX2V1cm9yZXNpZGVudGVzX2NvbG9yewogYmFja2dyb3VuZC1pbWFnZTogdXJsKGh0dHA6Ly9lc3Rh dGljb3MwMi5sYW9waW5pb25kZXphbW9yYS5lcy8vZWxlbWVudG9zV2ViL21lZGlhd2ViL2ltYWdlcy9p Y29ub3MvZXVyb3Jlc2lkZW50ZXNfY29sb3IuanBnKTsKIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBl YXQ7CiBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwcHggM3B4OwogcGFkZGluZy1sZWZ0OiAyMHB4OwogbGlu ZS1oZWlnaHQ6IDE3cHg7CiBmb250LWZhbWlseTogVGFob21hLCBUaW1lcywgc2VyaWY7CiBmb250LXNp emU6IDExcHg7CiBjb2xvcjogIzBCNDc1QjsKIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKIG1hcmdpbi10 b3A6IDJweDsKIG1hcmdpbi1ib3R0b206IDJweDsKIH0KQGNoYXJzZXQgInV0Zi04IjsNCi8qIENTUyBE b2N1bWVudCAqLw0KDQouaWJlciB7DQogICAgICBmbG9hdDpyaWdodDsNCiAgICAgIHdpZHRoOjMzMHB4 Ow0KICAgICAgYmFja2dyb3VuZDojZmZmOw0KICAgICAgZm9udC1zaXplOjkzJSAhaW1wb3J0YW50Ow0K ICAgICAgbGluZS1oZWlnaHQ6bm9ybWFsOw0KCSAgZm9udDogYm9sZCAxMnB4IFZlcmRhbmEsIEdlbmV2 YSwgc2Fucy1zZXJpZiAhaW1wb3J0YW50Ow0KCSAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyANCgkg IGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkOyANCgkgIGJvcmRlci1ib3R0b20tY29sb3I6ICNGRkZG RkY7CQ0KCSAgbWFyZ2luLXJpZ2h0OiAtMXB4OyAgDQp9DQouaWJlciB1bCB7DQogICAgICAgICAgbWFy Z2luOjA7DQogICAgICAgICAgcGFkZGluZzowcHg7DQogICAgICAgICAgbGlzdC1zdHlsZTpub25lOw0K CSAgfQ0KLmliZXIgbGkgew0KICAgICAgZGlzcGxheTppbmxpbmU7DQogICAgICBtYXJnaW46MDsNCiAg ICAgIHBhZGRpbmc6MDsNCiAgICAgIH0NCi5pYmVyIGEgew0KICAgICAgZmxvYXQ6cmlnaHQ7DQogICAg ICBtYXJnaW46MDsNCiAgICAgIHBhZGRpbmc6MCAwIDAgNHB4Ow0KICAgICAgdGV4dC1kZWNvcmF0aW9u Om5vbmU7DQogICAgICBmb250OiBib2xkIDEycHggVmVyZGFuYSwgR2VuZXZhLCBzYW5zLXNlcmlmICFp bXBvcnRhbnQ7DQoJICB9DQouaWJlciBhIHNwYW4gew0KICAgICAgZmxvYXQ6cmlnaHQ7DQogICAgICBk aXNwbGF5OmJsb2NrOw0KICAgICAgcGFkZGluZzoycHggMTVweCAzcHggNnB4Ow0KICAgICAgY29sb3I6 I2VlZTsNCiAgICAgIH0NCiAgICAvKiBDb21tZW50ZWQgQmFja3NsYXNoIEhhY2sgaGlkZXMgcnVsZSBm cm9tIElFNS1NYWMgXCovDQouaWJlciBhIHNwYW4ge2Zsb2F0Om5vbmU7fQ0KICAgIC8qIEVuZCBJRTUt TWFjIGhhY2sgKi8NCi5pYmVyIGE6aG92ZXIgc3BhbiB7DQogICAgICBjb2xvcjojOUY5NTg0Ow0KICAg ICAgfQ0KLmliZXIgYTpob3ZlciB7DQogICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjAlIC00MnB4Ow0K ICAgICAgfQ0KLmliZXIgYTpob3ZlciBzcGFuIHsNCiAgICAgIGJhY2tncm91bmQtcG9zaXRpb246MTAw JSAtNDJweDsNCiAgICAgIH0NCi5jbGFzaWZpY2Fkb3MgYSB7DQogICAgICAgICAgICAgIGJhY2tncm91 bmQtcG9zaXRpb246MCUgLTQycHg7DQoJCQkgIGJhY2tncm91bmQ6dXJsKCJodHRwOi8vZXN0YXRpY29z MDIubGFvcGluaW9uZGV6YW1vcmEuZXMvZWxlbWVudG9zV2ViL21lZGlhd2ViL2ltYWdlcy9pYmVyY2xh c2lmaWNhZG9zL3Blc3RhbmFfY2xhc2lmaWNhZG9zX2l6LmdpZiIpIG5vLXJlcGVhdCBsZWZ0IHRvcDsN CiAgICAgIH0NCi5jbGFzaWZpY2Fkb3MgYSBzcGFuIHsNCiAgICAgICAgICAgICAgYmFja2dyb3VuZC1w b3NpdGlvbjoxMDAlIC00MnB4Ow0KCQkJICBiYWNrZ3JvdW5kOnVybCgiaHR0cDovL2VzdGF0aWNvczAy Lmxhb3BpbmlvbmRlemFtb3JhLmVzL2VsZW1lbnRvc1dlYi9tZWRpYXdlYi9pbWFnZXMvaWJlcmNsYXNp ZmljYWRvcy9wZXN0YW5hX2NsYXNpZmljYWRvc19kYy5naWYiKSBuby1yZXBlYXQgcmlnaHQgdG9wOw0K ICAgICAgfQ0KLmNvY2hlcyBhIHsNCiAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjowJSAt NDJweDsNCgkJCSAgYmFja2dyb3VuZDp1cmwoImh0dHA6Ly9lc3RhdGljb3MwMi5sYW9waW5pb25kZXph bW9yYS5lcy9lbGVtZW50b3NXZWIvbWVkaWF3ZWIvaW1hZ2VzL2liZXJjbGFzaWZpY2Fkb3MvcGVzdGFu YV9jb2NoZXNfaXouZ2lmIikgbm8tcmVwZWF0IGxlZnQgdG9wOw0KICAgICAgfQ0KLmNvY2hlcyBhIHNw YW4gew0KICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwMCUgLTQycHg7DQoJCQkgIGJh Y2tncm91bmQ6dXJsKCJodHRwOi8vZXN0YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvZWxlbWVu dG9zV2ViL21lZGlhd2ViL2ltYWdlcy9pYmVyY2xhc2lmaWNhZG9zL3Blc3RhbmFfY29jaGVzX2RjLmdp ZiIpIG5vLXJlcGVhdCByaWdodCB0b3A7DQogICAgICB9DQoucGlzb3MgYSB7DQogICAgICAgICAgICAg IGJhY2tncm91bmQtcG9zaXRpb246MCUgLTQycHg7DQoJCQkgIGJhY2tncm91bmQ6dXJsKCJodHRwOi8v ZXN0YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvZWxlbWVudG9zV2ViL21lZGlhd2ViL2ltYWdl cy9pYmVyY2xhc2lmaWNhZG9zL3Blc3RhbmFfcGlzb3NfaXouZ2lmIikgbm8tcmVwZWF0IGxlZnQgdG9w Ow0KICAgICAgfQ0KLnBpc29zIGEgc3BhbiB7DQogICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRp b246MTAwJSAtNDJweDsNCgkJCSAgYmFja2dyb3VuZDp1cmwoImh0dHA6Ly9lc3RhdGljb3MwMi5sYW9w aW5pb25kZXphbW9yYS5lcy9lbGVtZW50b3NXZWIvbWVkaWF3ZWIvaW1hZ2VzL2liZXJjbGFzaWZpY2Fk b3MvcGVzdGFuYV9waXNvc19kYy5naWYiKSBuby1yZXBlYXQgcmlnaHQgdG9wOw0KICAgICAgfQ0KLmVt cGxlbyBhIHsNCiAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjowJSAtNDJweDsNCgkJCSAg YmFja2dyb3VuZDp1cmwoImh0dHA6Ly9lc3RhdGljb3MwMi5sYW9waW5pb25kZXphbW9yYS5lcy9lbGVt ZW50b3NXZWIvbWVkaWF3ZWIvaW1hZ2VzL2liZXJjbGFzaWZpY2Fkb3MvcGVzdGFuYV9lbXBsZW9faXou Z2lmIikgbm8tcmVwZWF0IGxlZnQgdG9wOw0KICAgICAgfQ0KLmVtcGxlbyBhIHNwYW4gew0KICAgICAg ICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjEwMCUgLTQycHg7DQoJCQkgIGJhY2tncm91bmQ6dXJs KCJodHRwOi8vZXN0YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvZWxlbWVudG9zV2ViL21lZGlh d2ViL2ltYWdlcy9pYmVyY2xhc2lmaWNhZG9zL3Blc3RhbmFfZW1wbGVvX2RjLmdpZiIpIG5vLXJlcGVh dCByaWdodCB0b3A7DQogICAgICB9LnJmZHNfY2FqYWV4dGVyaW9yIHsKCUJBQ0tHUk9VTkQtSU1BR0U6 IHVybChodHRwOi8vZXN0YXRpY29zMDIubGFvcGluaW9uZGV6YW1vcmEuZXMvL2VsZW1lbnRvc1dlYi9p bWcvcmVjbGFtby9iYWNraXpkYW9yYW5nZS5naWYpOyBQT1NJVElPTjogcmVsYXRpdmU7IFdJRFRIOiAz MThweDsgQkFDS0dST1VORC1SRVBFQVQ6IHJlcGVhdC15OyBQQURESU5HLVRPUDogNnB4Cn0KLnJmZHNf Y2FqYWZvdG90aXR1bG8gewoJUE9TSVRJT046IHJlbGF0aXZlOyBXSURUSDogMzE0cHg7IE1BUkdJTi1C T1RUT006IDRweDsgTUFSR0lOLUxFRlQ6IDRweAp9Ci5yZmRzX2NhamFmb3RvdGl0dWxvMiB7CglQT1NJ VElPTjogcmVsYXRpdmU7IFdJRFRIOiAzMTRweDsgTUFSR0lOLUJPVFRPTTogNHB4OyBNQVJHSU4tTEVG VDogNHB4Cn0KLnJmZHNfY2FqYWZvdG90aXR1bG8gQSB7CglDT0xPUjogIzMzMzMzMzsgVEVYVC1ERUNP UkFUSU9OOiBub25lCn0KLnJmZHNfY2FqYWZvdG90aXR1bG8yIEEgewoJQ09MT1I6ICMzMzMzMzM7IFRF WFQtREVDT1JBVElPTjogbm9uZQp9Ci5yZmRzX2NhamFmb3RvdGl0dWxvIEE6aG92ZXIgewoJQ09MT1I6 ICNkNTY5MDQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5yZmRzX2NhamFmb3RvdGl0dWxvMiBBOmhv dmVyIHsKCUNPTE9SOiAjZDU2OTA0OyBURVhULURFQ09SQVRJT046IG5vbmUKfQoucmZkc19sb2dvZmxv dGEgewoJWi1JTkRFWDogMTAwMDA7IFBPU0lUSU9OOiBhYnNvbHV0ZTsgVE9QOiAwcHg7IExFRlQ6IDBw eAp9Ci5yZmRzX2xvZ29mbG90YSBJTUcgewoJQk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmU7IEJPUkRF Ui1MRUZUOiBtZWRpdW0gbm9uZTsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IEJPUkRFUi1SSUdIVDog bWVkaXVtIG5vbmUKfQoucmZkc19udW1lcm9zZmxvdGEgewoJWi1JTkRFWDogMTAwMDI7IFBPU0lUSU9O OiBhYnNvbHV0ZTsgVE9QOiA1cHg7IFJJR0hUOiAyM3B4Cn0KLnJmZHNfbnVtZXJvc2Zsb3RhIEEgewoJ Q09MT1I6ICNmZmY7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5yZmRzX2JvdG9uIHsKCUNPTE9SOiAj ZmZmOyBURVhULURFQ09SQVRJT046IG5vbmUKfQoucmZkc19udW1lcm9zZmxvdGEgQTpob3ZlciB7CglD T0xPUjogI2Q1NjkwNDsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KLnJmZHNfYm90b246aG92ZXIgewoJ Q09MT1I6ICNkNTY5MDQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5yZmRzX2JvdG9uIHsKCUNVUlNP UjogcG9pbnRlcgp9Ci5yZmRzX251bWVyb3NmbG90YTEgewoJWi1JTkRFWDogMTAwMDI7IEJPUkRFUi1C T1RUT006ICM2NjYgMXB4IHNvbGlkOyBQT1NJVElPTjogYWJzb2x1dGU7IFRFWFQtQUxJR046IGNlbnRl cjsgQk9SREVSLUxFRlQ6ICM2NjYgMXB4IHNvbGlkOyBCQUNLR1JPVU5ELUNPTE9SOiAjMzMzOyBXSURU SDogMTNweDsgRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IEhFSUdIVDog MTNweDsgRk9OVC1TSVpFOiAxMXB4OyBCT1JERVItVE9QOiAjNjY2IDFweCBzb2xpZDsgVE9QOiA1cHg7 IEZPTlQtV0VJR0hUOiBib2xkOyBCT1JERVItUklHSFQ6ICM2NjYgMXB4IHNvbGlkCn0KLnJmZHNfbnVt ZXJvc2Zsb3RhMiB7CglaLUlOREVYOiAxMDAwMjsgQk9SREVSLUJPVFRPTTogIzY2NiAxcHggc29saWQ7 IFBPU0lUSU9OOiBhYnNvbHV0ZTsgVEVYVC1BTElHTjogY2VudGVyOyBCT1JERVItTEVGVDogIzY2NiAx cHggc29saWQ7IEJBQ0tHUk9VTkQtQ09MT1I6ICMzMzM7IFdJRFRIOiAxM3B4OyBGT05ULUZBTUlMWTog QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgSEVJR0hUOiAxM3B4OyBGT05ULVNJWkU6IDExcHg7 IEJPUkRFUi1UT1A6ICM2NjYgMXB4IHNvbGlkOyBUT1A6IDIzcHg7IEZPTlQtV0VJR0hUOiBib2xkOyBC T1JERVItUklHSFQ6ICM2NjYgMXB4IHNvbGlkCn0KLnJmZHNfbnVtZXJvc2Zsb3RhMyB7CglaLUlOREVY OiAxMDAwMjsgQk9SREVSLUJPVFRPTTogIzY2NiAxcHggc29saWQ7IFBPU0lUSU9OOiBhYnNvbHV0ZTsg VEVYVC1BTElHTjogY2VudGVyOyBCT1JERVItTEVGVDogIzY2NiAxcHggc29saWQ7IEJBQ0tHUk9VTkQt Q09MT1I6ICMzMzM7IFdJRFRIOiAxM3B4OyBGT05ULUZBTUlMWTogQXJpYWwsIEhlbHZldGljYSwgc2Fu cy1zZXJpZjsgSEVJR0hUOiAxM3B4OyBGT05ULVNJWkU6IDExcHg7IEJPUkRFUi1UT1A6ICM2NjYgMXB4 IHNvbGlkOyBUT1A6IDQwcHg7IEZPTlQtV0VJR0hUOiBib2xkOyBCT1JERVItUklHSFQ6ICM2NjYgMXB4 IHNvbGlkCn0KLnJmZHNfbnVtZXJvc2Zsb3RhNCB7CglaLUlOREVYOiAxMDAwMjsgQk9SREVSLUJPVFRP TTogIzY2NiAxcHggc29saWQ7IFBPU0lUSU9OOiBhYnNvbHV0ZTsgVEVYVC1BTElHTjogY2VudGVyOyBC T1JERVItTEVGVDogIzY2NiAxcHggc29saWQ7IEJBQ0tHUk9VTkQtQ09MT1I6ICMzMzM7IFdJRFRIOiAx M3B4OyBGT05ULUZBTUlMWTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgSEVJR0hUOiAxM3B4 OyBGT05ULVNJWkU6IDExcHg7IEJPUkRFUi1UT1A6ICM2NjYgMXB4IHNvbGlkOyBUT1A6IDU3cHg7IEZP TlQtV0VJR0hUOiBib2xkOyBCT1JERVItUklHSFQ6ICM2NjYgMXB4IHNvbGlkCn0KLnJmZHNfZmxlY2hh ZmxvdGEgewoJWi1JTkRFWDogMTAwMDE7IFBPU0lUSU9OOiBhYnNvbHV0ZTsgVE9QOiA3MnB4OyBSSUdI VDogMHB4Cn0KLnJmZHNfZmxlY2hhZmxvdGEgSU1HIHsKCUJPUkRFUi1CT1RUT006IG1lZGl1bSBub25l OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBCT1JERVIt UklHSFQ6IG1lZGl1bSBub25lCn0KLnJmZHNfdGl0dWxvIHsKCVBBRERJTkctTEVGVDogNHB4OyBQQURE SU5HLVJJR0hUOiA0cHg7IERJU1BMQVk6IGJsb2NrOyBGT05ULUZBTUlMWTogR2VvcmdpYSwgIlRpbWVz IE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsgQ09MT1I6ICMzMzMzMzM7IEZPTlQtU0laRTogMjBweDsg UEFERElORy1UT1A6IDNweAp9Ci5yZmRzX3RpdHVsbyBBIHsKCVBBRERJTkctTEVGVDogNHB4OyBQQURE SU5HLVJJR0hUOiA0cHg7IERJU1BMQVk6IGJsb2NrOyBGT05ULUZBTUlMWTogR2VvcmdpYSwgIlRpbWVz IE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsgQ09MT1I6ICMzMzMzMzM7IEZPTlQtU0laRTogMjBweDsg VEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURESU5HLVRPUDogM3B4Cn0KLnJmZHNfdGl0dWxvIEE6aG92 ZXIgewoJUEFERElORy1MRUZUOiA0cHg7IFBBRERJTkctUklHSFQ6IDRweDsgRElTUExBWTogYmxvY2s7 IEZPTlQtRkFNSUxZOiBHZW9yZ2lhLCAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOyBDT0xP UjogI2Q1NjkwNDsgRk9OVC1TSVpFOiAyMHB4OyBURVhULURFQ09SQVRJT046IG5vbmUKfQoucmZkc19z dWJ0aXR1bG8gewoJUEFERElORy1MRUZUOiA0cHg7IFBBRERJTkctUklHSFQ6IDRweDsgRElTUExBWTog YmxvY2s7IEZPTlQtRkFNSUxZOiBUYWhvbWEsIEdlbmV2YSwgc2Fucy1zZXJpZjsgRk9OVC1TSVpFOiAx MnB4Cn0KLnJmZHNfc3VidGl0dWxvIEEgewoJUEFERElORy1MRUZUOiA2cHg7IFBBRERJTkctUklHSFQ6 IDRweDsgRElTUExBWTogYmxvY2s7IEZPTlQtRkFNSUxZOiBUYWhvbWEsIEdlbmV2YSwgc2Fucy1zZXJp ZjsgQ09MT1I6ICMwMDA7IEZPTlQtU0laRTogMTJweDsgUEFERElORy1UT1A6IDNweAp9Ci5yZmRzX3N1 YnRpdHVsbyBBOmhvdmVyIHsKCVBBRERJTkctTEVGVDogNnB4OyBQQURESU5HLVJJR0hUOiA0cHg7IERJ U1BMQVk6IGJsb2NrOyBGT05ULUZBTUlMWTogVGFob21hLCBHZW5ldmEsIHNhbnMtc2VyaWY7IENPTE9S OiAjMDAwOyBGT05ULVNJWkU6IDEycHg7IFBBRERJTkctVE9QOiAzcHgKfQoucmZkc19zZXBhcmFkb3Ig ewoJQkFDS0dST1VORC1JTUFHRTogdXJsKGh0dHA6Ly9lc3RhdGljb3MwMi5sYW9waW5pb25kZXphbW9y YS5lcy8vZWxlbWVudG9zV2ViL2ltZy9yZWNsYW1vL2JhY2tpemRhZ3Jpcy5naWYpOyBCQUNLR1JPVU5E LVJFUEVBVDogcmVwZWF0LXk7IEJBQ0tHUk9VTkQtUE9TSVRJT046IGxlZnQgNTAlOyBIRUlHSFQ6IDEw cHg7IE1BUkdJTi1MRUZUOiA0cHgKfQoucmZkc19vdHJvc3RlbWFzIHsKCUJBQ0tHUk9VTkQtQ09MT1I6 ICNlZWU7IFBBRERJTkctTEVGVDogNXB4OyBGT05ULUZBTUlMWTogVGFob21hLCBHZW5ldmEsIHNhbnMt c2VyaWY7IE1BUkdJTi1MRUZUOiA0cHg7IEZPTlQtU0laRTogMTJweAp9Ci5yZmRzX290cm9zdGVtYXNf dGl0dWxvIHsKCUJPUkRFUi1CT1RUT006ICMzMzMgMXB4IGRvdHRlZDsgRElTUExBWTogYmxvY2s7IEZP TlQtRkFNSUxZOiBUYWhvbWEsIEdlbmV2YSwgc2Fucy1zZXJpZjsgQ09MT1I6ICNkNTY5MDQ7IEZPTlQt U0laRTogMTNweDsgRk9OVC1XRUlHSFQ6IGJvbGQ7IFBBRERJTkctVE9QOiAzcHgKfQoucmZkc19vdHJv c3RlbWFzX3RpdHVsbyBBIHsKCVRFWFQtQUxJR046IHJpZ2h0OyBESVNQTEFZOiBibG9jazsgRk9OVC1G QU1JTFk6IFRhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmOyBDT0xPUjogI2Q1NjkwNDsgRk9OVC1TSVpF OiAxM3B4OyBGT05ULVdFSUdIVDogYm9sZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURESU5HLVRP UDogM3B4Cn0KLnJmZHNfb3Ryb3N0ZW1hc190aXR1bG8yIHsKCUJPUkRFUi1CT1RUT006ICMzMzMgMXB4 IGRvdHRlZDsgUEFERElORy1MRUZUOiAycHg7IERJU1BMQVk6IGJsb2NrOyBGT05ULUZBTUlMWTogR2Vv cmdpYSwgIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsgQ09MT1I6ICNkNTY5MDQ7IEZPTlQt U0laRTogMThweDsgUEFERElORy1UT1A6IDVweAp9Ci5yZmRzX290cm9zdGVtYXNfdGl0dWxvMiBBIHsK CVRFWFQtQUxJR046IHJpZ2h0OyBESVNQTEFZOiBibG9jazsgRk9OVC1GQU1JTFk6IFRhaG9tYSwgR2Vu ZXZhLCBzYW5zLXNlcmlmOyBDT0xPUjogI2Q1NjkwNDsgRk9OVC1TSVpFOiAxM3B4OyBGT05ULVdFSUdI VDogYm9sZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURESU5HLVRPUDogM3B4Cn0KLnJmZHNfb3Ry b3N0ZW1hc190aXR1bG8gQTpob3ZlciB7CglDT0xPUjogIzMzMwp9Ci5yZmRzX290cm9zdGVtYXNfdGl0 dWxvIElNRyB7CglCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgQk9SREVSLUxFRlQ6IG1lZGl1bSBu b25lOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZQp9Ci5y ZmRzX290cm9zdGVtYXNfZW5sYWNlcyB7CglCT1JERVItQk9UVE9NOiAjZGRkIDFweCBkb3R0ZWQ7IFBB RERJTkctQk9UVE9NOiAxcHg7IFBBRERJTkctTEVGVDogMTBweDsgUEFERElORy1SSUdIVDogNHB4OyBE SVNQTEFZOiBibG9jazsgRk9OVC1GQU1JTFk6IFRhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmOyBDT0xP UjogIzMzMzsgRk9OVC1TSVpFOiAxM3B4OyBQQURESU5HLVRPUDogMXB4Cn0KLnJmZHNfb3Ryb3N0ZW1h c19lbmxhY2VzIEEgewoJRk9OVC1GQU1JTFk6IFRhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmOyBDT0xP UjogIzMzMzsgRk9OVC1TSVpFOiAxM3B4OyBURVhULURFQ09SQVRJT046IG5vbmUKfQoucmZkc19vdHJv c3RlbWFzX2VubGFjZXMyIHsKCVBBRERJTkctQk9UVE9NOiAxcHg7IFBBRERJTkctTEVGVDogNHB4OyBQ QURESU5HLVJJR0hUOiAxMHB4OyBESVNQTEFZOiBpbmxpbmU7IEZPTlQtRkFNSUxZOiBUYWhvbWEsIEdl bmV2YSwgc2Fucy1zZXJpZjsgQ09MT1I6ICMzMzM7IEZPTlQtU0laRTogMTNweDsgUEFERElORy1UT1A6 IDFweAp9Ci5yZmRzX290cm9zdGVtYXNfZW5sYWNlczIgSU1HIHsKCUJPUkRFUi1MRUZUOiAjMzMzIDE1 cHggc29saWQ7IEJPUkRFUi1SSUdIVDogIzMzMyAxMnB4IHNvbGlkCn0KLnJmZHNfb3Ryb3N0ZW1hc19l bmxhY2VzMiBBIHsKCUZPTlQtRkFNSUxZOiBUYWhvbWEsIEdlbmV2YSwgc2Fucy1zZXJpZjsgQ09MT1I6 ICMzMzM7IEZPTlQtU0laRTogMTNweDsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KLnJmZHNfb3Ryb3N0 ZW1hc19lbmxhY2VzIEE6aG92ZXIgewoJQ09MT1I6ICNkNTY5MDQKfQoucmZkc19jYWphQ2FycnVzZWwg ewoJUE9TSVRJT046IHJlbGF0aXZlCn0KLnJlY2xhbW9fY2FqYSB7CglCT1JERVItQk9UVE9NOiAjY2Nj IDFweCBkb3R0ZWQ7IEJPUkRFUi1SSUdIVC1TVFlMRTogbm9uZTsgQkFDS0dST1VORC1DT0xPUjogI2Zm ZjsgV0lEVEg6IDMxOHB4OyBCT1JERVItTEVGVC1TVFlMRTogbm9uZQp9Ci5yZWNsYW1vX2NhamEgSDMg ewoJQk9SREVSLUJPVFRPTTogI2RkZCAxcHggc29saWQ7IEJPUkRFUi1MRUZUOiAjZGRkIDFweCBzb2xp ZDsgUEFERElORy1CT1RUT006IDVweDsgTElORS1IRUlHSFQ6IDFlbTsgVEVYVC1UUkFOU0ZPUk06IHVw cGVyY2FzZTsgQkFDS0dST1VORC1DT0xPUjogI2VlZTsgTUFSR0lOLVRPUDogM3B4OyBPVVRMSU5FLVNU WUxFOiBub25lOyBQQURESU5HLUxFRlQ6IDVweDsgT1VUTElORS1XSURUSDogbWVkaXVtOyBQQURESU5H LVJJR0hUOiA1cHg7IEZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBNQVJH SU4tQk9UVE9NOiA0cHg7IENPTE9SOiAjY2E3ZDBiOyBGT05ULVNJWkU6IDExcHg7IEJPUkRFUi1UT1A6 ICNkZGQgMXB4IHNvbGlkOyBGT05ULVdFSUdIVDogYm9sZDsgQk9SREVSLVJJR0hUOiAjZGRkIDFweCBz b2xpZDsgUEFERElORy1UT1A6IDVweAp9Ci5yZWNsYW1vX2NhamEgSDMgQSB7CglURVhULVRSQU5TRk9S TTogdXBwZXJjYXNlOyBCQUNLR1JPVU5ELUNPTE9SOiAjZWVlOyBNQVJHSU4tVE9QOiAzcHg7IE9VVExJ TkUtU1RZTEU6IG5vbmU7IE9VVExJTkUtV0lEVEg6IG1lZGl1bTsgRk9OVC1GQU1JTFk6IEFyaWFsLCBI ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IE1BUkdJTi1CT1RUT006IDdweDsgQ09MT1I6ICNjYTdkMGI7IEZP TlQtU0laRTogMTFweDsgRk9OVC1XRUlHSFQ6IGJvbGQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5y ZWNsYW1vX2NhamEgSDMgQTpob3ZlciB7CglDT0xPUjogIzAwMzk2OTsgVEVYVC1ERUNPUkFUSU9OOiBu b25lCn0KLnJlY2xhbW9fY2FqYSBIMyBBOmFjdGl2ZSB7CglDT0xPUjogIzMzMzsgVEVYVC1ERUNPUkFU SU9OOiBub25lCn0KLnJlY2xhbW9fY29udGVuaWRvIHsKCVBBRERJTkctQk9UVE9NOiAwcHg7IExJTkUt SEVJR0hUOiAxLjJlbTsgUEFERElORy1MRUZUOiA1cHg7IFBBRERJTkctUklHSFQ6IDVweDsgRk9OVC1G QU1JTFk6IFRhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmOyBDT0xPUjogIzNjM2MzYzsgRk9OVC1TSVpF OiAxMXB4OyBGT05ULVdFSUdIVDogbm9ybWFsOyBQQURESU5HLVRPUDogMHB4Cn0KLnJlY2xhbW9fY29u dGVuaWRvIEEgewoJRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IENPTE9S OiAjM2MzYzNjOyBGT05ULVNJWkU6IDExcHg7IEZPTlQtV0VJR0hUOiBib2xkOyBURVhULURFQ09SQVRJ T046IG5vbmUKfQoucmVjbGFtb19jb250ZW5pZG8gQTpob3ZlciB7CglDT0xPUjogI2NhN2QwYjsgVEVY VC1ERUNPUkFUSU9OOiBub25lCn0KLnJlY2xhbW9fY29udGVuaWRvIEE6YWN0aXZlIHsKCUNPTE9SOiAj MDAzOTY5OyBURVhULURFQ09SQVRJT046IG5vbmUKfQoucmVjbGFtb19jb250ZW5pZG8gSDQgewoJTElO RS1IRUlHSFQ6IDEuMWVtOyBNQVJHSU4tVE9QOiAzcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJ TkUtV0lEVEg6IG1lZGl1bTsgRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IE1BUkdJTi1CT1RUT006IDJweDsgRk9OVC1TSVpFOiAxNnB4OyBGT05ULVdFSUdIVDogYm9sZAp9Ci5y ZWNsYW1vX2NvbnRlbmlkbyBINCBBIHsKCU1BUkdJTi1UT1A6IDNweDsgT1VUTElORS1TVFlMRTogbm9u ZTsgT1VUTElORS1XSURUSDogbWVkaXVtOyBGT05ULUZBTUlMWTogQXJpYWwsIEhlbHZldGljYSwgc2Fu cy1zZXJpZjsgTUFSR0lOLUJPVFRPTTogMnB4OyBDT0xPUjogIzAwMzk2OTsgRk9OVC1TSVpFOiAxNnB4 OyBGT05ULVdFSUdIVDogYm9sZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KLnJlY2xhbW9fY29udGVu aWRvIEg0IEE6aG92ZXIgewoJQ09MT1I6ICNjYTdkMGI7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5y ZWNsYW1vX2NvbnRlbmlkbyBINCBBOmFjdGl2ZSB7CglDT0xPUjogIzAwMzk2OTsgVEVYVC1ERUNPUkFU SU9OOiBub25lCn0KLnJlY2xhbW9fY29udGVuaWRvIFAgewoJTUFSR0lOLVRPUDogMXB4OyBPVVRMSU5F LVNUWUxFOiBub25lOyBPVVRMSU5FLVdJRFRIOiBtZWRpdW07IE1BUkdJTi1CT1RUT006IDNweDsgQ09M T1I6ICMwMDA7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5yZWNsYW1vX2l6ZGEgewoJQk9SREVSLUJP VFRPTTogIzMzMyAycHggc29saWQ7IE1BUkdJTjogMHB4IDdweCAzcHggMHB4OyBGTE9BVDogbGVmdDsg Q0xFQVI6IGxlZnQ7IFZFUlRJQ0FMLUFMSUdOOiB0b3AKfQoucmVjbGFtb19kY2hhIHsKCUJPUkRFUi1C T1RUT006ICMzMzMgMnB4IHNvbGlkOyBNQVJHSU46IDBweCA3cHggM3B4IDBweDsgRkxPQVQ6IHJpZ2h0 OyBDTEVBUjogbGVmdDsgVkVSVElDQUwtQUxJR046IHRvcAp9Ci5yZWNsYW1vX2FycmliYSB7CglCT1JE RVItQk9UVE9NOiAjMzMzIDJweCBzb2xpZDsgTUFSR0lOOiAwcHggMHB4IDJweDsgQ0xFQVI6IGxlZnQ7 IFZFUlRJQ0FMLUFMSUdOOiB0b3AKfQoucmVjbGFtb19saW5rc21pdGFkaXpkYSB7CglXSURUSDogMTQ5 cHg7IEZMT0FUOiBsZWZ0OyBNQVJHSU4tUklHSFQ6IDlweAp9Ci5yZWNsYW1vX2xpbmtzbWl0YWRkY2hh IHsKCVdJRFRIOiAxNDlweDsgRkxPQVQ6IHJpZ2h0Cn0KLnJlY2xhbW9fZG9ibGVtaXRhZGl6ZGEgewoJ V0lEVEg6IDE0NXB4OyBGTE9BVDogbGVmdAp9Ci5yZWNsYW1vX2RvYmxlbWl0YWRkY2hhIHsKCVdJRFRI OiAxNDVweDsgRkxPQVQ6IHJpZ2h0Cn0KLnJlY2xhbW9fZmluX3NlcnZpY2lvIHsKCVBBRERJTkctQk9U VE9NOiAwcHg7IExJTkUtSEVJR0hUOiAxcHg7IE1BUkdJTjogMHB4IDBweCAzcHg7IEhFSUdIVDogMXB4 OyBDTEVBUjogYm90aDsgRk9OVC1TSVpFOiAxcHgKfQoucmVjbGFtb19maW5fc2VydmljaW9fc2VwYXJh IHsKCUJPUkRFUi1CT1RUT006ICNjY2MgMXB4IGRvdHRlZDsgUEFERElORy1CT1RUT006IDBweDsgTElO RS1IRUlHSFQ6IDJweDsgTUFSR0lOLUJPVFRPTTogM3B4OyBIRUlHSFQ6IDJweDsgQ0xFQVI6IGJvdGg7 IEZPTlQtU0laRTogMnB4Cn0KLnJlY2xhbW9fZmxvdGFyZGVyZWNoYSB7CglNQVJHSU4tVE9QOiAwcHg7 IFdJRFRIOiAxOTFweDsgRkxPQVQ6IHJpZ2h0OyBQQURESU5HLVRPUDogMHB4Cn0KLnJlY2xhbW9fbWVu dSB7CglCQUNLR1JPVU5ELUNPTE9SOiAjZGRkOyBXSURUSDogMTAwJQp9Ci5yZWNsYW1vX21lbnUgVUwg ewoJUEFERElORy1CT1RUT006IDBweDsgTElTVC1TVFlMRS1UWVBFOiBub25lOyBNQVJHSU46IDBweDsg UEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgT1ZFUkZMT1c6IGhpZGRlbjsgUEFE RElORy1UT1A6IDBweAp9Ci5yZWNsYW1vX21lbnUgTEkgewoJRkxPQVQ6IGxlZnQKfQoucmVjbGFtb19t ZW51IEEgewoJVEVYVC1BTElHTjogY2VudGVyOyBQQURESU5HLUJPVFRPTTogMnB4OyBPVVRMSU5FLVNU WUxFOiBub25lOyBPVVRMSU5FLUNPTE9SOiBpbnZlcnQ7IFBBRERJTkctTEVGVDogNXB4OyBPVVRMSU5F LVdJRFRIOiBtZWRpdW07IFBBRERJTkctUklHSFQ6IDVweDsgRElTUExBWTogYmxvY2s7IEZPTlQtV0VJ R0hUOiBib2xkOyBURVhULURFQ09SQVRJT046IG5vbmU7IFBBRERJTkctVE9QOiAycHgKfQoucmVjbGFt b19tZW51IEE6bGluayB7CglGT05ULUZBTUlMWTogVGFob21hLCBHZW5ldmEsIHNhbnMtc2VyaWY7IEJB Q0tHUk9VTkQ6ICNkZGQ7IENPTE9SOiAjMzMzOyBGT05ULVNJWkU6IDEycHg7IEJPUkRFUi1SSUdIVDog I2ZmZiAycHggc29saWQKfQoucmVjbGFtb19tZW51IEE6dmlzaXRlZCB7CglGT05ULUZBTUlMWTogVGFo b21hLCBHZW5ldmEsIHNhbnMtc2VyaWY7IEJBQ0tHUk9VTkQ6ICNkZGQ7IENPTE9SOiAjMzMzOyBGT05U LVNJWkU6IDEycHg7IEJPUkRFUi1SSUdIVDogI2ZmZiAycHggc29saWQKfQoucmVjbGFtb19tZW51IEE6 aG92ZXIgewoJQkFDS0dST1VORDogI2ZmZjsgQ09MT1I6ICNjYTdkMGIKfQoucmVjbGFtb19tZW51IEE6 Zm9jdXMgewoJQkFDS0dST1VORDogI2ZmZjsgQ09MT1I6ICNjYTdkMGIKfQoucmVjbGFtb19tZW51IEE6 YWN0aXZlIHsKCUJBQ0tHUk9VTkQ6ICNmZmY7IENPTE9SOiAjY2E3ZDBiCn0KLnJlY2xhbW9fdGl0bmFy YW5qYSB7CglCT1JERVItQk9UVE9NOiAjOTk5IDJweCBzb2xpZDsgVEVYVC1BTElHTjogbGVmdDsgVEVY VC1UUkFOU0ZPUk06IHVwcGVyY2FzZTsgQkFDS0dST1VORC1DT0xPUjogI2ZmZjsgRk9OVC1GQU1JTFk6 IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IEhFSUdIVDogMjBweDsgQ09MT1I6ICMwMDM5Njk7 IEZPTlQtU0laRTogMTFweDsgVkVSVElDQUwtQUxJR046IG1pZGRsZTsgRk9OVC1XRUlHSFQ6IGJvbGQK fQoucmVjbGFtb19saW5rIHsKCUZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlm OyBDT0xPUjogIzBiNDc1YjsgRk9OVC1TSVpFOiAxMXB4OyBGT05ULVdFSUdIVDogYm9sZAp9Ci5yZWNs YW1vX2xpbmsgQSB7CglCQUNLR1JPVU5ELUlNQUdFOiB1cmwoaHR0cDovL2VzdGF0aWNvczAyLmxhb3Bp bmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvaW1nL21vdGl2by5naWYpOyBQQURESU5HLUxFRlQ6 IDEycHg7IEJBQ0tHUk9VTkQtUkVQRUFUOiBuby1yZXBlYXQ7IEZPTlQtRkFNSUxZOiBBcmlhbCwgSGVs dmV0aWNhLCBzYW5zLXNlcmlmOyBCQUNLR1JPVU5ELVBPU0lUSU9OOiAtNHB4IDUwJTsgQ09MT1I6ICMw YjQ3NWI7IEZPTlQtU0laRTogMTFweDsgRk9OVC1XRUlHSFQ6IGJvbGQKfQoucmVjbGFtb190YWJsYSB7 CglCT1JERVItQk9UVE9NOiAjZGRkIDFweCBzb2xpZDsgUEFERElORy1MRUZUOiAycHg7IEZPTlQtRkFN SUxZOiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBGT05ULVNJWkU6IDExcHgKfQoucmVjbGFt b19wYXRyb2NpbmFkb3BvciB7CglURVhULUFMSUdOOiBjZW50ZXI7IEJBQ0tHUk9VTkQtQ09MT1I6ICMw MDA7IEZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBIRUlHSFQ6IDE2cHg7 IENPTE9SOiAjZGRkOyBGT05ULVNJWkU6IDExcHg7IFBBRERJTkctVE9QOiAxcHgKfQouZmRzM2NfZXh0 ZXJpb3IgewoJWi1JTkRFWDogMTAwMDA7IEJPUkRFUi1CT1RUT006ICNkYjczMWMgM3B4IHNvbGlkOyBQ T1NJVElPTjogcmVsYXRpdmU7IFRFWFQtQUxJR046IGxlZnQ7IFBBRERJTkctQk9UVE9NOiAzcHg7IE1B UkdJTi1UT1A6IDRweDsgV0lEVEg6IDk5MHB4OyBNQVJHSU4tTEVGVDogYXV0bzsgTUFSR0lOLVJJR0hU OiBhdXRvCn0KLmZkczNjX2xvZ28gewoJV0lEVEg6IDU1cHg7IEZMT0FUOiBsZWZ0OyBPVkVSRkxPVzog aGlkZGVuCn0KLmZkczNjX2xvZ28gSU1HIHsKCUJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lOyBCT1JE RVItTEVGVDogbWVkaXVtIG5vbmU7IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBCT1JERVItUklHSFQ6 IG1lZGl1bSBub25lCn0KLmZkczNjX2NvbnRpZW5lbm90aWNpYXNpemRhIHsKCVotSU5ERVg6IDEwMDAy OyBQT1NJVElPTjogcmVsYXRpdmU7IExJTkUtSEVJR0hUOiAwLjc1ZW07IFdJRFRIOiAzODJweDsgUEFE RElORy1SSUdIVDogMXB4OyBGTE9BVDogbGVmdDsgTUFSR0lOLUxFRlQ6IDBweDsgQk9SREVSLVJJR0hU OiAjY2NjIDFweCBkb3R0ZWQKfQouZmRzM2NfY29udGllbmVub3RpY2lhc2RjaGEgewoJWi1JTkRFWDog MTAwMDI7IFBPU0lUSU9OOiByZWxhdGl2ZTsgTElORS1IRUlHSFQ6IDAuNzVlbTsgRkxPQVQ6IHJpZ2h0 Cn0KLmZkczNjX2NhamFtZWRpbyB7CglXSURUSDogMzIzcHg7IEZMT0FUOiBsZWZ0Cn0KLmZkczNjX3Nl cGFyYXRvciB7CglDTEVBUjogYm90aAp9Ci5mZHMzY19ub3RpaXpkYV9sYS1zZW1hbmEgewoJTUFSR0lO LUJPVFRPTTogM3B4Cn0KLmZkczNjX25vdGlpemRhX2xhLXNlbWFuYSBBIHsKCUNPTE9SOiAjMzYzNjM2 OyBURVhULURFQ09SQVRJT046IG5vbmUKfQouZmRzM2Nfbm90aWl6ZGFfbGEtc2VtYW5hIEE6aG92ZXIg ewoJQ09MT1I6ICM5OTkKfQouZmRzM2Nfbm90aWl6ZGFfbGEtc2VtYW5hIEg0IHsKCVBBRERJTkctQk9U VE9NOiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4 OyBESVNQTEFZOiBibG9jazsgRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7 IEZPTlQtV0VJR0hUOiBib2xkOyBQQURESU5HLVRPUDogMHB4Cn0KLmZkczNjX25vdGlpemRhX2xhLXNl bWFuYSBINCBBIHsKCVBBRERJTkctQk9UVE9NOiAwcHg7IExJTkUtSEVJR0hUOiAxMnB4OyBNQVJHSU46 IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRElTUExBWTogYmxvY2s7 IEZPTlQtU0laRTogMTNweDsgRk9OVC1XRUlHSFQ6IGJvbGQ7IFBBRERJTkctVE9QOiAwcHgKfQouZmRz M2Nfbm90aWl6ZGFfbGEtc2VtYW5hIFAgewoJUEFERElORy1CT1RUT006IDBweDsgTElORS1IRUlHSFQ6 IDEycHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBE SVNQTEFZOiBibG9jazsgRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IENP TE9SOiAjNjY2OyBGT05ULVNJWkU6IDExcHg7IFBBRERJTkctVE9QOiAwcHgKfQouZmRzM2Nfbm90aWl6 ZGFfbGEtc2VtYW5hIElNRyB7CglCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgQk9SREVSLUxFRlQ6 ICMwMDc5YTYgNHB4IHNvbGlkOyBXSURUSDogODdweDsgTUFSR0lOLUJPVFRPTTogNHB4OyBGTE9BVDog bGVmdDsgSEVJR0hUOiA1M3B4OyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgTUFSR0lOLVJJR0hUOiA1 cHg7IEJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmUKfQouZmRzM2Nfbm90aWl6ZGFfYS1mb25kbyB7CglN QVJHSU4tQk9UVE9NOiAzcHgKfQouZmRzM2Nfbm90aWl6ZGFfYS1mb25kbyBBIHsKCUNPTE9SOiAjMzYz NjM2OyBURVhULURFQ09SQVRJT046IG5vbmUKfQouZmRzM2Nfbm90aWl6ZGFfYS1mb25kbyBBOmhvdmVy IHsKCUNPTE9SOiAjOTk5Cn0KLmZkczNjX25vdGlpemRhX2EtZm9uZG8gSDQgewoJUEFERElORy1CT1RU T006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7 IERJU1BMQVk6IGJsb2NrOyBGT05ULUZBTUlMWTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg Rk9OVC1XRUlHSFQ6IGJvbGQ7IFBBRERJTkctVE9QOiAwcHgKfQouZmRzM2Nfbm90aWl6ZGFfYS1mb25k byBINCBBIHsKCVBBRERJTkctQk9UVE9NOiAwcHg7IExJTkUtSEVJR0hUOiAxMnB4OyBNQVJHSU46IDBw eDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRElTUExBWTogYmxvY2s7IEZP TlQtU0laRTogMTNweDsgRk9OVC1XRUlHSFQ6IGJvbGQ7IFBBRERJTkctVE9QOiAwcHgKfQouZmRzM2Nf bm90aWl6ZGFfYS1mb25kbyBQIHsKCVBBRERJTkctQk9UVE9NOiAwcHg7IExJTkUtSEVJR0hUOiAxMnB4 OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRElTUExB WTogYmxvY2s7IEZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBDT0xPUjog IzY2NjsgRk9OVC1TSVpFOiAxMXB4OyBQQURESU5HLVRPUDogMHB4Cn0KLmZkczNjX25vdGlpemRhX2Et Zm9uZG8gSU1HIHsKCUJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lOyBCT1JERVItTEVGVDogIzAwNzlh NiA0cHggc29saWQ7IFdJRFRIOiA4N3B4OyBNQVJHSU4tQk9UVE9NOiA0cHg7IEZMT0FUOiBsZWZ0OyBI RUlHSFQ6IDUzcHg7IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBNQVJHSU4tUklHSFQ6IDVweDsgQk9S REVSLVJJR0hUOiBtZWRpdW0gbm9uZQp9CgouZmRzM2Nfbm90aWl6ZGFfZW4tanVlZ28gewoJTUFSR0lO LUJPVFRPTTogM3B4Cn0KLmZkczNjX25vdGlpemRhX2VuLWp1ZWdvIEEgewoJQ09MT1I6ICMzNjM2MzY7 IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5mZHMzY19ub3RpaXpkYV9lbi1qdWVnbyBBOmhvdmVyIHsK CUNPTE9SOiAjOTk5Cn0KLmZkczNjX25vdGlpemRhX2VuLWp1ZWdvIEg0IHsKCVBBRERJTkctQk9UVE9N OiAwcHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBE SVNQTEFZOiBibG9jazsgRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IEZP TlQtV0VJR0hUOiBib2xkOyBQQURESU5HLVRPUDogMHB4Cn0KLmZkczNjX25vdGlpemRhX2VuLWp1ZWdv IEg0IEEgewoJUEFERElORy1CT1RUT006IDBweDsgTElORS1IRUlHSFQ6IDEycHg7IE1BUkdJTjogMHB4 OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBESVNQTEFZOiBibG9jazsgRk9O VC1TSVpFOiAxM3B4OyBGT05ULVdFSUdIVDogYm9sZDsgUEFERElORy1UT1A6IDBweAp9Ci5mZHMzY19u b3RpaXpkYV9lbi1qdWVnbyBQIHsKCVBBRERJTkctQk9UVE9NOiAwcHg7IExJTkUtSEVJR0hUOiAxMnB4 OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRElTUExB WTogYmxvY2s7IEZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBDT0xPUjog IzY2NjsgRk9OVC1TSVpFOiAxMXB4OyBQQURESU5HLVRPUDogMHB4Cn0KLmZkczNjX25vdGlpemRhX2Vu LWp1ZWdvIElNRyB7CglCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgQk9SREVSLUxFRlQ6ICNjYWEw MGYgNHB4IHNvbGlkOyBXSURUSDogODdweDsgTUFSR0lOLUJPVFRPTTogNHB4OyBGTE9BVDogbGVmdDsg SEVJR0hUOiA1M3B4OyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgTUFSR0lOLVJJR0hUOiA1cHg7IEJP UkRFUi1SSUdIVDogbWVkaXVtIG5vbmUKfQouZmRzM2Nfbm90aWl6ZGFfdGllbXBvLWxpYnJlIHsKCU1B UkdJTi1CT1RUT006IDNweAp9Ci5mZHMzY19ub3RpaXpkYV90aWVtcG8tbGlicmUgQSB7CglDT0xPUjog IzM2MzYzNjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KLmZkczNjX25vdGlpemRhX3RpZW1wby1saWJy ZSBBOmhvdmVyIHsKCUNPTE9SOiAjOTk5Cn0KLmZkczNjX25vdGlpemRhX3RpZW1wby1saWJyZSBINCB7 CglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBBRERJ TkctUklHSFQ6IDBweDsgRElTUExBWTogYmxvY2s7IEZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBGT05ULVdFSUdIVDogYm9sZDsgUEFERElORy1UT1A6IDBweAp9Ci5mZHMzY19u b3RpaXpkYV90aWVtcG8tbGlicmUgSDQgQSB7CglQQURESU5HLUJPVFRPTTogMHB4OyBMSU5FLUhFSUdI VDogMTJweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7 IERJU1BMQVk6IGJsb2NrOyBGT05ULVNJWkU6IDEzcHg7IEZPTlQtV0VJR0hUOiBib2xkOyBQQURESU5H LVRPUDogMHB4Cn0KLmZkczNjX25vdGlpemRhX3RpZW1wby1saWJyZSBQIHsKCVBBRERJTkctQk9UVE9N OiAwcHg7IExJTkUtSEVJR0hUOiAxMnB4OyBNQVJHSU46IDBweDsgUEFERElORy1MRUZUOiAwcHg7IFBB RERJTkctUklHSFQ6IDBweDsgRElTUExBWTogYmxvY2s7IEZPTlQtRkFNSUxZOiBBcmlhbCwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmOyBDT0xPUjogIzY2NjsgRk9OVC1TSVpFOiAxMXB4OyBQQURESU5HLVRPUDog MHB4Cn0KLmZkczNjX25vdGlpemRhX3RpZW1wby1saWJyZSBJTUcgewoJQk9SREVSLUJPVFRPTTogbWVk aXVtIG5vbmU7IEJPUkRFUi1MRUZUOiAjYTEwNjEwIDRweCBzb2xpZDsgV0lEVEg6IDg3cHg7IE1BUkdJ Ti1CT1RUT006IDRweDsgRkxPQVQ6IGxlZnQ7IEhFSUdIVDogNTNweDsgQk9SREVSLVRPUDogbWVkaXVt IG5vbmU7IE1BUkdJTi1SSUdIVDogNXB4OyBCT1JERVItUklHSFQ6IG1lZGl1bSBub25lCn0KLmZkczNj X25vdGlpemRhX3BsYW5lcyB7CglNQVJHSU4tQk9UVE9NOiAzcHgKfQouZmRzM2Nfbm90aWl6ZGFfcGxh bmVzIEEgewoJQ09MT1I6ICMzNjM2MzY7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5mZHMzY19ub3Rp aXpkYV9wbGFuZXMgQTpob3ZlciB7CglDT0xPUjogIzk5OQp9Ci5mZHMzY19ub3RpaXpkYV9wbGFuZXMg SDQgewoJUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQ QURESU5HLVJJR0hUOiAwcHg7IERJU1BMQVk6IGJsb2NrOyBGT05ULUZBTUlMWTogQXJpYWwsIEhlbHZl dGljYSwgc2Fucy1zZXJpZjsgRk9OVC1XRUlHSFQ6IGJvbGQ7IFBBRERJTkctVE9QOiAwcHgKfQouZmRz M2Nfbm90aWl6ZGFfcGxhbmVzIEg0IEEgewoJUEFERElORy1CT1RUT006IDBweDsgTElORS1IRUlHSFQ6 IDEycHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBE SVNQTEFZOiBibG9jazsgRk9OVC1TSVpFOiAxM3B4OyBGT05ULVdFSUdIVDogYm9sZDsgUEFERElORy1U T1A6IDBweAp9Ci5mZHMzY19ub3RpaXpkYV9wbGFuZXMgUCB7CglQQURESU5HLUJPVFRPTTogMHB4OyBM SU5FLUhFSUdIVDogMTJweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJ R0hUOiAwcHg7IERJU1BMQVk6IGJsb2NrOyBGT05ULUZBTUlMWTogQXJpYWwsIEhlbHZldGljYSwgc2Fu cy1zZXJpZjsgQ09MT1I6ICM2NjY7IEZPTlQtU0laRTogMTFweDsgUEFERElORy1UT1A6IDBweAp9Ci5m ZHMzY19ub3RpaXpkYV9wbGFuZXMgSU1HIHsKCUJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lOyBCT1JE RVItTEVGVDogIzFlMzM4MiA0cHggc29saWQ7IFdJRFRIOiA4N3B4OyBNQVJHSU4tQk9UVE9NOiA0cHg7 IEZMT0FUOiBsZWZ0OyBIRUlHSFQ6IDUzcHg7IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBNQVJHSU4t UklHSFQ6IDVweDsgQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZQp9Ci5mZHMzY19ub3RpaXpkYV96b25h LXZpcCB7CglNQVJHSU4tQk9UVE9NOiAzcHgKfQouZmRzM2Nfbm90aWl6ZGFfem9uYS12aXAgQSB7CglD T0xPUjogIzM2MzYzNjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KLmZkczNjX25vdGlpemRhX3pvbmEt dmlwIEE6aG92ZXIgewoJQ09MT1I6ICM5OTkKfQouZmRzM2Nfbm90aWl6ZGFfem9uYS12aXAgSDQgewoJ UEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5H LVJJR0hUOiAwcHg7IERJU1BMQVk6IGJsb2NrOyBGT05ULUZBTUlMWTogQXJpYWwsIEhlbHZldGljYSwg c2Fucy1zZXJpZjsgRk9OVC1XRUlHSFQ6IGJvbGQ7IFBBRERJTkctVE9QOiAwcHgKfQouZmRzM2Nfbm90 aWl6ZGFfem9uYS12aXAgSDQgQSB7CglQQURESU5HLUJPVFRPTTogMHB4OyBMSU5FLUhFSUdIVDogMTJw eDsgTUFSR0lOOiAwcHg7IFBBRERJTkctTEVGVDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IERJU1BM QVk6IGJsb2NrOyBGT05ULVNJWkU6IDEzcHg7IEZPTlQtV0VJR0hUOiBib2xkOyBQQURESU5HLVRPUDog MHB4Cn0KLmZkczNjX25vdGlpemRhX3pvbmEtdmlwIFAgewoJUEFERElORy1CT1RUT006IDBweDsgTElO RS1IRUlHSFQ6IDEycHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdI VDogMHB4OyBESVNQTEFZOiBibG9jazsgRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWY7IENPTE9SOiAjNjY2OyBGT05ULVNJWkU6IDExcHg7IFBBRERJTkctVE9QOiAwcHgKfQouZmRz M2Nfbm90aWl6ZGFfem9uYS12aXAgSU1HIHsKCUJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lOyBCT1JE RVItTEVGVDogIzU5ODMxZCA0cHggc29saWQ7IFdJRFRIOiA4N3B4OyBNQVJHSU4tQk9UVE9NOiA0cHg7 IEZMT0FUOiBsZWZ0OyBIRUlHSFQ6IDUzcHg7IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBNQVJHSU4t UklHSFQ6IDVweDsgQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZQp9Ci5mZHMzY19ub3RpaXpkYV9zaWVu dGV0ZS1iaWVuIHsKCU1BUkdJTi1CT1RUT006IDNweAp9Ci5mZHMzY19ub3RpaXpkYV9zaWVudGV0ZS1i aWVuIEEgewoJQ09MT1I6ICMzNjM2MzY7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5mZHMzY19ub3Rp aXpkYV9zaWVudGV0ZS1iaWVuIEE6aG92ZXIgewoJQ09MT1I6ICM5OTkKfQouZmRzM2Nfbm90aWl6ZGFf c2llbnRldGUtYmllbiBINCB7CglQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgUEFERElO Ry1MRUZUOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRElTUExBWTogYmxvY2s7IEZPTlQtRkFNSUxZ OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBGT05ULVdFSUdIVDogYm9sZDsgUEFERElORy1U T1A6IDBweAp9Ci5mZHMzY19ub3RpaXpkYV9zaWVudGV0ZS1iaWVuIEg0IEEgewoJUEFERElORy1CT1RU T006IDBweDsgTElORS1IRUlHSFQ6IDEycHg7IE1BUkdJTjogMHB4OyBQQURESU5HLUxFRlQ6IDBweDsg UEFERElORy1SSUdIVDogMHB4OyBESVNQTEFZOiBibG9jazsgRk9OVC1TSVpFOiAxM3B4OyBGT05ULVdF SUdIVDogYm9sZDsgUEFERElORy1UT1A6IDBweAp9Ci5mZHMzY19ub3RpaXpkYV9zaWVudGV0ZS1iaWVu IFAgewoJUEFERElORy1CT1RUT006IDBweDsgTElORS1IRUlHSFQ6IDEycHg7IE1BUkdJTjogMHB4OyBQ QURESU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBESVNQTEFZOiBibG9jazsgRk9OVC1G QU1JTFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IENPTE9SOiAjNjY2OyBGT05ULVNJWkU6 IDExcHg7IFBBRERJTkctVE9QOiAwcHgKfQouZmRzM2Nfbm90aWl6ZGFfc2llbnRldGUtYmllbiBJTUcg ewoJQk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmU7IEJPUkRFUi1MRUZUOiAjNzkxYjk0IDRweCBzb2xp ZDsgV0lEVEg6IDg3cHg7IE1BUkdJTi1CT1RUT006IDRweDsgRkxPQVQ6IGxlZnQ7IEhFSUdIVDogNTNw eDsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IE1BUkdJTi1SSUdIVDogNXB4OyBCT1JERVItUklHSFQ6 IG1lZGl1bSBub25lCn0KLmZkczNjX25vdGlkY2hhIHsKCVotSU5ERVg6IDEwMDAxOyBQT1NJVElPTjog cmVsYXRpdmU7IE1BUkdJTjogMHB4IDBweCAzcHggOXB4OyBXSURUSDogMTkycHg7IEZMT0FUOiBsZWZ0 Cn0KLmZkczNjX2Nham9udGV4dG9zX2xhLXNlbWFuYSB7CglCQUNLR1JPVU5ELUlNQUdFOiB1cmwoaHR0 cDovL2VzdGF0aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvaW1nLzc1dHJh bnNwYXJlbnRlLnBuZyk7IFotSU5ERVg6IDEwMDAxOyBQT1NJVElPTjogYWJzb2x1dGU7IFdJRFRIOiAx ODVweDsgQk9SREVSLVRPUDogIzAwNzlhNiAzcHggc29saWQ7IFRPUDogNjBweDsgTEVGVDogN3B4Cn0K LmZkczNjX2Nham9udGV4dG9zX2EtZm9uZG8gewoJQkFDS0dST1VORC1JTUFHRTogdXJsKGh0dHA6Ly9l c3RhdGljb3MwMi5sYW9waW5pb25kZXphbW9yYS5lcy8vZWxlbWVudG9zV2ViL2ltZy83NXRyYW5zcGFy ZW50ZS5wbmcpOyBaLUlOREVYOiAxMDAwMTsgUE9TSVRJT046IGFic29sdXRlOyBXSURUSDogMTg1cHg7 IEJPUkRFUi1UT1A6ICMwMDc5YTYgM3B4IHNvbGlkOyBUT1A6IDYwcHg7IExFRlQ6IDdweAp9Ci5mZHMz Y19jYWpvbnRleHRvc19lbi1qdWVnbyB7CglCQUNLR1JPVU5ELUlNQUdFOiB1cmwoaHR0cDovL2VzdGF0 aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvaW1nLzc1dHJhbnNwYXJlbnRl LnBuZyk7IFotSU5ERVg6IDEwMDAxOyBQT1NJVElPTjogYWJzb2x1dGU7IFdJRFRIOiAxODVweDsgQk9S REVSLVRPUDogI2NhYTAwZiAzcHggc29saWQ7IFRPUDogNjBweDsgTEVGVDogN3B4Cn0KLmZkczNjX2Nh am9udGV4dG9zX3RpZW1wby1saWJyZSB7CglCQUNLR1JPVU5ELUlNQUdFOiB1cmwoaHR0cDovL2VzdGF0 aWNvczAyLmxhb3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvaW1nLzc1dHJhbnNwYXJlbnRl LnBuZyk7IFotSU5ERVg6IDEwMDAxOyBQT1NJVElPTjogYWJzb2x1dGU7IFdJRFRIOiAxODVweDsgQk9S REVSLVRPUDogI2ExMDYxMCAzcHggc29saWQ7IFRPUDogNjBweDsgTEVGVDogN3B4Cn0KLmZkczNjX2Nh am9udGV4dG9zX3BsYW5lcyB7CglCQUNLR1JPVU5ELUlNQUdFOiB1cmwoaHR0cDovL2VzdGF0aWNvczAy Lmxhb3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvaW1nLzc1dHJhbnNwYXJlbnRlLnBuZyk7 IFotSU5ERVg6IDEwMDAxOyBQT1NJVElPTjogYWJzb2x1dGU7IFdJRFRIOiAxODVweDsgQk9SREVSLVRP UDogIzFlMzM4MiAzcHggc29saWQ7IFRPUDogNjBweDsgTEVGVDogN3B4Cn0KLmZkczNjX2Nham9udGV4 dG9zX3pvbmEtdmlwIHsKCUJBQ0tHUk9VTkQtSU1BR0U6IHVybChodHRwOi8vZXN0YXRpY29zMDIubGFv cGluaW9uZGV6YW1vcmEuZXMvL2VsZW1lbnRvc1dlYi9pbWcvNzV0cmFuc3BhcmVudGUucG5nKTsgWi1J TkRFWDogMTAwMDE7IFBPU0lUSU9OOiBhYnNvbHV0ZTsgV0lEVEg6IDE4NXB4OyBCT1JERVItVE9QOiAj NTk4MzFkIDNweCBzb2xpZDsgVE9QOiA2MHB4OyBMRUZUOiA3cHgKfQouZmRzM2NfY2Fqb250ZXh0b3Nf c2llbnRldGUtYmllbiB7CglCQUNLR1JPVU5ELUlNQUdFOiB1cmwoaHR0cDovL2VzdGF0aWNvczAyLmxh b3BpbmlvbmRlemFtb3JhLmVzLy9lbGVtZW50b3NXZWIvaW1nLzc1dHJhbnNwYXJlbnRlLnBuZyk7IFot SU5ERVg6IDEwMDAxOyBQT1NJVElPTjogYWJzb2x1dGU7IFdJRFRIOiAxODVweDsgQk9SREVSLVRPUDog Izc5MWI5NCAzcHggc29saWQ7IFRPUDogNjBweDsgTEVGVDogN3B4Cn0KLmZkczNjX2Nham9ubGluayB7 CglaLUlOREVYOiAxMDAwMTsgQk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmU7IFBPU0lUSU9OOiBhYnNv bHV0ZTsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgVE9Q OiAyM3B4OyBSSUdIVDogMHB4OyBCT1JERVItUklHSFQ6IG1lZGl1bSBub25lCn0KLmZkczNjX25vdGlk Y2hhIEEgewoJQ09MT1I6ICMzNjM2MzY7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9Ci5mZHMzY19ub3Rp ZGNoYSBBOmhvdmVyIHsKCUNPTE9SOiAjOTk5Cn0KLmZkczNjX25vdGlkY2hhIEg0IHsKCVBBRERJTkct Qk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4IDBweCAwcHggM3B4OyBQQURESU5HLUxFRlQ6IDBweDsgUEFE RElORy1SSUdIVDogMHB4OyBESVNQTEFZOiBibG9jazsgRk9OVC1GQU1JTFk6IEFyaWFsLCBIZWx2ZXRp Y2EsIHNhbnMtc2VyaWY7IEZPTlQtV0VJR0hUOiBib2xkOyBQQURESU5HLVRPUDogMHB4Cn0KLmZkczNj X25vdGlkY2hhIEg0IEEgewoJTElORS1IRUlHSFQ6IDEycHg7IERJU1BMQVk6IGJsb2NrOyBGT05ULVNJ WkU6IDEzcHg7IEZPTlQtV0VJR0hUOiBib2xkCn0KLmZkczNjX25vdGlkY2hhIFAgewoJUEFERElORy1C T1RUT006IDBweDsgTElORS1IRUlHSFQ6IDEycHg7IE1BUkdJTjogMHB4IDBweCAwcHggM3B4OyBQQURE SU5HLUxFRlQ6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBESVNQTEFZOiBibG9jazsgRk9OVC1GQU1J TFk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IENPTE9SOiAjNjY2OyBGT05ULVNJWkU6IDEx cHg7IFBBRERJTkctVE9QOiAwcHgKfQouZmRzM2Nfbm90aWRjaGEgSU1HIHsKCUJPUkRFUi1CT1RUT006 IG1lZGl1bSBub25lOyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFdJRFRIOiAxOTJweDsgSEVJR0hU OiA3OXB4OyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZQp9 Ci5mZHMzY19ub3RpZGNoYSAuZmRzM2NfY2Fqb25saW5rIElNRyB7CglCT1JERVItQk9UVE9NOiBtZWRp dW0gbm9uZTsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBXSURUSDogNDVweDsgSEVJR0hUOiAzN3B4 OyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZQp9CiNNZW51 Q2FiZWNlcmEgew0KCWJhY2tncm91bmQtY29sb3I6I0VCRThFMSFpbXBvcnRhbnQ7DQoJLypib3JkZXIt Ym90dG9tOjFweCBzb2xpZCAjRkZGRkZGIWltcG9ydGFudDsqLw0KfQ0KDQojTWVudUNhYmVjZXJhIC5t ZW51ZWRpY2lvbnsNCglwYWRkaW5nLWxlZnQ6NXB4IWltcG9ydGFudDsNCgljb2xvcjojMDAwMDAwIWlt cG9ydGFudDsNCgltYXJnaW4tdG9wOjBweCFpbXBvcnRhbnQ7DQoJbGluZS1oZWlnaHQ6MTlweCFpbXBv cnRhbnQ7DQp9DQoNCiNNZW51Q2FiZWNlcmEgLm1lbnVlZGljaW9uIHNwYW4sICNNZW51Q2FiZWNlcmEg Lm1lbnVlZGljaW9uIGZvbnR7DQoJY29sb3I6IzAwMDAwMCFpbXBvcnRhbnQ7DQp9DQojTWVudUNhYmVj ZXJhIC5tZW51ZWRpY2lvbiBzcGFuLCAjTWVudUNhYmVjZXJhIC5tZW51ZWRpY2lvbiBhIHsNCgljb2xv cjojMDAwMDAwIWltcG9ydGFudDsNCn0NCg0KI01lbnVDYWJlY2VyYSAubWVudWVkaWNpb24gLmVubGFj ZVJTU3sNCgliYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCB1cmwoaHR0cDovL2VzdGF0aWNvczAyLmxhb3Bp bmlvbmRlemFtb3JhLmVzL3Jzcy9yc3MuZ2lmKSBuby1yZXBlYXQgc2Nyb2xsIDI1cHggMS41cHghaW1w b3J0YW50Ow0KCWNvbG9yOiMwMDAwMDAhaW1wb3J0YW50Ow0KCXBhZGRpbmctbGVmdDo1cHghaW1wb3J0 YW50Ow0KfQ0KDQojTWVudUNhYmVjZXJhIC5pYmVyew0KCXBhZGRpbmctcmlnaHQ6MXB4IWltcG9ydGFu dDsNCgliYWNrZ3JvdW5kOm5vbmUgcmVwZWF0IHNjcm9sbCAwIDAhaW1wb3J0YW50Ow0KCWJvcmRlci1i b3R0b206bm9uZSFpbXBvcnRhbnQ7DQp9 ------=_MIMEPart_1280474321_1725595808_=---- Content-disposition: attachment; filename="estaticos02.laopiniondezamora.es_/elementosWeb/js/funcs.js" Content-Type: application/x-javascript Content-Transfer-Encoding: base64 Content-ID: LyoKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS40LjEKICogaHR0cDovL2pxdWVyeS5jb20v CiAqCiAqIENvcHlyaWdodCAyMDEwLCBKb2huIFJlc2lnCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhl IE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgogKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNl CiAqCiAqIEluY2x1ZGVzIFNpenpsZS5qcwogKiBodHRwOi8vc2l6emxlanMuY29tLwogKiBDb3B5cmln aHQgMjAxMCwgVGhlIERvam8gRm91bmRhdGlvbgogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlULCBCU0Qs IGFuZCBHUEwgTGljZW5zZXMuCiAqCiAqIERhdGU6IE1vbiBKYW4gMjUgMTk6NDM6MzMgMjAxMCAtMDUw MAogKi8KKGZ1bmN0aW9uKGFjLGFlKXtmdW5jdGlvbiBiaCgpe2lmKCFhbS5pc1JlYWR5KXt0cnl7YWYu ZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYyl7c2V0VGltZW91dChiaCwxKTty ZXR1cm59YW0ucmVhZHkoKX19ZnVuY3Rpb24gYmwocixjKXtjLnNyYz9hbS5hamF4KHt1cmw6Yy5zcmMs YXN5bmM6ZmFsc2UsZGF0YVR5cGU6InNjcmlwdCJ9KTphbS5nbG9iYWxFdmFsKGMudGV4dHx8Yy50ZXh0 Q29udGVudHx8Yy5pbm5lckhUTUx8fCIiKTtjLnBhcmVudE5vZGUmJmMucGFyZW50Tm9kZS5yZW1vdmVD aGlsZChjKX1mdW5jdGlvbiBhdihyLGMsSixGLEcseil7dmFyIHY9ci5sZW5ndGg7aWYodHlwZW9mIGM9 PT0ib2JqZWN0Iil7Zm9yKHZhciBLIGluIGMpe2F2KHIsSyxjW0tdLEYsRyxKKX1yZXR1cm4gcn1pZihK IT09YWUpe0Y9IXomJkYmJmFtLmlzRnVuY3Rpb24oSik7Zm9yKEs9MDtLPHY7SysrKXtHKHJbS10sYyxG P0ouY2FsbChyW0tdLEssRyhyW0tdLGMpKTpKLHopfXJldHVybiByfXJldHVybiB2P0coclswXSxjKTpu dWxsfWZ1bmN0aW9uIGFLKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9ZnVuY3Rpb24gYXUoKXty ZXR1cm4gZmFsc2V9ZnVuY3Rpb24gYXIoKXtyZXR1cm4gdHJ1ZX1mdW5jdGlvbiBhMyhyLGMsdil7dlsw XS50eXBlPXI7cmV0dXJuIGFtLmV2ZW50LmhhbmRsZS5hcHBseShjLHYpfWZ1bmN0aW9uIGFQKE8pe3Zh ciBMLEs9W10sRz1bXSxKPWFyZ3VtZW50cyxGLHoscixjLHYsUCxOPWFtLmV4dGVuZCh7fSxhbS5kYXRh KHRoaXMsImV2ZW50cyIpLmxpdmUpO2lmKCEoTy5idXR0b24mJk8udHlwZT09PSJjbGljayIpKXtmb3Io YyBpbiBOKXt6PU5bY107aWYoei5saXZlPT09Ty50eXBlfHx6LmFsdExpdmUmJmFtLmluQXJyYXkoTy50 eXBlLHouYWx0TGl2ZSk+LTEpe0Y9ei5kYXRhO0YuYmVmb3JlRmlsdGVyJiZGLmJlZm9yZUZpbHRlcltP LnR5cGVdJiYhRi5iZWZvcmVGaWx0ZXJbTy50eXBlXShPKXx8Ry5wdXNoKHouc2VsZWN0b3IpfWVsc2V7 ZGVsZXRlIE5bY119fUY9YW0oTy50YXJnZXQpLmNsb3Nlc3QoRyxPLmN1cnJlbnRUYXJnZXQpO3Y9MDtm b3IoUD1GLmxlbmd0aDt2PFA7disrKXtmb3IoYyBpbiBOKXt6PU5bY107cj1GW3ZdLmVsZW07Rz1udWxs O2lmKEZbdl0uc2VsZWN0b3I9PT16LnNlbGVjdG9yKXtpZih6LmxpdmU9PT0ibW91c2VlbnRlciJ8fHou bGl2ZT09PSJtb3VzZWxlYXZlIil7Rz1hbShPLnJlbGF0ZWRUYXJnZXQpLmNsb3Nlc3Qoei5zZWxlY3Rv cilbMF19aWYoIUd8fEchPT1yKXtLLnB1c2goe2VsZW06cixmbjp6fSl9fX19dj0wO2ZvcihQPUsubGVu Z3RoO3Y8UDt2Kyspe0Y9S1t2XTtPLmN1cnJlbnRUYXJnZXQ9Ri5lbGVtO08uZGF0YT1GLmZuLmRhdGE7 aWYoRi5mbi5hcHBseShGLmVsZW0sSik9PT1mYWxzZSl7TD1mYWxzZTticmVha319cmV0dXJuIEx9fWZ1 bmN0aW9uIGFsKHIsYyl7cmV0dXJuImxpdmUuIisocj9yKyIuIjoiIikrYy5yZXBsYWNlKC9cLi9nLCJg IikucmVwbGFjZSgvIC9nLCImIil9ZnVuY3Rpb24gSChjKXtyZXR1cm4gIWN8fCFjLnBhcmVudE5vZGV8 fGMucGFyZW50Tm9kZS5ub2RlVHlwZT09PTExfWZ1bmN0aW9uIHAocixjKXt2YXIgdj0wO2MuZWFjaChm dW5jdGlvbigpe2lmKHRoaXMubm9kZU5hbWU9PT0oclt2XSYmclt2XS5ub2RlTmFtZSkpe3ZhciBHPWFt LmRhdGEoclt2KytdKSxKPWFtLmRhdGEodGhpcyxHKTtpZihHPUcmJkcuZXZlbnRzKXtkZWxldGUgSi5o YW5kbGU7Si5ldmVudHM9e307Zm9yKHZhciBGIGluIEcpe2Zvcih2YXIgeiBpbiBHW0ZdKXthbS5ldmVu dC5hZGQodGhpcyxGLEdbRl1bel0sR1tGXVt6XS5kYXRhKX19fX19KX1mdW5jdGlvbiBiayhyLGMsRyl7 dmFyIHosRix2O2lmKHIubGVuZ3RoPT09MSYmdHlwZW9mIHJbMF09PT0ic3RyaW5nIiYmclswXS5sZW5n dGg8NTEyJiZyWzBdLmluZGV4T2YoIjxvcHRpb24iKTwwJiYoYW0uc3VwcG9ydC5jaGVja0Nsb25lfHwh YTcudGVzdChyWzBdKSkpe0Y9dHJ1ZTtpZih2PWFtLmZyYWdtZW50c1tyWzBdXSl7aWYodiE9PTEpe3o9 dn19fWlmKCF6KXtjPWMmJmNbMF0/Y1swXS5vd25lckRvY3VtZW50fHxjWzBdOmFmO3o9Yy5jcmVhdGVE b2N1bWVudEZyYWdtZW50KCk7YW0uY2xlYW4ocixjLHosRyl9aWYoRil7YW0uZnJhZ21lbnRzW3JbMF1d PXY/ejoxfXJldHVybntmcmFnbWVudDp6LGNhY2hlYWJsZTpGfX1mdW5jdGlvbiBhSChyLGMpe3ZhciB2 PXt9O2FtLmVhY2goYVQuY29uY2F0LmFwcGx5KFtdLGFULnNsaWNlKDAsYykpLGZ1bmN0aW9uKCl7dlt0 aGlzXT1yfSk7cmV0dXJuIHZ9ZnVuY3Rpb24gYXAoYyl7cmV0dXJuInNjcm9sbFRvIiBpbiBjJiZjLmRv Y3VtZW50P2M6Yy5ub2RlVHlwZT09PTk/Yy5kZWZhdWx0Vmlld3x8Yy5wYXJlbnRXaW5kb3c6ZmFsc2V9 dmFyIGFtPWZ1bmN0aW9uKHIsYyl7cmV0dXJuIG5ldyBhbS5mbi5pbml0KHIsYyl9LGE4PWFjLmpRdWVy eSxhVT1hYy4kLGFmPWFjLmRvY3VtZW50LGF6LGFxPS9eW148XSooPFtcd1xXXSs+KVtePl0qJHxeIyhb XHctXSspJC8sVT0vXi5bXjojXFtcLixdKiQvLHc9L1xTLyxkPS9eKFxzfFx1MDBBMCkrfChcc3xcdTAw QTApKyQvZyxiYz0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT4pPyQvLGFFPW5hdmlnYXRvci51c2VyQWdl bnQsUj1mYWxzZSxhQz1bXSxhRyxhNT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGFZPU9iamVjdC5w cm90b3R5cGUuaGFzT3duUHJvcGVydHksYUQ9QXJyYXkucHJvdG90eXBlLnB1c2gsYUE9QXJyYXkucHJv dG90eXBlLnNsaWNlLHU9QXJyYXkucHJvdG90eXBlLmluZGV4T2Y7YW0uZm49YW0ucHJvdG90eXBlPXtp bml0OmZ1bmN0aW9uKHIsYyl7dmFyIHosdjtpZighcil7cmV0dXJuIHRoaXN9aWYoci5ub2RlVHlwZSl7 dGhpcy5jb250ZXh0PXRoaXNbMF09cjt0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBy PT09InN0cmluZyIpe2lmKCh6PWFxLmV4ZWMocikpJiYoelsxXXx8IWMpKXtpZih6WzFdKXt2PWM/Yy5v d25lckRvY3VtZW50fHxjOmFmO2lmKHI9YmMuZXhlYyhyKSl7aWYoYW0uaXNQbGFpbk9iamVjdChjKSl7 cj1bYWYuY3JlYXRlRWxlbWVudChyWzFdKV07YW0uZm4uYXR0ci5jYWxsKHIsYyx0cnVlKX1lbHNle3I9 W3YuY3JlYXRlRWxlbWVudChyWzFdKV19fWVsc2V7cj1iayhbelsxXV0sW3ZdKTtyPShyLmNhY2hlYWJs ZT9yLmZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTpyLmZyYWdtZW50KS5jaGlsZE5vZGVzfX1lbHNle2lm KGM9YWYuZ2V0RWxlbWVudEJ5SWQoelsyXSkpe2lmKGMuaWQhPT16WzJdKXtyZXR1cm4gYXouZmluZChy KX10aGlzLmxlbmd0aD0xO3RoaXNbMF09Y310aGlzLmNvbnRleHQ9YWY7dGhpcy5zZWxlY3Rvcj1yO3Jl dHVybiB0aGlzfX1lbHNle2lmKCFjJiYvXlx3KyQvLnRlc3Qocikpe3RoaXMuc2VsZWN0b3I9cjt0aGlz LmNvbnRleHQ9YWY7cj1hZi5nZXRFbGVtZW50c0J5VGFnTmFtZShyKX1lbHNle3JldHVybiAhY3x8Yy5q cXVlcnk/KGN8fGF6KS5maW5kKHIpOmFtKGMpLmZpbmQocil9fX1lbHNle2lmKGFtLmlzRnVuY3Rpb24o cikpe3JldHVybiBhei5yZWFkeShyKX19aWYoci5zZWxlY3RvciE9PWFlKXt0aGlzLnNlbGVjdG9yPXIu c2VsZWN0b3I7dGhpcy5jb250ZXh0PXIuY29udGV4dH1yZXR1cm4gYW0uaXNBcnJheShyKT90aGlzLnNl dEFycmF5KHIpOmFtLm1ha2VBcnJheShyLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNC4xIixs ZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0aW9u KCl7cmV0dXJuIGFBLmNhbGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGMpe3JldHVybiBjPT1udWxsP3Ro aXMudG9BcnJheSgpOmM8MD90aGlzLnNsaWNlKGMpWzBdOnRoaXNbY119LHB1c2hTdGFjazpmdW5jdGlv bihyLGMsdil7cj1hbShyfHxudWxsKTtyLnByZXZPYmplY3Q9dGhpcztyLmNvbnRleHQ9dGhpcy5jb250 ZXh0O2lmKGM9PT0iZmluZCIpe3Iuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8i ICI6IiIpK3Z9ZWxzZXtpZihjKXtyLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK2MrIigiK3YrIiki fX1yZXR1cm4gcn0sc2V0QXJyYXk6ZnVuY3Rpb24oYyl7dGhpcy5sZW5ndGg9MDthRC5hcHBseSh0aGlz LGMpO3JldHVybiB0aGlzfSxlYWNoOmZ1bmN0aW9uKHIsYyl7cmV0dXJuIGFtLmVhY2godGhpcyxyLGMp fSxyZWFkeTpmdW5jdGlvbihjKXthbS5iaW5kUmVhZHkoKTtpZihhbS5pc1JlYWR5KXtjLmNhbGwoYWYs YW0pfWVsc2V7YUMmJmFDLnB1c2goYyl9cmV0dXJuIHRoaXN9LGVxOmZ1bmN0aW9uKGMpe3JldHVybiBj PT09LTE/dGhpcy5zbGljZShjKTp0aGlzLnNsaWNlKGMsK2MrMSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0 dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LHNsaWNlOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGFBLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xp Y2UiLGFBLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oYyl7cmV0dXJuIHRo aXMucHVzaFN0YWNrKGFtLm1hcCh0aGlzLGZ1bmN0aW9uKHIsdil7cmV0dXJuIGMuY2FsbChyLHYscil9 KSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fGFtKG51bGwpfSxwdXNoOmFE LHNvcnQ6W10uc29ydCxzcGxpY2U6W10uc3BsaWNlfTthbS5mbi5pbml0LnByb3RvdHlwZT1hbS5mbjth bS5leHRlbmQ9YW0uZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIHI9YXJndW1lbnRzWzBdfHx7fSxjPTEs Sj1hcmd1bWVudHMubGVuZ3RoLEY9ZmFsc2UsRyx6LHYsSztpZih0eXBlb2Ygcj09PSJib29sZWFuIil7 Rj1yO3I9YXJndW1lbnRzWzFdfHx7fTtjPTJ9aWYodHlwZW9mIHIhPT0ib2JqZWN0IiYmIWFtLmlzRnVu Y3Rpb24ocikpe3I9e319aWYoSj09PWMpe3I9dGhpczstLWN9Zm9yKDtjPEo7YysrKXtpZigoRz1hcmd1 bWVudHNbY10pIT1udWxsKXtmb3IoeiBpbiBHKXt2PXJbel07Sz1HW3pdO2lmKHIhPT1LKXtpZihGJiZL JiYoYW0uaXNQbGFpbk9iamVjdChLKXx8YW0uaXNBcnJheShLKSkpe3Y9diYmKGFtLmlzUGxhaW5PYmpl Y3Qodil8fGFtLmlzQXJyYXkodikpP3Y6YW0uaXNBcnJheShLKT9bXTp7fTtyW3pdPWFtLmV4dGVuZChG LHYsSyl9ZWxzZXtpZihLIT09YWUpe3Jbel09S319fX19fXJldHVybiByfTthbS5leHRlbmQoe25vQ29u ZmxpY3Q6ZnVuY3Rpb24oYyl7YWMuJD1hVTtpZihjKXthYy5qUXVlcnk9YTh9cmV0dXJuIGFtfSxpc1Jl YWR5OmZhbHNlLHJlYWR5OmZ1bmN0aW9uKCl7aWYoIWFtLmlzUmVhZHkpe2lmKCFhZi5ib2R5KXtyZXR1 cm4gc2V0VGltZW91dChhbS5yZWFkeSwxMyl9YW0uaXNSZWFkeT10cnVlO2lmKGFDKXtmb3IodmFyIHIs Yz0wO3I9YUNbYysrXTspe3IuY2FsbChhZixhbSl9YUM9bnVsbH1hbS5mbi50cmlnZ2VySGFuZGxlciYm YW0oYWYpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX0sYmluZFJlYWR5OmZ1bmN0aW9uKCl7aWYoIVIp e1I9dHJ1ZTtpZihhZi5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIil7cmV0dXJuIGFtLnJlYWR5KCl9aWYo YWYuYWRkRXZlbnRMaXN0ZW5lcil7YWYuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIs YUcsZmFsc2UpO2FjLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGFtLnJlYWR5LGZhbHNlKX1lbHNle2lm KGFmLmF0dGFjaEV2ZW50KXthZi5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixhRyk7YWMu YXR0YWNoRXZlbnQoIm9ubG9hZCIsYW0ucmVhZHkpO3ZhciByPWZhbHNlO3RyeXtyPWFjLmZyYW1lRWxl bWVudD09bnVsbH1jYXRjaChjKXt9YWYuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsJiZyJiZiaCgpfX19 fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGMpe3JldHVybiBhNS5jYWxsKGMpPT09IltvYmplY3QgRnVuY3Rp b25dIn0saXNBcnJheTpmdW5jdGlvbihjKXtyZXR1cm4gYTUuY2FsbChjKT09PSJbb2JqZWN0IEFycmF5 XSJ9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24ocil7aWYoIXJ8fGE1LmNhbGwocikhPT0iW29iamVjdCBP YmplY3RdInx8ci5ub2RlVHlwZXx8ci5zZXRJbnRlcnZhbCl7cmV0dXJuIGZhbHNlfWlmKHIuY29uc3Ry dWN0b3ImJiFhWS5jYWxsKHIsImNvbnN0cnVjdG9yIikmJiFhWS5jYWxsKHIuY29uc3RydWN0b3IucHJv dG90eXBlLCJpc1Byb3RvdHlwZU9mIikpe3JldHVybiBmYWxzZX12YXIgYztmb3IoYyBpbiByKXt9cmV0 dXJuIGM9PT1hZXx8YVkuY2FsbChyLGMpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKHIpe2Zvcih2YXIg YyBpbiByKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9LGVycm9yOmZ1bmN0aW9uKGMpe3Rocm93IGN9 LHBhcnNlSlNPTjpmdW5jdGlvbihjKXtpZih0eXBlb2YgYyE9PSJzdHJpbmcifHwhYyl7cmV0dXJuIG51 bGx9aWYoL15bXF0sOnt9XHNdKiQvLnRlc3QoYy5yZXBsYWNlKC9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAt OWEtZkEtRl17NH0pL2csIkAiKS5yZXBsYWNlKC8iW14iXFxcblxyXSoifHRydWV8ZmFsc2V8bnVsbHwt P1xkKyg/OlwuXGQqKT8oPzpbZUVdWytcLV0/XGQrKT8vZywiXSIpLnJlcGxhY2UoLyg/Ol58OnwsKSg/ OlxzKlxbKSsvZywiIikpKXtyZXR1cm4gYWMuSlNPTiYmYWMuSlNPTi5wYXJzZT9hYy5KU09OLnBhcnNl KGMpOihuZXcgRnVuY3Rpb24oInJldHVybiAiK2MpKSgpfWVsc2V7YW0uZXJyb3IoIkludmFsaWQgSlNP TjogIitjKX19LG5vb3A6ZnVuY3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24ocil7aWYociYmdy50 ZXN0KHIpKXt2YXIgYz1hZi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxhZi5kb2N1bWVu dEVsZW1lbnQsdj1hZi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt2LnR5cGU9InRleHQvamF2YXNjcmlw dCI7aWYoYW0uc3VwcG9ydC5zY3JpcHRFdmFsKXt2LmFwcGVuZENoaWxkKGFmLmNyZWF0ZVRleHROb2Rl KHIpKX1lbHNle3YudGV4dD1yfWMuaW5zZXJ0QmVmb3JlKHYsYy5maXJzdENoaWxkKTtjLnJlbW92ZUNo aWxkKHYpfX0sbm9kZU5hbWU6ZnVuY3Rpb24ocixjKXtyZXR1cm4gci5ub2RlTmFtZSYmci5ub2RlTmFt ZS50b1VwcGVyQ2FzZSgpPT09Yy50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKHIsYyxKKXt2YXIg RixHPTAsej1yLmxlbmd0aCx2PXo9PT1hZXx8YW0uaXNGdW5jdGlvbihyKTtpZihKKXtpZih2KXtmb3Io RiBpbiByKXtpZihjLmFwcGx5KHJbRl0sSik9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcig7Rzx6Oyl7 aWYoYy5hcHBseShyW0crK10sSik9PT1mYWxzZSl7YnJlYWt9fX19ZWxzZXtpZih2KXtmb3IoRiBpbiBy KXtpZihjLmNhbGwocltGXSxGLHJbRl0pPT09ZmFsc2Upe2JyZWFrfX19ZWxzZXtmb3IoSj1yWzBdO0c8 eiYmYy5jYWxsKEosRyxKKSE9PWZhbHNlO0o9clsrK0ddKXt9fX1yZXR1cm4gcn0sdHJpbTpmdW5jdGlv bihjKXtyZXR1cm4oY3x8IiIpLnJlcGxhY2UoZCwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihyLGMpe2M9 Y3x8W107aWYociE9bnVsbCl7ci5sZW5ndGg9PW51bGx8fHR5cGVvZiByPT09InN0cmluZyJ8fGFtLmlz RnVuY3Rpb24ocil8fHR5cGVvZiByIT09ImZ1bmN0aW9uIiYmci5zZXRJbnRlcnZhbD9hRC5jYWxsKGMs cik6YW0ubWVyZ2UoYyxyKX1yZXR1cm4gY30saW5BcnJheTpmdW5jdGlvbihyLGMpe2lmKGMuaW5kZXhP Zil7cmV0dXJuIGMuaW5kZXhPZihyKX1mb3IodmFyIHo9MCx2PWMubGVuZ3RoO3o8djt6Kyspe2lmKGNb el09PT1yKXtyZXR1cm4gen19cmV0dXJuIC0xfSxtZXJnZTpmdW5jdGlvbihyLGMpe3ZhciBGPXIubGVu Z3RoLHY9MDtpZih0eXBlb2YgYy5sZW5ndGg9PT0ibnVtYmVyIil7Zm9yKHZhciB6PWMubGVuZ3RoO3Y8 ejt2Kyspe3JbRisrXT1jW3ZdfX1lbHNle2Zvcig7Y1t2XSE9PWFlOyl7cltGKytdPWNbdisrXX19ci5s ZW5ndGg9RjtyZXR1cm4gcn0sZ3JlcDpmdW5jdGlvbihyLGMsRyl7Zm9yKHZhciB6PVtdLEY9MCx2PXIu bGVuZ3RoO0Y8djtGKyspeyFHIT09IWMocltGXSxGKSYmei5wdXNoKHJbRl0pfXJldHVybiB6fSxtYXA6 ZnVuY3Rpb24ocixjLEope2Zvcih2YXIgRj1bXSxHLHo9MCx2PXIubGVuZ3RoO3o8djt6Kyspe0c9Yyhy W3pdLHosSik7aWYoRyE9bnVsbCl7RltGLmxlbmd0aF09R319cmV0dXJuIEYuY29uY2F0LmFwcGx5KFtd LEYpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24ocixjLHYpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yKXtp Zih0eXBlb2YgYz09PSJzdHJpbmciKXt2PXI7cj12W2NdO2M9YWV9ZWxzZXtpZihjJiYhYW0uaXNGdW5j dGlvbihjKSl7dj1jO2M9YWV9fX1pZighYyYmcil7Yz1mdW5jdGlvbigpe3JldHVybiByLmFwcGx5KHZ8 fHRoaXMsYXJndW1lbnRzKX19aWYocil7Yy5ndWlkPXIuZ3VpZD1yLmd1aWR8fGMuZ3VpZHx8YW0uZ3Vp ZCsrfXJldHVybiBjfSx1YU1hdGNoOmZ1bmN0aW9uKGMpe2M9Yy50b0xvd2VyQ2FzZSgpO2M9Lyh3ZWJr aXQpWyBcL10oW1x3Ll0rKS8uZXhlYyhjKXx8LyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5d KykvLmV4ZWMoYyl8fC8obXNpZSkgKFtcdy5dKykvLmV4ZWMoYyl8fCEvY29tcGF0aWJsZS8udGVzdChj KSYmLyhtb3ppbGxhKSg/Oi4qPyBydjooW1x3Ll0rKSk/Ly5leGVjKGMpfHxbXTtyZXR1cm57YnJvd3Nl cjpjWzFdfHwiIix2ZXJzaW9uOmNbMl18fCIwIn19LGJyb3dzZXI6e319KTthRT1hbS51YU1hdGNoKGFF KTtpZihhRS5icm93c2VyKXthbS5icm93c2VyW2FFLmJyb3dzZXJdPXRydWU7YW0uYnJvd3Nlci52ZXJz aW9uPWFFLnZlcnNpb259aWYoYW0uYnJvd3Nlci53ZWJraXQpe2FtLmJyb3dzZXIuc2FmYXJpPXRydWV9 aWYodSl7YW0uaW5BcnJheT1mdW5jdGlvbihyLGMpe3JldHVybiB1LmNhbGwoYyxyKX19YXo9YW0oYWYp O2lmKGFmLmFkZEV2ZW50TGlzdGVuZXIpe2FHPWZ1bmN0aW9uKCl7YWYucmVtb3ZlRXZlbnRMaXN0ZW5l cigiRE9NQ29udGVudExvYWRlZCIsYUcsZmFsc2UpO2FtLnJlYWR5KCl9fWVsc2V7aWYoYWYuYXR0YWNo RXZlbnQpe2FHPWZ1bmN0aW9uKCl7aWYoYWYucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2FmLmRldGFj aEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFHKTthbS5yZWFkeSgpfX19fShmdW5jdGlvbigpe2Ft LnN1cHBvcnQ9e307dmFyIHI9YWYuZG9jdW1lbnRFbGVtZW50LGM9YWYuY3JlYXRlRWxlbWVudCgic2Ny aXB0IiksSj1hZi5jcmVhdGVFbGVtZW50KCJkaXYiKSxGPSJzY3JpcHQiK2FLKCk7Si5zdHlsZS5kaXNw bGF5PSJub25lIjtKLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9h JyBzdHlsZT0nY29sb3I6cmVkO2Zsb2F0OmxlZnQ7b3BhY2l0eTouNTU7Jz5hPC9hPjxpbnB1dCB0eXBl PSdjaGVja2JveCcvPiI7dmFyIEc9Si5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLHo9Si5nZXRFbGVt ZW50c0J5VGFnTmFtZSgiYSIpWzBdO2lmKCEoIUd8fCFHLmxlbmd0aHx8IXopKXthbS5zdXBwb3J0PXts ZWFkaW5nV2hpdGVzcGFjZTpKLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFKLmdldEVsZW1l bnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhSi5nZXRFbGVtZW50c0J5 VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0KHouZ2V0QXR0cmlidXRlKCJzdHls ZSIpKSxocmVmTm9ybWFsaXplZDp6LmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9e MC41NSQvLnRlc3Qoei5zdHlsZS5vcGFjaXR5KSxjc3NGbG9hdDohIXouc3R5bGUuY3NzRmxvYXQsY2hl Y2tPbjpKLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLnZhbHVlPT09Im9uIixvcHRTZWxl Y3RlZDphZi5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKS5hcHBlbmRDaGlsZChhZi5jcmVhdGVFbGVtZW50 KCJvcHRpb24iKSkuc2VsZWN0ZWQsY2hlY2tDbG9uZTpmYWxzZSxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xv bmVFdmVudDp0cnVlLGJveE1vZGVsOm51bGx9O2MudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Yy5h cHBlbmRDaGlsZChhZi5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrRisiPTE7IikpfWNhdGNoKHYpe31y Lmluc2VydEJlZm9yZShjLHIuZmlyc3RDaGlsZCk7aWYoYWNbRl0pe2FtLnN1cHBvcnQuc2NyaXB0RXZh bD10cnVlO2RlbGV0ZSBhY1tGXX1yLnJlbW92ZUNoaWxkKGMpO2lmKEouYXR0YWNoRXZlbnQmJkouZmly ZUV2ZW50KXtKLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbiBLKCl7YW0uc3VwcG9ydC5ub0Ns b25lRXZlbnQ9ZmFsc2U7Si5kZXRhY2hFdmVudCgib25jbGljayIsSyl9KTtKLmNsb25lTm9kZSh0cnVl KS5maXJlRXZlbnQoIm9uY2xpY2siKX1KPWFmLmNyZWF0ZUVsZW1lbnQoImRpdiIpO0ouaW5uZXJIVE1M PSI8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3JhZGlvdGVzdCcgY2hlY2tlZD0nY2hlY2tlZCcvPiI7 cj1hZi5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7ci5hcHBlbmRDaGlsZChKLmZpcnN0Q2hpbGQpO2Ft LnN1cHBvcnQuY2hlY2tDbG9uZT1yLmNsb25lTm9kZSh0cnVlKS5jbG9uZU5vZGUodHJ1ZSkubGFzdENo aWxkLmNoZWNrZWQ7YW0oZnVuY3Rpb24oKXt2YXIgTD1hZi5jcmVhdGVFbGVtZW50KCJkaXYiKTtMLnN0 eWxlLndpZHRoPUwuc3R5bGUucGFkZGluZ0xlZnQ9IjFweCI7YWYuYm9keS5hcHBlbmRDaGlsZChMKTth bS5ib3hNb2RlbD1hbS5zdXBwb3J0LmJveE1vZGVsPUwub2Zmc2V0V2lkdGg9PT0yO2FmLmJvZHkucmVt b3ZlQ2hpbGQoTCkuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KTtyPWZ1bmN0aW9uKE8pe3ZhciBOPWFmLmNy ZWF0ZUVsZW1lbnQoImRpdiIpO089Im9uIitPO3ZhciBMPU8gaW4gTjtpZighTCl7Ti5zZXRBdHRyaWJ1 dGUoTywicmV0dXJuOyIpO0w9dHlwZW9mIE5bT109PT0iZnVuY3Rpb24ifXJldHVybiBMfTthbS5zdXBw b3J0LnN1Ym1pdEJ1YmJsZXM9cigic3VibWl0Iik7YW0uc3VwcG9ydC5jaGFuZ2VCdWJibGVzPXIoImNo YW5nZSIpO3I9Yz1KPUc9ej1udWxsfX0pKCk7YW0ucHJvcHM9eyJmb3IiOiJodG1sRm9yIiwiY2xhc3Mi OiJjbGFzc05hbWUiLHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxz cGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdGFi aW5kZXg6InRhYkluZGV4Iix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6ImZyYW1lQm9yZGVyIn07 dmFyIGFNPSJqUXVlcnkiK2FLKCksYVc9MCxiPXt9LGF0PXt9O2FtLmV4dGVuZCh7Y2FjaGU6e30sZXhw YW5kbzphTSxub0RhdGE6e2VtYmVkOnRydWUsb2JqZWN0OnRydWUsYXBwbGV0OnRydWV9LGRhdGE6ZnVu Y3Rpb24ocixjLEYpe2lmKCEoci5ub2RlTmFtZSYmYW0ubm9EYXRhW3Iubm9kZU5hbWUudG9Mb3dlckNh c2UoKV0pKXtyPXI9PWFjP2I6cjt2YXIgdj1yW2FNXSx6PWFtLmNhY2hlO2lmKCFjJiYhdil7cmV0dXJu IG51bGx9dnx8KHY9KythVyk7aWYodHlwZW9mIGM9PT0ib2JqZWN0Iil7clthTV09djt6PXpbdl09YW0u ZXh0ZW5kKHRydWUse30sYyl9ZWxzZXt6PXpbdl0/elt2XTp0eXBlb2YgRj09PSJ1bmRlZmluZWQiP2F0 Oih6W3ZdPXt9KX1pZihGIT09YWUpe3JbYU1dPXY7eltjXT1GfXJldHVybiB0eXBlb2YgYz09PSJzdHJp bmciP3pbY106en19LHJlbW92ZURhdGE6ZnVuY3Rpb24ocixjKXtpZighKHIubm9kZU5hbWUmJmFtLm5v RGF0YVtyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSl7cj1yPT1hYz9iOnI7dmFyIEc9clthTV0sej1h bS5jYWNoZSxGPXpbR107aWYoYyl7aWYoRil7ZGVsZXRlIEZbY107YW0uaXNFbXB0eU9iamVjdChGKSYm YW0ucmVtb3ZlRGF0YShyKX19ZWxzZXt0cnl7ZGVsZXRlIHJbYU1dfWNhdGNoKHYpe3IucmVtb3ZlQXR0 cmlidXRlJiZyLnJlbW92ZUF0dHJpYnV0ZShhTSl9ZGVsZXRlIHpbR119fX19KTthbS5mbi5leHRlbmQo e2RhdGE6ZnVuY3Rpb24ocixjKXtpZih0eXBlb2Ygcj09PSJ1bmRlZmluZWQiJiZ0aGlzLmxlbmd0aCl7 cmV0dXJuIGFtLmRhdGEodGhpc1swXSl9ZWxzZXtpZih0eXBlb2Ygcj09PSJvYmplY3QiKXtyZXR1cm4g dGhpcy5lYWNoKGZ1bmN0aW9uKCl7YW0uZGF0YSh0aGlzLHIpfSl9fXZhciB6PXIuc3BsaXQoIi4iKTt6 WzFdPXpbMV0/Ii4iK3pbMV06IiI7aWYoYz09PWFlKXt2YXIgdj10aGlzLnRyaWdnZXJIYW5kbGVyKCJn ZXREYXRhIit6WzFdKyIhIixbelswXV0pO2lmKHY9PT1hZSYmdGhpcy5sZW5ndGgpe3Y9YW0uZGF0YSh0 aGlzWzBdLHIpfXJldHVybiB2PT09YWUmJnpbMV0/dGhpcy5kYXRhKHpbMF0pOnZ9ZWxzZXtyZXR1cm4g dGhpcy50cmlnZ2VyKCJzZXREYXRhIit6WzFdKyIhIixbelswXSxjXSkuZWFjaChmdW5jdGlvbigpe2Ft LmRhdGEodGhpcyxyLGMpfSl9fSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmVhY2go ZnVuY3Rpb24oKXthbS5yZW1vdmVEYXRhKHRoaXMsYyl9KX19KTthbS5leHRlbmQoe3F1ZXVlOmZ1bmN0 aW9uKHIsYyx6KXtpZihyKXtjPShjfHwiZngiKSsicXVldWUiO3ZhciB2PWFtLmRhdGEocixjKTtpZigh eil7cmV0dXJuIHZ8fFtdfWlmKCF2fHxhbS5pc0FycmF5KHopKXt2PWFtLmRhdGEocixjLGFtLm1ha2VB cnJheSh6KSl9ZWxzZXt2LnB1c2goeil9cmV0dXJuIHZ9fSxkZXF1ZXVlOmZ1bmN0aW9uKHIsYyl7Yz1j fHwiZngiO3ZhciB6PWFtLnF1ZXVlKHIsYyksdj16LnNoaWZ0KCk7aWYodj09PSJpbnByb2dyZXNzIil7 dj16LnNoaWZ0KCl9aWYodil7Yz09PSJmeCImJnoudW5zaGlmdCgiaW5wcm9ncmVzcyIpO3YuY2FsbChy LGZ1bmN0aW9uKCl7YW0uZGVxdWV1ZShyLGMpfSl9fX0pO2FtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rp b24ocixjKXtpZih0eXBlb2YgciE9PSJzdHJpbmciKXtjPXI7cj0iZngifWlmKGM9PT1hZSl7cmV0dXJu IGFtLnF1ZXVlKHRoaXNbMF0scil9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB2PWFtLnF1 ZXVlKHRoaXMscixjKTtyPT09ImZ4IiYmdlswXSE9PSJpbnByb2dyZXNzIiYmYW0uZGVxdWV1ZSh0aGlz LHIpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2FtLmRl cXVldWUodGhpcyxjKX0pfSxkZWxheTpmdW5jdGlvbihyLGMpe3I9YW0uZng/YW0uZnguc3BlZWRzW3Jd fHxyOnI7Yz1jfHwiZngiO3JldHVybiB0aGlzLnF1ZXVlKGMsZnVuY3Rpb24oKXt2YXIgdj10aGlzO3Nl dFRpbWVvdXQoZnVuY3Rpb24oKXthbS5kZXF1ZXVlKHYsYyl9LHIpfSl9LGNsZWFyUXVldWU6ZnVuY3Rp b24oYyl7cmV0dXJuIHRoaXMucXVldWUoY3x8ImZ4IixbXSl9fSk7dmFyIGE5PS9bXG5cdF0vZyxhaD0v XHMrLyxhZD0vXHIvZyx4PS9ocmVmfHNyY3xzdHlsZS8sZT0vKGJ1dHRvbnxpbnB1dCkvaSxiZD0vKGJ1 dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pLGFSPS9eKGF8YXJlYSkkL2ksYVY9L3Jh ZGlvfGNoZWNrYm94LzthbS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24ocixjKXtyZXR1cm4gYXYodGhp cyxyLGMsdHJ1ZSxhbS5hdHRyKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNo KGZ1bmN0aW9uKCl7YW0uYXR0cih0aGlzLGMsIiIpO3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLnJlbW92 ZUF0dHJpYnV0ZShjKX0pfSxhZGRDbGFzczpmdW5jdGlvbihyKXtpZihhbS5pc0Z1bmN0aW9uKHIpKXty ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKE4pe3ZhciBMPWFtKHRoaXMpO0wuYWRkQ2xhc3Moci5jYWxs KHRoaXMsTixMLmF0dHIoImNsYXNzIikpKX0pfWlmKHImJnR5cGVvZiByPT09InN0cmluZyIpe2Zvcih2 YXIgYz0ocnx8IiIpLnNwbGl0KGFoKSxKPTAsRj10aGlzLmxlbmd0aDtKPEY7SisrKXt2YXIgRz10aGlz W0pdO2lmKEcubm9kZVR5cGU9PT0xKXtpZihHLmNsYXNzTmFtZSl7Zm9yKHZhciB6PSIgIitHLmNsYXNz TmFtZSsiICIsdj0wLEs9Yy5sZW5ndGg7djxLO3YrKyl7aWYoei5pbmRleE9mKCIgIitjW3ZdKyIgIik8 MCl7Ry5jbGFzc05hbWUrPSIgIitjW3ZdfX19ZWxzZXtHLmNsYXNzTmFtZT1yfX19fXJldHVybiB0aGlz fSxyZW1vdmVDbGFzczpmdW5jdGlvbihyKXtpZihhbS5pc0Z1bmN0aW9uKHIpKXtyZXR1cm4gdGhpcy5l YWNoKGZ1bmN0aW9uKE4pe3ZhciBMPWFtKHRoaXMpO0wucmVtb3ZlQ2xhc3Moci5jYWxsKHRoaXMsTixM LmF0dHIoImNsYXNzIikpKX0pfWlmKHImJnR5cGVvZiByPT09InN0cmluZyJ8fHI9PT1hZSl7Zm9yKHZh ciBjPShyfHwiIikuc3BsaXQoYWgpLEo9MCxGPXRoaXMubGVuZ3RoO0o8RjtKKyspe3ZhciBHPXRoaXNb Sl07aWYoRy5ub2RlVHlwZT09PTEmJkcuY2xhc3NOYW1lKXtpZihyKXtmb3IodmFyIHo9KCIgIitHLmNs YXNzTmFtZSsiICIpLnJlcGxhY2UoYTksIiAiKSx2PTAsSz1jLmxlbmd0aDt2PEs7disrKXt6PXoucmVw bGFjZSgiICIrY1t2XSsiICIsIiAiKX1HLmNsYXNzTmFtZT16LnN1YnN0cmluZygxLHoubGVuZ3RoLTEp fWVsc2V7Ry5jbGFzc05hbWU9IiJ9fX19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKHIs Yyl7dmFyIHo9dHlwZW9mIHIsdj10eXBlb2YgYz09PSJib29sZWFuIjtpZihhbS5pc0Z1bmN0aW9uKHIp KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKEcpe3ZhciBGPWFtKHRoaXMpO0YudG9nZ2xlQ2xhc3Mo ci5jYWxsKHRoaXMsRyxGLmF0dHIoImNsYXNzIiksYyksYyl9KX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0 aW9uKCl7aWYoej09PSJzdHJpbmciKXtmb3IodmFyIEosRz0wLEY9YW0odGhpcyksTD1jLEs9ci5zcGxp dChhaCk7Sj1LW0crK107KXtMPXY/TDohRi5oYXNDbGFzcyhKKTtGW0w/ImFkZENsYXNzIjoicmVtb3Zl Q2xhc3MiXShKKX19ZWxzZXtpZih6PT09InVuZGVmaW5lZCJ8fHo9PT0iYm9vbGVhbiIpe3RoaXMuY2xh c3NOYW1lJiZhbS5kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKTt0aGlzLmNs YXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8cj09PWZhbHNlPyIiOmFtLmRhdGEodGhpcywiX19jbGFzc05h bWVfXyIpfHwiIn19fSl9LGhhc0NsYXNzOmZ1bmN0aW9uKHIpe3I9IiAiK3IrIiAiO2Zvcih2YXIgYz0w LHY9dGhpcy5sZW5ndGg7Yzx2O2MrKyl7aWYoKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxh Y2UoYTksIiAiKS5pbmRleE9mKHIpPi0xKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIGZhbHNlfSx2YWw6ZnVu Y3Rpb24ocil7aWYocj09PWFlKXt2YXIgYz10aGlzWzBdO2lmKGMpe2lmKGFtLm5vZGVOYW1lKGMsIm9w dGlvbiIpKXtyZXR1cm4oYy5hdHRyaWJ1dGVzLnZhbHVlfHx7fSkuc3BlY2lmaWVkP2MudmFsdWU6Yy50 ZXh0fWlmKGFtLm5vZGVOYW1lKGMsInNlbGVjdCIpKXt2YXIgSj1jLnNlbGVjdGVkSW5kZXgsRj1bXSxH PWMub3B0aW9ucztjPWMudHlwZT09PSJzZWxlY3Qtb25lIjtpZihKPDApe3JldHVybiBudWxsfXZhciB6 PWM/SjowO2ZvcihKPWM/SisxOkcubGVuZ3RoO3o8Sjt6Kyspe3ZhciB2PUdbel07aWYodi5zZWxlY3Rl ZCl7cj1hbSh2KS52YWwoKTtpZihjKXtyZXR1cm4gcn1GLnB1c2gocil9fXJldHVybiBGfWlmKGFWLnRl c3QoYy50eXBlKSYmIWFtLnN1cHBvcnQuY2hlY2tPbil7cmV0dXJuIGMuZ2V0QXR0cmlidXRlKCJ2YWx1 ZSIpPT09bnVsbD8ib24iOmMudmFsdWV9cmV0dXJuKGMudmFsdWV8fCIiKS5yZXBsYWNlKGFkLCIiKX1y ZXR1cm4gYWV9dmFyIEs9YW0uaXNGdW5jdGlvbihyKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKFAp e3ZhciBOPWFtKHRoaXMpLE89cjtpZih0aGlzLm5vZGVUeXBlPT09MSl7aWYoSyl7Tz1yLmNhbGwodGhp cyxQLE4udmFsKCkpfWlmKHR5cGVvZiBPPT09Im51bWJlciIpe08rPSIifWlmKGFtLmlzQXJyYXkoTykm JmFWLnRlc3QodGhpcy50eXBlKSl7dGhpcy5jaGVja2VkPWFtLmluQXJyYXkoTi52YWwoKSxPKT49MH1l bHNle2lmKGFtLm5vZGVOYW1lKHRoaXMsInNlbGVjdCIpKXt2YXIgTD1hbS5tYWtlQXJyYXkoTyk7YW0o Im9wdGlvbiIsdGhpcykuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9YW0uaW5BcnJheShhbSh0 aGlzKS52YWwoKSxMKT49MH0pO2lmKCFMLmxlbmd0aCl7dGhpcy5zZWxlY3RlZEluZGV4PS0xfX1lbHNl e3RoaXMudmFsdWU9T319fX0pfX0pO2FtLmV4dGVuZCh7YXR0ckZuOnt2YWw6dHJ1ZSxjc3M6dHJ1ZSxo dG1sOnRydWUsdGV4dDp0cnVlLGRhdGE6dHJ1ZSx3aWR0aDp0cnVlLGhlaWdodDp0cnVlLG9mZnNldDp0 cnVlfSxhdHRyOmZ1bmN0aW9uKHIsYyxHLHope2lmKCFyfHxyLm5vZGVUeXBlPT09M3x8ci5ub2RlVHlw ZT09PTgpe3JldHVybiBhZX1pZih6JiZjIGluIGFtLmF0dHJGbil7cmV0dXJuIGFtKHIpW2NdKEcpfXo9 ci5ub2RlVHlwZSE9PTF8fCFhbS5pc1hNTERvYyhyKTt2YXIgRj1HIT09YWU7Yz16JiZhbS5wcm9wc1tj XXx8YztpZihyLm5vZGVUeXBlPT09MSl7dmFyIHY9eC50ZXN0KGMpO2lmKGMgaW4gciYmeiYmIXYpe2lm KEYpe2M9PT0idHlwZSImJmUudGVzdChyLm5vZGVOYW1lKSYmci5wYXJlbnROb2RlJiZhbS5lcnJvcigi dHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7cltjXT1HfWlmKGFtLm5vZGVOYW1lKHIsImZv cm0iKSYmci5nZXRBdHRyaWJ1dGVOb2RlKGMpKXtyZXR1cm4gci5nZXRBdHRyaWJ1dGVOb2RlKGMpLm5v ZGVWYWx1ZX1pZihjPT09InRhYkluZGV4Iil7cmV0dXJuKGM9ci5nZXRBdHRyaWJ1dGVOb2RlKCJ0YWJJ bmRleCIpKSYmYy5zcGVjaWZpZWQ/Yy52YWx1ZTpiZC50ZXN0KHIubm9kZU5hbWUpfHxhUi50ZXN0KHIu bm9kZU5hbWUpJiZyLmhyZWY/MDphZX1yZXR1cm4gcltjXX1pZighYW0uc3VwcG9ydC5zdHlsZSYmeiYm Yz09PSJzdHlsZSIpe2lmKEYpe3Iuc3R5bGUuY3NzVGV4dD0iIitHfXJldHVybiByLnN0eWxlLmNzc1Rl eHR9RiYmci5zZXRBdHRyaWJ1dGUoYywiIitHKTtyPSFhbS5zdXBwb3J0LmhyZWZOb3JtYWxpemVkJiZ6 JiZ2P3IuZ2V0QXR0cmlidXRlKGMsMik6ci5nZXRBdHRyaWJ1dGUoYyk7cmV0dXJuIHI9PT1udWxsP2Fl OnJ9cmV0dXJuIGFtLnN0eWxlKHIsYyxHKX19KTt2YXIgYVg9ZnVuY3Rpb24oYyl7cmV0dXJuIGMucmVw bGFjZSgvW15cd1xzXC5cfGBdL2csZnVuY3Rpb24ocil7cmV0dXJuIlxcIityfSl9O2FtLmV2ZW50PXth ZGQ6ZnVuY3Rpb24oTyxMLEssRyl7aWYoIShPLm5vZGVUeXBlPT09M3x8Ty5ub2RlVHlwZT09PTgpKXtp ZihPLnNldEludGVydmFsJiZPIT09YWMmJiFPLmZyYW1lRWxlbWVudCl7Tz1hY31pZighSy5ndWlkKXtL Lmd1aWQ9YW0uZ3VpZCsrfWlmKEchPT1hZSl7Sz1hbS5wcm94eShLKTtLLmRhdGE9R312YXIgSj1hbS5k YXRhKE8sImV2ZW50cyIpfHxhbS5kYXRhKE8sImV2ZW50cyIse30pLEY9YW0uZGF0YShPLCJoYW5kbGUi KSx6O2lmKCFGKXt6PWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBhbSE9PSJ1bmRlZmluZWQiJiYhYW0u ZXZlbnQudHJpZ2dlcmVkP2FtLmV2ZW50LmhhbmRsZS5hcHBseSh6LmVsZW0sYXJndW1lbnRzKTphZX07 Rj1hbS5kYXRhKE8sImhhbmRsZSIseil9aWYoRil7Ri5lbGVtPU87TD1MLnNwbGl0KC9ccysvKTtmb3Io dmFyIHIsYz0wO3I9TFtjKytdOyl7dmFyIHY9ci5zcGxpdCgiLiIpO3I9di5zaGlmdCgpO2lmKGM+MSl7 Sz1hbS5wcm94eShLKTtpZihHIT09YWUpe0suZGF0YT1HfX1LLnR5cGU9di5zbGljZSgwKS5zb3J0KCku am9pbigiLiIpO3ZhciBQPUpbcl0sTj10aGlzLnNwZWNpYWxbcl18fHt9O2lmKCFQKXtQPUpbcl09e307 aWYoIU4uc2V0dXB8fE4uc2V0dXAuY2FsbChPLEcsdixLKT09PWZhbHNlKXtpZihPLmFkZEV2ZW50TGlz dGVuZXIpe08uYWRkRXZlbnRMaXN0ZW5lcihyLEYsZmFsc2UpfWVsc2V7Ty5hdHRhY2hFdmVudCYmTy5h dHRhY2hFdmVudCgib24iK3IsRil9fX1pZihOLmFkZCl7aWYoKHY9Ti5hZGQuY2FsbChPLEssRyx2LFAp KSYmYW0uaXNGdW5jdGlvbih2KSl7di5ndWlkPXYuZ3VpZHx8Sy5ndWlkO3YuZGF0YT12LmRhdGF8fEsu ZGF0YTt2LnR5cGU9di50eXBlfHxLLnR5cGU7Sz12fX1QW0suZ3VpZF09Szt0aGlzLmdsb2JhbFtyXT10 cnVlfU89bnVsbH19fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKFAsTixMKXtpZighKFAubm9kZVR5 cGU9PT0zfHxQLm5vZGVUeXBlPT09OCkpe3ZhciBKPWFtLmRhdGEoUCwiZXZlbnRzIiksSyxHLEY7aWYo Sil7aWYoTj09PWFlfHx0eXBlb2YgTj09PSJzdHJpbmciJiZOLmNoYXJBdCgwKT09PSIuIil7Zm9yKEcg aW4gSil7dGhpcy5yZW1vdmUoUCxHKyhOfHwiIikpfX1lbHNle2lmKE4udHlwZSl7TD1OLmhhbmRsZXI7 Tj1OLnR5cGV9Tj1OLnNwbGl0KC9ccysvKTtmb3IodmFyIHY9MDtHPU5bdisrXTspe3ZhciByPUcuc3Bs aXQoIi4iKTtHPXIuc2hpZnQoKTt2YXIgej0hci5sZW5ndGgsUT1hbS5tYXAoci5zbGljZSgwKS5zb3J0 KCksYVgpO1E9bmV3IFJlZ0V4cCgiKF58XFwuKSIrUS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58 JCkiKTt2YXIgTz10aGlzLnNwZWNpYWxbR118fHt9O2lmKEpbR10pe2lmKEwpe0Y9SltHXVtMLmd1aWRd O2RlbGV0ZSBKW0ddW0wuZ3VpZF19ZWxzZXtmb3IodmFyIGMgaW4gSltHXSl7aWYoenx8US50ZXN0KEpb R11bY10udHlwZSkpe2RlbGV0ZSBKW0ddW2NdfX19Ty5yZW1vdmUmJk8ucmVtb3ZlLmNhbGwoUCxyLEYp O2ZvcihLIGluIEpbR10pe2JyZWFrfWlmKCFLKXtpZighTy50ZWFyZG93bnx8Ty50ZWFyZG93bi5jYWxs KFAscik9PT1mYWxzZSl7aWYoUC5yZW1vdmVFdmVudExpc3RlbmVyKXtQLnJlbW92ZUV2ZW50TGlzdGVu ZXIoRyxhbS5kYXRhKFAsImhhbmRsZSIpLGZhbHNlKX1lbHNle1AuZGV0YWNoRXZlbnQmJlAuZGV0YWNo RXZlbnQoIm9uIitHLGFtLmRhdGEoUCwiaGFuZGxlIikpfX1LPW51bGw7ZGVsZXRlIEpbR119fX19Zm9y KEsgaW4gSil7YnJlYWt9aWYoIUspe2lmKGM9YW0uZGF0YShQLCJoYW5kbGUiKSl7Yy5lbGVtPW51bGx9 YW0ucmVtb3ZlRGF0YShQLCJldmVudHMiKTthbS5yZW1vdmVEYXRhKFAsImhhbmRsZSIpfX19fSx0cmln Z2VyOmZ1bmN0aW9uKHIsYyxKLEYpe3ZhciBHPXIudHlwZXx8cjtpZighRil7cj10eXBlb2Ygcj09PSJv YmplY3QiP3JbYU1dP3I6YW0uZXh0ZW5kKGFtLkV2ZW50KEcpLHIpOmFtLkV2ZW50KEcpO2lmKEcuaW5k ZXhPZigiISIpPj0wKXtyLnR5cGU9Rz1HLnNsaWNlKDAsLTEpO3IuZXhjbHVzaXZlPXRydWV9aWYoIUop e3Iuc3RvcFByb3BhZ2F0aW9uKCk7dGhpcy5nbG9iYWxbR10mJmFtLmVhY2goYW0uY2FjaGUsZnVuY3Rp b24oKXt0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbR10mJmFtLmV2ZW50LnRyaWdnZXIocixjLHRoaXMu aGFuZGxlLmVsZW0pfSl9aWYoIUp8fEoubm9kZVR5cGU9PT0zfHxKLm5vZGVUeXBlPT09OCl7cmV0dXJu IGFlfXIucmVzdWx0PWFlO3IudGFyZ2V0PUo7Yz1hbS5tYWtlQXJyYXkoYyk7Yy51bnNoaWZ0KHIpfXIu Y3VycmVudFRhcmdldD1KOyhGPWFtLmRhdGEoSiwiaGFuZGxlIikpJiZGLmFwcGx5KEosYyk7Rj1KLnBh cmVudE5vZGV8fEoub3duZXJEb2N1bWVudDt0cnl7aWYoIShKJiZKLm5vZGVOYW1lJiZhbS5ub0RhdGFb Si5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkpe2lmKEpbIm9uIitHXSYmSlsib24iK0ddLmFwcGx5KEos Yyk9PT1mYWxzZSl7ci5yZXN1bHQ9ZmFsc2V9fX1jYXRjaCh6KXt9aWYoIXIuaXNQcm9wYWdhdGlvblN0 b3BwZWQoKSYmRil7YW0uZXZlbnQudHJpZ2dlcihyLGMsRix0cnVlKX1lbHNle2lmKCFyLmlzRGVmYXVs dFByZXZlbnRlZCgpKXtKPXIudGFyZ2V0O3ZhciB2O2lmKCEoYW0ubm9kZU5hbWUoSiwiYSIpJiZHPT09 ImNsaWNrIikmJiEoSiYmSi5ub2RlTmFtZSYmYW0ubm9EYXRhW0oubm9kZU5hbWUudG9Mb3dlckNhc2Uo KV0pKXt0cnl7aWYoSltHXSl7aWYodj1KWyJvbiIrR10pe0pbIm9uIitHXT1udWxsfXRoaXMudHJpZ2dl cmVkPXRydWU7SltHXSgpfX1jYXRjaChLKXt9aWYodil7Slsib24iK0ddPXZ9dGhpcy50cmlnZ2VyZWQ9 ZmFsc2V9fX19LGhhbmRsZTpmdW5jdGlvbihyKXt2YXIgYyxHO3I9YXJndW1lbnRzWzBdPWFtLmV2ZW50 LmZpeChyfHxhYy5ldmVudCk7ci5jdXJyZW50VGFyZ2V0PXRoaXM7Rz1yLnR5cGUuc3BsaXQoIi4iKTty LnR5cGU9Ry5zaGlmdCgpO2M9IUcubGVuZ3RoJiYhci5leGNsdXNpdmU7dmFyIHo9bmV3IFJlZ0V4cCgi KF58XFwuKSIrRy5zbGljZSgwKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik7 Rz0oYW0uZGF0YSh0aGlzLCJldmVudHMiKXx8e30pW3IudHlwZV07Zm9yKHZhciBGIGluIEcpe3ZhciB2 PUdbRl07aWYoY3x8ei50ZXN0KHYudHlwZSkpe3IuaGFuZGxlcj12O3IuZGF0YT12LmRhdGE7dj12LmFw cGx5KHRoaXMsYXJndW1lbnRzKTtpZih2IT09YWUpe3IucmVzdWx0PXY7aWYodj09PWZhbHNlKXtyLnBy ZXZlbnREZWZhdWx0KCk7ci5zdG9wUHJvcGFnYXRpb24oKX19aWYoci5pc0ltbWVkaWF0ZVByb3BhZ2F0 aW9uU3RvcHBlZCgpKXticmVha319fXJldHVybiByLnJlc3VsdH0scHJvcHM6ImFsdEtleSBhdHRyQ2hh bmdlIGF0dHJOYW1lIGJ1YmJsZXMgYnV0dG9uIGNhbmNlbGFibGUgY2hhckNvZGUgY2xpZW50WCBjbGll bnRZIGN0cmxLZXkgY3VycmVudFRhcmdldCBkYXRhIGRldGFpbCBldmVudFBoYXNlIGZyb21FbGVtZW50 IGhhbmRsZXIga2V5Q29kZSBsYXllclggbGF5ZXJZIG1ldGFLZXkgbmV3VmFsdWUgb2Zmc2V0WCBvZmZz ZXRZIG9yaWdpbmFsVGFyZ2V0IHBhZ2VYIHBhZ2VZIHByZXZWYWx1ZSByZWxhdGVkTm9kZSByZWxhdGVk VGFyZ2V0IHNjcmVlblggc2NyZWVuWSBzaGlmdEtleSBzcmNFbGVtZW50IHRhcmdldCB0b0VsZW1lbnQg dmlldyB3aGVlbERlbHRhIHdoaWNoIi5zcGxpdCgiICIpLGZpeDpmdW5jdGlvbihyKXtpZihyW2FNXSl7 cmV0dXJuIHJ9dmFyIGM9cjtyPWFtLkV2ZW50KGMpO2Zvcih2YXIgej10aGlzLnByb3BzLmxlbmd0aCx2 O3o7KXt2PXRoaXMucHJvcHNbLS16XTtyW3ZdPWNbdl19aWYoIXIudGFyZ2V0KXtyLnRhcmdldD1yLnNy Y0VsZW1lbnR8fGFmfWlmKHIudGFyZ2V0Lm5vZGVUeXBlPT09Myl7ci50YXJnZXQ9ci50YXJnZXQucGFy ZW50Tm9kZX1pZighci5yZWxhdGVkVGFyZ2V0JiZyLmZyb21FbGVtZW50KXtyLnJlbGF0ZWRUYXJnZXQ9 ci5mcm9tRWxlbWVudD09PXIudGFyZ2V0P3IudG9FbGVtZW50OnIuZnJvbUVsZW1lbnR9aWYoci5wYWdl WD09bnVsbCYmci5jbGllbnRYIT1udWxsKXtjPWFmLmRvY3VtZW50RWxlbWVudDt6PWFmLmJvZHk7ci5w YWdlWD1yLmNsaWVudFgrKGMmJmMuc2Nyb2xsTGVmdHx8eiYmei5zY3JvbGxMZWZ0fHwwKS0oYyYmYy5j bGllbnRMZWZ0fHx6JiZ6LmNsaWVudExlZnR8fDApO3IucGFnZVk9ci5jbGllbnRZKyhjJiZjLnNjcm9s bFRvcHx8eiYmei5zY3JvbGxUb3B8fDApLShjJiZjLmNsaWVudFRvcHx8eiYmei5jbGllbnRUb3B8fDAp fWlmKCFyLndoaWNoJiYoci5jaGFyQ29kZXx8ci5jaGFyQ29kZT09PTA/ci5jaGFyQ29kZTpyLmtleUNv ZGUpKXtyLndoaWNoPXIuY2hhckNvZGV8fHIua2V5Q29kZX1pZighci5tZXRhS2V5JiZyLmN0cmxLZXkp e3IubWV0YUtleT1yLmN0cmxLZXl9aWYoIXIud2hpY2gmJnIuYnV0dG9uIT09YWUpe3Iud2hpY2g9ci5i dXR0b24mMT8xOnIuYnV0dG9uJjI/MzpyLmJ1dHRvbiY0PzI6MH1yZXR1cm4gcn0sZ3VpZDoxMDAwMDAw MDAscHJveHk6YW0ucHJveHksc3BlY2lhbDp7cmVhZHk6e3NldHVwOmFtLmJpbmRSZWFkeSx0ZWFyZG93 bjphbS5ub29wfSxsaXZlOnthZGQ6ZnVuY3Rpb24ocixjKXthbS5leHRlbmQocixjfHx7fSk7ci5ndWlk Kz1jLnNlbGVjdG9yK2MubGl2ZTtjLmxpdmVQcm94eT1yO2FtLmV2ZW50LmFkZCh0aGlzLGMubGl2ZSxh UCxjKX0scmVtb3ZlOmZ1bmN0aW9uKHIpe2lmKHIubGVuZ3RoKXt2YXIgYz0wLHY9bmV3IFJlZ0V4cCgi KF58XFwuKSIrclswXSsiKFxcLnwkKSIpO2FtLmVhY2goYW0uZGF0YSh0aGlzLCJldmVudHMiKS5saXZl fHx7fSxmdW5jdGlvbigpe3YudGVzdCh0aGlzLnR5cGUpJiZjKyt9KTtjPDEmJmFtLmV2ZW50LnJlbW92 ZSh0aGlzLHJbMF0sYVApfX0sc3BlY2lhbDp7fX0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihy LGMsdil7aWYodGhpcy5zZXRJbnRlcnZhbCl7dGhpcy5vbmJlZm9yZXVubG9hZD12fXJldHVybiBmYWxz ZX0sdGVhcmRvd246ZnVuY3Rpb24ocixjKXtpZih0aGlzLm9uYmVmb3JldW5sb2FkPT09Yyl7dGhpcy5v bmJlZm9yZXVubG9hZD1udWxsfX19fX07YW0uRXZlbnQ9ZnVuY3Rpb24oYyl7aWYoIXRoaXMucHJldmVu dERlZmF1bHQpe3JldHVybiBuZXcgYW0uRXZlbnQoYyl9aWYoYyYmYy50eXBlKXt0aGlzLm9yaWdpbmFs RXZlbnQ9Yzt0aGlzLnR5cGU9Yy50eXBlfWVsc2V7dGhpcy50eXBlPWN9dGhpcy50aW1lU3RhbXA9YUso KTt0aGlzW2FNXT10cnVlfTthbS5FdmVudC5wcm90b3R5cGU9e3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9u KCl7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YXI7dmFyIGM9dGhpcy5vcmlnaW5hbEV2ZW50O2lmKGMp e2MucHJldmVudERlZmF1bHQmJmMucHJldmVudERlZmF1bHQoKTtjLnJldHVyblZhbHVlPWZhbHNlfX0s c3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hcjt2YXIg Yz10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoYyl7Yy5zdG9wUHJvcGFnYXRpb24mJmMuc3RvcFByb3BhZ2F0 aW9uKCk7Yy5jYW5jZWxCdWJibGU9dHJ1ZX19LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlv bigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YXI7dGhpcy5zdG9wUHJvcGFnYXRp b24oKX0saXNEZWZhdWx0UHJldmVudGVkOmF1LGlzUHJvcGFnYXRpb25TdG9wcGVkOmF1LGlzSW1tZWRp YXRlUHJvcGFnYXRpb25TdG9wcGVkOmF1fTt2YXIgYmY9ZnVuY3Rpb24ocil7Zm9yKHZhciBjPXIucmVs YXRlZFRhcmdldDtjJiZjIT09dGhpczspe3RyeXtjPWMucGFyZW50Tm9kZX1jYXRjaCh2KXticmVha319 aWYoYyE9PXRoaXMpe3IudHlwZT1yLmRhdGE7YW0uZXZlbnQuaGFuZGxlLmFwcGx5KHRoaXMsYXJndW1l bnRzKX19LGExPWZ1bmN0aW9uKGMpe2MudHlwZT1jLmRhdGE7YW0uZXZlbnQuaGFuZGxlLmFwcGx5KHRo aXMsYXJndW1lbnRzKX07YW0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJt b3VzZW91dCJ9LGZ1bmN0aW9uKHIsYyl7YW0uZXZlbnQuc3BlY2lhbFtyXT17c2V0dXA6ZnVuY3Rpb24o dil7YW0uZXZlbnQuYWRkKHRoaXMsYyx2JiZ2LnNlbGVjdG9yP2ExOmJmLHIpfSx0ZWFyZG93bjpmdW5j dGlvbih2KXthbS5ldmVudC5yZW1vdmUodGhpcyxjLHYmJnYuc2VsZWN0b3I/YTE6YmYpfX19KTtpZigh YW0uc3VwcG9ydC5zdWJtaXRCdWJibGVzKXthbS5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVu Y3Rpb24ocixjLHYpe2lmKHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJmb3JtIil7YW0uZXZl bnQuYWRkKHRoaXMsImNsaWNrLnNwZWNpYWxTdWJtaXQuIit2Lmd1aWQsZnVuY3Rpb24oRil7dmFyIEc9 Ri50YXJnZXQsej1HLnR5cGU7aWYoKHo9PT0ic3VibWl0Inx8ej09PSJpbWFnZSIpJiZhbShHKS5jbG9z ZXN0KCJmb3JtIikubGVuZ3RoKXtyZXR1cm4gYTMoInN1Ym1pdCIsdGhpcyxhcmd1bWVudHMpfX0pO2Ft LmV2ZW50LmFkZCh0aGlzLCJrZXlwcmVzcy5zcGVjaWFsU3VibWl0LiIrdi5ndWlkLGZ1bmN0aW9uKEYp e3ZhciBHPUYudGFyZ2V0LHo9Ry50eXBlO2lmKCh6PT09InRleHQifHx6PT09InBhc3N3b3JkIikmJmFt KEcpLmNsb3Nlc3QoImZvcm0iKS5sZW5ndGgmJkYua2V5Q29kZT09PTEzKXtyZXR1cm4gYTMoInN1Ym1p dCIsdGhpcyxhcmd1bWVudHMpfX0pfWVsc2V7cmV0dXJuIGZhbHNlfX0scmVtb3ZlOmZ1bmN0aW9uKHIs Yyl7YW0uZXZlbnQucmVtb3ZlKHRoaXMsImNsaWNrLnNwZWNpYWxTdWJtaXQiKyhjPyIuIitjLmd1aWQ6 IiIpKTthbS5ldmVudC5yZW1vdmUodGhpcywia2V5cHJlc3Muc3BlY2lhbFN1Ym1pdCIrKGM/Ii4iK2Mu Z3VpZDoiIikpfX19aWYoIWFtLnN1cHBvcnQuY2hhbmdlQnViYmxlcyl7dmFyIEE9L3RleHRhcmVhfGlu cHV0fHNlbGVjdC9pO2Z1bmN0aW9uIGFMKHIpe3ZhciBjPXIudHlwZSx2PXIudmFsdWU7aWYoYz09PSJy YWRpbyJ8fGM9PT0iY2hlY2tib3giKXt2PXIuY2hlY2tlZH1lbHNle2lmKGM9PT0ic2VsZWN0LW11bHRp cGxlIil7dj1yLnNlbGVjdGVkSW5kZXg+LTE/YW0ubWFwKHIub3B0aW9ucyxmdW5jdGlvbih6KXtyZXR1 cm4gei5zZWxlY3RlZH0pLmpvaW4oIi0iKToiIn1lbHNle2lmKHIubm9kZU5hbWUudG9Mb3dlckNhc2Uo KT09PSJzZWxlY3QiKXt2PXIuc2VsZWN0ZWRJbmRleH19fXJldHVybiB2fWZ1bmN0aW9uIGcocixjKXt2 YXIgRj1yLnRhcmdldCx2LHo7aWYoISghQS50ZXN0KEYubm9kZU5hbWUpfHxGLnJlYWRPbmx5KSl7dj1h bS5kYXRhKEYsIl9jaGFuZ2VfZGF0YSIpO3o9YUwoRik7aWYoci50eXBlIT09ImZvY3Vzb3V0Inx8Ri50 eXBlIT09InJhZGlvIil7YW0uZGF0YShGLCJfY2hhbmdlX2RhdGEiLHopfWlmKCEodj09PWFlfHx6PT09 dikpe2lmKHYhPW51bGx8fHope3IudHlwZT0iY2hhbmdlIjtyZXR1cm4gYW0uZXZlbnQudHJpZ2dlcihy LGMsRil9fX19YW0uZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e2ZpbHRlcnM6e2ZvY3Vzb3V0OmcsY2xpY2s6 ZnVuY3Rpb24ocil7dmFyIGM9ci50YXJnZXQsdj1jLnR5cGU7aWYodj09PSJyYWRpbyJ8fHY9PT0iY2hl Y2tib3gifHxjLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0ic2VsZWN0Iil7cmV0dXJuIGcuY2FsbCh0 aGlzLHIpfX0sa2V5ZG93bjpmdW5jdGlvbihyKXt2YXIgYz1yLnRhcmdldCx2PWMudHlwZTtpZihyLmtl eUNvZGU9PT0xMyYmYy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09InRleHRhcmVhInx8ci5rZXlDb2Rl PT09MzImJih2PT09ImNoZWNrYm94Inx8dj09PSJyYWRpbyIpfHx2PT09InNlbGVjdC1tdWx0aXBsZSIp e3JldHVybiBnLmNhbGwodGhpcyxyKX19LGJlZm9yZWFjdGl2YXRlOmZ1bmN0aW9uKGMpe2M9Yy50YXJn ZXQ7Yy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmYy50eXBlPT09InJhZGlvIiYmYW0u ZGF0YShjLCJfY2hhbmdlX2RhdGEiLGFMKGMpKX19LHNldHVwOmZ1bmN0aW9uKHIsYyx6KXtmb3IodmFy IHYgaW4gYXkpe2FtLmV2ZW50LmFkZCh0aGlzLHYrIi5zcGVjaWFsQ2hhbmdlLiIrei5ndWlkLGF5W3Zd KX1yZXR1cm4gQS50ZXN0KHRoaXMubm9kZU5hbWUpfSxyZW1vdmU6ZnVuY3Rpb24ocixjKXtmb3IodmFy IHYgaW4gYXkpe2FtLmV2ZW50LnJlbW92ZSh0aGlzLHYrIi5zcGVjaWFsQ2hhbmdlIisoYz8iLiIrYy5n dWlkOiIiKSxheVt2XSl9cmV0dXJuIEEudGVzdCh0aGlzLm5vZGVOYW1lKX19O3ZhciBheT1hbS5ldmVu dC5zcGVjaWFsLmNoYW5nZS5maWx0ZXJzfWFmLmFkZEV2ZW50TGlzdGVuZXImJmFtLmVhY2goe2ZvY3Vz OiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKHIsYyl7ZnVuY3Rpb24gdih6KXt6PWFt LmV2ZW50LmZpeCh6KTt6LnR5cGU9YztyZXR1cm4gYW0uZXZlbnQuaGFuZGxlLmNhbGwodGhpcyx6KX1h bS5ldmVudC5zcGVjaWFsW2NdPXtzZXR1cDpmdW5jdGlvbigpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcihy LHYsdHJ1ZSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHIsdix0 cnVlKX19fSk7YW0uZWFjaChbImJpbmQiLCJvbmUiXSxmdW5jdGlvbihyLGMpe2FtLmZuW2NdPWZ1bmN0 aW9uKEosRixHKXtpZih0eXBlb2YgSj09PSJvYmplY3QiKXtmb3IodmFyIHogaW4gSil7dGhpc1tjXSh6 LEYsSlt6XSxHKX1yZXR1cm4gdGhpc31pZihhbS5pc0Z1bmN0aW9uKEYpKXtHPUY7Rj1hZX12YXIgdj1j PT09Im9uZSI/YW0ucHJveHkoRyxmdW5jdGlvbihLKXthbSh0aGlzKS51bmJpbmQoSyx2KTtyZXR1cm4g Ry5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KTpHO3JldHVybiBKPT09InVubG9hZCImJmMhPT0ib25lIj90 aGlzLm9uZShKLEYsRyk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7YW0uZXZlbnQuYWRkKHRoaXMsSix2LEYp fSl9fSk7YW0uZm4uZXh0ZW5kKHt1bmJpbmQ6ZnVuY3Rpb24ocixjKXtpZih0eXBlb2Ygcj09PSJvYmpl Y3QiJiYhci5wcmV2ZW50RGVmYXVsdCl7Zm9yKHZhciB2IGluIHIpe3RoaXMudW5iaW5kKHYsclt2XSl9 cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2FtLmV2ZW50LnJlbW92ZSh0aGlz LHIsYyl9KX0sdHJpZ2dlcjpmdW5jdGlvbihyLGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXth bS5ldmVudC50cmlnZ2VyKHIsYyx0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihyLGMpe2lm KHRoaXNbMF0pe3I9YW0uRXZlbnQocik7ci5wcmV2ZW50RGVmYXVsdCgpO3Iuc3RvcFByb3BhZ2F0aW9u KCk7YW0uZXZlbnQudHJpZ2dlcihyLGMsdGhpc1swXSk7cmV0dXJuIHIucmVzdWx0fX0sdG9nZ2xlOmZ1 bmN0aW9uKHIpe2Zvcih2YXIgYz1hcmd1bWVudHMsdj0xO3Y8Yy5sZW5ndGg7KXthbS5wcm94eShyLGNb disrXSl9cmV0dXJuIHRoaXMuY2xpY2soYW0ucHJveHkocixmdW5jdGlvbih6KXt2YXIgRj0oYW0uZGF0 YSh0aGlzLCJsYXN0VG9nZ2xlIityLmd1aWQpfHwwKSV2O2FtLmRhdGEodGhpcywibGFzdFRvZ2dsZSIr ci5ndWlkLEYrMSk7ei5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBjW0ZdLmFwcGx5KHRoaXMsYXJndW1l bnRzKXx8ZmFsc2V9KSl9LGhvdmVyOmZ1bmN0aW9uKHIsYyl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihy KS5tb3VzZWxlYXZlKGN8fHIpfX0pO2FtLmVhY2goWyJsaXZlIiwiZGllIl0sZnVuY3Rpb24ocixjKXth bS5mbltjXT1mdW5jdGlvbihKLEYsRyl7dmFyIHosdj0wO2lmKGFtLmlzRnVuY3Rpb24oRikpe0c9RjtG PWFlfWZvcihKPShKfHwiIikuc3BsaXQoL1xzKy8pOyh6PUpbdisrXSkhPW51bGw7KXt6PXo9PT0iZm9j dXMiPyJmb2N1c2luIjp6PT09ImJsdXIiPyJmb2N1c291dCI6ej09PSJob3ZlciI/Si5wdXNoKCJtb3Vz ZWxlYXZlIikmJiJtb3VzZWVudGVyIjp6O2M9PT0ibGl2ZSI/YW0odGhpcy5jb250ZXh0KS5iaW5kKGFs KHosdGhpcy5zZWxlY3Rvcikse2RhdGE6RixzZWxlY3Rvcjp0aGlzLnNlbGVjdG9yLGxpdmU6en0sRyk6 YW0odGhpcy5jb250ZXh0KS51bmJpbmQoYWwoeix0aGlzLnNlbGVjdG9yKSxHP3tndWlkOkcuZ3VpZCt0 aGlzLnNlbGVjdG9yK3p9Om51bGwpfXJldHVybiB0aGlzfX0pO2FtLmVhY2goImJsdXIgZm9jdXMgZm9j dXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNl ZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxl YXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IiLnNwbGl0 KCIgIiksZnVuY3Rpb24ocixjKXthbS5mbltjXT1mdW5jdGlvbih2KXtyZXR1cm4gdj90aGlzLmJpbmQo Yyx2KTp0aGlzLnRyaWdnZXIoYyl9O2lmKGFtLmF0dHJGbil7YW0uYXR0ckZuW2NdPXRydWV9fSk7YWMu YXR0YWNoRXZlbnQmJiFhYy5hZGRFdmVudExpc3RlbmVyJiZhYy5hdHRhY2hFdmVudCgib251bmxvYWQi LGZ1bmN0aW9uKCl7Zm9yKHZhciByIGluIGFtLmNhY2hlKXtpZihhbS5jYWNoZVtyXS5oYW5kbGUpe3Ry eXthbS5ldmVudC5yZW1vdmUoYW0uY2FjaGVbcl0uaGFuZGxlLmVsZW0pfWNhdGNoKGMpe319fX0pOyhm dW5jdGlvbigpe2Z1bmN0aW9uIFgoYWIpe2Zvcih2YXIgYWE9IiIsWixZPTA7YWJbWV07WSsrKXtaPWFi W1ldO2lmKFoubm9kZVR5cGU9PT0zfHxaLm5vZGVUeXBlPT09NCl7YWErPVoubm9kZVZhbHVlfWVsc2V7 aWYoWi5ub2RlVHlwZSE9PTgpe2FhKz1YKFouY2hpbGROb2Rlcyl9fX1yZXR1cm4gYWF9ZnVuY3Rpb24g VyhiYixiYSxhYixhYSxZLFope1k9MDtmb3IodmFyIGJuPWFhLmxlbmd0aDtZPGJuO1krKyl7dmFyIGJv PWFhW1ldO2lmKGJvKXtibz1ib1tiYl07Zm9yKHZhciBibT1mYWxzZTtibzspe2lmKGJvLnNpemNhY2hl PT09YWIpe2JtPWFhW2JvLnNpenNldF07YnJlYWt9aWYoYm8ubm9kZVR5cGU9PT0xJiYhWil7Ym8uc2l6 Y2FjaGU9YWI7Ym8uc2l6c2V0PVl9aWYoYm8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJhKXtibT1i bzticmVha31ibz1ib1tiYl19YWFbWV09Ym19fX1mdW5jdGlvbiBWKGJiLGJhLGFiLGFhLFksWil7WT0w O2Zvcih2YXIgYm49YWEubGVuZ3RoO1k8Ym47WSsrKXt2YXIgYm89YWFbWV07aWYoYm8pe2JvPWJvW2Ji XTtmb3IodmFyIGJtPWZhbHNlO2JvOyl7aWYoYm8uc2l6Y2FjaGU9PT1hYil7Ym09YWFbYm8uc2l6c2V0 XTticmVha31pZihiby5ub2RlVHlwZT09PTEpe2lmKCFaKXtiby5zaXpjYWNoZT1hYjtiby5zaXpzZXQ9 WX1pZih0eXBlb2YgYmEhPT0ic3RyaW5nIil7aWYoYm89PT1iYSl7Ym09dHJ1ZTticmVha319ZWxzZXtp ZihLLmZpbHRlcihiYSxbYm9dKS5sZW5ndGg+MCl7Ym09Ym87YnJlYWt9fX1ibz1ib1tiYl19YWFbWV09 Ym19fX12YXIgUz0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18 WyciXVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMq LFxzKik/KCg/Oi58XHJ8XG4pKikvZyxUPTAsUT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFA9ZmFs c2UsTj10cnVlO1swLDBdLnNvcnQoZnVuY3Rpb24oKXtOPWZhbHNlO3JldHVybiAwfSk7dmFyIEs9ZnVu Y3Rpb24oYm4sYm0sYmEsYWIpe2JhPWJhfHxbXTt2YXIgWj1ibT1ibXx8YWY7aWYoYm0ubm9kZVR5cGUh PT0xJiZibS5ub2RlVHlwZSE9PTkpe3JldHVybltdfWlmKCFibnx8dHlwZW9mIGJuIT09InN0cmluZyIp e3JldHVybiBiYX1mb3IodmFyIGFhPVtdLGJzLGJ0LGJwLGJiLGJyPXRydWUsYm89cihibSksYnE9Ym47 KFMuZXhlYygiIiksYnM9Uy5leGVjKGJxKSkhPT1udWxsOyl7YnE9YnNbM107YWEucHVzaChic1sxXSk7 aWYoYnNbMl0pe2JiPWJzWzNdO2JyZWFrfX1pZihhYS5sZW5ndGg+MSYmei5leGVjKGJuKSl7aWYoYWEu bGVuZ3RoPT09MiYmTy5yZWxhdGl2ZVthYVswXV0pe2J0PUwoYWFbMF0rYWFbMV0sYm0pfWVsc2V7Zm9y KGJ0PU8ucmVsYXRpdmVbYWFbMF1dP1tibV06SyhhYS5zaGlmdCgpLGJtKTthYS5sZW5ndGg7KXtibj1h YS5zaGlmdCgpO2lmKE8ucmVsYXRpdmVbYm5dKXtibis9YWEuc2hpZnQoKX1idD1MKGJuLGJ0KX19fWVs c2V7aWYoIWFiJiZhYS5sZW5ndGg+MSYmYm0ubm9kZVR5cGU9PT05JiYhYm8mJk8ubWF0Y2guSUQudGVz dChhYVswXSkmJiFPLm1hdGNoLklELnRlc3QoYWFbYWEubGVuZ3RoLTFdKSl7YnM9Sy5maW5kKGFhLnNo aWZ0KCksYm0sYm8pO2JtPWJzLmV4cHI/Sy5maWx0ZXIoYnMuZXhwcixicy5zZXQpWzBdOmJzLnNldFsw XX1pZihibSl7YnM9YWI/e2V4cHI6YWEucG9wKCksc2V0OkooYWIpfTpLLmZpbmQoYWEucG9wKCksYWEu bGVuZ3RoPT09MSYmKGFhWzBdPT09In4ifHxhYVswXT09PSIrIikmJmJtLnBhcmVudE5vZGU/Ym0ucGFy ZW50Tm9kZTpibSxibyk7YnQ9YnMuZXhwcj9LLmZpbHRlcihicy5leHByLGJzLnNldCk6YnMuc2V0O2lm KGFhLmxlbmd0aD4wKXticD1KKGJ0KX1lbHNle2JyPWZhbHNlfWZvcig7YWEubGVuZ3RoOyl7dmFyIFk9 YWEucG9wKCk7YnM9WTtpZihPLnJlbGF0aXZlW1ldKXticz1hYS5wb3AoKX1lbHNle1k9IiJ9aWYoYnM9 PW51bGwpe2JzPWJtfU8ucmVsYXRpdmVbWV0oYnAsYnMsYm8pfX1lbHNle2JwPVtdfX1icHx8KGJwPWJ0 KTticHx8Sy5lcnJvcihZfHxibik7aWYoUS5jYWxsKGJwKT09PSJbb2JqZWN0IEFycmF5XSIpe2lmKGJy KXtpZihibSYmYm0ubm9kZVR5cGU9PT0xKXtmb3IoYm49MDticFtibl0hPW51bGw7Ym4rKyl7aWYoYnBb Ym5dJiYoYnBbYm5dPT09dHJ1ZXx8YnBbYm5dLm5vZGVUeXBlPT09MSYmdihibSxicFtibl0pKSl7YmEu cHVzaChidFtibl0pfX19ZWxzZXtmb3IoYm49MDticFtibl0hPW51bGw7Ym4rKyl7YnBbYm5dJiZicFti bl0ubm9kZVR5cGU9PT0xJiZiYS5wdXNoKGJ0W2JuXSl9fX1lbHNle2JhLnB1c2guYXBwbHkoYmEsYnAp fX1lbHNle0ooYnAsYmEpfWlmKGJiKXtLKGJiLFosYmEsYWIpO0sudW5pcXVlU29ydChiYSl9cmV0dXJu IGJhfTtLLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oWil7aWYoRil7UD1OO1ouc29ydChGKTtpZihQKXtmb3Io dmFyIFk9MTtZPFoubGVuZ3RoO1krKyl7WltZXT09PVpbWS0xXSYmWi5zcGxpY2UoWS0tLDEpfX19cmV0 dXJuIFp9O0subWF0Y2hlcz1mdW5jdGlvbihaLFkpe3JldHVybiBLKFosbnVsbCxudWxsLFkpfTtLLmZp bmQ9ZnVuY3Rpb24oYmIsYmEsYWIpe3ZhciBhYSxZO2lmKCFiYil7cmV0dXJuW119Zm9yKHZhciBaPTAs Ym49Ty5vcmRlci5sZW5ndGg7WjxibjtaKyspe3ZhciBibz1PLm9yZGVyW1pdO2lmKFk9Ty5sZWZ0TWF0 Y2hbYm9dLmV4ZWMoYmIpKXt2YXIgYm09WVsxXTtZLnNwbGljZSgxLDEpO2lmKGJtLnN1YnN0cihibS5s ZW5ndGgtMSkhPT0iXFwiKXtZWzFdPShZWzFdfHwiIikucmVwbGFjZSgvXFwvZywiIik7YWE9Ty5maW5k W2JvXShZLGJhLGFiKTtpZihhYSE9bnVsbCl7YmI9YmIucmVwbGFjZShPLm1hdGNoW2JvXSwiIik7YnJl YWt9fX19YWF8fChhYT1iYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTtyZXR1cm57c2V0OmFhLGV4 cHI6YmJ9fTtLLmZpbHRlcj1mdW5jdGlvbihicCxibyxibSxiYil7Zm9yKHZhciBaPWJwLGFiPVtdLGJ1 PWJvLGJ2LGJyLGJuPWJvJiZib1swXSYmcihib1swXSk7YnAmJmJvLmxlbmd0aDspe2Zvcih2YXIgYnQg aW4gTy5maWx0ZXIpe2lmKChidj1PLmxlZnRNYXRjaFtidF0uZXhlYyhicCkpIT1udWxsJiZidlsyXSl7 dmFyIGJxPU8uZmlsdGVyW2J0XSxicyxZO1k9YnZbMV07YnI9ZmFsc2U7YnYuc3BsaWNlKDEsMSk7aWYo WS5zdWJzdHIoWS5sZW5ndGgtMSkhPT0iXFwiKXtpZihidT09PWFiKXthYj1bXX1pZihPLnByZUZpbHRl cltidF0pe2lmKGJ2PU8ucHJlRmlsdGVyW2J0XShidixidSxibSxhYixiYixibikpe2lmKGJ2PT09dHJ1 ZSl7Y29udGludWV9fWVsc2V7YnI9YnM9dHJ1ZX19aWYoYnYpe2Zvcih2YXIgYmE9MDsoWT1idVtiYV0p IT1udWxsO2JhKyspe2lmKFkpe2JzPWJxKFksYnYsYmEsYnUpO3ZhciBhYT1iYl4hIWJzO2lmKGJtJiZi cyE9bnVsbCl7aWYoYWEpe2JyPXRydWV9ZWxzZXtidVtiYV09ZmFsc2V9fWVsc2V7aWYoYWEpe2FiLnB1 c2goWSk7YnI9dHJ1ZX19fX19aWYoYnMhPT1hZSl7Ym18fChidT1hYik7YnA9YnAucmVwbGFjZShPLm1h dGNoW2J0XSwiIik7aWYoIWJyKXtyZXR1cm5bXX1icmVha319fX1pZihicD09PVope2lmKGJyPT1udWxs KXtLLmVycm9yKGJwKX1lbHNle2JyZWFrfX1aPWJwfXJldHVybiBidX07Sy5lcnJvcj1mdW5jdGlvbihZ KXt0aHJvdyJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK1l9O3ZhciBPPUsu c2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdcdTAw YzAtXHVGRkZGLV18XFwuKSspLyxDTEFTUzovXC4oKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikrKS8s TkFNRTovXFtuYW1lPVsnIl0qKCg/Oltcd1x1MDBjMC1cdUZGRkYtXXxcXC4pKylbJyJdKlxdLyxBVFRS Oi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspXHMqKD86KFxTPz0pXHMqKFsnIl0qKSgu Kj8pXDN8KVxzKlxdLyxUQUc6L14oKD86W1x3XHUwMGMwLVx1RkZGRlwqLV18XFwuKSspLyxDSElMRDov Oihvbmx5fG50aHxsYXN0fGZpcnN0KS1jaGlsZCg/OlwoKGV2ZW58b2RkfFtcZG4rLV0qKVwpKT8vLFBP UzovOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFzdHxldmVufG9kZCkoPzpcKChcZCopXCkpPyg/PVteLV18 JCkvLFBTRVVETzovOigoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspKD86XCgoWyciXT8pKCg/Olwo W15cKV0rXCl8W15cKFwpXSopKylcMlwpKT8vfSxsZWZ0TWF0Y2g6e30sYXR0ck1hcDp7ImNsYXNzIjoi Y2xhc3NOYW1lIiwiZm9yIjoiaHRtbEZvciJ9LGF0dHJIYW5kbGU6e2hyZWY6ZnVuY3Rpb24oWSl7cmV0 dXJuIFkuZ2V0QXR0cmlidXRlKCJocmVmIil9fSxyZWxhdGl2ZTp7IisiOmZ1bmN0aW9uKGFiLGFhKXt2 YXIgWj10eXBlb2YgYWE9PT0ic3RyaW5nIixZPVomJiEvXFcvLnRlc3QoYWEpO1o9WiYmIVk7aWYoWSl7 YWE9YWEudG9Mb3dlckNhc2UoKX1ZPTA7Zm9yKHZhciBiYT1hYi5sZW5ndGgsYmI7WTxiYTtZKyspe2lm KGJiPWFiW1ldKXtmb3IoOyhiYj1iYi5wcmV2aW91c1NpYmxpbmcpJiZiYi5ub2RlVHlwZSE9PTE7KXt9 YWJbWV09Wnx8YmImJmJiLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1hYT9iYnx8ZmFsc2U6YmI9PT1h YX19WiYmSy5maWx0ZXIoYWEsYWIsdHJ1ZSl9LCI+IjpmdW5jdGlvbihhYixhYSl7dmFyIFo9dHlwZW9m IGFhPT09InN0cmluZyI7aWYoWiYmIS9cVy8udGVzdChhYSkpe2FhPWFhLnRvTG93ZXJDYXNlKCk7Zm9y KHZhciBZPTAsYmE9YWIubGVuZ3RoO1k8YmE7WSsrKXt2YXIgYmI9YWJbWV07aWYoYmIpe1o9YmIucGFy ZW50Tm9kZTthYltZXT1aLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1hYT9aOmZhbHNlfX19ZWxzZXtZ PTA7Zm9yKGJhPWFiLmxlbmd0aDtZPGJhO1krKyl7aWYoYmI9YWJbWV0pe2FiW1ldPVo/YmIucGFyZW50 Tm9kZTpiYi5wYXJlbnROb2RlPT09YWF9fVomJksuZmlsdGVyKGFhLGFiLHRydWUpfX0sIiI6ZnVuY3Rp b24oYWIsYWEsWil7dmFyIFk9VCsrLGJhPVY7aWYodHlwZW9mIGFhPT09InN0cmluZyImJiEvXFcvLnRl c3QoYWEpKXt2YXIgYmI9YWE9YWEudG9Mb3dlckNhc2UoKTtiYT1XfWJhKCJwYXJlbnROb2RlIixhYSxZ LGFiLGJiLFopfSwifiI6ZnVuY3Rpb24oYWIsYWEsWil7dmFyIFk9VCsrLGJhPVY7aWYodHlwZW9mIGFh PT09InN0cmluZyImJiEvXFcvLnRlc3QoYWEpKXt2YXIgYmI9YWE9YWEudG9Mb3dlckNhc2UoKTtiYT1X fWJhKCJwcmV2aW91c1NpYmxpbmciLGFhLFksYWIsYmIsWil9fSxmaW5kOntJRDpmdW5jdGlvbihhYSxa LFkpe2lmKHR5cGVvZiBaLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFZKXtyZXR1cm4oYWE9 Wi5nZXRFbGVtZW50QnlJZChhYVsxXSkpP1thYV06W119fSxOQU1FOmZ1bmN0aW9uKGFiLGFhKXtpZih0 eXBlb2YgYWEuZ2V0RWxlbWVudHNCeU5hbWUhPT0idW5kZWZpbmVkIil7dmFyIFo9W107YWE9YWEuZ2V0 RWxlbWVudHNCeU5hbWUoYWJbMV0pO2Zvcih2YXIgWT0wLGJhPWFhLmxlbmd0aDtZPGJhO1krKyl7YWFb WV0uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1hYlsxXSYmWi5wdXNoKGFhW1ldKX1yZXR1cm4gWi5sZW5n dGg9PT0wP251bGw6Wn19LFRBRzpmdW5jdGlvbihaLFkpe3JldHVybiBZLmdldEVsZW1lbnRzQnlUYWdO YW1lKFpbMV0pfX0scHJlRmlsdGVyOntDTEFTUzpmdW5jdGlvbihiYSxhYixaLFksYmIsYm0pe2JhPSIg IitiYVsxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYoYm0pe3JldHVybiBiYX1ibT0wO2Zvcih2YXIg YWE7KGFhPWFiW2JtXSkhPW51bGw7Ym0rKyl7aWYoYWEpe2lmKGJiXihhYS5jbGFzc05hbWUmJigiICIr YWEuY2xhc3NOYW1lKyIgIikucmVwbGFjZSgvW1x0XG5dL2csIiAiKS5pbmRleE9mKGJhKT49MCkpe1p8 fFkucHVzaChhYSl9ZWxzZXtpZihaKXthYltibV09ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5j dGlvbihZKXtyZXR1cm4gWVsxXS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFkpe3JldHVy biBZWzFdLnRvTG93ZXJDYXNlKCl9LENISUxEOmZ1bmN0aW9uKFope2lmKFpbMV09PT0ibnRoIil7dmFy IFk9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhaWzJdPT09ImV2ZW4iJiYiMm4ifHxaWzJd PT09Im9kZCImJiIybisxInx8IS9cRC8udGVzdChaWzJdKSYmIjBuKyIrWlsyXXx8WlsyXSk7WlsyXT1Z WzFdKyhZWzJdfHwxKS0wO1pbM109WVszXS0wfVpbMF09VCsrO3JldHVybiBafSxBVFRSOmZ1bmN0aW9u KGFiLGFhLFosWSxiYSxiYil7YWE9YWJbMV0ucmVwbGFjZSgvXFwvZywiIik7aWYoIWJiJiZPLmF0dHJN YXBbYWFdKXthYlsxXT1PLmF0dHJNYXBbYWFdfWlmKGFiWzJdPT09In49Iil7YWJbNF09IiAiK2FiWzRd KyIgIn1yZXR1cm4gYWJ9LFBTRVVETzpmdW5jdGlvbihhYixhYSxaLFksYmEpe2lmKGFiWzFdPT09Im5v dCIpe2lmKChTLmV4ZWMoYWJbM10pfHwiIikubGVuZ3RoPjF8fC9eXHcvLnRlc3QoYWJbM10pKXthYlsz XT1LKGFiWzNdLG51bGwsbnVsbCxhYSl9ZWxzZXthYj1LLmZpbHRlcihhYlszXSxhYSxaLHRydWVeYmEp O1p8fFkucHVzaC5hcHBseShZLGFiKTtyZXR1cm4gZmFsc2V9fWVsc2V7aWYoTy5tYXRjaC5QT1MudGVz dChhYlswXSl8fE8ubWF0Y2guQ0hJTEQudGVzdChhYlswXSkpe3JldHVybiB0cnVlfX1yZXR1cm4gYWJ9 LFBPUzpmdW5jdGlvbihZKXtZLnVuc2hpZnQodHJ1ZSk7cmV0dXJuIFl9fSxmaWx0ZXJzOntlbmFibGVk OmZ1bmN0aW9uKFkpe3JldHVybiBZLmRpc2FibGVkPT09ZmFsc2UmJlkudHlwZSE9PSJoaWRkZW4ifSxk aXNhYmxlZDpmdW5jdGlvbihZKXtyZXR1cm4gWS5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rp b24oWSl7cmV0dXJuIFkuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFkpe3JldHVybiBZ LnNlbGVjdGVkPT09dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFkpe3JldHVybiAhIVkuZmlyc3RDaGlsZH0s ZW1wdHk6ZnVuY3Rpb24oWSl7cmV0dXJuICFZLmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihhYSxaLFkp e3JldHVybiAhIUsoWVszXSxhYSkubGVuZ3RofSxoZWFkZXI6ZnVuY3Rpb24oWSl7cmV0dXJuL2hcZC9p LnRlc3QoWS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oWSl7cmV0dXJuInRleHQiPT09WS50eXBlfSxy YWRpbzpmdW5jdGlvbihZKXtyZXR1cm4icmFkaW8iPT09WS50eXBlfSxjaGVja2JveDpmdW5jdGlvbihZ KXtyZXR1cm4iY2hlY2tib3giPT09WS50eXBlfSxmaWxlOmZ1bmN0aW9uKFkpe3JldHVybiJmaWxlIj09 PVkudHlwZX0scGFzc3dvcmQ6ZnVuY3Rpb24oWSl7cmV0dXJuInBhc3N3b3JkIj09PVkudHlwZX0sc3Vi bWl0OmZ1bmN0aW9uKFkpe3JldHVybiJzdWJtaXQiPT09WS50eXBlfSxpbWFnZTpmdW5jdGlvbihZKXty ZXR1cm4iaW1hZ2UiPT09WS50eXBlfSxyZXNldDpmdW5jdGlvbihZKXtyZXR1cm4icmVzZXQiPT09WS50 eXBlfSxidXR0b246ZnVuY3Rpb24oWSl7cmV0dXJuImJ1dHRvbiI9PT1ZLnR5cGV8fFkubm9kZU5hbWUu dG9Mb3dlckNhc2UoKT09PSJidXR0b24ifSxpbnB1dDpmdW5jdGlvbihZKXtyZXR1cm4vaW5wdXR8c2Vs ZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRlc3QoWS5ub2RlTmFtZSl9fSxzZXRGaWx0ZXJzOntmaXJzdDpm dW5jdGlvbihaLFkpe3JldHVybiBZPT09MH0sbGFzdDpmdW5jdGlvbihhYixhYSxaLFkpe3JldHVybiBh YT09PVkubGVuZ3RoLTF9LGV2ZW46ZnVuY3Rpb24oWixZKXtyZXR1cm4gWSUyPT09MH0sb2RkOmZ1bmN0 aW9uKFosWSl7cmV0dXJuIFklMj09PTF9LGx0OmZ1bmN0aW9uKGFhLFosWSl7cmV0dXJuIFo8WVszXS0w fSxndDpmdW5jdGlvbihhYSxaLFkpe3JldHVybiBaPllbM10tMH0sbnRoOmZ1bmN0aW9uKGFhLFosWSl7 cmV0dXJuIFlbM10tMD09PVp9LGVxOmZ1bmN0aW9uKGFhLFosWSl7cmV0dXJuIFlbM10tMD09PVp9fSxm aWx0ZXI6e1BTRVVETzpmdW5jdGlvbihhYixhYSxaLFkpe3ZhciBiYT1hYVsxXSxiYj1PLmZpbHRlcnNb YmFdO2lmKGJiKXtyZXR1cm4gYmIoYWIsWixhYSxZKX1lbHNle2lmKGJhPT09ImNvbnRhaW5zIil7cmV0 dXJuKGFiLnRleHRDb250ZW50fHxhYi5pbm5lclRleHR8fFgoW2FiXSl8fCIiKS5pbmRleE9mKGFhWzNd KT49MH1lbHNle2lmKGJhPT09Im5vdCIpe2FhPWFhWzNdO1o9MDtmb3IoWT1hYS5sZW5ndGg7WjxZO1or Kyl7aWYoYWFbWl09PT1hYil7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1lbHNle0suZXJyb3IoIlN5 bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYmEpfX19fSxDSElMRDpmdW5jdGlv bihiYSxhYil7dmFyIFo9YWJbMV0sWT1iYTtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijpm b3IoO1k9WS5wcmV2aW91c1NpYmxpbmc7KXtpZihZLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNlfX1p ZihaPT09ImZpcnN0Iil7cmV0dXJuIHRydWV9WT1iYTtjYXNlImxhc3QiOmZvcig7WT1ZLm5leHRTaWJs aW5nOyl7aWYoWS5ub2RlVHlwZT09PTEpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWU7Y2FzZSJudGgi Olo9YWJbMl07dmFyIGJiPWFiWzNdO2lmKFo9PT0xJiZiYj09PTApe3JldHVybiB0cnVlfWFiPWFiWzBd O3ZhciBibT1iYS5wYXJlbnROb2RlO2lmKGJtJiYoYm0uc2l6Y2FjaGUhPT1hYnx8IWJhLm5vZGVJbmRl eCkpe3ZhciBhYT0wO2ZvcihZPWJtLmZpcnN0Q2hpbGQ7WTtZPVkubmV4dFNpYmxpbmcpe2lmKFkubm9k ZVR5cGU9PT0xKXtZLm5vZGVJbmRleD0rK2FhfX1ibS5zaXpjYWNoZT1hYn1iYT1iYS5ub2RlSW5kZXgt YmI7cmV0dXJuIFo9PT0wP2JhPT09MDpiYSVaPT09MCYmYmEvWj49MH19LElEOmZ1bmN0aW9uKFosWSl7 cmV0dXJuIFoubm9kZVR5cGU9PT0xJiZaLmdldEF0dHJpYnV0ZSgiaWQiKT09PVl9LFRBRzpmdW5jdGlv bihaLFkpe3JldHVybiBZPT09IioiJiZaLm5vZGVUeXBlPT09MXx8Wi5ub2RlTmFtZS50b0xvd2VyQ2Fz ZSgpPT09WX0sQ0xBU1M6ZnVuY3Rpb24oWixZKXtyZXR1cm4oIiAiKyhaLmNsYXNzTmFtZXx8Wi5nZXRB dHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhPZihZKT4tMX0sQVRUUjpmdW5jdGlvbihhYixhYSl7 dmFyIFo9YWFbMV07YWI9Ty5hdHRySGFuZGxlW1pdP08uYXR0ckhhbmRsZVtaXShhYik6YWJbWl0hPW51 bGw/YWJbWl06YWIuZ2V0QXR0cmlidXRlKFopO1o9YWIrIiI7dmFyIFk9YWFbMl07YWE9YWFbNF07cmV0 dXJuIGFiPT1udWxsP1k9PT0iIT0iOlk9PT0iPSI/Wj09PWFhOlk9PT0iKj0iP1ouaW5kZXhPZihhYSk+ PTA6WT09PSJ+PSI/KCIgIitaKyIgIikuaW5kZXhPZihhYSk+PTA6IWFhP1omJmFiIT09ZmFsc2U6WT09 PSIhPSI/WiE9PWFhOlk9PT0iXj0iP1ouaW5kZXhPZihhYSk9PT0wOlk9PT0iJD0iP1ouc3Vic3RyKFou bGVuZ3RoLWFhLmxlbmd0aCk9PT1hYTpZPT09Inw9Ij9aPT09YWF8fFouc3Vic3RyKDAsYWEubGVuZ3Ro KzEpPT09YWErIi0iOmZhbHNlfSxQT1M6ZnVuY3Rpb24oYWIsYWEsWixZKXt2YXIgYmE9Ty5zZXRGaWx0 ZXJzW2FhWzJdXTtpZihiYSl7cmV0dXJuIGJhKGFiLFosYWEsWSl9fX19LHo9Ty5tYXRjaC5QT1M7Zm9y KHZhciBjIGluIE8ubWF0Y2gpe08ubWF0Y2hbY109bmV3IFJlZ0V4cChPLm1hdGNoW2NdLnNvdXJjZSsv KD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3VyY2UpO08ubGVmdE1hdGNoW2NdPW5ldyBSZWdFeHAo LyheKD86LnxccnxcbikqPykvLnNvdXJjZStPLm1hdGNoW2NdLnNvdXJjZS5yZXBsYWNlKC9cXChcZCsp L2csZnVuY3Rpb24oWixZKXtyZXR1cm4iXFwiKyhZLTArMSl9KSl9dmFyIEo9ZnVuY3Rpb24oWixZKXta PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFosMCk7aWYoWSl7WS5wdXNoLmFwcGx5KFksWik7cmV0 dXJuIFl9cmV0dXJuIFp9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhZi5kb2N1bWVudEVs ZW1lbnQuY2hpbGROb2RlcywwKX1jYXRjaChHKXtKPWZ1bmN0aW9uKGFiLGFhKXthYT1hYXx8W107aWYo US5jYWxsKGFiKT09PSJbb2JqZWN0IEFycmF5XSIpe0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGFh LGFiKX1lbHNle2lmKHR5cGVvZiBhYi5sZW5ndGg9PT0ibnVtYmVyIil7Zm9yKHZhciBaPTAsWT1hYi5s ZW5ndGg7WjxZO1orKyl7YWEucHVzaChhYltaXSl9fWVsc2V7Zm9yKFo9MDthYltaXTtaKyspe2FhLnB1 c2goYWJbWl0pfX19cmV0dXJuIGFhfX12YXIgRjtpZihhZi5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURv Y3VtZW50UG9zaXRpb24pe0Y9ZnVuY3Rpb24oWixZKXtpZighWi5jb21wYXJlRG9jdW1lbnRQb3NpdGlv bnx8IVkuY29tcGFyZURvY3VtZW50UG9zaXRpb24pe2lmKFo9PVkpe1A9dHJ1ZX1yZXR1cm4gWi5jb21w YXJlRG9jdW1lbnRQb3NpdGlvbj8tMToxfVo9Wi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihZKSY0Py0x Olo9PT1ZPzA6MTtpZihaPT09MCl7UD10cnVlfXJldHVybiBafX1lbHNle2lmKCJzb3VyY2VJbmRleCIg aW4gYWYuZG9jdW1lbnRFbGVtZW50KXtGPWZ1bmN0aW9uKFosWSl7aWYoIVouc291cmNlSW5kZXh8fCFZ LnNvdXJjZUluZGV4KXtpZihaPT1ZKXtQPXRydWV9cmV0dXJuIFouc291cmNlSW5kZXg/LTE6MX1aPVou c291cmNlSW5kZXgtWS5zb3VyY2VJbmRleDtpZihaPT09MCl7UD10cnVlfXJldHVybiBafX1lbHNle2lm KGFmLmNyZWF0ZVJhbmdlKXtGPWZ1bmN0aW9uKGFiLGFhKXtpZighYWIub3duZXJEb2N1bWVudHx8IWFh Lm93bmVyRG9jdW1lbnQpe2lmKGFiPT1hYSl7UD10cnVlfXJldHVybiBhYi5vd25lckRvY3VtZW50Py0x OjF9dmFyIFo9YWIub3duZXJEb2N1bWVudC5jcmVhdGVSYW5nZSgpLFk9YWEub3duZXJEb2N1bWVudC5j cmVhdGVSYW5nZSgpO1ouc2V0U3RhcnQoYWIsMCk7Wi5zZXRFbmQoYWIsMCk7WS5zZXRTdGFydChhYSww KTtZLnNldEVuZChhYSwwKTthYj1aLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5TVEFSVF9UT19F TkQsWSk7aWYoYWI9PT0wKXtQPXRydWV9cmV0dXJuIGFifX19fShmdW5jdGlvbigpe3ZhciBhYT1hZi5j cmVhdGVFbGVtZW50KCJkaXYiKSxaPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO2FhLmlubmVy SFRNTD0iPGEgbmFtZT0nIitaKyInLz4iO3ZhciBZPWFmLmRvY3VtZW50RWxlbWVudDtZLmluc2VydEJl Zm9yZShhYSxZLmZpcnN0Q2hpbGQpO2lmKGFmLmdldEVsZW1lbnRCeUlkKFopKXtPLmZpbmQuSUQ9ZnVu Y3Rpb24oYWIsYmEsYmIpe2lmKHR5cGVvZiBiYS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYh YmIpe3JldHVybihiYT1iYS5nZXRFbGVtZW50QnlJZChhYlsxXSkpP2JhLmlkPT09YWJbMV18fHR5cGVv ZiBiYS5nZXRBdHRyaWJ1dGVOb2RlIT09InVuZGVmaW5lZCImJmJhLmdldEF0dHJpYnV0ZU5vZGUoImlk Iikubm9kZVZhbHVlPT09YWJbMV0/W2JhXTphZTpbXX19O08uZmlsdGVyLklEPWZ1bmN0aW9uKGFiLGJh KXt2YXIgYmI9dHlwZW9mIGFiLmdldEF0dHJpYnV0ZU5vZGUhPT0idW5kZWZpbmVkIiYmYWIuZ2V0QXR0 cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYWIubm9kZVR5cGU9PT0xJiZiYiYmYmIubm9kZVZhbHVlPT09 YmF9fVkucmVtb3ZlQ2hpbGQoYWEpO1k9YWE9bnVsbH0pKCk7KGZ1bmN0aW9uKCl7dmFyIFk9YWYuY3Jl YXRlRWxlbWVudCgiZGl2Iik7WS5hcHBlbmRDaGlsZChhZi5jcmVhdGVDb21tZW50KCIiKSk7aWYoWS5n ZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aD4wKXtPLmZpbmQuVEFHPWZ1bmN0aW9uKGFiLGFh KXthYT1hYS5nZXRFbGVtZW50c0J5VGFnTmFtZShhYlsxXSk7aWYoYWJbMV09PT0iKiIpe2FiPVtdO2Zv cih2YXIgWj0wO2FhW1pdO1orKyl7YWFbWl0ubm9kZVR5cGU9PT0xJiZhYi5wdXNoKGFhW1pdKX1hYT1h Yn1yZXR1cm4gYWF9fVkuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IjtpZihZLmZpcnN0Q2hpbGQm JnR5cGVvZiBZLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT09InVuZGVmaW5lZCImJlkuZmlyc3RDaGls ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSE9PSIjIil7Ty5hdHRySGFuZGxlLmhyZWY9ZnVuY3Rpb24oWil7 cmV0dXJuIFouZ2V0QXR0cmlidXRlKCJocmVmIiwyKX19WT1udWxsfSkoKTthZi5xdWVyeVNlbGVjdG9y QWxsJiZmdW5jdGlvbigpe3ZhciBhYT1LLFo9YWYuY3JlYXRlRWxlbWVudCgiZGl2Iik7Wi5pbm5lckhU TUw9IjxwIGNsYXNzPSdURVNUJz48L3A+IjtpZighKFoucXVlcnlTZWxlY3RvckFsbCYmWi5xdWVyeVNl bGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aD09PTApKXtLPWZ1bmN0aW9uKGFiLGJtLGJuLGJhKXtibT1i bXx8YWY7aWYoIWJhJiZibS5ub2RlVHlwZT09PTkmJiFyKGJtKSl7dHJ5e3JldHVybiBKKGJtLnF1ZXJ5 U2VsZWN0b3JBbGwoYWIpLGJuKX1jYXRjaChiYil7fX1yZXR1cm4gYWEoYWIsYm0sYm4sYmEpfTtmb3Io dmFyIFkgaW4gYWEpe0tbWV09YWFbWV19Wj1udWxsfX0oKTsoZnVuY3Rpb24oKXt2YXIgWT1hZi5jcmVh dGVFbGVtZW50KCJkaXYiKTtZLmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2 IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKCEoIVkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZXx8WS5nZXRF bGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoPT09MCkpe1kubGFzdENoaWxkLmNsYXNzTmFtZT0i ZSI7aWYoWS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MSl7Ty5vcmRlci5zcGxp Y2UoMSwwLCJDTEFTUyIpO08uZmluZC5DTEFTUz1mdW5jdGlvbihhYixhYSxaKXtpZih0eXBlb2YgYWEu Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PSJ1bmRlZmluZWQiJiYhWil7cmV0dXJuIGFhLmdldEVsZW1l bnRzQnlDbGFzc05hbWUoYWJbMV0pfX07WT1udWxsfX19KSgpO3ZhciB2PWFmLmNvbXBhcmVEb2N1bWVu dFBvc2l0aW9uP2Z1bmN0aW9uKFosWSl7cmV0dXJuIFouY29tcGFyZURvY3VtZW50UG9zaXRpb24oWSkm MTZ9OmZ1bmN0aW9uKFosWSl7cmV0dXJuIFohPT1ZJiYoWi5jb250YWlucz9aLmNvbnRhaW5zKFkpOnRy dWUpfSxyPWZ1bmN0aW9uKFkpe3JldHVybihZPShZP1kub3duZXJEb2N1bWVudHx8WTowKS5kb2N1bWVu dEVsZW1lbnQpP1kubm9kZU5hbWUhPT0iSFRNTCI6ZmFsc2V9LEw9ZnVuY3Rpb24oYWIsYWEpe3ZhciBa PVtdLFk9IiIsYmE7Zm9yKGFhPWFhLm5vZGVUeXBlP1thYV06YWE7YmE9Ty5tYXRjaC5QU0VVRE8uZXhl YyhhYik7KXtZKz1iYVswXTthYj1hYi5yZXBsYWNlKE8ubWF0Y2guUFNFVURPLCIiKX1hYj1PLnJlbGF0 aXZlW2FiXT9hYisiKiI6YWI7YmE9MDtmb3IodmFyIGJiPWFhLmxlbmd0aDtiYTxiYjtiYSsrKXtLKGFi LGFhW2JhXSxaKX1yZXR1cm4gSy5maWx0ZXIoWSxaKX07YW0uZmluZD1LO2FtLmV4cHI9Sy5zZWxlY3Rv cnM7YW0uZXhwclsiOiJdPWFtLmV4cHIuZmlsdGVyczthbS51bmlxdWU9Sy51bmlxdWVTb3J0O2FtLmdl dFRleHQ9WDthbS5pc1hNTERvYz1yO2FtLmNvbnRhaW5zPXZ9KSgpO3ZhciBhQj0vVW50aWwkLyxhZz0v Xig/OnBhcmVudHN8cHJldlVudGlsfHByZXZBbGwpLyx5PS8sLzthQT1BcnJheS5wcm90b3R5cGUuc2xp Y2U7dmFyIEQ9ZnVuY3Rpb24ocixjLHope2lmKGFtLmlzRnVuY3Rpb24oYykpe3JldHVybiBhbS5ncmVw KHIsZnVuY3Rpb24oRyxGKXtyZXR1cm4gISFjLmNhbGwoRyxGLEcpPT09en0pfWVsc2V7aWYoYy5ub2Rl VHlwZSl7cmV0dXJuIGFtLmdyZXAocixmdW5jdGlvbihGKXtyZXR1cm4gRj09PWM9PT16fSl9ZWxzZXtp Zih0eXBlb2YgYz09PSJzdHJpbmciKXt2YXIgdj1hbS5ncmVwKHIsZnVuY3Rpb24oRil7cmV0dXJuIEYu bm9kZVR5cGU9PT0xfSk7aWYoVS50ZXN0KGMpKXtyZXR1cm4gYW0uZmlsdGVyKGMsdiwheil9ZWxzZXtj PWFtLmZpbHRlcihjLHYpfX19fXJldHVybiBhbS5ncmVwKHIsZnVuY3Rpb24oRil7cmV0dXJuIGFtLmlu QXJyYXkoRixjKT49MD09PXp9KX07YW0uZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKHIpe2Zvcih2YXIg Yz10aGlzLnB1c2hTdGFjaygiIiwiZmluZCIsciksSj0wLEY9MCxHPXRoaXMubGVuZ3RoO0Y8RztGKysp e0o9Yy5sZW5ndGg7YW0uZmluZChyLHRoaXNbRl0sYyk7aWYoRj4wKXtmb3IodmFyIHo9Sjt6PGMubGVu Z3RoO3orKyl7Zm9yKHZhciB2PTA7djxKO3YrKyl7aWYoY1t2XT09PWNbel0pe2Muc3BsaWNlKHotLSwx KTticmVha319fX19cmV0dXJuIGN9LGhhczpmdW5jdGlvbihyKXt2YXIgYz1hbShyKTtyZXR1cm4gdGhp cy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIHo9MCx2PWMubGVuZ3RoO3o8djt6Kyspe2lmKGFtLmNv bnRhaW5zKHRoaXMsY1t6XSkpe3JldHVybiB0cnVlfX19KX0sbm90OmZ1bmN0aW9uKGMpe3JldHVybiB0 aGlzLnB1c2hTdGFjayhEKHRoaXMsYyxmYWxzZSksIm5vdCIsYyl9LGZpbHRlcjpmdW5jdGlvbihjKXty ZXR1cm4gdGhpcy5wdXNoU3RhY2soRCh0aGlzLGMsdHJ1ZSksImZpbHRlciIsYyl9LGlzOmZ1bmN0aW9u KGMpe3JldHVybiAhIWMmJmFtLmZpbHRlcihjLHRoaXMpLmxlbmd0aD4wfSxjbG9zZXN0OmZ1bmN0aW9u KEwsSyl7aWYoYW0uaXNBcnJheShMKSl7dmFyIEo9W10sRj10aGlzWzBdLEcsej17fSx2O2lmKEYmJkwu bGVuZ3RoKXtHPTA7Zm9yKHZhciByPUwubGVuZ3RoO0c8cjtHKyspe3Y9TFtHXTt6W3ZdfHwoelt2XT1h bS5leHByLm1hdGNoLlBPUy50ZXN0KHYpP2FtKHYsS3x8dGhpcy5jb250ZXh0KTp2KX1mb3IoO0YmJkYu b3duZXJEb2N1bWVudCYmRiE9PUs7KXtmb3IodiBpbiB6KXtHPXpbdl07aWYoRy5qcXVlcnk/Ry5pbmRl eChGKT4tMTphbShGKS5pcyhHKSl7Si5wdXNoKHtzZWxlY3Rvcjp2LGVsZW06Rn0pO2RlbGV0ZSB6W3Zd fX1GPUYucGFyZW50Tm9kZX19cmV0dXJuIEp9dmFyIGM9YW0uZXhwci5tYXRjaC5QT1MudGVzdChMKT9h bShMLEt8fHRoaXMuY29udGV4dCk6bnVsbDtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oTixPKXtmb3Io O08mJk8ub3duZXJEb2N1bWVudCYmTyE9PUs7KXtpZihjP2MuaW5kZXgoTyk+LTE6YW0oTykuaXMoTCkp e3JldHVybiBPfU89Ty5wYXJlbnROb2RlfXJldHVybiBudWxsfSl9LGluZGV4OmZ1bmN0aW9uKGMpe2lm KCFjfHx0eXBlb2YgYz09PSJzdHJpbmciKXtyZXR1cm4gYW0uaW5BcnJheSh0aGlzWzBdLGM/YW0oYyk6 dGhpcy5wYXJlbnQoKS5jaGlsZHJlbigpKX1yZXR1cm4gYW0uaW5BcnJheShjLmpxdWVyeT9jWzBdOmMs dGhpcyl9LGFkZDpmdW5jdGlvbihyLGMpe3I9dHlwZW9mIHI9PT0ic3RyaW5nIj9hbShyLGN8fHRoaXMu Y29udGV4dCk6YW0ubWFrZUFycmF5KHIpO2M9YW0ubWVyZ2UodGhpcy5nZXQoKSxyKTtyZXR1cm4gdGhp cy5wdXNoU3RhY2soSChyWzBdKXx8SChjWzBdKT9jOmFtLnVuaXF1ZShjKSl9LGFuZFNlbGY6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy5hZGQodGhpcy5wcmV2T2JqZWN0KX19KTthbS5lYWNoKHtwYXJlbnQ6ZnVu Y3Rpb24oYyl7cmV0dXJuKGM9Yy5wYXJlbnROb2RlKSYmYy5ub2RlVHlwZSE9PTExP2M6bnVsbH0scGFy ZW50czpmdW5jdGlvbihjKXtyZXR1cm4gYW0uZGlyKGMsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGls OmZ1bmN0aW9uKHIsYyx2KXtyZXR1cm4gYW0uZGlyKHIsInBhcmVudE5vZGUiLHYpfSxuZXh0OmZ1bmN0 aW9uKGMpe3JldHVybiBhbS5udGgoYywyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGMpe3Jl dHVybiBhbS5udGgoYywyLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihjKXtyZXR1 cm4gYW0uZGlyKGMsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYyl7cmV0dXJuIGFtLmRp cihjLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKHIsYyx2KXtyZXR1cm4gYW0u ZGlyKHIsIm5leHRTaWJsaW5nIix2KX0scHJldlVudGlsOmZ1bmN0aW9uKHIsYyx2KXtyZXR1cm4gYW0u ZGlyKHIsInByZXZpb3VzU2libGluZyIsdil9LHNpYmxpbmdzOmZ1bmN0aW9uKGMpe3JldHVybiBhbS5z aWJsaW5nKGMucGFyZW50Tm9kZS5maXJzdENoaWxkLGMpfSxjaGlsZHJlbjpmdW5jdGlvbihjKXtyZXR1 cm4gYW0uc2libGluZyhjLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihjKXtyZXR1cm4gYW0u bm9kZU5hbWUoYywiaWZyYW1lIik/Yy5jb250ZW50RG9jdW1lbnR8fGMuY29udGVudFdpbmRvdy5kb2N1 bWVudDphbS5tYWtlQXJyYXkoYy5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKHIsYyl7YW0uZm5bcl09ZnVu Y3Rpb24oRix2KXt2YXIgej1hbS5tYXAodGhpcyxjLEYpO2FCLnRlc3Qocil8fCh2PUYpO2lmKHYmJnR5 cGVvZiB2PT09InN0cmluZyIpe3o9YW0uZmlsdGVyKHYseil9ej10aGlzLmxlbmd0aD4xP2FtLnVuaXF1 ZSh6KTp6O2lmKCh0aGlzLmxlbmd0aD4xfHx5LnRlc3QodikpJiZhZy50ZXN0KHIpKXt6PXoucmV2ZXJz ZSgpfXJldHVybiB0aGlzLnB1c2hTdGFjayh6LHIsYUEuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9 fSk7YW0uZXh0ZW5kKHtmaWx0ZXI6ZnVuY3Rpb24ocixjLHYpe2lmKHYpe3I9Ijpub3QoIityKyIpIn1y ZXR1cm4gYW0uZmluZC5tYXRjaGVzKHIsYyl9LGRpcjpmdW5jdGlvbihyLGMseil7dmFyIHY9W107Zm9y KHI9cltjXTtyJiZyLm5vZGVUeXBlIT09OSYmKHo9PT1hZXx8ci5ub2RlVHlwZSE9PTF8fCFhbShyKS5p cyh6KSk7KXtyLm5vZGVUeXBlPT09MSYmdi5wdXNoKHIpO3I9cltjXX1yZXR1cm4gdn0sbnRoOmZ1bmN0 aW9uKHIsYyx6KXtjPWN8fDE7Zm9yKHZhciB2PTA7cjtyPXJbel0pe2lmKHIubm9kZVR5cGU9PT0xJiYr K3Y9PT1jKXticmVha319cmV0dXJuIHJ9LHNpYmxpbmc6ZnVuY3Rpb24ocixjKXtmb3IodmFyIHY9W107 cjtyPXIubmV4dFNpYmxpbmcpe3Iubm9kZVR5cGU9PT0xJiZyIT09YyYmdi5wdXNoKHIpfXJldHVybiB2 fX0pO3ZhciBuPS8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csYXg9L15ccysvLGJpPS8oPChbXHc6 XSspW14+XSo/KVwvPi9nLGY9L14oPzphcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xt ZXRhfHBhcmFtKSQvaSxhND0vPChbXHc6XSspLyxiZT0vPHRib2R5L2ksYVo9Lzx8Jlx3KzsvLGE3PS9j aGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGFRPWZ1bmN0aW9uKHIsYyx2KXtyZXR1cm4g Zi50ZXN0KHYpP3I6YysiPjwvIit2KyI+In0sYU89e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0n bXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+ Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwv dGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5Pjwv dGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3Jv dXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07 YU8ub3B0Z3JvdXA9YU8ub3B0aW9uO2FPLnRib2R5PWFPLnRmb290PWFPLmNvbGdyb3VwPWFPLmNhcHRp b249YU8udGhlYWQ7YU8udGg9YU8udGQ7aWYoIWFtLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZSl7YU8uX2Rl ZmF1bHQ9WzEsImRpdjxkaXY+IiwiPC9kaXY+Il19YW0uZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGMp e2lmKGFtLmlzRnVuY3Rpb24oYykpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24ocil7dmFyIHY9YW0o dGhpcyk7di50ZXh0KGMuY2FsbCh0aGlzLHIsdi50ZXh0KCkpKX0pfWlmKHR5cGVvZiBjIT09Im9iamVj dCImJmMhPT1hZSl7cmV0dXJuIHRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3du ZXJEb2N1bWVudHx8YWYpLmNyZWF0ZVRleHROb2RlKGMpKX1yZXR1cm4gYW0uZ2V0VGV4dCh0aGlzKX0s d3JhcEFsbDpmdW5jdGlvbihyKXtpZihhbS5pc0Z1bmN0aW9uKHIpKXtyZXR1cm4gdGhpcy5lYWNoKGZ1 bmN0aW9uKHYpe2FtKHRoaXMpLndyYXBBbGwoci5jYWxsKHRoaXMsdikpfSl9aWYodGhpc1swXSl7dmFy IGM9YW0ocix0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKHRydWUpO3RoaXNbMF0ucGFy ZW50Tm9kZSYmYy5pbnNlcnRCZWZvcmUodGhpc1swXSk7Yy5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIHY9 dGhpczt2LmZpcnN0Q2hpbGQmJnYuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTE7KXt2PXYuZmlyc3RDaGls ZH1yZXR1cm4gdn0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGMp e2lmKGFtLmlzRnVuY3Rpb24oYykpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24ocil7YW0odGhpcyku d3JhcElubmVyKGMuY2FsbCh0aGlzLHIpKX0pfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIg cj1hbSh0aGlzKSx2PXIuY29udGVudHMoKTt2Lmxlbmd0aD92LndyYXBBbGwoYyk6ci5hcHBlbmQoYyl9 KX0sd3JhcDpmdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7YW0odGhpcykud3Jh cEFsbChjKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0 aW9uKCl7YW0ubm9kZU5hbWUodGhpcywiYm9keSIpfHxhbSh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNo aWxkTm9kZXMpfSkuZW5kKCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFy Z3VtZW50cyx0cnVlLGZ1bmN0aW9uKGMpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmFwcGVuZENoaWxk KGMpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsdHJ1 ZSxmdW5jdGlvbihjKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5pbnNlcnRCZWZvcmUoYyx0aGlzLmZp cnN0Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9k ZSl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9uKHIpe3RoaXMucGFy ZW50Tm9kZS5pbnNlcnRCZWZvcmUocix0aGlzKX0pfWVsc2V7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFy IGM9YW0oYXJndW1lbnRzWzBdKTtjLnB1c2guYXBwbHkoYyx0aGlzLnRvQXJyYXkoKSk7cmV0dXJuIHRo aXMucHVzaFN0YWNrKGMsImJlZm9yZSIsYXJndW1lbnRzKX19fSxhZnRlcjpmdW5jdGlvbigpe2lmKHRo aXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZh bHNlLGZ1bmN0aW9uKHIpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocix0aGlzLm5leHRTaWJs aW5nKX0pfWVsc2V7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGM9dGhpcy5wdXNoU3RhY2sodGhpcywi YWZ0ZXIiLGFyZ3VtZW50cyk7Yy5wdXNoLmFwcGx5KGMsYW0oYXJndW1lbnRzWzBdKS50b0FycmF5KCkp O3JldHVybiBjfX19LGNsb25lOmZ1bmN0aW9uKHIpe3ZhciBjPXRoaXMubWFwKGZ1bmN0aW9uKCl7aWYo IWFtLnN1cHBvcnQubm9DbG9uZUV2ZW50JiYhYW0uaXNYTUxEb2ModGhpcykpe3ZhciB6PXRoaXMub3V0 ZXJIVE1MLHY9dGhpcy5vd25lckRvY3VtZW50O2lmKCF6KXt6PXYuY3JlYXRlRWxlbWVudCgiZGl2Iik7 ei5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ej16LmlubmVySFRNTH1yZXR1cm4gYW0u Y2xlYW4oW3oucmVwbGFjZShuLCIiKS5yZXBsYWNlKGF4LCIiKV0sdilbMF19ZWxzZXtyZXR1cm4gdGhp cy5jbG9uZU5vZGUodHJ1ZSl9fSk7aWYocj09PXRydWUpe3AodGhpcyxjKTtwKHRoaXMuZmluZCgiKiIp LGMuZmluZCgiKiIpKX1yZXR1cm4gY30saHRtbDpmdW5jdGlvbihyKXtpZihyPT09YWUpe3JldHVybiB0 aGlzWzBdJiZ0aGlzWzBdLm5vZGVUeXBlPT09MT90aGlzWzBdLmlubmVySFRNTC5yZXBsYWNlKG4sIiIp Om51bGx9ZWxzZXtpZih0eXBlb2Ygcj09PSJzdHJpbmciJiYhLzxzY3JpcHQvaS50ZXN0KHIpJiYoYW0u c3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZXx8IWF4LnRlc3QocikpJiYhYU9bKGE0LmV4ZWMocil8fFsi IiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldKXtyPXIucmVwbGFjZShiaSxhUSk7dHJ5e2Zvcih2YXIgYz0w LHo9dGhpcy5sZW5ndGg7Yzx6O2MrKyl7aWYodGhpc1tjXS5ub2RlVHlwZT09PTEpe2FtLmNsZWFuRGF0 YSh0aGlzW2NdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3RoaXNbY10uaW5uZXJIVE1MPXJ9fX1j YXRjaCh2KXt0aGlzLmVtcHR5KCkuYXBwZW5kKHIpfX1lbHNle2FtLmlzRnVuY3Rpb24ocik/dGhpcy5l YWNoKGZ1bmN0aW9uKEope3ZhciBHPWFtKHRoaXMpLEY9Ry5odG1sKCk7Ry5lbXB0eSgpLmFwcGVuZChm dW5jdGlvbigpe3JldHVybiByLmNhbGwodGhpcyxKLEYpfSl9KTp0aGlzLmVtcHR5KCkuYXBwZW5kKHIp fX1yZXR1cm4gdGhpc30scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYyl7aWYodGhpc1swXSYmdGhpc1swXS5w YXJlbnROb2RlKXtpZihhbS5pc0Z1bmN0aW9uKGMpKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHIp e3ZhciB6PWFtKHRoaXMpLHY9ei5odG1sKCk7ei5yZXBsYWNlV2l0aChjLmNhbGwodGhpcyxyLHYpKX0p fWVsc2V7Yz1hbShjKS5kZXRhY2goKX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHI9dGhp cy5uZXh0U2libGluZyx2PXRoaXMucGFyZW50Tm9kZTthbSh0aGlzKS5yZW1vdmUoKTtyP2FtKHIpLmJl Zm9yZShjKTphbSh2KS5hcHBlbmQoYyl9KX1lbHNle3JldHVybiB0aGlzLnB1c2hTdGFjayhhbShhbS5p c0Z1bmN0aW9uKGMpP2MoKTpjKSwicmVwbGFjZVdpdGgiLGMpfX0sZGV0YWNoOmZ1bmN0aW9uKGMpe3Jl dHVybiB0aGlzLnJlbW92ZShjLHRydWUpfSxkb21NYW5pcDpmdW5jdGlvbihOLEwsSyl7ZnVuY3Rpb24g RyhPKXtyZXR1cm4gYW0ubm9kZU5hbWUoTywidGFibGUiKT9PLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0 Ym9keSIpWzBdfHxPLmFwcGVuZENoaWxkKE8ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9k eSIpKTpPfXZhciBKLEYsej1OWzBdLHI9W107aWYoIWFtLnN1cHBvcnQuY2hlY2tDbG9uZSYmYXJndW1l bnRzLmxlbmd0aD09PTMmJnR5cGVvZiB6PT09InN0cmluZyImJmE3LnRlc3Qoeikpe3JldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oKXthbSh0aGlzKS5kb21NYW5pcChOLEwsSyx0cnVlKX0pfWlmKGFtLmlzRnVu Y3Rpb24oeikpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oUCl7dmFyIE89YW0odGhpcyk7TlswXT16 LmNhbGwodGhpcyxQLEw/Ty5odG1sKCk6YWUpO08uZG9tTWFuaXAoTixMLEspfSl9aWYodGhpc1swXSl7 Sj1OWzBdJiZOWzBdLnBhcmVudE5vZGUmJk5bMF0ucGFyZW50Tm9kZS5ub2RlVHlwZT09PTExP3tmcmFn bWVudDpOWzBdLnBhcmVudE5vZGV9OmJrKE4sdGhpcyxyKTtpZihGPUouZnJhZ21lbnQuZmlyc3RDaGls ZCl7TD1MJiZhbS5ub2RlTmFtZShGLCJ0ciIpO2Zvcih2YXIgYz0wLHY9dGhpcy5sZW5ndGg7Yzx2O2Mr Kyl7Sy5jYWxsKEw/Ryh0aGlzW2NdLEYpOnRoaXNbY10sSi5jYWNoZWFibGV8fHRoaXMubGVuZ3RoPjF8 fGM+MD9KLmZyYWdtZW50LmNsb25lTm9kZSh0cnVlKTpKLmZyYWdtZW50KX19ciYmYW0uZWFjaChyLGJs KX1yZXR1cm4gdGhpc319KTthbS5mcmFnbWVudHM9e307YW0uZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIs cHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVy IixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKHIsYyl7YW0uZm5bcl09ZnVuY3Rpb24o Sil7dmFyIEY9W107Sj1hbShKKTtmb3IodmFyIEc9MCx6PUoubGVuZ3RoO0c8ejtHKyspe3ZhciB2PShH PjA/dGhpcy5jbG9uZSh0cnVlKTp0aGlzKS5nZXQoKTthbS5mbltjXS5hcHBseShhbShKW0ddKSx2KTtG PUYuY29uY2F0KHYpfXJldHVybiB0aGlzLnB1c2hTdGFjayhGLHIsSi5zZWxlY3Rvcil9fSk7YW0uZWFj aCh7cmVtb3ZlOmZ1bmN0aW9uKHIsYyl7aWYoIXJ8fGFtLmZpbHRlcihyLFt0aGlzXSkubGVuZ3RoKXtp ZighYyYmdGhpcy5ub2RlVHlwZT09PTEpe2FtLmNsZWFuRGF0YSh0aGlzLmdldEVsZW1lbnRzQnlUYWdO YW1lKCIqIikpO2FtLmNsZWFuRGF0YShbdGhpc10pfXRoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnRO b2RlLnJlbW92ZUNoaWxkKHRoaXMpfX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodGhpcy5ub2RlVHlwZT09 PTEmJmFtLmNsZWFuRGF0YSh0aGlzLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3RoaXMuZmlyc3RD aGlsZDspe3RoaXMucmVtb3ZlQ2hpbGQodGhpcy5maXJzdENoaWxkKX19fSxmdW5jdGlvbihyLGMpe2Ft LmZuW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChjLGFyZ3VtZW50cyl9fSk7YW0uZXh0ZW5k KHtjbGVhbjpmdW5jdGlvbihyLGMsRix2KXtjPWN8fGFmO2lmKHR5cGVvZiBjLmNyZWF0ZUVsZW1lbnQ9 PT0idW5kZWZpbmVkIil7Yz1jLm93bmVyRG9jdW1lbnR8fGNbMF0mJmNbMF0ub3duZXJEb2N1bWVudHx8 YWZ9dmFyIHo9W107YW0uZWFjaChyLGZ1bmN0aW9uKEssSil7aWYodHlwZW9mIEo9PT0ibnVtYmVyIil7 Sis9IiJ9aWYoSil7aWYodHlwZW9mIEo9PT0ic3RyaW5nIiYmIWFaLnRlc3QoSikpe0o9Yy5jcmVhdGVU ZXh0Tm9kZShKKX1lbHNle2lmKHR5cGVvZiBKPT09InN0cmluZyIpe0o9Si5yZXBsYWNlKGJpLGFRKTt2 YXIgTj0oYTQuZXhlYyhKKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxMPWFPW05dfHxhTy5fZGVm YXVsdCxHPUxbMF07Sz1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2ZvcihLLmlubmVySFRNTD1MWzFdK0or TFsyXTtHLS07KXtLPUsubGFzdENoaWxkfWlmKCFhbS5zdXBwb3J0LnRib2R5KXtHPWJlLnRlc3QoSik7 Tj1OPT09InRhYmxlIiYmIUc/Sy5maXJzdENoaWxkJiZLLmZpcnN0Q2hpbGQuY2hpbGROb2RlczpMWzFd PT09Ijx0YWJsZT4iJiYhRz9LLmNoaWxkTm9kZXM6W107Zm9yKEw9Ti5sZW5ndGgtMTtMPj0wOy0tTCl7 YW0ubm9kZU5hbWUoTltMXSwidGJvZHkiKSYmIU5bTF0uY2hpbGROb2Rlcy5sZW5ndGgmJk5bTF0ucGFy ZW50Tm9kZS5yZW1vdmVDaGlsZChOW0xdKX19IWFtLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJmF4 LnRlc3QoSikmJksuaW5zZXJ0QmVmb3JlKGMuY3JlYXRlVGV4dE5vZGUoYXguZXhlYyhKKVswXSksSy5m aXJzdENoaWxkKTtKPWFtLm1ha2VBcnJheShLLmNoaWxkTm9kZXMpfX1pZihKLm5vZGVUeXBlKXt6LnB1 c2goSil9ZWxzZXt6PWFtLm1lcmdlKHosSil9fX0pO2lmKEYpe2ZvcihyPTA7eltyXTtyKyspe2lmKHYm JmFtLm5vZGVOYW1lKHpbcl0sInNjcmlwdCIpJiYoIXpbcl0udHlwZXx8eltyXS50eXBlLnRvTG93ZXJD YXNlKCk9PT0idGV4dC9qYXZhc2NyaXB0Iikpe3YucHVzaCh6W3JdLnBhcmVudE5vZGU/eltyXS5wYXJl bnROb2RlLnJlbW92ZUNoaWxkKHpbcl0pOnpbcl0pfWVsc2V7eltyXS5ub2RlVHlwZT09PTEmJnouc3Bs aWNlLmFwcGx5KHosW3IrMSwwXS5jb25jYXQoYW0ubWFrZUFycmF5KHpbcl0uZ2V0RWxlbWVudHNCeVRh Z05hbWUoInNjcmlwdCIpKSkpO0YuYXBwZW5kQ2hpbGQoeltyXSl9fX1yZXR1cm4gen0sY2xlYW5EYXRh OmZ1bmN0aW9uKHIpe2Zvcih2YXIgYz0wLHY7KHY9cltjXSkhPW51bGw7YysrKXthbS5ldmVudC5yZW1v dmUodik7YW0ucmVtb3ZlRGF0YSh2KX19fSk7dmFyIGFJPS96LT9pbmRleHxmb250LT93ZWlnaHR8b3Bh Y2l0eXx6b29tfGxpbmUtP2hlaWdodC9pLGFuPS9hbHBoYVwoW14pXSpcKS8sST0vb3BhY2l0eT0oW14p XSopLyxhMD0vZmxvYXQvaSxhSj0vLShbYS16XSkvaWcsYWk9LyhbQS1aXSkvZyxCPS9eLT9cZCsoPzpw eCk/JC9pLGg9L14tP1xkLyxiZz17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4i LGRpc3BsYXk6ImJsb2NrIn0sYTI9WyJMZWZ0IiwiUmlnaHQiXSxhTj1bIlRvcCIsIkJvdHRvbSJdLGFr PWFmLmRlZmF1bHRWaWV3JiZhZi5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlLHE9YW0uc3VwcG9y dC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0Iixhaj1mdW5jdGlvbihyLGMpe3JldHVybiBj LnRvVXBwZXJDYXNlKCl9O2FtLmZuLmNzcz1mdW5jdGlvbihyLGMpe3JldHVybiBhdih0aGlzLHIsYyx0 cnVlLGZ1bmN0aW9uKEYsdix6KXtpZih6PT09YWUpe3JldHVybiBhbS5jdXJDU1MoRix2KX1pZih0eXBl b2Ygej09PSJudW1iZXIiJiYhYUkudGVzdCh2KSl7eis9InB4In1hbS5zdHlsZShGLHYseil9KX07YW0u ZXh0ZW5kKHtzdHlsZTpmdW5jdGlvbihyLGMsRil7aWYoIXJ8fHIubm9kZVR5cGU9PT0zfHxyLm5vZGVU eXBlPT09OCl7cmV0dXJuIGFlfWlmKChjPT09IndpZHRoInx8Yz09PSJoZWlnaHQiKSYmcGFyc2VGbG9h dChGKTwwKXtGPWFlfXZhciB2PXIuc3R5bGV8fHIsej1GIT09YWU7aWYoIWFtLnN1cHBvcnQub3BhY2l0 eSYmYz09PSJvcGFjaXR5Iil7aWYoeil7di56b29tPTE7Yz1wYXJzZUludChGLDEwKSsiIj09PSJOYU4i PyIiOiJhbHBoYShvcGFjaXR5PSIrRioxMDArIikiO3I9di5maWx0ZXJ8fGFtLmN1ckNTUyhyLCJmaWx0 ZXIiKXx8IiI7di5maWx0ZXI9YW4udGVzdChyKT9yLnJlcGxhY2UoYW4sYyk6Y31yZXR1cm4gdi5maWx0 ZXImJnYuZmlsdGVyLmluZGV4T2YoIm9wYWNpdHk9Iik+PTA/cGFyc2VGbG9hdChJLmV4ZWModi5maWx0 ZXIpWzFdKS8xMDArIiI6IiJ9aWYoYTAudGVzdChjKSl7Yz1xfWM9Yy5yZXBsYWNlKGFKLGFqKTtpZih6 KXt2W2NdPUZ9cmV0dXJuIHZbY119LGNzczpmdW5jdGlvbihyLGMsSixGKXtpZihjPT09IndpZHRoInx8 Yz09PSJoZWlnaHQiKXt2YXIgRyx6PWM9PT0id2lkdGgiP2EyOmFOO2Z1bmN0aW9uIHYoKXtHPWM9PT0i d2lkdGgiP3Iub2Zmc2V0V2lkdGg6ci5vZmZzZXRIZWlnaHQ7RiE9PSJib3JkZXIiJiZhbS5lYWNoKHos ZnVuY3Rpb24oKXtGfHwoRy09cGFyc2VGbG9hdChhbS5jdXJDU1MociwicGFkZGluZyIrdGhpcyx0cnVl KSl8fDApO2lmKEY9PT0ibWFyZ2luIil7Rys9cGFyc2VGbG9hdChhbS5jdXJDU1MociwibWFyZ2luIit0 aGlzLHRydWUpKXx8MH1lbHNle0ctPXBhcnNlRmxvYXQoYW0uY3VyQ1NTKHIsImJvcmRlciIrdGhpcysi V2lkdGgiLHRydWUpKXx8MH19KX1yLm9mZnNldFdpZHRoIT09MD92KCk6YW0uc3dhcChyLGJnLHYpO3Jl dHVybiBNYXRoLm1heCgwLE1hdGgucm91bmQoRykpfXJldHVybiBhbS5jdXJDU1MocixjLEopfSxjdXJD U1M6ZnVuY3Rpb24ocixjLEcpe3ZhciB6LEY9ci5zdHlsZTtpZighYW0uc3VwcG9ydC5vcGFjaXR5JiZj PT09Im9wYWNpdHkiJiZyLmN1cnJlbnRTdHlsZSl7ej1JLnRlc3Qoci5jdXJyZW50U3R5bGUuZmlsdGVy fHwiIik/cGFyc2VGbG9hdChSZWdFeHAuJDEpLzEwMCsiIjoiIjtyZXR1cm4gej09PSIiPyIxIjp6fWlm KGEwLnRlc3QoYykpe2M9cX1pZighRyYmRiYmRltjXSl7ej1GW2NdfWVsc2V7aWYoYWspe2lmKGEwLnRl c3QoYykpe2M9ImZsb2F0In1jPWMucmVwbGFjZShhaSwiLSQxIikudG9Mb3dlckNhc2UoKTtGPXIub3du ZXJEb2N1bWVudC5kZWZhdWx0VmlldztpZighRil7cmV0dXJuIG51bGx9aWYocj1GLmdldENvbXB1dGVk U3R5bGUocixudWxsKSl7ej1yLmdldFByb3BlcnR5VmFsdWUoYyl9aWYoYz09PSJvcGFjaXR5IiYmej09 PSIiKXt6PSIxIn19ZWxzZXtpZihyLmN1cnJlbnRTdHlsZSl7Rz1jLnJlcGxhY2UoYUosYWopO3o9ci5j dXJyZW50U3R5bGVbY118fHIuY3VycmVudFN0eWxlW0ddO2lmKCFCLnRlc3QoeikmJmgudGVzdCh6KSl7 Yz1GLmxlZnQ7dmFyIHY9ci5ydW50aW1lU3R5bGUubGVmdDtyLnJ1bnRpbWVTdHlsZS5sZWZ0PXIuY3Vy cmVudFN0eWxlLmxlZnQ7Ri5sZWZ0PUc9PT0iZm9udFNpemUiPyIxZW0iOnp8fDA7ej1GLnBpeGVsTGVm dCsicHgiO0YubGVmdD1jO3IucnVudGltZVN0eWxlLmxlZnQ9dn19fX1yZXR1cm4gen0sc3dhcDpmdW5j dGlvbihyLGMsRil7dmFyIHY9e307Zm9yKHZhciB6IGluIGMpe3Zbel09ci5zdHlsZVt6XTtyLnN0eWxl W3pdPWNbel19Ri5jYWxsKHIpO2Zvcih6IGluIGMpe3Iuc3R5bGVbel09dlt6XX19fSk7aWYoYW0uZXhw ciYmYW0uZXhwci5maWx0ZXJzKXthbS5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKHIpe3ZhciBj PXIub2Zmc2V0V2lkdGgsej1yLm9mZnNldEhlaWdodCx2PXIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09 PSJ0ciI7cmV0dXJuIGM9PT0wJiZ6PT09MCYmIXY/dHJ1ZTpjPjAmJno+MCYmIXY/ZmFsc2U6YW0uY3Vy Q1NTKHIsImRpc3BsYXkiKT09PSJub25lIn07YW0uZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24o Yyl7cmV0dXJuICFhbS5leHByLmZpbHRlcnMuaGlkZGVuKGMpfX12YXIgRT1hSygpLG89LzxzY3JpcHQo LnxccykqP1wvc2NyaXB0Pi9naSxiaj0vc2VsZWN0fHRleHRhcmVhL2ksYTY9L2NvbG9yfGRhdGV8ZGF0 ZXRpbWV8ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxzZWFyY2h8dGVsfHRl eHR8dGltZXx1cmx8d2Vlay9pLGFGPS89XD8oJnwkKS8sQz0vXD8vLGFTPS8oXD98JilfPS4qPygmfCQp Lyxhbz0vXihcdys6KT9cL1wvKFteXC8/I10rKS8sTT0vJTIwL2c7YW0uZm4uZXh0ZW5kKHtfbG9hZDph bS5mbi5sb2FkLGxvYWQ6ZnVuY3Rpb24ocixjLEcpe2lmKHR5cGVvZiByIT09InN0cmluZyIpe3JldHVy biB0aGlzLl9sb2FkKHIpfWVsc2V7aWYoIXRoaXMubGVuZ3RoKXtyZXR1cm4gdGhpc319dmFyIHo9ci5p bmRleE9mKCIgIik7aWYoej49MCl7dmFyIEY9ci5zbGljZSh6LHIubGVuZ3RoKTtyPXIuc2xpY2UoMCx6 KX16PSJHRVQiO2lmKGMpe2lmKGFtLmlzRnVuY3Rpb24oYykpe0c9YztjPW51bGx9ZWxzZXtpZih0eXBl b2YgYz09PSJvYmplY3QiKXtjPWFtLnBhcmFtKGMsYW0uYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKTt6 PSJQT1NUIn19fXZhciB2PXRoaXM7YW0uYWpheCh7dXJsOnIsdHlwZTp6LGRhdGFUeXBlOiJodG1sIixk YXRhOmMsY29tcGxldGU6ZnVuY3Rpb24oSixLKXtpZihLPT09InN1Y2Nlc3MifHxLPT09Im5vdG1vZGlm aWVkIil7di5odG1sKEY/YW0oIjxkaXYgLz4iKS5hcHBlbmQoSi5yZXNwb25zZVRleHQucmVwbGFjZShv LCIiKSkuZmluZChGKTpKLnJlc3BvbnNlVGV4dCl9RyYmdi5lYWNoKEcsW0oucmVzcG9uc2VUZXh0LEss Sl0pfX0pO3JldHVybiB0aGlzfSxzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gYW0ucGFyYW0odGhp cy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5t YXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9hbS5tYWtlQXJyYXkodGhpcy5lbGVtZW50 cyk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiB0aGlzLm5hbWUmJiF0aGlzLmRpc2FibGVk JiYodGhpcy5jaGVja2VkfHxiai50ZXN0KHRoaXMubm9kZU5hbWUpfHxhNi50ZXN0KHRoaXMudHlwZSkp fSkubWFwKGZ1bmN0aW9uKHIsYyl7cj1hbSh0aGlzKS52YWwoKTtyZXR1cm4gcj09bnVsbD9udWxsOmFt LmlzQXJyYXkocik/YW0ubWFwKHIsZnVuY3Rpb24odil7cmV0dXJue25hbWU6Yy5uYW1lLHZhbHVlOnZ9 fSk6e25hbWU6Yy5uYW1lLHZhbHVlOnJ9fSkuZ2V0KCl9fSk7YW0uZWFjaCgiYWpheFN0YXJ0IGFqYXhT dG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiks ZnVuY3Rpb24ocixjKXthbS5mbltjXT1mdW5jdGlvbih2KXtyZXR1cm4gdGhpcy5iaW5kKGMsdil9fSk7 YW0uZXh0ZW5kKHtnZXQ6ZnVuY3Rpb24ocixjLHosdil7aWYoYW0uaXNGdW5jdGlvbihjKSl7dj12fHx6 O3o9YztjPW51bGx9cmV0dXJuIGFtLmFqYXgoe3R5cGU6IkdFVCIsdXJsOnIsZGF0YTpjLHN1Y2Nlc3M6 eixkYXRhVHlwZTp2fSl9LGdldFNjcmlwdDpmdW5jdGlvbihyLGMpe3JldHVybiBhbS5nZXQocixudWxs LGMsInNjcmlwdCIpfSxnZXRKU09OOmZ1bmN0aW9uKHIsYyx2KXtyZXR1cm4gYW0uZ2V0KHIsYyx2LCJq c29uIil9LHBvc3Q6ZnVuY3Rpb24ocixjLHosdil7aWYoYW0uaXNGdW5jdGlvbihjKSl7dj12fHx6O3o9 YztjPXt9fXJldHVybiBhbS5hamF4KHt0eXBlOiJQT1NUIix1cmw6cixkYXRhOmMsc3VjY2Vzczp6LGRh dGFUeXBlOnZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKGMpe2FtLmV4dGVuZChhbS5hamF4U2V0dGluZ3Ms Yyl9LGFqYXhTZXR0aW5nczp7dXJsOmxvY2F0aW9uLmhyZWYsZ2xvYmFsOnRydWUsdHlwZToiR0VUIixj b250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTp0 cnVlLGFzeW5jOnRydWUseGhyOmFjLlhNTEh0dHBSZXF1ZXN0JiYoYWMubG9jYXRpb24ucHJvdG9jb2wh PT0iZmlsZToifHwhYWMuQWN0aXZlWE9iamVjdCk/ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGFjLlhNTEh0 dHBSZXF1ZXN0fTpmdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IGFjLkFjdGl2ZVhPYmplY3QoIk1pY3Jv c29mdC5YTUxIVFRQIil9Y2F0Y2goYyl7fX0sYWNjZXB0czp7eG1sOiJhcHBsaWNhdGlvbi94bWwsIHRl eHQveG1sIixodG1sOiJ0ZXh0L2h0bWwiLHNjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlv bi9qYXZhc2NyaXB0Iixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQiLHRleHQ6 InRleHQvcGxhaW4iLF9kZWZhdWx0OiIqLyoifX0sbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheDpm dW5jdGlvbihhYil7ZnVuY3Rpb24gYWEoKXtZLnN1Y2Nlc3MmJlkuc3VjY2Vzcy5jYWxsKEssTixTLHIp O1kuZ2xvYmFsJiZYKCJhamF4U3VjY2VzcyIsW3IsWV0pfWZ1bmN0aW9uIFooKXtZLmNvbXBsZXRlJiZZ LmNvbXBsZXRlLmNhbGwoSyxyLFMpO1kuZ2xvYmFsJiZYKCJhamF4Q29tcGxldGUiLFtyLFldKTtZLmds b2JhbCYmIS0tYW0uYWN0aXZlJiZhbS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpfWZ1bmN0aW9uIFgo YmEsYmIpeyhZLmNvbnRleHQ/YW0oWS5jb250ZXh0KTphbS5ldmVudCkudHJpZ2dlcihiYSxiYil9dmFy IFk9YW0uZXh0ZW5kKHRydWUse30sYW0uYWpheFNldHRpbmdzLGFiKSxULFMsTixLPWFiJiZhYi5jb250 ZXh0fHxZLE89WS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoWS5kYXRhJiZZLnByb2Nlc3NEYXRhJiZ0eXBl b2YgWS5kYXRhIT09InN0cmluZyIpe1kuZGF0YT1hbS5wYXJhbShZLmRhdGEsWS50cmFkaXRpb25hbCl9 aWYoWS5kYXRhVHlwZT09PSJqc29ucCIpe2lmKE89PT0iR0VUIil7YUYudGVzdChZLnVybCl8fChZLnVy bCs9KEMudGVzdChZLnVybCk/IiYiOiI/IikrKFkuanNvbnB8fCJjYWxsYmFjayIpKyI9PyIpfWVsc2V7 aWYoIVkuZGF0YXx8IWFGLnRlc3QoWS5kYXRhKSl7WS5kYXRhPShZLmRhdGE/WS5kYXRhKyImIjoiIikr KFkuanNvbnB8fCJjYWxsYmFjayIpKyI9PyJ9fVkuZGF0YVR5cGU9Impzb24ifWlmKFkuZGF0YVR5cGU9 PT0ianNvbiImJihZLmRhdGEmJmFGLnRlc3QoWS5kYXRhKXx8YUYudGVzdChZLnVybCkpKXtUPVkuanNv bnBDYWxsYmFja3x8Impzb25wIitFKys7aWYoWS5kYXRhKXtZLmRhdGE9KFkuZGF0YSsiIikucmVwbGFj ZShhRiwiPSIrVCsiJDEiKX1ZLnVybD1ZLnVybC5yZXBsYWNlKGFGLCI9IitUKyIkMSIpO1kuZGF0YVR5 cGU9InNjcmlwdCI7YWNbVF09YWNbVF18fGZ1bmN0aW9uKGJhKXtOPWJhO2FhKCk7WigpO2FjW1RdPWFl O3RyeXtkZWxldGUgYWNbVF19Y2F0Y2goYmIpe31KJiZKLnJlbW92ZUNoaWxkKEcpfX1pZihZLmRhdGFU eXBlPT09InNjcmlwdCImJlkuY2FjaGU9PT1udWxsKXtZLmNhY2hlPWZhbHNlfWlmKFkuY2FjaGU9PT1m YWxzZSYmTz09PSJHRVQiKXt2YXIgej1hSygpLGM9WS51cmwucmVwbGFjZShhUywiJDFfPSIreisiJDIi KTtZLnVybD1jKyhjPT09WS51cmw/KEMudGVzdChZLnVybCk/IiYiOiI/IikrIl89Iit6OiIiKX1pZihZ LmRhdGEmJk89PT0iR0VUIil7WS51cmwrPShDLnRlc3QoWS51cmwpPyImIjoiPyIpK1kuZGF0YX1ZLmds b2JhbCYmIWFtLmFjdGl2ZSsrJiZhbS5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTt6PSh6PWFvLmV4 ZWMoWS51cmwpKSYmKHpbMV0mJnpbMV0hPT1sb2NhdGlvbi5wcm90b2NvbHx8elsyXSE9PWxvY2F0aW9u Lmhvc3QpO2lmKFkuZGF0YVR5cGU9PT0ic2NyaXB0IiYmTz09PSJHRVQiJiZ6KXt2YXIgSj1hZi5nZXRF bGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxhZi5kb2N1bWVudEVsZW1lbnQsRz1hZi5jcmVhdGVF bGVtZW50KCJzY3JpcHQiKTtHLnNyYz1ZLnVybDtpZihZLnNjcmlwdENoYXJzZXQpe0cuY2hhcnNldD1Z LnNjcmlwdENoYXJzZXR9aWYoIVQpe3ZhciBGPWZhbHNlO0cub25sb2FkPUcub25yZWFkeXN0YXRlY2hh bmdlPWZ1bmN0aW9uKCl7aWYoIUYmJighdGhpcy5yZWFkeVN0YXRlfHx0aGlzLnJlYWR5U3RhdGU9PT0i bG9hZGVkInx8dGhpcy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIikpe0Y9dHJ1ZTthYSgpO1ooKTtHLm9u bG9hZD1HLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO0omJkcucGFyZW50Tm9kZSYmSi5yZW1vdmVDaGls ZChHKX19fUouaW5zZXJ0QmVmb3JlKEcsSi5maXJzdENoaWxkKTtyZXR1cm4gYWV9dmFyIHY9ZmFsc2Us cj1ZLnhocigpO2lmKHIpe1kudXNlcm5hbWU/ci5vcGVuKE8sWS51cmwsWS5hc3luYyxZLnVzZXJuYW1l LFkucGFzc3dvcmQpOnIub3BlbihPLFkudXJsLFkuYXN5bmMpO3RyeXtpZihZLmRhdGF8fGFiJiZhYi5j b250ZW50VHlwZSl7ci5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLFkuY29udGVudFR5cGUp fWlmKFkuaWZNb2RpZmllZCl7YW0ubGFzdE1vZGlmaWVkW1kudXJsXSYmci5zZXRSZXF1ZXN0SGVhZGVy KCJJZi1Nb2RpZmllZC1TaW5jZSIsYW0ubGFzdE1vZGlmaWVkW1kudXJsXSk7YW0uZXRhZ1tZLnVybF0m JnIuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsYW0uZXRhZ1tZLnVybF0pfXp8fHIuc2V0 UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEh0dHBSZXF1ZXN0Iik7ci5zZXRSZXF1 ZXN0SGVhZGVyKCJBY2NlcHQiLFkuZGF0YVR5cGUmJlkuYWNjZXB0c1tZLmRhdGFUeXBlXT9ZLmFjY2Vw dHNbWS5kYXRhVHlwZV0rIiwgKi8qIjpZLmFjY2VwdHMuX2RlZmF1bHQpfWNhdGNoKEwpe31pZihZLmJl Zm9yZVNlbmQmJlkuYmVmb3JlU2VuZC5jYWxsKEsscixZKT09PWZhbHNlKXtZLmdsb2JhbCYmIS0tYW0u YWN0aXZlJiZhbS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpO3IuYWJvcnQoKTtyZXR1cm4gZmFsc2V9 WS5nbG9iYWwmJlgoImFqYXhTZW5kIixbcixZXSk7dmFyIFc9ci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVu Y3Rpb24oYmIpe2lmKCFyfHxyLnJlYWR5U3RhdGU9PT0wfHxiYj09PSJhYm9ydCIpe3Z8fFooKTt2PXRy dWU7aWYocil7ci5vbnJlYWR5c3RhdGVjaGFuZ2U9YW0ubm9vcH19ZWxzZXtpZighdiYmciYmKHIucmVh ZHlTdGF0ZT09PTR8fGJiPT09InRpbWVvdXQiKSl7dj10cnVlO3Iub25yZWFkeXN0YXRlY2hhbmdlPWFt Lm5vb3A7Uz1iYj09PSJ0aW1lb3V0Ij8idGltZW91dCI6IWFtLmh0dHBTdWNjZXNzKHIpPyJlcnJvciI6 WS5pZk1vZGlmaWVkJiZhbS5odHRwTm90TW9kaWZpZWQocixZLnVybCk/Im5vdG1vZGlmaWVkIjoic3Vj Y2VzcyI7dmFyIGJtO2lmKFM9PT0ic3VjY2VzcyIpe3RyeXtOPWFtLmh0dHBEYXRhKHIsWS5kYXRhVHlw ZSxZKX1jYXRjaChiYSl7Uz0icGFyc2VyZXJyb3IiO2JtPWJhfX1pZihTPT09InN1Y2Nlc3MifHxTPT09 Im5vdG1vZGlmaWVkIil7VHx8YWEoKX1lbHNle2FtLmhhbmRsZUVycm9yKFkscixTLGJtKX1aKCk7YmI9 PT0idGltZW91dCImJnIuYWJvcnQoKTtpZihZLmFzeW5jKXtyPW51bGx9fX19O3RyeXt2YXIgVj1yLmFi b3J0O3IuYWJvcnQ9ZnVuY3Rpb24oKXtyJiZWLmNhbGwocik7VygiYWJvcnQiKX19Y2F0Y2goUSl7fVku YXN5bmMmJlkudGltZW91dD4wJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ciYmIXYmJlcoInRpbWVvdXQi KX0sWS50aW1lb3V0KTt0cnl7ci5zZW5kKE89PT0iUE9TVCJ8fE89PT0iUFVUInx8Tz09PSJERUxFVEUi P1kuZGF0YTpudWxsKX1jYXRjaChQKXthbS5oYW5kbGVFcnJvcihZLHIsbnVsbCxQKTtaKCl9WS5hc3lu Y3x8VygpO3JldHVybiByfX0saGFuZGxlRXJyb3I6ZnVuY3Rpb24ocixjLHosdil7aWYoci5lcnJvcil7 ci5lcnJvci5jYWxsKHIuY29udGV4dHx8cixjLHosdil9aWYoci5nbG9iYWwpeyhyLmNvbnRleHQ/YW0o ci5jb250ZXh0KTphbS5ldmVudCkudHJpZ2dlcigiYWpheEVycm9yIixbYyxyLHZdKX19LGFjdGl2ZTow LGh0dHBTdWNjZXNzOmZ1bmN0aW9uKHIpe3RyeXtyZXR1cm4gIXIuc3RhdHVzJiZsb2NhdGlvbi5wcm90 b2NvbD09PSJmaWxlOiJ8fHIuc3RhdHVzPj0yMDAmJnIuc3RhdHVzPDMwMHx8ci5zdGF0dXM9PT0zMDR8 fHIuc3RhdHVzPT09MTIyM3x8ci5zdGF0dXM9PT0wfWNhdGNoKGMpe31yZXR1cm4gZmFsc2V9LGh0dHBO b3RNb2RpZmllZDpmdW5jdGlvbihyLGMpe3ZhciB6PXIuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9k aWZpZWQiKSx2PXIuZ2V0UmVzcG9uc2VIZWFkZXIoIkV0YWciKTtpZih6KXthbS5sYXN0TW9kaWZpZWRb Y109en1pZih2KXthbS5ldGFnW2NdPXZ9cmV0dXJuIHIuc3RhdHVzPT09MzA0fHxyLnN0YXR1cz09PTB9 LGh0dHBEYXRhOmZ1bmN0aW9uKHIsYyxGKXt2YXIgdj1yLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50 LXR5cGUiKXx8IiIsej1jPT09InhtbCJ8fCFjJiZ2LmluZGV4T2YoInhtbCIpPj0wO3I9ej9yLnJlc3Bv bnNlWE1MOnIucmVzcG9uc2VUZXh0O3omJnIuZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lPT09InBhcnNl cmVycm9yIiYmYW0uZXJyb3IoInBhcnNlcmVycm9yIik7aWYoRiYmRi5kYXRhRmlsdGVyKXtyPUYuZGF0 YUZpbHRlcihyLGMpfWlmKHR5cGVvZiByPT09InN0cmluZyIpe2lmKGM9PT0ianNvbiJ8fCFjJiZ2Lmlu ZGV4T2YoImpzb24iKT49MCl7cj1hbS5wYXJzZUpTT04ocil9ZWxzZXtpZihjPT09InNjcmlwdCJ8fCFj JiZ2LmluZGV4T2YoImphdmFzY3JpcHQiKT49MCl7YW0uZ2xvYmFsRXZhbChyKX19fXJldHVybiByfSxw YXJhbTpmdW5jdGlvbihyLGMpe2Z1bmN0aW9uIEcoSixLKXtpZihhbS5pc0FycmF5KEspKXthbS5lYWNo KEssZnVuY3Rpb24oTixMKXtjP3ooSixMKTpHKEorIlsiKyh0eXBlb2YgTD09PSJvYmplY3QifHxhbS5p c0FycmF5KEwpP046IiIpKyJdIixMKX0pfWVsc2V7IWMmJkshPW51bGwmJnR5cGVvZiBLPT09Im9iamVj dCI/YW0uZWFjaChLLGZ1bmN0aW9uKE4sTCl7RyhKKyJbIitOKyJdIixMKX0pOnooSixLKX19ZnVuY3Rp b24geihKLEspe0s9YW0uaXNGdW5jdGlvbihLKT9LKCk6SztGW0YubGVuZ3RoXT1lbmNvZGVVUklDb21w b25lbnQoSikrIj0iK2VuY29kZVVSSUNvbXBvbmVudChLKX12YXIgRj1bXTtpZihjPT09YWUpe2M9YW0u YWpheFNldHRpbmdzLnRyYWRpdGlvbmFsfWlmKGFtLmlzQXJyYXkocil8fHIuanF1ZXJ5KXthbS5lYWNo KHIsZnVuY3Rpb24oKXt6KHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pfWVsc2V7Zm9yKHZhciB2IGluIHIp e0codixyW3ZdKX19cmV0dXJuIEYuam9pbigiJiIpLnJlcGxhY2UoTSwiKyIpfX0pO3ZhciBsPXt9LHM9 L3RvZ2dsZXxzaG93fGhpZGUvLGE9L14oWystXT0pPyhbXGQrLS5dKykoLiopJC8sYXcsYVQ9W1siaGVp Z2h0IiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20i XSxbIndpZHRoIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5n UmlnaHQiXSxbIm9wYWNpdHkiXV07YW0uZm4uZXh0ZW5kKHtzaG93OmZ1bmN0aW9uKHIsYyl7aWYocnx8 cj09PTApe3JldHVybiB0aGlzLmFuaW1hdGUoYUgoInNob3ciLDMpLHIsYyl9ZWxzZXtyPTA7Zm9yKGM9 dGhpcy5sZW5ndGg7cjxjO3IrKyl7dmFyIEY9YW0uZGF0YSh0aGlzW3JdLCJvbGRkaXNwbGF5Iik7dGhp c1tyXS5zdHlsZS5kaXNwbGF5PUZ8fCIiO2lmKGFtLmNzcyh0aGlzW3JdLCJkaXNwbGF5Iik9PT0ibm9u ZSIpe0Y9dGhpc1tyXS5ub2RlTmFtZTt2YXIgdjtpZihsW0ZdKXt2PWxbRl19ZWxzZXt2YXIgej1hbSgi PCIrRisiIC8+IikuYXBwZW5kVG8oImJvZHkiKTt2PXouY3NzKCJkaXNwbGF5Iik7aWYodj09PSJub25l Iil7dj0iYmxvY2sifXoucmVtb3ZlKCk7bFtGXT12fWFtLmRhdGEodGhpc1tyXSwib2xkZGlzcGxheSIs dil9fXI9MDtmb3IoYz10aGlzLmxlbmd0aDtyPGM7cisrKXt0aGlzW3JdLnN0eWxlLmRpc3BsYXk9YW0u ZGF0YSh0aGlzW3JdLCJvbGRkaXNwbGF5Iil8fCIifXJldHVybiB0aGlzfX0saGlkZTpmdW5jdGlvbihy LGMpe2lmKHJ8fHI9PT0wKXtyZXR1cm4gdGhpcy5hbmltYXRlKGFIKCJoaWRlIiwzKSxyLGMpfWVsc2V7 cj0wO2ZvcihjPXRoaXMubGVuZ3RoO3I8YztyKyspe3ZhciB2PWFtLmRhdGEodGhpc1tyXSwib2xkZGlz cGxheSIpOyF2JiZ2IT09Im5vbmUiJiZhbS5kYXRhKHRoaXNbcl0sIm9sZGRpc3BsYXkiLGFtLmNzcyh0 aGlzW3JdLCJkaXNwbGF5IikpfXI9MDtmb3IoYz10aGlzLmxlbmd0aDtyPGM7cisrKXt0aGlzW3JdLnN0 eWxlLmRpc3BsYXk9Im5vbmUifXJldHVybiB0aGlzfX0sX3RvZ2dsZTphbS5mbi50b2dnbGUsdG9nZ2xl OmZ1bmN0aW9uKHIsYyl7dmFyIHY9dHlwZW9mIHI9PT0iYm9vbGVhbiI7aWYoYW0uaXNGdW5jdGlvbihy KSYmYW0uaXNGdW5jdGlvbihjKSl7dGhpcy5fdG9nZ2xlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1lbHNl e3I9PW51bGx8fHY/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHo9dj9yOmFtKHRoaXMpLmlzKCI6aGlk ZGVuIik7YW0odGhpcylbej8ic2hvdyI6ImhpZGUiXSgpfSk6dGhpcy5hbmltYXRlKGFIKCJ0b2dnbGUi LDMpLHIsYyl9cmV0dXJuIHRoaXN9LGZhZGVUbzpmdW5jdGlvbihyLGMsdil7cmV0dXJuIHRoaXMuZmls dGVyKCI6aGlkZGVuIikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0 eTpjfSxyLHYpfSxhbmltYXRlOmZ1bmN0aW9uKHIsYyxGLHYpe3ZhciB6PWFtLnNwZWVkKGMsRix2KTtp ZihhbS5pc0VtcHR5T2JqZWN0KHIpKXtyZXR1cm4gdGhpcy5lYWNoKHouY29tcGxldGUpfXJldHVybiB0 aGlzW3oucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0oZnVuY3Rpb24oKXt2YXIgSz1hbS5leHRl bmQoe30seiksSixOPXRoaXMubm9kZVR5cGU9PT0xJiZhbSh0aGlzKS5pcygiOmhpZGRlbiIpLEw9dGhp cztmb3IoSiBpbiByKXt2YXIgRz1KLnJlcGxhY2UoYUosYWopO2lmKEohPT1HKXtyW0ddPXJbSl07ZGVs ZXRlIHJbSl07Sj1HfWlmKHJbSl09PT0iaGlkZSImJk58fHJbSl09PT0ic2hvdyImJiFOKXtyZXR1cm4g Sy5jb21wbGV0ZS5jYWxsKHRoaXMpfWlmKChKPT09ImhlaWdodCJ8fEo9PT0id2lkdGgiKSYmdGhpcy5z dHlsZSl7Sy5kaXNwbGF5PWFtLmNzcyh0aGlzLCJkaXNwbGF5Iik7Sy5vdmVyZmxvdz10aGlzLnN0eWxl Lm92ZXJmbG93fWlmKGFtLmlzQXJyYXkocltKXSkpeyhLLnNwZWNpYWxFYXNpbmc9Sy5zcGVjaWFsRWFz aW5nfHx7fSlbSl09cltKXVsxXTtyW0pdPXJbSl1bMF19fWlmKEsub3ZlcmZsb3chPW51bGwpe3RoaXMu c3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPWFtLmV4dGVuZCh7fSxyKTthbS5lYWNoKHIs ZnVuY3Rpb24oUSxQKXt2YXIgTz1uZXcgYW0uZngoTCxLLFEpO2lmKHMudGVzdChQKSl7T1tQPT09InRv Z2dsZSI/Tj8ic2hvdyI6ImhpZGUiOlBdKHIpfWVsc2V7dmFyIFY9YS5leGVjKFApLFQ9Ty5jdXIodHJ1 ZSl8fDA7aWYoVil7UD1wYXJzZUZsb2F0KFZbMl0pO3ZhciBTPVZbM118fCJweCI7aWYoUyE9PSJweCIp e0wuc3R5bGVbUV09KFB8fDEpK1M7VD0oUHx8MSkvTy5jdXIodHJ1ZSkqVDtMLnN0eWxlW1FdPVQrU31p ZihWWzFdKXtQPShWWzFdPT09Ii09Ij8tMToxKSpQK1R9Ty5jdXN0b20oVCxQLFMpfWVsc2V7Ty5jdXN0 b20oVCxQLCIiKX19fSk7cmV0dXJuIHRydWV9KX0sc3RvcDpmdW5jdGlvbihyLGMpe3ZhciB2PWFtLnRp bWVycztyJiZ0aGlzLnF1ZXVlKFtdKTt0aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIHo9di5sZW5n dGgtMTt6Pj0wO3otLSl7aWYodlt6XS5lbGVtPT09dGhpcyl7YyYmdlt6XSh0cnVlKTt2LnNwbGljZSh6 LDEpfX19KTtjfHx0aGlzLmRlcXVldWUoKTtyZXR1cm4gdGhpc319KTthbS5lYWNoKHtzbGlkZURvd246 YUgoInNob3ciLDEpLHNsaWRlVXA6YUgoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOmFIKCJ0b2dnbGUiLDEp LGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifX0sZnVuY3Rpb24o cixjKXthbS5mbltyXT1mdW5jdGlvbih6LHYpe3JldHVybiB0aGlzLmFuaW1hdGUoYyx6LHYpfX0pO2Ft LmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24ocixjLHope3ZhciB2PXImJnR5cGVvZiByPT09Im9iamVjdCI/ cjp7Y29tcGxldGU6enx8IXomJmN8fGFtLmlzRnVuY3Rpb24ocikmJnIsZHVyYXRpb246cixlYXNpbmc6 eiYmY3x8YyYmIWFtLmlzRnVuY3Rpb24oYykmJmN9O3YuZHVyYXRpb249YW0uZngub2ZmPzA6dHlwZW9m IHYuZHVyYXRpb249PT0ibnVtYmVyIj92LmR1cmF0aW9uOmFtLmZ4LnNwZWVkc1t2LmR1cmF0aW9uXXx8 YW0uZnguc3BlZWRzLl9kZWZhdWx0O3Yub2xkPXYuY29tcGxldGU7di5jb21wbGV0ZT1mdW5jdGlvbigp e3YucXVldWUhPT1mYWxzZSYmYW0odGhpcykuZGVxdWV1ZSgpO2FtLmlzRnVuY3Rpb24odi5vbGQpJiZ2 Lm9sZC5jYWxsKHRoaXMpfTtyZXR1cm4gdn0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24ocixjLHosdil7 cmV0dXJuIHordipyfSxzd2luZzpmdW5jdGlvbihyLGMseix2KXtyZXR1cm4oLU1hdGguY29zKHIqTWF0 aC5QSSkvMiswLjUpKnYren19LHRpbWVyczpbXSxmeDpmdW5jdGlvbihyLGMsdil7dGhpcy5vcHRpb25z PWM7dGhpcy5lbGVtPXI7dGhpcy5wcm9wPXY7aWYoIWMub3JpZyl7Yy5vcmlnPXt9fX19KTthbS5meC5w cm90b3R5cGU9e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMu c3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKTsoYW0uZnguc3RlcFt0aGlzLnByb3BdfHxh bS5meC5zdGVwLl9kZWZhdWx0KSh0aGlzKTtpZigodGhpcy5wcm9wPT09ImhlaWdodCJ8fHRoaXMucHJv cD09PSJ3aWR0aCIpJiZ0aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9j ayJ9fSxjdXI6ZnVuY3Rpb24oYyl7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5l bGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpe3JldHVybiB0aGlzLmVs ZW1bdGhpcy5wcm9wXX1yZXR1cm4oYz1wYXJzZUZsb2F0KGFtLmNzcyh0aGlzLmVsZW0sdGhpcy5wcm9w LGMpKSkmJmM+LTEwMDAwP2M6cGFyc2VGbG9hdChhbS5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkp fHwwfSxjdXN0b206ZnVuY3Rpb24ocixjLEYpe2Z1bmN0aW9uIHYoRyl7cmV0dXJuIHouc3RlcChHKX10 aGlzLnN0YXJ0VGltZT1hSygpO3RoaXMuc3RhcnQ9cjt0aGlzLmVuZD1jO3RoaXMudW5pdD1GfHx0aGlz LnVuaXR8fCJweCI7dGhpcy5ub3c9dGhpcy5zdGFydDt0aGlzLnBvcz10aGlzLnN0YXRlPTA7dmFyIHo9 dGhpczt2LmVsZW09dGhpcy5lbGVtO2lmKHYoKSYmYW0udGltZXJzLnB1c2godikmJiFhdyl7YXc9c2V0 SW50ZXJ2YWwoYW0uZngudGljaywxMyl9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdb dGhpcy5wcm9wXT1hbS5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuc2hvdz10 cnVlO3RoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0aCJ8fHRoaXMucHJvcD09PSJoZWlnaHQiPzE6 MCx0aGlzLmN1cigpKTthbSh0aGlzLmVsZW0pLnNob3coKX0saGlkZTpmdW5jdGlvbigpe3RoaXMub3B0 aW9ucy5vcmlnW3RoaXMucHJvcF09YW0uc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCk7dGhpcy5vcHRp b25zLmhpZGU9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlzLmN1cigpLDApfSxzdGVwOmZ1bmN0aW9uKHIpe3Zh ciBjPWFLKCksRj10cnVlO2lmKHJ8fGM+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGlt ZSl7dGhpcy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRlKCk7dGhp cy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO2Zvcih2YXIgdiBpbiB0aGlzLm9wdGlvbnMu Y3VyQW5pbSl7aWYodGhpcy5vcHRpb25zLmN1ckFuaW1bdl0hPT10cnVlKXtGPWZhbHNlfX1pZihGKXtp Zih0aGlzLm9wdGlvbnMuZGlzcGxheSE9bnVsbCl7dGhpcy5lbGVtLnN0eWxlLm92ZXJmbG93PXRoaXMu b3B0aW9ucy5vdmVyZmxvdztyPWFtLmRhdGEodGhpcy5lbGVtLCJvbGRkaXNwbGF5Iik7dGhpcy5lbGVt LnN0eWxlLmRpc3BsYXk9cj9yOnRoaXMub3B0aW9ucy5kaXNwbGF5O2lmKGFtLmNzcyh0aGlzLmVsZW0s ImRpc3BsYXkiKT09PSJub25lIil7dGhpcy5lbGVtLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn19dGhpcy5v cHRpb25zLmhpZGUmJmFtKHRoaXMuZWxlbSkuaGlkZSgpO2lmKHRoaXMub3B0aW9ucy5oaWRlfHx0aGlz Lm9wdGlvbnMuc2hvdyl7Zm9yKHZhciB6IGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXthbS5zdHlsZSh0 aGlzLmVsZW0seix0aGlzLm9wdGlvbnMub3JpZ1t6XSl9fXRoaXMub3B0aW9ucy5jb21wbGV0ZS5jYWxs KHRoaXMuZWxlbSl9cmV0dXJuIGZhbHNlfWVsc2V7ej1jLXRoaXMuc3RhcnRUaW1lO3RoaXMuc3RhdGU9 ei90aGlzLm9wdGlvbnMuZHVyYXRpb247cj10aGlzLm9wdGlvbnMuZWFzaW5nfHwoYW0uZWFzaW5nLnN3 aW5nPyJzd2luZyI6ImxpbmVhciIpO3RoaXMucG9zPWFtLmVhc2luZ1t0aGlzLm9wdGlvbnMuc3BlY2lh bEVhc2luZyYmdGhpcy5vcHRpb25zLnNwZWNpYWxFYXNpbmdbdGhpcy5wcm9wXXx8cl0odGhpcy5zdGF0 ZSx6LDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pO3RoaXMubm93PXRoaXMuc3RhcnQrKHRoaXMuZW5k LXRoaXMuc3RhcnQpKnRoaXMucG9zO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTthbS5leHRlbmQo YW0uZngse3RpY2s6ZnVuY3Rpb24oKXtmb3IodmFyIHI9YW0udGltZXJzLGM9MDtjPHIubGVuZ3RoO2Mr Kyl7cltjXSgpfHxyLnNwbGljZShjLS0sMSl9ci5sZW5ndGh8fGFtLmZ4LnN0b3AoKX0sc3RvcDpmdW5j dGlvbigpe2NsZWFySW50ZXJ2YWwoYXcpO2F3PW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAs X2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGMpe2FtLnN0eWxlKGMuZWxlbSwib3Bh Y2l0eSIsYy5ub3cpfSxfZGVmYXVsdDpmdW5jdGlvbihjKXtpZihjLmVsZW0uc3R5bGUmJmMuZWxlbS5z dHlsZVtjLnByb3BdIT1udWxsKXtjLmVsZW0uc3R5bGVbYy5wcm9wXT0oYy5wcm9wPT09IndpZHRoInx8 Yy5wcm9wPT09ImhlaWdodCI/TWF0aC5tYXgoMCxjLm5vdyk6Yy5ub3cpK2MudW5pdH1lbHNle2MuZWxl bVtjLnByb3BdPWMubm93fX19fSk7aWYoYW0uZXhwciYmYW0uZXhwci5maWx0ZXJzKXthbS5leHByLmZp bHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYyl7cmV0dXJuIGFtLmdyZXAoYW0udGltZXJzLGZ1bmN0aW9u KHIpe3JldHVybiBjPT09ci5lbGVtfSkubGVuZ3RofX1hbS5mbi5vZmZzZXQ9ImdldEJvdW5kaW5nQ2xp ZW50UmVjdCIgaW4gYWYuZG9jdW1lbnRFbGVtZW50P2Z1bmN0aW9uKHIpe3ZhciBjPXRoaXNbMF07aWYo cil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihGKXthbS5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMscixG KX0pfWlmKCFjfHwhYy5vd25lckRvY3VtZW50KXtyZXR1cm4gbnVsbH1pZihjPT09Yy5vd25lckRvY3Vt ZW50LmJvZHkpe3JldHVybiBhbS5vZmZzZXQuYm9keU9mZnNldChjKX12YXIgej1jLmdldEJvdW5kaW5n Q2xpZW50UmVjdCgpLHY9Yy5vd25lckRvY3VtZW50O2M9di5ib2R5O3Y9di5kb2N1bWVudEVsZW1lbnQ7 cmV0dXJue3RvcDp6LnRvcCsoc2VsZi5wYWdlWU9mZnNldHx8YW0uc3VwcG9ydC5ib3hNb2RlbCYmdi5z Y3JvbGxUb3B8fGMuc2Nyb2xsVG9wKS0odi5jbGllbnRUb3B8fGMuY2xpZW50VG9wfHwwKSxsZWZ0Onou bGVmdCsoc2VsZi5wYWdlWE9mZnNldHx8YW0uc3VwcG9ydC5ib3hNb2RlbCYmdi5zY3JvbGxMZWZ0fHxj LnNjcm9sbExlZnQpLSh2LmNsaWVudExlZnR8fGMuY2xpZW50TGVmdHx8MCl9fTpmdW5jdGlvbihOKXt2 YXIgTD10aGlzWzBdO2lmKE4pe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oTyl7YW0ub2Zmc2V0LnNl dE9mZnNldCh0aGlzLE4sTyl9KX1pZighTHx8IUwub3duZXJEb2N1bWVudCl7cmV0dXJuIG51bGx9aWYo TD09PUwub3duZXJEb2N1bWVudC5ib2R5KXtyZXR1cm4gYW0ub2Zmc2V0LmJvZHlPZmZzZXQoTCl9YW0u b2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgSz1MLm9mZnNldFBhcmVudCxHPUwsSj1MLm93bmVyRG9jdW1l bnQsRix6PUouZG9jdW1lbnRFbGVtZW50LHI9Si5ib2R5O0c9KEo9Si5kZWZhdWx0Vmlldyk/Si5nZXRD b21wdXRlZFN0eWxlKEwsbnVsbCk6TC5jdXJyZW50U3R5bGU7Zm9yKHZhciBjPUwub2Zmc2V0VG9wLHY9 TC5vZmZzZXRMZWZ0OyhMPUwucGFyZW50Tm9kZSkmJkwhPT1yJiZMIT09ejspe2lmKGFtLm9mZnNldC5z dXBwb3J0c0ZpeGVkUG9zaXRpb24mJkcucG9zaXRpb249PT0iZml4ZWQiKXticmVha31GPUo/Si5nZXRD b21wdXRlZFN0eWxlKEwsbnVsbCk6TC5jdXJyZW50U3R5bGU7Yy09TC5zY3JvbGxUb3A7di09TC5zY3Jv bGxMZWZ0O2lmKEw9PT1LKXtjKz1MLm9mZnNldFRvcDt2Kz1MLm9mZnNldExlZnQ7aWYoYW0ub2Zmc2V0 LmRvZXNOb3RBZGRCb3JkZXImJiEoYW0ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxz JiYvXnQoYWJsZXxkfGgpJC9pLnRlc3QoTC5ub2RlTmFtZSkpKXtjKz1wYXJzZUZsb2F0KEYuYm9yZGVy VG9wV2lkdGgpfHwwO3YrPXBhcnNlRmxvYXQoRi5ib3JkZXJMZWZ0V2lkdGgpfHwwfUc9SztLPUwub2Zm c2V0UGFyZW50fWlmKGFtLm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUm JkYub3ZlcmZsb3chPT0idmlzaWJsZSIpe2MrPXBhcnNlRmxvYXQoRi5ib3JkZXJUb3BXaWR0aCl8fDA7 dis9cGFyc2VGbG9hdChGLmJvcmRlckxlZnRXaWR0aCl8fDB9Rz1GfWlmKEcucG9zaXRpb249PT0icmVs YXRpdmUifHxHLnBvc2l0aW9uPT09InN0YXRpYyIpe2MrPXIub2Zmc2V0VG9wO3YrPXIub2Zmc2V0TGVm dH1pZihhbS5vZmZzZXQuc3VwcG9ydHNGaXhlZFBvc2l0aW9uJiZHLnBvc2l0aW9uPT09ImZpeGVkIil7 Yys9TWF0aC5tYXgoei5zY3JvbGxUb3Asci5zY3JvbGxUb3ApO3YrPU1hdGgubWF4KHouc2Nyb2xsTGVm dCxyLnNjcm9sbExlZnQpfXJldHVybnt0b3A6YyxsZWZ0OnZ9fTthbS5vZmZzZXQ9e2luaXRpYWxpemU6 ZnVuY3Rpb24oKXt2YXIgcj1hZi5ib2R5LGM9YWYuY3JlYXRlRWxlbWVudCgiZGl2IiksRyx6LEYsdj1w YXJzZUZsb2F0KGFtLmN1ckNTUyhyLCJtYXJnaW5Ub3AiLHRydWUpKXx8MDthbS5leHRlbmQoYy5zdHls ZSx7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lkdGg6 IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9KTtjLmlubmVySFRNTD0iPGRpdiBz dHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29s aWQgIzAwMDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7Jz48ZGl2PjwvZGl2PjwvZGl2Pjx0 YWJsZSBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1 cHggc29saWQgIzAwMDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7JyBjZWxscGFkZGluZz0n MCcgY2VsbHNwYWNpbmc9JzAnPjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+IjtyLmluc2VydEJlZm9y ZShjLHIuZmlyc3RDaGlsZCk7Rz1jLmZpcnN0Q2hpbGQ7ej1HLmZpcnN0Q2hpbGQ7Rj1HLm5leHRTaWJs aW5nLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZDt0aGlzLmRvZXNOb3RBZGRCb3JkZXI9ei5vZmZzZXRUb3Ah PT01O3RoaXMuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHM9Ri5vZmZzZXRUb3A9PT01O3ouc3R5 bGUucG9zaXRpb249ImZpeGVkIjt6LnN0eWxlLnRvcD0iMjBweCI7dGhpcy5zdXBwb3J0c0ZpeGVkUG9z aXRpb249ei5vZmZzZXRUb3A9PT0yMHx8ei5vZmZzZXRUb3A9PT0xNTt6LnN0eWxlLnBvc2l0aW9uPXou c3R5bGUudG9wPSIiO0cuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiI7Ry5zdHlsZS5wb3NpdGlvbj0icmVs YXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPXoub2Zmc2V0VG9w PT09LTU7dGhpcy5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldD1yLm9mZnNldFRvcCE9PXY7 ci5yZW1vdmVDaGlsZChjKTthbS5vZmZzZXQuaW5pdGlhbGl6ZT1hbS5ub29wfSxib2R5T2Zmc2V0OmZ1 bmN0aW9uKHIpe3ZhciBjPXIub2Zmc2V0VG9wLHY9ci5vZmZzZXRMZWZ0O2FtLm9mZnNldC5pbml0aWFs aXplKCk7aWYoYW0ub2Zmc2V0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0KXtjKz1wYXJz ZUZsb2F0KGFtLmN1ckNTUyhyLCJtYXJnaW5Ub3AiLHRydWUpKXx8MDt2Kz1wYXJzZUZsb2F0KGFtLmN1 ckNTUyhyLCJtYXJnaW5MZWZ0Iix0cnVlKSl8fDB9cmV0dXJue3RvcDpjLGxlZnQ6dn19LHNldE9mZnNl dDpmdW5jdGlvbihyLGMsSil7aWYoL3N0YXRpYy8udGVzdChhbS5jdXJDU1MociwicG9zaXRpb24iKSkp e3Iuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIn12YXIgRj1hbShyKSxHPUYub2Zmc2V0KCksej1wYXJz ZUludChhbS5jdXJDU1MociwidG9wIix0cnVlKSwxMCl8fDAsdj1wYXJzZUludChhbS5jdXJDU1Mociwi bGVmdCIsdHJ1ZSksMTApfHwwO2lmKGFtLmlzRnVuY3Rpb24oYykpe2M9Yy5jYWxsKHIsSixHKX1KPXt0 b3A6Yy50b3AtRy50b3AreixsZWZ0OmMubGVmdC1HLmxlZnQrdn07InVzaW5nIiBpbiBjP2MudXNpbmcu Y2FsbChyLEopOkYuY3NzKEopfX07YW0uZm4uZXh0ZW5kKHtwb3NpdGlvbjpmdW5jdGlvbigpe2lmKCF0 aGlzWzBdKXtyZXR1cm4gbnVsbH12YXIgcj10aGlzWzBdLGM9dGhpcy5vZmZzZXRQYXJlbnQoKSx6PXRo aXMub2Zmc2V0KCksdj0vXmJvZHl8aHRtbCQvaS50ZXN0KGNbMF0ubm9kZU5hbWUpP3t0b3A6MCxsZWZ0 OjB9OmMub2Zmc2V0KCk7ei50b3AtPXBhcnNlRmxvYXQoYW0uY3VyQ1NTKHIsIm1hcmdpblRvcCIsdHJ1 ZSkpfHwwO3oubGVmdC09cGFyc2VGbG9hdChhbS5jdXJDU1MociwibWFyZ2luTGVmdCIsdHJ1ZSkpfHww O3YudG9wKz1wYXJzZUZsb2F0KGFtLmN1ckNTUyhjWzBdLCJib3JkZXJUb3BXaWR0aCIsdHJ1ZSkpfHww O3YubGVmdCs9cGFyc2VGbG9hdChhbS5jdXJDU1MoY1swXSwiYm9yZGVyTGVmdFdpZHRoIix0cnVlKSl8 fDA7cmV0dXJue3RvcDp6LnRvcC12LnRvcCxsZWZ0OnoubGVmdC12LmxlZnR9fSxvZmZzZXRQYXJlbnQ6 ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIGM9dGhpcy5vZmZzZXRQ YXJlbnR8fGFmLmJvZHk7YyYmIS9eYm9keXxodG1sJC9pLnRlc3QoYy5ub2RlTmFtZSkmJmFtLmNzcyhj LCJwb3NpdGlvbiIpPT09InN0YXRpYyI7KXtjPWMub2Zmc2V0UGFyZW50fXJldHVybiBjfSl9fSk7YW0u ZWFjaChbIkxlZnQiLCJUb3AiXSxmdW5jdGlvbihyLGMpe3ZhciB2PSJzY3JvbGwiK2M7YW0uZm5bdl09 ZnVuY3Rpb24oRil7dmFyIEc9dGhpc1swXSx6O2lmKCFHKXtyZXR1cm4gbnVsbH1pZihGIT09YWUpe3Jl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih6PWFwKHRoaXMpKXt6LnNjcm9sbFRvKCFyP0Y6YW0o eikuc2Nyb2xsTGVmdCgpLHI/RjphbSh6KS5zY3JvbGxUb3AoKSl9ZWxzZXt0aGlzW3ZdPUZ9fSl9ZWxz ZXtyZXR1cm4oej1hcChHKSk/InBhZ2VYT2Zmc2V0IiBpbiB6P3pbcj8icGFnZVlPZmZzZXQiOiJwYWdl WE9mZnNldCJdOmFtLnN1cHBvcnQuYm94TW9kZWwmJnouZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W3Zd fHx6LmRvY3VtZW50LmJvZHlbdl06R1t2XX19fSk7YW0uZWFjaChbIkhlaWdodCIsIldpZHRoIl0sZnVu Y3Rpb24ocixjKXt2YXIgdj1jLnRvTG93ZXJDYXNlKCk7YW0uZm5bImlubmVyIitjXT1mdW5jdGlvbigp e3JldHVybiB0aGlzWzBdP2FtLmNzcyh0aGlzWzBdLHYsZmFsc2UsInBhZGRpbmciKTpudWxsfTthbS5m blsib3V0ZXIiK2NdPWZ1bmN0aW9uKHope3JldHVybiB0aGlzWzBdP2FtLmNzcyh0aGlzWzBdLHYsZmFs c2Usej8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07YW0uZm5bdl09ZnVuY3Rpb24oeil7dmFyIEY9dGhp c1swXTtpZighRil7cmV0dXJuIHo9PW51bGw/bnVsbDp0aGlzfWlmKGFtLmlzRnVuY3Rpb24oeikpe3Jl dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oSil7dmFyIEc9YW0odGhpcyk7R1t2XSh6LmNhbGwodGhpcyxK LEdbdl0oKSkpfSl9cmV0dXJuInNjcm9sbFRvIiBpbiBGJiZGLmRvY3VtZW50P0YuZG9jdW1lbnQuY29t cGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmRi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIr Y118fEYuZG9jdW1lbnQuYm9keVsiY2xpZW50IitjXTpGLm5vZGVUeXBlPT09OT9NYXRoLm1heChGLmRv Y3VtZW50RWxlbWVudFsiY2xpZW50IitjXSxGLmJvZHlbInNjcm9sbCIrY10sRi5kb2N1bWVudEVsZW1l bnRbInNjcm9sbCIrY10sRi5ib2R5WyJvZmZzZXQiK2NdLEYuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQi K2NdKTp6PT09YWU/YW0uY3NzKEYsdik6dGhpcy5jc3Modix0eXBlb2Ygej09PSJzdHJpbmciP3o6eisi cHgiKX19KTthYy5qUXVlcnk9YWMuJD1hbX0pKHdpbmRvdyk7alF1ZXJ5LnVpfHwoZnVuY3Rpb24ocyl7 dmFyIGw9cy5mbi5yZW1vdmUscj1zLmJyb3dzZXIubW96aWxsYSYmKHBhcnNlRmxvYXQocy5icm93c2Vy LnZlcnNpb24pPDEuOSk7cy51aT17dmVyc2lvbjoiMS43LjIiLHBsdWdpbjp7YWRkOmZ1bmN0aW9uKGMs YixlKXt2YXIgYT1zLnVpW2NdLnByb3RvdHlwZTtmb3IodmFyIGQgaW4gZSl7YS5wbHVnaW5zW2RdPWEu cGx1Z2luc1tkXXx8W107YS5wbHVnaW5zW2RdLnB1c2goW2IsZVtkXV0pfX0sY2FsbDpmdW5jdGlvbihk LGIsYyl7dmFyIGU9ZC5wbHVnaW5zW2JdO2lmKCFlfHwhZC5lbGVtZW50WzBdLnBhcmVudE5vZGUpe3Jl dHVybn1mb3IodmFyIGE9MDthPGUubGVuZ3RoO2ErKyl7aWYoZC5vcHRpb25zW2VbYV1bMF1dKXtlW2Fd WzFdLmFwcGx5KGQuZWxlbWVudCxjKX19fX0sY29udGFpbnM6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZG9j dW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYx NjphIT09YiYmYS5jb250YWlucyhiKX0saGFzU2Nyb2xsOmZ1bmN0aW9uKGEsYyl7aWYocyhhKS5jc3Mo Im92ZXJmbG93Iik9PSJoaWRkZW4iKXtyZXR1cm4gZmFsc2V9dmFyIGQ9KGMmJmM9PSJsZWZ0Iik/InNj cm9sbExlZnQiOiJzY3JvbGxUb3AiLGI9ZmFsc2U7aWYoYVtkXT4wKXtyZXR1cm4gdHJ1ZX1hW2RdPTE7 Yj0oYVtkXT4wKTthW2RdPTA7cmV0dXJuIGJ9LGlzT3ZlckF4aXM6ZnVuY3Rpb24oYixjLGEpe3JldHVy bihiPmMpJiYoYjwoYythKSl9LGlzT3ZlcjpmdW5jdGlvbihlLGMsZixhLGQsYil7cmV0dXJuIHMudWku aXNPdmVyQXhpcyhlLGYsZCkmJnMudWkuaXNPdmVyQXhpcyhjLGEsYil9LGtleUNvZGU6e0JBQ0tTUEFD RTo4LENBUFNfTE9DSzoyMCxDT01NQToxODgsQ09OVFJPTDoxNyxERUxFVEU6NDYsRE9XTjo0MCxFTkQ6 MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsSU5TRVJUOjQ1LExFRlQ6MzcsTlVNUEFEX0FERDox MDcsTlVNUEFEX0RFQ0lNQUw6MTEwLE5VTVBBRF9ESVZJREU6MTExLE5VTVBBRF9FTlRFUjoxMDgsTlVN UEFEX01VTFRJUExZOjEwNixOVU1QQURfU1VCVFJBQ1Q6MTA5LFBBR0VfRE9XTjozNCxQQUdFX1VQOjMz LFBFUklPRDoxOTAsUklHSFQ6MzksU0hJRlQ6MTYsU1BBQ0U6MzIsVEFCOjksVVA6Mzh9fTtpZihyKXt2 YXIgcD1zLmF0dHIscT1zLmZuLnJlbW92ZUF0dHIsbj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNy9h YWEiLHY9L15hcmlhLS8sdT0vXndhaXJvbGU6LztzLmF0dHI9ZnVuY3Rpb24oYyxkLGIpe3ZhciBhPWIh PT11bmRlZmluZWQ7cmV0dXJuKGQ9PSJyb2xlIj8oYT9wLmNhbGwodGhpcyxjLGQsIndhaXJvbGU6Iiti KToocC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCIiKS5yZXBsYWNlKHUsIiIpKToodi50ZXN0KGQpPyhh P2Muc2V0QXR0cmlidXRlTlMobixkLnJlcGxhY2UodiwiYWFhOiIpLGIpOnAuY2FsbCh0aGlzLGMsZC5y ZXBsYWNlKHYsImFhYToiKSkpOnAuYXBwbHkodGhpcyxhcmd1bWVudHMpKSl9O3MuZm4ucmVtb3ZlQXR0 cj1mdW5jdGlvbihhKXtyZXR1cm4odi50ZXN0KGEpP3RoaXMuZWFjaChmdW5jdGlvbigpe3RoaXMucmVt b3ZlQXR0cmlidXRlTlMobixhLnJlcGxhY2UodiwiIikpfSk6cS5jYWxsKHRoaXMsYSkpfX1zLmZuLmV4 dGVuZCh7cmVtb3ZlOmZ1bmN0aW9uKCl7cygiKiIsdGhpcykuYWRkKHRoaXMpLmVhY2goZnVuY3Rpb24o KXtzKHRoaXMpLnRyaWdnZXJIYW5kbGVyKCJyZW1vdmUiKX0pO3JldHVybiBsLmFwcGx5KHRoaXMsYXJn dW1lbnRzKX0sZW5hYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cigidW5zZWxl Y3RhYmxlIiwib2ZmIikuY3NzKCJNb3pVc2VyU2VsZWN0IiwiIikudW5iaW5kKCJzZWxlY3RzdGFydC51 aSIpfSxkaXNhYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXR0cigidW5zZWxlY3Rh YmxlIiwib24iKS5jc3MoIk1velVzZXJTZWxlY3QiLCJub25lIikuYmluZCgic2VsZWN0c3RhcnQudWki LGZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfSl9LHNjcm9sbFBhcmVudDpmdW5jdGlvbigpe3ZhciBhO2lm KChzLmJyb3dzZXIubXNpZSYmKC8oc3RhdGljfHJlbGF0aXZlKS8pLnRlc3QodGhpcy5jc3MoInBvc2l0 aW9uIikpKXx8KC9hYnNvbHV0ZS8pLnRlc3QodGhpcy5jc3MoInBvc2l0aW9uIikpKXthPXRoaXMucGFy ZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybigvKHJlbGF0aXZlfGFic29sdXRlfGZpeGVkKS8p LnRlc3Qocy5jdXJDU1ModGhpcywicG9zaXRpb24iLDEpKSYmKC8oYXV0b3xzY3JvbGwpLykudGVzdChz LmN1ckNTUyh0aGlzLCJvdmVyZmxvdyIsMSkrcy5jdXJDU1ModGhpcywib3ZlcmZsb3cteSIsMSkrcy5j dXJDU1ModGhpcywib3ZlcmZsb3cteCIsMSkpfSkuZXEoMCl9ZWxzZXthPXRoaXMucGFyZW50cygpLmZp bHRlcihmdW5jdGlvbigpe3JldHVybigvKGF1dG98c2Nyb2xsKS8pLnRlc3Qocy5jdXJDU1ModGhpcywi b3ZlcmZsb3ciLDEpK3MuY3VyQ1NTKHRoaXMsIm92ZXJmbG93LXkiLDEpK3MuY3VyQ1NTKHRoaXMsIm92 ZXJmbG93LXgiLDEpKX0pLmVxKDApfXJldHVybigvZml4ZWQvKS50ZXN0KHRoaXMuY3NzKCJwb3NpdGlv biIpKXx8IWEubGVuZ3RoP3MoZG9jdW1lbnQpOmF9fSk7cy5leHRlbmQocy5leHByWyI6Il0se2RhdGE6 ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAhIXMuZGF0YShhLGNbM10pfSxmb2N1c2FibGU6ZnVuY3Rpb24o Yil7dmFyIGE9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGM9cy5hdHRyKGIsInRhYmluZGV4Iik7cmV0 dXJuKC9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdC8udGVzdChhKT8hYi5kaXNhYmxl ZDoiYSI9PWF8fCJhcmVhIj09YT9iLmhyZWZ8fCFpc05hTihjKTohaXNOYU4oYykpJiYhcyhiKVsiYXJl YSI9PWE/InBhcmVudHMiOiJjbG9zZXN0Il0oIjpoaWRkZW4iKS5sZW5ndGh9LHRhYmJhYmxlOmZ1bmN0 aW9uKGEpe3ZhciBiPXMuYXR0cihhLCJ0YWJpbmRleCIpO3JldHVybihpc05hTihiKXx8Yj49MCkmJnMo YSkuaXMoIjpmb2N1c2FibGUiKX19KTtmdW5jdGlvbiBvKGEsZixlLGIpe2Z1bmN0aW9uIGMoZyl7dmFy IGg9c1thXVtmXVtnXXx8W107cmV0dXJuKHR5cGVvZiBoPT0ic3RyaW5nIj9oLnNwbGl0KC8sP1xzKy8p OmgpfXZhciBkPWMoImdldHRlciIpO2lmKGIubGVuZ3RoPT0xJiZ0eXBlb2YgYlswXT09InN0cmluZyIp e2Q9ZC5jb25jYXQoYygiZ2V0dGVyU2V0dGVyIikpfXJldHVybihzLmluQXJyYXkoZSxkKSE9LTEpfXMu d2lkZ2V0PWZ1bmN0aW9uKGIsYyl7dmFyIGE9Yi5zcGxpdCgiLiIpWzBdO2I9Yi5zcGxpdCgiLiIpWzFd O3MuZm5bYl09ZnVuY3Rpb24oZSl7dmFyIGc9KHR5cGVvZiBlPT0ic3RyaW5nIiksZj1BcnJheS5wcm90 b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7aWYoZyYmZS5zdWJzdHJpbmcoMCwxKT09Il8iKXty ZXR1cm4gdGhpc31pZihnJiZvKGEsYixlLGYpKXt2YXIgZD1zLmRhdGEodGhpc1swXSxiKTtyZXR1cm4o ZD9kW2VdLmFwcGx5KGQsZik6dW5kZWZpbmVkKX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFy IGg9cy5kYXRhKHRoaXMsYik7KCFoJiYhZyYmcy5kYXRhKHRoaXMsYixuZXcgc1thXVtiXSh0aGlzLGUp KS5faW5pdCgpKTsoaCYmZyYmcy5pc0Z1bmN0aW9uKGhbZV0pJiZoW2VdLmFwcGx5KGgsZikpfSl9O3Nb YV09c1thXXx8e307c1thXVtiXT1mdW5jdGlvbihlLGYpe3ZhciBkPXRoaXM7dGhpcy5uYW1lc3BhY2U9 YTt0aGlzLndpZGdldE5hbWU9Yjt0aGlzLndpZGdldEV2ZW50UHJlZml4PXNbYV1bYl0uZXZlbnRQcmVm aXh8fGI7dGhpcy53aWRnZXRCYXNlQ2xhc3M9YSsiLSIrYjt0aGlzLm9wdGlvbnM9cy5leHRlbmQoe30s cy53aWRnZXQuZGVmYXVsdHMsc1thXVtiXS5kZWZhdWx0cyxzLm1ldGFkYXRhJiZzLm1ldGFkYXRhLmdl dChlKVtiXSxmKTt0aGlzLmVsZW1lbnQ9cyhlKS5iaW5kKCJzZXREYXRhLiIrYixmdW5jdGlvbihoLHcs Zyl7aWYoaC50YXJnZXQ9PWUpe3JldHVybiBkLl9zZXREYXRhKHcsZyl9fSkuYmluZCgiZ2V0RGF0YS4i K2IsZnVuY3Rpb24oZyxoKXtpZihnLnRhcmdldD09ZSl7cmV0dXJuIGQuX2dldERhdGEoaCl9fSkuYmlu ZCgicmVtb3ZlIixmdW5jdGlvbigpe3JldHVybiBkLmRlc3Ryb3koKX0pfTtzW2FdW2JdLnByb3RvdHlw ZT1zLmV4dGVuZCh7fSxzLndpZGdldC5wcm90b3R5cGUsYyk7c1thXVtiXS5nZXR0ZXJTZXR0ZXI9Im9w dGlvbiJ9O3Mud2lkZ2V0LnByb3RvdHlwZT17X2luaXQ6ZnVuY3Rpb24oKXt9LGRlc3Ryb3k6ZnVuY3Rp b24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlRGF0YSh0aGlzLndpZGdldE5hbWUpLnJlbW92ZUNsYXNzKHRo aXMud2lkZ2V0QmFzZUNsYXNzKyItZGlzYWJsZWQgIit0aGlzLm5hbWVzcGFjZSsiLXN0YXRlLWRpc2Fi bGVkIikucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpfSxvcHRpb246ZnVuY3Rpb24oYixhKXt2YXIg Yz1iLGQ9dGhpcztpZih0eXBlb2YgYj09InN0cmluZyIpe2lmKGE9PT11bmRlZmluZWQpe3JldHVybiB0 aGlzLl9nZXREYXRhKGIpfWM9e307Y1tiXT1hfXMuZWFjaChjLGZ1bmN0aW9uKGYsZSl7ZC5fc2V0RGF0 YShmLGUpfSl9LF9nZXREYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9wdGlvbnNbYV19LF9zZXRE YXRhOmZ1bmN0aW9uKGIsYSl7dGhpcy5vcHRpb25zW2JdPWE7aWYoYj09ImRpc2FibGVkIil7dGhpcy5l bGVtZW50W2E/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXSh0aGlzLndpZGdldEJhc2VDbGFzcysiLWRp c2FibGVkICIrdGhpcy5uYW1lc3BhY2UrIi1zdGF0ZS1kaXNhYmxlZCIpLmF0dHIoImFyaWEtZGlzYWJs ZWQiLGEpfX0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0RGF0YSgiZGlzYWJsZWQiLGZhbHNlKX0s ZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuX3NldERhdGEoImRpc2FibGVkIix0cnVlKX0sX3RyaWdnZXI6 ZnVuY3Rpb24oYixhLGcpe3ZhciBlPXRoaXMub3B0aW9uc1tiXSxkPShiPT10aGlzLndpZGdldEV2ZW50 UHJlZml4P2I6dGhpcy53aWRnZXRFdmVudFByZWZpeCtiKTthPXMuRXZlbnQoYSk7YS50eXBlPWQ7aWYo YS5vcmlnaW5hbEV2ZW50KXtmb3IodmFyIGM9cy5ldmVudC5wcm9wcy5sZW5ndGgsZjtjOyl7Zj1zLmV2 ZW50LnByb3BzWy0tY107YVtmXT1hLm9yaWdpbmFsRXZlbnRbZl19fXRoaXMuZWxlbWVudC50cmlnZ2Vy KGEsZyk7cmV0dXJuICEocy5pc0Z1bmN0aW9uKGUpJiZlLmNhbGwodGhpcy5lbGVtZW50WzBdLGEsZyk9 PT1mYWxzZXx8YS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl9fTtzLndpZGdldC5kZWZhdWx0cz17ZGlzYWJs ZWQ6ZmFsc2V9O3MudWkubW91c2U9e19tb3VzZUluaXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMu ZWxlbWVudC5iaW5kKCJtb3VzZWRvd24uIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oYil7cmV0dXJu IGEuX21vdXNlRG93bihiKX0pLmJpbmQoImNsaWNrLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGIp e2lmKGEuX3ByZXZlbnRDbGlja0V2ZW50KXthLl9wcmV2ZW50Q2xpY2tFdmVudD1mYWxzZTtiLnN0b3BJ bW1lZGlhdGVQcm9wYWdhdGlvbigpO3JldHVybiBmYWxzZX19KTtpZihzLmJyb3dzZXIubXNpZSl7dGhp cy5fbW91c2VVbnNlbGVjdGFibGU9dGhpcy5lbGVtZW50LmF0dHIoInVuc2VsZWN0YWJsZSIpO3RoaXMu ZWxlbWVudC5hdHRyKCJ1bnNlbGVjdGFibGUiLCJvbiIpfXRoaXMuc3RhcnRlZD1mYWxzZX0sX21vdXNl RGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSk7 KHMuYnJvd3Nlci5tc2llJiZ0aGlzLmVsZW1lbnQuYXR0cigidW5zZWxlY3RhYmxlIix0aGlzLl9tb3Vz ZVVuc2VsZWN0YWJsZSkpfSxfbW91c2VEb3duOmZ1bmN0aW9uKGIpe2Iub3JpZ2luYWxFdmVudD1iLm9y aWdpbmFsRXZlbnR8fHt9O2lmKGIub3JpZ2luYWxFdmVudC5tb3VzZUhhbmRsZWQpe3JldHVybn0odGhp cy5fbW91c2VTdGFydGVkJiZ0aGlzLl9tb3VzZVVwKGIpKTt0aGlzLl9tb3VzZURvd25FdmVudD1iO3Zh ciBjPXRoaXMsYT0oYi53aGljaD09MSksZD0odHlwZW9mIHRoaXMub3B0aW9ucy5jYW5jZWw9PSJzdHJp bmciP3MoYi50YXJnZXQpLnBhcmVudHMoKS5hZGQoYi50YXJnZXQpLmZpbHRlcih0aGlzLm9wdGlvbnMu Y2FuY2VsKS5sZW5ndGg6ZmFsc2UpO2lmKCFhfHxkfHwhdGhpcy5fbW91c2VDYXB0dXJlKGIpKXtyZXR1 cm4gdHJ1ZX10aGlzLm1vdXNlRGVsYXlNZXQ9IXRoaXMub3B0aW9ucy5kZWxheTtpZighdGhpcy5tb3Vz ZURlbGF5TWV0KXt0aGlzLl9tb3VzZURlbGF5VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2MubW91 c2VEZWxheU1ldD10cnVlfSx0aGlzLm9wdGlvbnMuZGVsYXkpfWlmKHRoaXMuX21vdXNlRGlzdGFuY2VN ZXQoYikmJnRoaXMuX21vdXNlRGVsYXlNZXQoYikpe3RoaXMuX21vdXNlU3RhcnRlZD0odGhpcy5fbW91 c2VTdGFydChiKSE9PWZhbHNlKTtpZighdGhpcy5fbW91c2VTdGFydGVkKXtiLnByZXZlbnREZWZhdWx0 KCk7cmV0dXJuIHRydWV9fXRoaXMuX21vdXNlTW92ZURlbGVnYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBj Ll9tb3VzZU1vdmUoZSl9O3RoaXMuX21vdXNlVXBEZWxlZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gYy5f bW91c2VVcChlKX07cyhkb2N1bWVudCkuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRo aXMuX21vdXNlTW92ZURlbGVnYXRlKS5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMu X21vdXNlVXBEZWxlZ2F0ZSk7KHMuYnJvd3Nlci5zYWZhcml8fGIucHJldmVudERlZmF1bHQoKSk7Yi5v cmlnaW5hbEV2ZW50Lm1vdXNlSGFuZGxlZD10cnVlO3JldHVybiB0cnVlfSxfbW91c2VNb3ZlOmZ1bmN0 aW9uKGEpe2lmKHMuYnJvd3Nlci5tc2llJiYhYS5idXR0b24pe3JldHVybiB0aGlzLl9tb3VzZVVwKGEp fWlmKHRoaXMuX21vdXNlU3RhcnRlZCl7dGhpcy5fbW91c2VEcmFnKGEpO3JldHVybiBhLnByZXZlbnRE ZWZhdWx0KCl9aWYodGhpcy5fbW91c2VEaXN0YW5jZU1ldChhKSYmdGhpcy5fbW91c2VEZWxheU1ldChh KSl7dGhpcy5fbW91c2VTdGFydGVkPSh0aGlzLl9tb3VzZVN0YXJ0KHRoaXMuX21vdXNlRG93bkV2ZW50 LGEpIT09ZmFsc2UpOyh0aGlzLl9tb3VzZVN0YXJ0ZWQ/dGhpcy5fbW91c2VEcmFnKGEpOnRoaXMuX21v dXNlVXAoYSkpfXJldHVybiAhdGhpcy5fbW91c2VTdGFydGVkfSxfbW91c2VVcDpmdW5jdGlvbihhKXtz KGRvY3VtZW50KS51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1v dmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBE ZWxlZ2F0ZSk7aWYodGhpcy5fbW91c2VTdGFydGVkKXt0aGlzLl9tb3VzZVN0YXJ0ZWQ9ZmFsc2U7dGhp cy5fcHJldmVudENsaWNrRXZlbnQ9KGEudGFyZ2V0PT10aGlzLl9tb3VzZURvd25FdmVudC50YXJnZXQp O3RoaXMuX21vdXNlU3RvcChhKX1yZXR1cm4gZmFsc2V9LF9tb3VzZURpc3RhbmNlTWV0OmZ1bmN0aW9u KGEpe3JldHVybihNYXRoLm1heChNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWC1hLnBh Z2VYKSxNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWS1hLnBhZ2VZKSk+PXRoaXMub3B0 aW9ucy5kaXN0YW5jZSl9LF9tb3VzZURlbGF5TWV0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1vdXNl RGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKGEpe30sX21vdXNlRHJhZzpmdW5jdGlvbihhKXt9 LF9tb3VzZVN0b3A6ZnVuY3Rpb24oYSl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKGEpe3JldHVybiB0 cnVlfX07cy51aS5tb3VzZS5kZWZhdWx0cz17Y2FuY2VsOm51bGwsZGlzdGFuY2U6MSxkZWxheTowfX0p KGpRdWVyeSk7KGZ1bmN0aW9uKGIpe2Iud2lkZ2V0KCJ1aS5kcmFnZ2FibGUiLGIuZXh0ZW5kKHt9LGIu dWkubW91c2Use19pbml0OmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmhlbHBlcj09Im9yaWdpbmFs IiYmISgvXig/OnJ8YXxmKS8pLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSkpe3RoaXMu ZWxlbWVudFswXS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUifSh0aGlzLm9wdGlvbnMuYWRkQ2xhc3Nl cyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUiKSk7KHRoaXMub3B0aW9ucy5kaXNh YmxlZCYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUtZGlzYWJsZWQiKSk7dGhpcy5f bW91c2VJbml0KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtpZighdGhpcy5lbGVtZW50LmRhdGEoImRyYWdn YWJsZSIpKXtyZXR1cm59dGhpcy5lbGVtZW50LnJlbW92ZURhdGEoImRyYWdnYWJsZSIpLnVuYmluZCgi LmRyYWdnYWJsZSIpLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUgdWktZHJhZ2dhYmxlLWRyYWdnaW5n IHVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpO3RoaXMuX21vdXNlRGVzdHJveSgpfSxfbW91c2VDYXB0dXJl OmZ1bmN0aW9uKGEpe3ZhciBkPXRoaXMub3B0aW9ucztpZih0aGlzLmhlbHBlcnx8ZC5kaXNhYmxlZHx8 YihhLnRhcmdldCkuaXMoIi51aS1yZXNpemFibGUtaGFuZGxlIikpe3JldHVybiBmYWxzZX10aGlzLmhh bmRsZT10aGlzLl9nZXRIYW5kbGUoYSk7aWYoIXRoaXMuaGFuZGxlKXtyZXR1cm4gZmFsc2V9cmV0dXJu IHRydWV9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKGEpe3ZhciBkPXRoaXMub3B0aW9uczt0aGlzLmhlbHBl cj10aGlzLl9jcmVhdGVIZWxwZXIoYSk7dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpO2lmKGIu dWkuZGRtYW5hZ2VyKXtiLnVpLmRkbWFuYWdlci5jdXJyZW50PXRoaXN9dGhpcy5fY2FjaGVNYXJnaW5z KCk7dGhpcy5jc3NQb3NpdGlvbj10aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIik7dGhpcy5zY3JvbGxQ YXJlbnQ9dGhpcy5oZWxwZXIuc2Nyb2xsUGFyZW50KCk7dGhpcy5vZmZzZXQ9dGhpcy5lbGVtZW50Lm9m ZnNldCgpO3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFyZ2lucy50b3AsbGVm dDp0aGlzLm9mZnNldC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0fTtiLmV4dGVuZCh0aGlzLm9mZnNldCx7 Y2xpY2s6e2xlZnQ6YS5wYWdlWC10aGlzLm9mZnNldC5sZWZ0LHRvcDphLnBhZ2VZLXRoaXMub2Zmc2V0 LnRvcH0scGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0 aXZlT2Zmc2V0KCl9KTt0aGlzLm9yaWdpbmFsUG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihh KTt0aGlzLm9yaWdpbmFsUGFnZVg9YS5wYWdlWDt0aGlzLm9yaWdpbmFsUGFnZVk9YS5wYWdlWTtpZihk LmN1cnNvckF0KXt0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGQuY3Vyc29yQXQpfWlmKGQuY29u dGFpbm1lbnQpe3RoaXMuX3NldENvbnRhaW5tZW50KCl9dGhpcy5fdHJpZ2dlcigic3RhcnQiLGEpO3Ro aXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKTtpZihiLnVpLmRkbWFuYWdlciYmIWQuZHJvcEJlaGF2 aW91cil7Yi51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHModGhpcyxhKX10aGlzLmhlbHBlci5hZGRD bGFzcygidWktZHJhZ2dhYmxlLWRyYWdnaW5nIik7dGhpcy5fbW91c2VEcmFnKGEsdHJ1ZSk7cmV0dXJu IHRydWV9LF9tb3VzZURyYWc6ZnVuY3Rpb24oYSxlKXt0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRl UG9zaXRpb24oYSk7dGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1 dGUiKTtpZighZSl7dmFyIGY9dGhpcy5fdWlIYXNoKCk7dGhpcy5fdHJpZ2dlcigiZHJhZyIsYSxmKTt0 aGlzLnBvc2l0aW9uPWYucG9zaXRpb259aWYoIXRoaXMub3B0aW9ucy5heGlzfHx0aGlzLm9wdGlvbnMu YXhpcyE9InkiKXt0aGlzLmhlbHBlclswXS5zdHlsZS5sZWZ0PXRoaXMucG9zaXRpb24ubGVmdCsicHgi fWlmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ4Iil7dGhpcy5oZWxwZXJb MF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCJ9aWYoYi51aS5kZG1hbmFnZXIpe2IudWku ZGRtYW5hZ2VyLmRyYWcodGhpcyxhKX1yZXR1cm4gZmFsc2V9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZil7 dmFyIGU9ZmFsc2U7aWYoYi51aS5kZG1hbmFnZXImJiF0aGlzLm9wdGlvbnMuZHJvcEJlaGF2aW91cil7 ZT1iLnVpLmRkbWFuYWdlci5kcm9wKHRoaXMsZil9aWYodGhpcy5kcm9wcGVkKXtlPXRoaXMuZHJvcHBl ZDt0aGlzLmRyb3BwZWQ9ZmFsc2V9aWYoKHRoaXMub3B0aW9ucy5yZXZlcnQ9PSJpbnZhbGlkIiYmIWUp fHwodGhpcy5vcHRpb25zLnJldmVydD09InZhbGlkIiYmZSl8fHRoaXMub3B0aW9ucy5yZXZlcnQ9PT10 cnVlfHwoYi5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5yZXZlcnQpJiZ0aGlzLm9wdGlvbnMucmV2ZXJ0 LmNhbGwodGhpcy5lbGVtZW50LGUpKSl7dmFyIGE9dGhpcztiKHRoaXMuaGVscGVyKS5hbmltYXRlKHRo aXMub3JpZ2luYWxQb3NpdGlvbixwYXJzZUludCh0aGlzLm9wdGlvbnMucmV2ZXJ0RHVyYXRpb24sMTAp LGZ1bmN0aW9uKCl7YS5fdHJpZ2dlcigic3RvcCIsZik7YS5fY2xlYXIoKX0pfWVsc2V7dGhpcy5fdHJp Z2dlcigic3RvcCIsZik7dGhpcy5fY2xlYXIoKX1yZXR1cm4gZmFsc2V9LF9nZXRIYW5kbGU6ZnVuY3Rp b24oYSl7dmFyIGQ9IXRoaXMub3B0aW9ucy5oYW5kbGV8fCFiKHRoaXMub3B0aW9ucy5oYW5kbGUsdGhp cy5lbGVtZW50KS5sZW5ndGg/dHJ1ZTpmYWxzZTtiKHRoaXMub3B0aW9ucy5oYW5kbGUsdGhpcy5lbGVt ZW50KS5maW5kKCIqIikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzPT1hLnRhcmdldCl7 ZD10cnVlfX0pO3JldHVybiBkfSxfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKGYpe3ZhciBlPXRoaXMub3B0 aW9uczt2YXIgYT1iLmlzRnVuY3Rpb24oZS5oZWxwZXIpP2IoZS5oZWxwZXIuYXBwbHkodGhpcy5lbGVt ZW50WzBdLFtmXSkpOihlLmhlbHBlcj09ImNsb25lIj90aGlzLmVsZW1lbnQuY2xvbmUoKTp0aGlzLmVs ZW1lbnQpO2lmKCFhLnBhcmVudHMoImJvZHkiKS5sZW5ndGgpe2EuYXBwZW5kVG8oKGUuYXBwZW5kVG89 PSJwYXJlbnQiP3RoaXMuZWxlbWVudFswXS5wYXJlbnROb2RlOmUuYXBwZW5kVG8pKX1pZihhWzBdIT10 aGlzLmVsZW1lbnRbMF0mJiEoLyhmaXhlZHxhYnNvbHV0ZSkvKS50ZXN0KGEuY3NzKCJwb3NpdGlvbiIp KSl7YS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKX1yZXR1cm4gYX0sX2FkanVzdE9mZnNldEZyb21I ZWxwZXI6ZnVuY3Rpb24oYSl7aWYoYS5sZWZ0IT11bmRlZmluZWQpe3RoaXMub2Zmc2V0LmNsaWNrLmxl ZnQ9YS5sZWZ0K3RoaXMubWFyZ2lucy5sZWZ0fWlmKGEucmlnaHQhPXVuZGVmaW5lZCl7dGhpcy5vZmZz ZXQuY2xpY2subGVmdD10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLWEucmlnaHQrdGhpcy5tYXJn aW5zLmxlZnR9aWYoYS50b3AhPXVuZGVmaW5lZCl7dGhpcy5vZmZzZXQuY2xpY2sudG9wPWEudG9wK3Ro aXMubWFyZ2lucy50b3B9aWYoYS5ib3R0b20hPXVuZGVmaW5lZCl7dGhpcy5vZmZzZXQuY2xpY2sudG9w PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LWEuYm90dG9tK3RoaXMubWFyZ2lucy50b3B9fSxf Z2V0UGFyZW50T2Zmc2V0OmZ1bmN0aW9uKCl7dGhpcy5vZmZzZXRQYXJlbnQ9dGhpcy5oZWxwZXIub2Zm c2V0UGFyZW50KCk7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnQub2Zmc2V0KCk7aWYodGhpcy5jc3NQb3Np dGlvbj09ImFic29sdXRlIiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZiLnVpLmNvbnRh aW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSl7YS5sZWZ0Kz10aGlz LnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk7YS50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRv cCgpfWlmKCh0aGlzLm9mZnNldFBhcmVudFswXT09ZG9jdW1lbnQuYm9keSl8fCh0aGlzLm9mZnNldFBh cmVudFswXS50YWdOYW1lJiZ0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9 PSJodG1sIiYmYi5icm93c2VyLm1zaWUpKXthPXt0b3A6MCxsZWZ0OjB9fXJldHVybnt0b3A6YS50b3Ar KHBhcnNlSW50KHRoaXMub2Zmc2V0UGFyZW50LmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLGxl ZnQ6YS5sZWZ0KyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlckxlZnRXaWR0aCIp LDEwKXx8MCl9fSxfZ2V0UmVsYXRpdmVPZmZzZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLmNzc1Bvc2l0aW9u PT0icmVsYXRpdmUiKXt2YXIgYT10aGlzLmVsZW1lbnQucG9zaXRpb24oKTtyZXR1cm57dG9wOmEudG9w LShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQu c2Nyb2xsVG9wKCksbGVmdDphLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEw KXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpfX1lbHNle3JldHVybnt0b3A6MCxsZWZ0 OjB9fX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDoocGFyc2VJbnQo dGhpcy5lbGVtZW50LmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCksdG9wOihwYXJzZUludCh0aGlzLmVs ZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDApfX0sX2NhY2hlSGVscGVyUHJvcG9ydGlvbnM6ZnVu Y3Rpb24oKXt0aGlzLmhlbHBlclByb3BvcnRpb25zPXt3aWR0aDp0aGlzLmhlbHBlci5vdXRlcldpZHRo KCksaGVpZ2h0OnRoaXMuaGVscGVyLm91dGVySGVpZ2h0KCl9fSxfc2V0Q29udGFpbm1lbnQ6ZnVuY3Rp b24oKXt2YXIgZj10aGlzLm9wdGlvbnM7aWYoZi5jb250YWlubWVudD09InBhcmVudCIpe2YuY29udGFp bm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZX1pZihmLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQi fHxmLmNvbnRhaW5tZW50PT0id2luZG93Iil7dGhpcy5jb250YWlubWVudD1bMC10aGlzLm9mZnNldC5y ZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUu dG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3AsYihmLmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3Vt ZW50OndpbmRvdykud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMubWFyZ2lu cy5sZWZ0LChiKGYuY29udGFpbm1lbnQ9PSJkb2N1bWVudCI/ZG9jdW1lbnQ6d2luZG93KS5oZWlnaHQo KXx8ZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0 aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF19aWYoISgvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50 KSQvKS50ZXN0KGYuY29udGFpbm1lbnQpJiZmLmNvbnRhaW5tZW50LmNvbnN0cnVjdG9yIT1BcnJheSl7 dmFyIGg9YihmLmNvbnRhaW5tZW50KVswXTtpZighaCl7cmV0dXJufXZhciBnPWIoZi5jb250YWlubWVu dCkub2Zmc2V0KCk7dmFyIGE9KGIoaCkuY3NzKCJvdmVyZmxvdyIpIT0iaGlkZGVuIik7dGhpcy5jb250 YWlubWVudD1bZy5sZWZ0KyhwYXJzZUludChiKGgpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHww KSsocGFyc2VJbnQoYihoKS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHwwKS10aGlzLm1hcmdpbnMubGVm dCxnLnRvcCsocGFyc2VJbnQoYihoKS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSsocGFyc2VJ bnQoYihoKS5jc3MoInBhZGRpbmdUb3AiKSwxMCl8fDApLXRoaXMubWFyZ2lucy50b3AsZy5sZWZ0Kyhh P01hdGgubWF4KGguc2Nyb2xsV2lkdGgsaC5vZmZzZXRXaWR0aCk6aC5vZmZzZXRXaWR0aCktKHBhcnNl SW50KGIoaCkuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApLShwYXJzZUludChiKGgpLmNzcygi cGFkZGluZ1JpZ2h0IiksMTApfHwwKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMubWFy Z2lucy5sZWZ0LGcudG9wKyhhP01hdGgubWF4KGguc2Nyb2xsSGVpZ2h0LGgub2Zmc2V0SGVpZ2h0KTpo Lm9mZnNldEhlaWdodCktKHBhcnNlSW50KGIoaCkuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkt KHBhcnNlSW50KGIoaCkuY3NzKCJwYWRkaW5nQm90dG9tIiksMTApfHwwKS10aGlzLmhlbHBlclByb3Bv cnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXX1lbHNle2lmKGYuY29udGFpbm1lbnQuY29uc3Ry dWN0b3I9PUFycmF5KXt0aGlzLmNvbnRhaW5tZW50PWYuY29udGFpbm1lbnR9fX0sX2NvbnZlcnRQb3Np dGlvblRvOmZ1bmN0aW9uKG4sZCl7aWYoIWQpe2Q9dGhpcy5wb3NpdGlvbn12YXIgcD1uPT0iYWJzb2x1 dGUiPzE6LTE7dmFyIG89dGhpcy5vcHRpb25zLGE9dGhpcy5jc3NQb3NpdGlvbj09ImFic29sdXRlIiYm ISh0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmIudWkuY29udGFpbnModGhpcy5zY3JvbGxQ YXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pKT90aGlzLm9mZnNldFBhcmVudDp0aGlzLnNjcm9s bFBhcmVudCxsPSgvKGh0bWx8Ym9keSkvaSkudGVzdChhWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6KGQu dG9wK3RoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcCpwK3RoaXMub2Zmc2V0LnBhcmVudC50b3AqcC0oYi5i cm93c2VyLnNhZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bvc2l0aW9u PT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKToobD8wOmEuc2Nyb2xsVG9wKCkp KSpwKSksbGVmdDooZC5sZWZ0K3RoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQqcCt0aGlzLm9mZnNldC5w YXJlbnQubGVmdCpwLShiLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPzA6 KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTps PzA6YS5zY3JvbGxMZWZ0KCkpKnApKX19LF9nZW5lcmF0ZVBvc2l0aW9uOmZ1bmN0aW9uKHEpe3ZhciBu PXRoaXMub3B0aW9ucyxhPXRoaXMuY3NzUG9zaXRpb249PSJhYnNvbHV0ZSImJiEodGhpcy5zY3JvbGxQ YXJlbnRbMF0hPWRvY3VtZW50JiZiLnVpLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMu b2Zmc2V0UGFyZW50WzBdKSk/dGhpcy5vZmZzZXRQYXJlbnQ6dGhpcy5zY3JvbGxQYXJlbnQsbD0oLyho dG1sfGJvZHkpL2kpLnRlc3QoYVswXS50YWdOYW1lKTtpZih0aGlzLmNzc1Bvc2l0aW9uPT0icmVsYXRp dmUiJiYhKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmdGhpcy5zY3JvbGxQYXJlbnRbMF0h PXRoaXMub2Zmc2V0UGFyZW50WzBdKSl7dGhpcy5vZmZzZXQucmVsYXRpdmU9dGhpcy5fZ2V0UmVsYXRp dmVPZmZzZXQoKX12YXIgcj1xLnBhZ2VYO3ZhciBzPXEucGFnZVk7aWYodGhpcy5vcmlnaW5hbFBvc2l0 aW9uKXtpZih0aGlzLmNvbnRhaW5tZW50KXtpZihxLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8 dGhpcy5jb250YWlubWVudFswXSl7cj10aGlzLmNvbnRhaW5tZW50WzBdK3RoaXMub2Zmc2V0LmNsaWNr LmxlZnR9aWYocS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5jb250YWlubWVudFsxXSl7 cz10aGlzLmNvbnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcH1pZihxLnBhZ2VYLXRoaXMu b2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSl7cj10aGlzLmNvbnRhaW5tZW50WzJd K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnR9aWYocS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+dGhp cy5jb250YWlubWVudFszXSl7cz10aGlzLmNvbnRhaW5tZW50WzNdK3RoaXMub2Zmc2V0LmNsaWNrLnRv cH19aWYobi5ncmlkKXt2YXIgbz10aGlzLm9yaWdpbmFsUGFnZVkrTWF0aC5yb3VuZCgocy10aGlzLm9y aWdpbmFsUGFnZVkpL24uZ3JpZFsxXSkqbi5ncmlkWzFdO3M9dGhpcy5jb250YWlubWVudD8oIShvLXRo aXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdfHxvLXRoaXMub2Zmc2V0LmNsaWNr LnRvcD50aGlzLmNvbnRhaW5tZW50WzNdKT9vOighKG8tdGhpcy5vZmZzZXQuY2xpY2sudG9wPHRoaXMu Y29udGFpbm1lbnRbMV0pP28tbi5ncmlkWzFdOm8rbi5ncmlkWzFdKSk6bzt2YXIgcD10aGlzLm9yaWdp bmFsUGFnZVgrTWF0aC5yb3VuZCgoci10aGlzLm9yaWdpbmFsUGFnZVgpL24uZ3JpZFswXSkqbi5ncmlk WzBdO3I9dGhpcy5jb250YWlubWVudD8oIShwLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250 YWlubWVudFswXXx8cC10aGlzLm9mZnNldC5jbGljay5sZWZ0PnRoaXMuY29udGFpbm1lbnRbMl0pP3A6 KCEocC10aGlzLm9mZnNldC5jbGljay5sZWZ0PHRoaXMuY29udGFpbm1lbnRbMF0pP3Atbi5ncmlkWzBd OnArbi5ncmlkWzBdKSk6cH19cmV0dXJue3RvcDoocy10aGlzLm9mZnNldC5jbGljay50b3AtdGhpcy5v ZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3ArKGIuYnJvd3Nlci5zYWZhcmkm JnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/MDoodGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhp cy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6KGw/MDphLnNjcm9sbFRvcCgpKSkpKSxsZWZ0OihyLXRo aXMub2Zmc2V0LmNsaWNrLmxlZnQtdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5w YXJlbnQubGVmdCsoYi5icm93c2VyLnNhZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8wOih0 aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6bD8w OmEuc2Nyb2xsTGVmdCgpKSkpfX0sX2NsZWFyOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXIucmVtb3ZlQ2xh c3MoInVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpO2lmKHRoaXMuaGVscGVyWzBdIT10aGlzLmVsZW1lbnRb MF0mJiF0aGlzLmNhbmNlbEhlbHBlclJlbW92YWwpe3RoaXMuaGVscGVyLnJlbW92ZSgpfXRoaXMuaGVs cGVyPW51bGw7dGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsPWZhbHNlfSxfdHJpZ2dlcjpmdW5jdGlvbihh LGYsZSl7ZT1lfHx0aGlzLl91aUhhc2goKTtiLnVpLnBsdWdpbi5jYWxsKHRoaXMsYSxbZixlXSk7aWYo YT09ImRyYWciKXt0aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0 ZSIpfXJldHVybiBiLndpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2FsbCh0aGlzLGEsZixlKX0scGx1 Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKGEpe3JldHVybntoZWxwZXI6dGhpcy5oZWxwZXIscG9zaXRp b246dGhpcy5wb3NpdGlvbixhYnNvbHV0ZVBvc2l0aW9uOnRoaXMucG9zaXRpb25BYnMsb2Zmc2V0OnRo aXMucG9zaXRpb25BYnN9fX0pKTtiLmV4dGVuZChiLnVpLmRyYWdnYWJsZSx7dmVyc2lvbjoiMS43LjIi LGV2ZW50UHJlZml4OiJkcmFnIixkZWZhdWx0czp7YWRkQ2xhc3Nlczp0cnVlLGFwcGVuZFRvOiJwYXJl bnQiLGF4aXM6ZmFsc2UsY2FuY2VsOiI6aW5wdXQsb3B0aW9uIixjb25uZWN0VG9Tb3J0YWJsZTpmYWxz ZSxjb250YWlubWVudDpmYWxzZSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OmZhbHNlLGRlbGF5OjAsZGlz dGFuY2U6MSxncmlkOmZhbHNlLGhhbmRsZTpmYWxzZSxoZWxwZXI6Im9yaWdpbmFsIixpZnJhbWVGaXg6 ZmFsc2Usb3BhY2l0eTpmYWxzZSxyZWZyZXNoUG9zaXRpb25zOmZhbHNlLHJldmVydDpmYWxzZSxyZXZl cnREdXJhdGlvbjo1MDAsc2NvcGU6ImRlZmF1bHQiLHNjcm9sbDp0cnVlLHNjcm9sbFNlbnNpdGl2aXR5 OjIwLHNjcm9sbFNwZWVkOjIwLHNuYXA6ZmFsc2Usc25hcE1vZGU6ImJvdGgiLHNuYXBUb2xlcmFuY2U6 MjAsc3RhY2s6ZmFsc2UsekluZGV4OmZhbHNlfX0pO2IudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwi Y29ubmVjdFRvU29ydGFibGUiLHtzdGFydDpmdW5jdGlvbihuLGgpe3ZhciBsPWIodGhpcykuZGF0YSgi ZHJhZ2dhYmxlIiksZz1sLm9wdGlvbnMsYT1iLmV4dGVuZCh7fSxoLHtpdGVtOmwuZWxlbWVudH0pO2wu c29ydGFibGVzPVtdO2IoZy5jb25uZWN0VG9Tb3J0YWJsZSkuZWFjaChmdW5jdGlvbigpe3ZhciBjPWIu ZGF0YSh0aGlzLCJzb3J0YWJsZSIpO2lmKGMmJiFjLm9wdGlvbnMuZGlzYWJsZWQpe2wuc29ydGFibGVz LnB1c2goe2luc3RhbmNlOmMsc2hvdWxkUmV2ZXJ0OmMub3B0aW9ucy5yZXZlcnR9KTtjLl9yZWZyZXNo SXRlbXMoKTtjLl90cmlnZ2VyKCJhY3RpdmF0ZSIsbixhKX19KX0sc3RvcDpmdW5jdGlvbihoLGYpe3Zh ciBnPWIodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksYT1iLmV4dGVuZCh7fSxmLHtpdGVtOmcuZWxlbWVu dH0pO2IuZWFjaChnLnNvcnRhYmxlcyxmdW5jdGlvbigpe2lmKHRoaXMuaW5zdGFuY2UuaXNPdmVyKXt0 aGlzLmluc3RhbmNlLmlzT3Zlcj0wO2cuY2FuY2VsSGVscGVyUmVtb3ZhbD10cnVlO3RoaXMuaW5zdGFu Y2UuY2FuY2VsSGVscGVyUmVtb3ZhbD1mYWxzZTtpZih0aGlzLnNob3VsZFJldmVydCl7dGhpcy5pbnN0 YW5jZS5vcHRpb25zLnJldmVydD10cnVlfXRoaXMuaW5zdGFuY2UuX21vdXNlU3RvcChoKTt0aGlzLmlu c3RhbmNlLm9wdGlvbnMuaGVscGVyPXRoaXMuaW5zdGFuY2Uub3B0aW9ucy5faGVscGVyO2lmKGcub3B0 aW9ucy5oZWxwZXI9PSJvcmlnaW5hbCIpe3RoaXMuaW5zdGFuY2UuY3VycmVudEl0ZW0uY3NzKHt0b3A6 ImF1dG8iLGxlZnQ6ImF1dG8ifSl9fWVsc2V7dGhpcy5pbnN0YW5jZS5jYW5jZWxIZWxwZXJSZW1vdmFs PWZhbHNlO3RoaXMuaW5zdGFuY2UuX3RyaWdnZXIoImRlYWN0aXZhdGUiLGgsYSl9fSl9LGRyYWc6ZnVu Y3Rpb24obixnKXt2YXIgaD1iKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLGE9dGhpczt2YXIgbD1mdW5j dGlvbihyKXt2YXIgZD10aGlzLm9mZnNldC5jbGljay50b3AsZT10aGlzLm9mZnNldC5jbGljay5sZWZ0 O3ZhciB1PXRoaXMucG9zaXRpb25BYnMudG9wLG89dGhpcy5wb3NpdGlvbkFicy5sZWZ0O3ZhciBxPXIu aGVpZ2h0LGY9ci53aWR0aDt2YXIgYz1yLnRvcCxzPXIubGVmdDtyZXR1cm4gYi51aS5pc092ZXIodStk LG8rZSxjLHMscSxmKX07Yi5lYWNoKGguc29ydGFibGVzLGZ1bmN0aW9uKGMpe3RoaXMuaW5zdGFuY2Uu cG9zaXRpb25BYnM9aC5wb3NpdGlvbkFiczt0aGlzLmluc3RhbmNlLmhlbHBlclByb3BvcnRpb25zPWgu aGVscGVyUHJvcG9ydGlvbnM7dGhpcy5pbnN0YW5jZS5vZmZzZXQuY2xpY2s9aC5vZmZzZXQuY2xpY2s7 aWYodGhpcy5pbnN0YW5jZS5faW50ZXJzZWN0c1dpdGgodGhpcy5pbnN0YW5jZS5jb250YWluZXJDYWNo ZSkpe2lmKCF0aGlzLmluc3RhbmNlLmlzT3Zlcil7dGhpcy5pbnN0YW5jZS5pc092ZXI9MTt0aGlzLmlu c3RhbmNlLmN1cnJlbnRJdGVtPWIoYSkuY2xvbmUoKS5hcHBlbmRUbyh0aGlzLmluc3RhbmNlLmVsZW1l bnQpLmRhdGEoInNvcnRhYmxlLWl0ZW0iLHRydWUpO3RoaXMuaW5zdGFuY2Uub3B0aW9ucy5faGVscGVy PXRoaXMuaW5zdGFuY2Uub3B0aW9ucy5oZWxwZXI7dGhpcy5pbnN0YW5jZS5vcHRpb25zLmhlbHBlcj1m dW5jdGlvbigpe3JldHVybiBnLmhlbHBlclswXX07bi50YXJnZXQ9dGhpcy5pbnN0YW5jZS5jdXJyZW50 SXRlbVswXTt0aGlzLmluc3RhbmNlLl9tb3VzZUNhcHR1cmUobix0cnVlKTt0aGlzLmluc3RhbmNlLl9t b3VzZVN0YXJ0KG4sdHJ1ZSx0cnVlKTt0aGlzLmluc3RhbmNlLm9mZnNldC5jbGljay50b3A9aC5vZmZz ZXQuY2xpY2sudG9wO3RoaXMuaW5zdGFuY2Uub2Zmc2V0LmNsaWNrLmxlZnQ9aC5vZmZzZXQuY2xpY2su bGVmdDt0aGlzLmluc3RhbmNlLm9mZnNldC5wYXJlbnQubGVmdC09aC5vZmZzZXQucGFyZW50LmxlZnQt dGhpcy5pbnN0YW5jZS5vZmZzZXQucGFyZW50LmxlZnQ7dGhpcy5pbnN0YW5jZS5vZmZzZXQucGFyZW50 LnRvcC09aC5vZmZzZXQucGFyZW50LnRvcC10aGlzLmluc3RhbmNlLm9mZnNldC5wYXJlbnQudG9wO2gu X3RyaWdnZXIoInRvU29ydGFibGUiLG4pO2guZHJvcHBlZD10aGlzLmluc3RhbmNlLmVsZW1lbnQ7aC5j dXJyZW50SXRlbT1oLmVsZW1lbnQ7dGhpcy5pbnN0YW5jZS5mcm9tT3V0c2lkZT1ofWlmKHRoaXMuaW5z dGFuY2UuY3VycmVudEl0ZW0pe3RoaXMuaW5zdGFuY2UuX21vdXNlRHJhZyhuKX19ZWxzZXtpZih0aGlz Lmluc3RhbmNlLmlzT3Zlcil7dGhpcy5pbnN0YW5jZS5pc092ZXI9MDt0aGlzLmluc3RhbmNlLmNhbmNl bEhlbHBlclJlbW92YWw9dHJ1ZTt0aGlzLmluc3RhbmNlLm9wdGlvbnMucmV2ZXJ0PWZhbHNlO3RoaXMu aW5zdGFuY2UuX3RyaWdnZXIoIm91dCIsbix0aGlzLmluc3RhbmNlLl91aUhhc2godGhpcy5pbnN0YW5j ZSkpO3RoaXMuaW5zdGFuY2UuX21vdXNlU3RvcChuLHRydWUpO3RoaXMuaW5zdGFuY2Uub3B0aW9ucy5o ZWxwZXI9dGhpcy5pbnN0YW5jZS5vcHRpb25zLl9oZWxwZXI7dGhpcy5pbnN0YW5jZS5jdXJyZW50SXRl bS5yZW1vdmUoKTtpZih0aGlzLmluc3RhbmNlLnBsYWNlaG9sZGVyKXt0aGlzLmluc3RhbmNlLnBsYWNl aG9sZGVyLnJlbW92ZSgpfWguX3RyaWdnZXIoImZyb21Tb3J0YWJsZSIsbik7aC5kcm9wcGVkPWZhbHNl fX19KX19KTtiLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImN1cnNvciIse3N0YXJ0OmZ1bmN0aW9u KGgsZyl7dmFyIGE9YigiYm9keSIpLGY9Yih0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO2lm KGEuY3NzKCJjdXJzb3IiKSl7Zi5fY3Vyc29yPWEuY3NzKCJjdXJzb3IiKX1hLmNzcygiY3Vyc29yIixm LmN1cnNvcil9LHN0b3A6ZnVuY3Rpb24oYSxmKXt2YXIgZT1iKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIp Lm9wdGlvbnM7aWYoZS5fY3Vyc29yKXtiKCJib2R5IikuY3NzKCJjdXJzb3IiLGUuX2N1cnNvcil9fX0p O2IudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwiaWZyYW1lRml4Iix7c3RhcnQ6ZnVuY3Rpb24oYSxm KXt2YXIgZT1iKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9wdGlvbnM7YihlLmlmcmFtZUZpeD09PXRy dWU/ImlmcmFtZSI6ZS5pZnJhbWVGaXgpLmVhY2goZnVuY3Rpb24oKXtiKCc8ZGl2IGNsYXNzPSJ1aS1k cmFnZ2FibGUtaWZyYW1lRml4IiBzdHlsZT0iYmFja2dyb3VuZDogI2ZmZjsiPjwvZGl2PicpLmNzcyh7 d2lkdGg6dGhpcy5vZmZzZXRXaWR0aCsicHgiLGhlaWdodDp0aGlzLm9mZnNldEhlaWdodCsicHgiLHBv c2l0aW9uOiJhYnNvbHV0ZSIsb3BhY2l0eToiMC4wMDEiLHpJbmRleDoxMDAwfSkuY3NzKGIodGhpcyku b2Zmc2V0KCkpLmFwcGVuZFRvKCJib2R5Iil9KX0sc3RvcDpmdW5jdGlvbihhLGQpe2IoImRpdi51aS1k cmFnZ2FibGUtaWZyYW1lRml4IikuZWFjaChmdW5jdGlvbigpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVD aGlsZCh0aGlzKX0pfX0pO2IudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwib3BhY2l0eSIse3N0YXJ0 OmZ1bmN0aW9uKGgsZyl7dmFyIGE9YihnLmhlbHBlciksZj1iKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIp Lm9wdGlvbnM7aWYoYS5jc3MoIm9wYWNpdHkiKSl7Zi5fb3BhY2l0eT1hLmNzcygib3BhY2l0eSIpfWEu Y3NzKCJvcGFjaXR5IixmLm9wYWNpdHkpfSxzdG9wOmZ1bmN0aW9uKGEsZil7dmFyIGU9Yih0aGlzKS5k YXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO2lmKGUuX29wYWNpdHkpe2IoZi5oZWxwZXIpLmNzcygib3Bh Y2l0eSIsZS5fb3BhY2l0eSl9fX0pO2IudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic2Nyb2xsIix7 c3RhcnQ6ZnVuY3Rpb24oZixlKXt2YXIgYT1iKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpO2lmKGEuc2Ny b2xsUGFyZW50WzBdIT1kb2N1bWVudCYmYS5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSE9IkhUTUwiKXth Lm92ZXJmbG93T2Zmc2V0PWEuc2Nyb2xsUGFyZW50Lm9mZnNldCgpfX0sZHJhZzpmdW5jdGlvbihsLGgp e3ZhciBuPWIodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksZz1uLm9wdGlvbnMsYT1mYWxzZTtpZihuLnNj cm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJm4uc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWUhPSJIVE1MIil7 aWYoIWcuYXhpc3x8Zy5heGlzIT0ieCIpe2lmKChuLm92ZXJmbG93T2Zmc2V0LnRvcCtuLnNjcm9sbFBh cmVudFswXS5vZmZzZXRIZWlnaHQpLWwucGFnZVk8Zy5zY3JvbGxTZW5zaXRpdml0eSl7bi5zY3JvbGxQ YXJlbnRbMF0uc2Nyb2xsVG9wPWE9bi5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wK2cuc2Nyb2xsU3Bl ZWR9ZWxzZXtpZihsLnBhZ2VZLW4ub3ZlcmZsb3dPZmZzZXQudG9wPGcuc2Nyb2xsU2Vuc2l0aXZpdHkp e24uc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcD1hPW4uc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcC1n LnNjcm9sbFNwZWVkfX19aWYoIWcuYXhpc3x8Zy5heGlzIT0ieSIpe2lmKChuLm92ZXJmbG93T2Zmc2V0 LmxlZnQrbi5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0V2lkdGgpLWwucGFnZVg8Zy5zY3JvbGxTZW5zaXRp dml0eSl7bi5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1hPW4uc2Nyb2xsUGFyZW50WzBdLnNjcm9s bExlZnQrZy5zY3JvbGxTcGVlZH1lbHNle2lmKGwucGFnZVgtbi5vdmVyZmxvd09mZnNldC5sZWZ0PGcu c2Nyb2xsU2Vuc2l0aXZpdHkpe24uc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQ9YT1uLnNjcm9sbFBh cmVudFswXS5zY3JvbGxMZWZ0LWcuc2Nyb2xsU3BlZWR9fX19ZWxzZXtpZighZy5heGlzfHxnLmF4aXMh PSJ4Iil7aWYobC5wYWdlWS1iKGRvY3VtZW50KS5zY3JvbGxUb3AoKTxnLnNjcm9sbFNlbnNpdGl2aXR5 KXthPWIoZG9jdW1lbnQpLnNjcm9sbFRvcChiKGRvY3VtZW50KS5zY3JvbGxUb3AoKS1nLnNjcm9sbFNw ZWVkKX1lbHNle2lmKGIod2luZG93KS5oZWlnaHQoKS0obC5wYWdlWS1iKGRvY3VtZW50KS5zY3JvbGxU b3AoKSk8Zy5zY3JvbGxTZW5zaXRpdml0eSl7YT1iKGRvY3VtZW50KS5zY3JvbGxUb3AoYihkb2N1bWVu dCkuc2Nyb2xsVG9wKCkrZy5zY3JvbGxTcGVlZCl9fX1pZighZy5heGlzfHxnLmF4aXMhPSJ5Iil7aWYo bC5wYWdlWC1iKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCk8Zy5zY3JvbGxTZW5zaXRpdml0eSl7YT1iKGRv Y3VtZW50KS5zY3JvbGxMZWZ0KGIoZG9jdW1lbnQpLnNjcm9sbExlZnQoKS1nLnNjcm9sbFNwZWVkKX1l bHNle2lmKGIod2luZG93KS53aWR0aCgpLShsLnBhZ2VYLWIoZG9jdW1lbnQpLnNjcm9sbExlZnQoKSk8 Zy5zY3JvbGxTZW5zaXRpdml0eSl7YT1iKGRvY3VtZW50KS5zY3JvbGxMZWZ0KGIoZG9jdW1lbnQpLnNj cm9sbExlZnQoKStnLnNjcm9sbFNwZWVkKX19fX1pZihhIT09ZmFsc2UmJmIudWkuZGRtYW5hZ2VyJiYh Zy5kcm9wQmVoYXZpb3VyKXtiLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyhuLGwpfX19KTtiLnVp LnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInNuYXAiLHtzdGFydDpmdW5jdGlvbihoLGcpe3ZhciBhPWIo dGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksZj1hLm9wdGlvbnM7YS5zbmFwRWxlbWVudHM9W107YihmLnNu YXAuY29uc3RydWN0b3IhPVN0cmluZz8oZi5zbmFwLml0ZW1zfHwiOmRhdGEoZHJhZ2dhYmxlKSIpOmYu c25hcCkuZWFjaChmdW5jdGlvbigpe3ZhciBjPWIodGhpcyk7dmFyIGQ9Yy5vZmZzZXQoKTtpZih0aGlz IT1hLmVsZW1lbnRbMF0pe2Euc25hcEVsZW1lbnRzLnB1c2goe2l0ZW06dGhpcyx3aWR0aDpjLm91dGVy V2lkdGgoKSxoZWlnaHQ6Yy5vdXRlckhlaWdodCgpLHRvcDpkLnRvcCxsZWZ0OmQubGVmdH0pfX0pfSxk cmFnOmZ1bmN0aW9uKEIsRil7dmFyIEw9Yih0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKSxEPUwub3B0aW9u czt2YXIgZD1ELnNuYXBUb2xlcmFuY2U7dmFyIGw9Ri5vZmZzZXQubGVmdCxvPWwrTC5oZWxwZXJQcm9w b3J0aW9ucy53aWR0aCxNPUYub2Zmc2V0LnRvcCxOPU0rTC5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQ7 Zm9yKHZhciByPUwuc25hcEVsZW1lbnRzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgQz1MLnNuYXBFbGVt ZW50c1tyXS5sZWZ0LEc9QytMLnNuYXBFbGVtZW50c1tyXS53aWR0aCxIPUwuc25hcEVsZW1lbnRzW3Jd LnRvcCxFPUgrTC5zbmFwRWxlbWVudHNbcl0uaGVpZ2h0O2lmKCEoKEMtZDxsJiZsPEcrZCYmSC1kPE0m Jk08RStkKXx8KEMtZDxsJiZsPEcrZCYmSC1kPE4mJk48RStkKXx8KEMtZDxvJiZvPEcrZCYmSC1kPE0m Jk08RStkKXx8KEMtZDxvJiZvPEcrZCYmSC1kPE4mJk48RStkKSkpe2lmKEwuc25hcEVsZW1lbnRzW3Jd LnNuYXBwaW5nKXsoTC5vcHRpb25zLnNuYXAucmVsZWFzZSYmTC5vcHRpb25zLnNuYXAucmVsZWFzZS5j YWxsKEwuZWxlbWVudCxCLGIuZXh0ZW5kKEwuX3VpSGFzaCgpLHtzbmFwSXRlbTpMLnNuYXBFbGVtZW50 c1tyXS5pdGVtfSkpKX1MLnNuYXBFbGVtZW50c1tyXS5zbmFwcGluZz1mYWxzZTtjb250aW51ZX1pZihE LnNuYXBNb2RlIT0iaW5uZXIiKXt2YXIgTz1NYXRoLmFicyhILU4pPD1kO3ZhciBhPU1hdGguYWJzKEUt TSk8PWQ7dmFyIEo9TWF0aC5hYnMoQy1vKTw9ZDt2YXIgST1NYXRoLmFicyhHLWwpPD1kO2lmKE8pe0Yu cG9zaXRpb24udG9wPUwuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpILUwuaGVscGVy UHJvcG9ydGlvbnMuaGVpZ2h0LGxlZnQ6MH0pLnRvcC1MLm1hcmdpbnMudG9wfWlmKGEpe0YucG9zaXRp b24udG9wPUwuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpFLGxlZnQ6MH0pLnRvcC1M Lm1hcmdpbnMudG9wfWlmKEope0YucG9zaXRpb24ubGVmdD1MLl9jb252ZXJ0UG9zaXRpb25UbygicmVs YXRpdmUiLHt0b3A6MCxsZWZ0OkMtTC5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQtTC5tYXJn aW5zLmxlZnR9aWYoSSl7Ri5wb3NpdGlvbi5sZWZ0PUwuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2 ZSIse3RvcDowLGxlZnQ6R30pLmxlZnQtTC5tYXJnaW5zLmxlZnR9fXZhciBLPShPfHxhfHxKfHxJKTtp ZihELnNuYXBNb2RlIT0ib3V0ZXIiKXt2YXIgTz1NYXRoLmFicyhILU0pPD1kO3ZhciBhPU1hdGguYWJz KEUtTik8PWQ7dmFyIEo9TWF0aC5hYnMoQy1sKTw9ZDt2YXIgST1NYXRoLmFicyhHLW8pPD1kO2lmKE8p e0YucG9zaXRpb24udG9wPUwuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpILGxlZnQ6 MH0pLnRvcC1MLm1hcmdpbnMudG9wfWlmKGEpe0YucG9zaXRpb24udG9wPUwuX2NvbnZlcnRQb3NpdGlv blRvKCJyZWxhdGl2ZSIse3RvcDpFLUwuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGxlZnQ6MH0pLnRv cC1MLm1hcmdpbnMudG9wfWlmKEope0YucG9zaXRpb24ubGVmdD1MLl9jb252ZXJ0UG9zaXRpb25Ubygi cmVsYXRpdmUiLHt0b3A6MCxsZWZ0OkN9KS5sZWZ0LUwubWFyZ2lucy5sZWZ0fWlmKEkpe0YucG9zaXRp b24ubGVmdD1MLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0OkctTC5oZWxw ZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQtTC5tYXJnaW5zLmxlZnR9fWlmKCFMLnNuYXBFbGVtZW50 c1tyXS5zbmFwcGluZyYmKE98fGF8fEp8fEl8fEspKXsoTC5vcHRpb25zLnNuYXAuc25hcCYmTC5vcHRp b25zLnNuYXAuc25hcC5jYWxsKEwuZWxlbWVudCxCLGIuZXh0ZW5kKEwuX3VpSGFzaCgpLHtzbmFwSXRl bTpMLnNuYXBFbGVtZW50c1tyXS5pdGVtfSkpKX1MLnNuYXBFbGVtZW50c1tyXS5zbmFwcGluZz0oT3x8 YXx8Snx8SXx8Syl9fX0pO2IudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic3RhY2siLHtzdGFydDpm dW5jdGlvbihhLGgpe3ZhciBmPWIodGhpcykuZGF0YSgiZHJhZ2dhYmxlIikub3B0aW9uczt2YXIgZz1i Lm1ha2VBcnJheShiKGYuc3RhY2suZ3JvdXApKS5zb3J0KGZ1bmN0aW9uKGMsZCl7cmV0dXJuKHBhcnNl SW50KGIoYykuY3NzKCJ6SW5kZXgiKSwxMCl8fGYuc3RhY2subWluKS0ocGFyc2VJbnQoYihkKS5jc3Mo InpJbmRleCIpLDEwKXx8Zi5zdGFjay5taW4pfSk7YihnKS5lYWNoKGZ1bmN0aW9uKGMpe3RoaXMuc3R5 bGUuekluZGV4PWYuc3RhY2subWluK2N9KTt0aGlzWzBdLnN0eWxlLnpJbmRleD1mLnN0YWNrLm1pbitn Lmxlbmd0aH19KTtiLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInpJbmRleCIse3N0YXJ0OmZ1bmN0 aW9uKGgsZyl7dmFyIGE9YihnLmhlbHBlciksZj1iKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9wdGlv bnM7aWYoYS5jc3MoInpJbmRleCIpKXtmLl96SW5kZXg9YS5jc3MoInpJbmRleCIpfWEuY3NzKCJ6SW5k ZXgiLGYuekluZGV4KX0sc3RvcDpmdW5jdGlvbihhLGYpe3ZhciBlPWIodGhpcykuZGF0YSgiZHJhZ2dh YmxlIikub3B0aW9ucztpZihlLl96SW5kZXgpe2IoZi5oZWxwZXIpLmNzcygiekluZGV4IixlLl96SW5k ZXgpfX19KX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGIpe2Iud2lkZ2V0KCJ1aS5kcm9wcGFibGUiLHtfaW5p dDpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3B0aW9ucyxhPWQuYWNjZXB0O3RoaXMuaXNvdmVyPTA7dGhp cy5pc291dD0xO3RoaXMub3B0aW9ucy5hY2NlcHQ9dGhpcy5vcHRpb25zLmFjY2VwdCYmYi5pc0Z1bmN0 aW9uKHRoaXMub3B0aW9ucy5hY2NlcHQpP3RoaXMub3B0aW9ucy5hY2NlcHQ6ZnVuY3Rpb24oYyl7cmV0 dXJuIGMuaXMoYSl9O3RoaXMucHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMuZWxlbWVudFswXS5vZmZzZXRX aWR0aCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLm9mZnNldEhlaWdodH07Yi51aS5kZG1hbmFnZXIuZHJv cHBhYmxlc1t0aGlzLm9wdGlvbnMuc2NvcGVdPWIudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbdGhpcy5v cHRpb25zLnNjb3BlXXx8W107Yi51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2Nv cGVdLnB1c2godGhpcyk7KHRoaXMub3B0aW9ucy5hZGRDbGFzc2VzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xh c3MoInVpLWRyb3BwYWJsZSIpKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBhPWIudWkuZGRtYW5hZ2Vy LmRyb3BwYWJsZXNbdGhpcy5vcHRpb25zLnNjb3BlXTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyl7 aWYoYVtkXT09dGhpcyl7YS5zcGxpY2UoZCwxKX19dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1k cm9wcGFibGUgdWktZHJvcHBhYmxlLWRpc2FibGVkIikucmVtb3ZlRGF0YSgiZHJvcHBhYmxlIikudW5i aW5kKCIuZHJvcHBhYmxlIil9LF9zZXREYXRhOmZ1bmN0aW9uKGEsZCl7aWYoYT09ImFjY2VwdCIpe3Ro aXMub3B0aW9ucy5hY2NlcHQ9ZCYmYi5pc0Z1bmN0aW9uKGQpP2Q6ZnVuY3Rpb24oYyl7cmV0dXJuIGMu aXMoZCl9fWVsc2V7Yi53aWRnZXQucHJvdG90eXBlLl9zZXREYXRhLmFwcGx5KHRoaXMsYXJndW1lbnRz KX19LF9hY3RpdmF0ZTpmdW5jdGlvbihkKXt2YXIgYT1iLnVpLmRkbWFuYWdlci5jdXJyZW50O2lmKHRo aXMub3B0aW9ucy5hY3RpdmVDbGFzcyl7dGhpcy5lbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5h Y3RpdmVDbGFzcyl9KGEmJnRoaXMuX3RyaWdnZXIoImFjdGl2YXRlIixkLHRoaXMudWkoYSkpKX0sX2Rl YWN0aXZhdGU6ZnVuY3Rpb24oZCl7dmFyIGE9Yi51aS5kZG1hbmFnZXIuY3VycmVudDtpZih0aGlzLm9w dGlvbnMuYWN0aXZlQ2xhc3Mpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuYWN0 aXZlQ2xhc3MpfShhJiZ0aGlzLl90cmlnZ2VyKCJkZWFjdGl2YXRlIixkLHRoaXMudWkoYSkpKX0sX292 ZXI6ZnVuY3Rpb24oZCl7dmFyIGE9Yi51aS5kZG1hbmFnZXIuY3VycmVudDtpZighYXx8KGEuY3VycmVu dEl0ZW18fGEuZWxlbWVudClbMF09PXRoaXMuZWxlbWVudFswXSl7cmV0dXJufWlmKHRoaXMub3B0aW9u cy5hY2NlcHQuY2FsbCh0aGlzLmVsZW1lbnRbMF0sKGEuY3VycmVudEl0ZW18fGEuZWxlbWVudCkpKXtp Zih0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyl7dGhpcy5lbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9u cy5ob3ZlckNsYXNzKX10aGlzLl90cmlnZ2VyKCJvdmVyIixkLHRoaXMudWkoYSkpfX0sX291dDpmdW5j dGlvbihkKXt2YXIgYT1iLnVpLmRkbWFuYWdlci5jdXJyZW50O2lmKCFhfHwoYS5jdXJyZW50SXRlbXx8 YS5lbGVtZW50KVswXT09dGhpcy5lbGVtZW50WzBdKXtyZXR1cm59aWYodGhpcy5vcHRpb25zLmFjY2Vw dC5jYWxsKHRoaXMuZWxlbWVudFswXSwoYS5jdXJyZW50SXRlbXx8YS5lbGVtZW50KSkpe2lmKHRoaXMu b3B0aW9ucy5ob3ZlckNsYXNzKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmhv dmVyQ2xhc3MpfXRoaXMuX3RyaWdnZXIoIm91dCIsZCx0aGlzLnVpKGEpKX19LF9kcm9wOmZ1bmN0aW9u KGgsZyl7dmFyIGE9Z3x8Yi51aS5kZG1hbmFnZXIuY3VycmVudDtpZighYXx8KGEuY3VycmVudEl0ZW18 fGEuZWxlbWVudClbMF09PXRoaXMuZWxlbWVudFswXSl7cmV0dXJuIGZhbHNlfXZhciBmPWZhbHNlO3Ro aXMuZWxlbWVudC5maW5kKCI6ZGF0YShkcm9wcGFibGUpIikubm90KCIudWktZHJhZ2dhYmxlLWRyYWdn aW5nIikuZWFjaChmdW5jdGlvbigpe3ZhciBjPWIuZGF0YSh0aGlzLCJkcm9wcGFibGUiKTtpZihjLm9w dGlvbnMuZ3JlZWR5JiZiLnVpLmludGVyc2VjdChhLGIuZXh0ZW5kKGMse29mZnNldDpjLmVsZW1lbnQu b2Zmc2V0KCl9KSxjLm9wdGlvbnMudG9sZXJhbmNlKSl7Zj10cnVlO3JldHVybiBmYWxzZX19KTtpZihm KXtyZXR1cm4gZmFsc2V9aWYodGhpcy5vcHRpb25zLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSwo YS5jdXJyZW50SXRlbXx8YS5lbGVtZW50KSkpe2lmKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyl7dGhp cy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyl9aWYodGhpcy5vcHRp b25zLmhvdmVyQ2xhc3Mpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJD bGFzcyl9dGhpcy5fdHJpZ2dlcigiZHJvcCIsaCx0aGlzLnVpKGEpKTtyZXR1cm4gdGhpcy5lbGVtZW50 fXJldHVybiBmYWxzZX0sdWk6ZnVuY3Rpb24oYSl7cmV0dXJue2RyYWdnYWJsZTooYS5jdXJyZW50SXRl bXx8YS5lbGVtZW50KSxoZWxwZXI6YS5oZWxwZXIscG9zaXRpb246YS5wb3NpdGlvbixhYnNvbHV0ZVBv c2l0aW9uOmEucG9zaXRpb25BYnMsb2Zmc2V0OmEucG9zaXRpb25BYnN9fX0pO2IuZXh0ZW5kKGIudWku ZHJvcHBhYmxlLHt2ZXJzaW9uOiIxLjcuMiIsZXZlbnRQcmVmaXg6ImRyb3AiLGRlZmF1bHRzOnthY2Nl cHQ6IioiLGFjdGl2ZUNsYXNzOmZhbHNlLGFkZENsYXNzZXM6dHJ1ZSxncmVlZHk6ZmFsc2UsaG92ZXJD bGFzczpmYWxzZSxzY29wZToiZGVmYXVsdCIsdG9sZXJhbmNlOiJpbnRlcnNlY3QifX0pO2IudWkuaW50 ZXJzZWN0PWZ1bmN0aW9uKGEsdyxyKXtpZighdy5vZmZzZXQpe3JldHVybiBmYWxzZX12YXIgQj0oYS5w b3NpdGlvbkFic3x8YS5wb3NpdGlvbi5hYnNvbHV0ZSkubGVmdCxDPUIrYS5oZWxwZXJQcm9wb3J0aW9u cy53aWR0aCxzPShhLnBvc2l0aW9uQWJzfHxhLnBvc2l0aW9uLmFic29sdXRlKS50b3AsdT1zK2EuaGVs cGVyUHJvcG9ydGlvbnMuaGVpZ2h0O3ZhciB6PXcub2Zmc2V0LmxlZnQsRD16K3cucHJvcG9ydGlvbnMu d2lkdGgsbD13Lm9mZnNldC50b3Asdj1sK3cucHJvcG9ydGlvbnMuaGVpZ2h0O3N3aXRjaChyKXtjYXNl ImZpdCI6cmV0dXJuKHo8QiYmQzxEJiZsPHMmJnU8dik7YnJlYWs7Y2FzZSJpbnRlcnNlY3QiOnJldHVy bih6PEIrKGEuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMikmJkMtKGEuaGVscGVyUHJvcG9ydGlvbnMu d2lkdGgvMik8RCYmbDxzKyhhLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yKSYmdS0oYS5oZWxwZXJQ cm9wb3J0aW9ucy5oZWlnaHQvMik8dik7YnJlYWs7Y2FzZSJwb2ludGVyIjp2YXIgeT0oKGEucG9zaXRp b25BYnN8fGEucG9zaXRpb24uYWJzb2x1dGUpLmxlZnQrKGEuY2xpY2tPZmZzZXR8fGEub2Zmc2V0LmNs aWNrKS5sZWZ0KSx4PSgoYS5wb3NpdGlvbkFic3x8YS5wb3NpdGlvbi5hYnNvbHV0ZSkudG9wKyhhLmNs aWNrT2Zmc2V0fHxhLm9mZnNldC5jbGljaykudG9wKSxBPWIudWkuaXNPdmVyKHgseSxsLHosdy5wcm9w b3J0aW9ucy5oZWlnaHQsdy5wcm9wb3J0aW9ucy53aWR0aCk7cmV0dXJuIEE7YnJlYWs7Y2FzZSJ0b3Vj aCI6cmV0dXJuKChzPj1sJiZzPD12KXx8KHU+PWwmJnU8PXYpfHwoczxsJiZ1PnYpKSYmKChCPj16JiZC PD1EKXx8KEM+PXomJkM8PUQpfHwoQjx6JiZDPkQpKTticmVhaztkZWZhdWx0OnJldHVybiBmYWxzZTti cmVha319O2IudWkuZGRtYW5hZ2VyPXtjdXJyZW50Om51bGwsZHJvcHBhYmxlczp7ImRlZmF1bHQiOltd fSxwcmVwYXJlT2Zmc2V0czpmdW5jdGlvbihwLG4pe3ZhciBhPWIudWkuZGRtYW5hZ2VyLmRyb3BwYWJs ZXNbcC5vcHRpb25zLnNjb3BlXTt2YXIgbz1uP24udHlwZTpudWxsO3ZhciBsPShwLmN1cnJlbnRJdGVt fHxwLmVsZW1lbnQpLmZpbmQoIjpkYXRhKGRyb3BwYWJsZSkiKS5hbmRTZWxmKCk7ZHJvcHBhYmxlc0xv b3A6Zm9yKHZhciBxPTA7cTxhLmxlbmd0aDtxKyspe2lmKGFbcV0ub3B0aW9ucy5kaXNhYmxlZHx8KHAm JiFhW3FdLm9wdGlvbnMuYWNjZXB0LmNhbGwoYVtxXS5lbGVtZW50WzBdLChwLmN1cnJlbnRJdGVtfHxw LmVsZW1lbnQpKSkpe2NvbnRpbnVlfWZvcih2YXIgcj0wO3I8bC5sZW5ndGg7cisrKXtpZihsW3JdPT1h W3FdLmVsZW1lbnRbMF0pe2FbcV0ucHJvcG9ydGlvbnMuaGVpZ2h0PTA7Y29udGludWUgZHJvcHBhYmxl c0xvb3B9fWFbcV0udmlzaWJsZT1hW3FdLmVsZW1lbnQuY3NzKCJkaXNwbGF5IikhPSJub25lIjtpZigh YVtxXS52aXNpYmxlKXtjb250aW51ZX1hW3FdLm9mZnNldD1hW3FdLmVsZW1lbnQub2Zmc2V0KCk7YVtx XS5wcm9wb3J0aW9ucz17d2lkdGg6YVtxXS5lbGVtZW50WzBdLm9mZnNldFdpZHRoLGhlaWdodDphW3Fd LmVsZW1lbnRbMF0ub2Zmc2V0SGVpZ2h0fTtpZihvPT0ibW91c2Vkb3duIil7YVtxXS5fYWN0aXZhdGUu Y2FsbChhW3FdLG4pfX19LGRyb3A6ZnVuY3Rpb24oYSxmKXt2YXIgZT1mYWxzZTtiLmVhY2goYi51aS5k ZG1hbmFnZXIuZHJvcHBhYmxlc1thLm9wdGlvbnMuc2NvcGVdLGZ1bmN0aW9uKCl7aWYoIXRoaXMub3B0 aW9ucyl7cmV0dXJufWlmKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmYi51aS5p bnRlcnNlY3QoYSx0aGlzLHRoaXMub3B0aW9ucy50b2xlcmFuY2UpKXtlPXRoaXMuX2Ryb3AuY2FsbCh0 aGlzLGYpfWlmKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmdGhpcy5vcHRpb25z LmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSwoYS5jdXJyZW50SXRlbXx8YS5lbGVtZW50KSkpe3Ro aXMuaXNvdXQ9MTt0aGlzLmlzb3Zlcj0wO3RoaXMuX2RlYWN0aXZhdGUuY2FsbCh0aGlzLGYpfX0pO3Jl dHVybiBlfSxkcmFnOmZ1bmN0aW9uKGEsZCl7aWYoYS5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnMpe2Iu dWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKGEsZCl9Yi5lYWNoKGIudWkuZGRtYW5hZ2VyLmRyb3Bw YWJsZXNbYS5vcHRpb25zLnNjb3BlXSxmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8 dGhpcy5ncmVlZHlDaGlsZHx8IXRoaXMudmlzaWJsZSl7cmV0dXJufXZhciBsPWIudWkuaW50ZXJzZWN0 KGEsdGhpcyx0aGlzLm9wdGlvbnMudG9sZXJhbmNlKTt2YXIgYz0hbCYmdGhpcy5pc292ZXI9PTE/Imlz b3V0IjoobCYmdGhpcy5pc292ZXI9PTA/Imlzb3ZlciI6bnVsbCk7aWYoIWMpe3JldHVybn12YXIgaDtp Zih0aGlzLm9wdGlvbnMuZ3JlZWR5KXt2YXIgbj10aGlzLmVsZW1lbnQucGFyZW50cygiOmRhdGEoZHJv cHBhYmxlKTplcSgwKSIpO2lmKG4ubGVuZ3RoKXtoPWIuZGF0YShuWzBdLCJkcm9wcGFibGUiKTtoLmdy ZWVkeUNoaWxkPShjPT0iaXNvdmVyIj8xOjApfX1pZihoJiZjPT0iaXNvdmVyIil7aC5pc292ZXI9MDto Lmlzb3V0PTE7aC5fb3V0LmNhbGwoaCxkKX10aGlzW2NdPTE7dGhpc1tjPT0iaXNvdXQiPyJpc292ZXIi OiJpc291dCJdPTA7dGhpc1tjPT0iaXNvdmVyIj8iX292ZXIiOiJfb3V0Il0uY2FsbCh0aGlzLGQpO2lm KGgmJmM9PSJpc291dCIpe2guaXNvdXQ9MDtoLmlzb3Zlcj0xO2guX292ZXIuY2FsbChoLGQpfX0pfX19 KShqUXVlcnkpOyhmdW5jdGlvbihmKXtmLndpZGdldCgidWkucmVzaXphYmxlIixmLmV4dGVuZCh7fSxm LnVpLm1vdXNlLHtfaW5pdDpmdW5jdGlvbigpe3ZhciBvPXRoaXMsYj10aGlzLm9wdGlvbnM7dGhpcy5l bGVtZW50LmFkZENsYXNzKCJ1aS1yZXNpemFibGUiKTtmLmV4dGVuZCh0aGlzLHtfYXNwZWN0UmF0aW86 ISEoYi5hc3BlY3RSYXRpbyksYXNwZWN0UmF0aW86Yi5hc3BlY3RSYXRpbyxvcmlnaW5hbEVsZW1lbnQ6 dGhpcy5lbGVtZW50LF9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzOltdLF9oZWxwZXI6Yi5oZWxw ZXJ8fGIuZ2hvc3R8fGIuYW5pbWF0ZT9iLmhlbHBlcnx8InVpLXJlc2l6YWJsZS1oZWxwZXIiOm51bGx9 KTtpZih0aGlzLmVsZW1lbnRbMF0ubm9kZU5hbWUubWF0Y2goL2NhbnZhc3x0ZXh0YXJlYXxpbnB1dHxz ZWxlY3R8YnV0dG9ufGltZy9pKSl7aWYoL3JlbGF0aXZlLy50ZXN0KHRoaXMuZWxlbWVudC5jc3MoInBv c2l0aW9uIikpJiZmLmJyb3dzZXIub3BlcmEpe3RoaXMuZWxlbWVudC5jc3Moe3Bvc2l0aW9uOiJyZWxh dGl2ZSIsdG9wOiJhdXRvIixsZWZ0OiJhdXRvIn0pfXRoaXMuZWxlbWVudC53cmFwKGYoJzxkaXYgY2xh c3M9InVpLXdyYXBwZXIiIHN0eWxlPSJvdmVyZmxvdzogaGlkZGVuOyI+PC9kaXY+JykuY3NzKHtwb3Np dGlvbjp0aGlzLmVsZW1lbnQuY3NzKCJwb3NpdGlvbiIpLHdpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldp ZHRoKCksaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpLHRvcDp0aGlzLmVsZW1lbnQuY3Nz KCJ0b3AiKSxsZWZ0OnRoaXMuZWxlbWVudC5jc3MoImxlZnQiKX0pKTt0aGlzLmVsZW1lbnQ9dGhpcy5l bGVtZW50LnBhcmVudCgpLmRhdGEoInJlc2l6YWJsZSIsdGhpcy5lbGVtZW50LmRhdGEoInJlc2l6YWJs ZSIpKTt0aGlzLmVsZW1lbnRJc1dyYXBwZXI9dHJ1ZTt0aGlzLmVsZW1lbnQuY3NzKHttYXJnaW5MZWZ0 OnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luTGVmdCIpLG1hcmdpblRvcDp0aGlzLm9yaWdp bmFsRWxlbWVudC5jc3MoIm1hcmdpblRvcCIpLG1hcmdpblJpZ2h0OnRoaXMub3JpZ2luYWxFbGVtZW50 LmNzcygibWFyZ2luUmlnaHQiKSxtYXJnaW5Cb3R0b206dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJt YXJnaW5Cb3R0b20iKX0pO3RoaXMub3JpZ2luYWxFbGVtZW50LmNzcyh7bWFyZ2luTGVmdDowLG1hcmdp blRvcDowLG1hcmdpblJpZ2h0OjAsbWFyZ2luQm90dG9tOjB9KTt0aGlzLm9yaWdpbmFsUmVzaXplU3R5 bGU9dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJyZXNpemUiKTt0aGlzLm9yaWdpbmFsRWxlbWVudC5j c3MoInJlc2l6ZSIsIm5vbmUiKTt0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLnB1c2go dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKHtwb3NpdGlvbjoic3RhdGljIix6b29tOjEsZGlzcGxheToi YmxvY2sifSkpO3RoaXMub3JpZ2luYWxFbGVtZW50LmNzcyh7bWFyZ2luOnRoaXMub3JpZ2luYWxFbGVt ZW50LmNzcygibWFyZ2luIil9KTt0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpfXRoaXMuaGFuZGxl cz1iLmhhbmRsZXN8fCghZigiLnVpLXJlc2l6YWJsZS1oYW5kbGUiLHRoaXMuZWxlbWVudCkubGVuZ3Ro PyJlLHMsc2UiOntuOiIudWktcmVzaXphYmxlLW4iLGU6Ii51aS1yZXNpemFibGUtZSIsczoiLnVpLXJl c2l6YWJsZS1zIix3OiIudWktcmVzaXphYmxlLXciLHNlOiIudWktcmVzaXphYmxlLXNlIixzdzoiLnVp LXJlc2l6YWJsZS1zdyIsbmU6Ii51aS1yZXNpemFibGUtbmUiLG53OiIudWktcmVzaXphYmxlLW53In0p O2lmKHRoaXMuaGFuZGxlcy5jb25zdHJ1Y3Rvcj09U3RyaW5nKXtpZih0aGlzLmhhbmRsZXM9PSJhbGwi KXt0aGlzLmhhbmRsZXM9Im4sZSxzLHcsc2Usc3csbmUsbncifXZhciBhPXRoaXMuaGFuZGxlcy5zcGxp dCgiLCIpO3RoaXMuaGFuZGxlcz17fTtmb3IodmFyIG49MDtuPGEubGVuZ3RoO24rKyl7dmFyIGM9Zi50 cmltKGFbbl0pLHA9InVpLXJlc2l6YWJsZS0iK2M7dmFyIGw9ZignPGRpdiBjbGFzcz0idWktcmVzaXph YmxlLWhhbmRsZSAnK3ArJyI+PC9kaXY+Jyk7aWYoL3N3fHNlfG5lfG53Ly50ZXN0KGMpKXtsLmNzcyh7 ekluZGV4OisrYi56SW5kZXh9KX1pZigic2UiPT1jKXtsLmFkZENsYXNzKCJ1aS1pY29uIHVpLWljb24t Z3JpcHNtYWxsLWRpYWdvbmFsLXNlIil9dGhpcy5oYW5kbGVzW2NdPSIudWktcmVzaXphYmxlLSIrYzt0 aGlzLmVsZW1lbnQuYXBwZW5kKGwpfX10aGlzLl9yZW5kZXJBeGlzPWZ1bmN0aW9uKHEpe3E9cXx8dGhp cy5lbGVtZW50O2Zvcih2YXIgZyBpbiB0aGlzLmhhbmRsZXMpe2lmKHRoaXMuaGFuZGxlc1tnXS5jb25z dHJ1Y3Rvcj09U3RyaW5nKXt0aGlzLmhhbmRsZXNbZ109Zih0aGlzLmhhbmRsZXNbZ10sdGhpcy5lbGVt ZW50KS5zaG93KCl9aWYodGhpcy5lbGVtZW50SXNXcmFwcGVyJiZ0aGlzLm9yaWdpbmFsRWxlbWVudFsw XS5ub2RlTmFtZS5tYXRjaCgvdGV4dGFyZWF8aW5wdXR8c2VsZWN0fGJ1dHRvbi9pKSl7dmFyIHM9Zih0 aGlzLmhhbmRsZXNbZ10sdGhpcy5lbGVtZW50KSxyPTA7cj0vc3d8bmV8bnd8c2V8bnxzLy50ZXN0KGcp P3Mub3V0ZXJIZWlnaHQoKTpzLm91dGVyV2lkdGgoKTt2YXIgaD1bInBhZGRpbmciLC9uZXxud3xuLy50 ZXN0KGcpPyJUb3AiOi9zZXxzd3xzLy50ZXN0KGcpPyJCb3R0b20iOi9eZSQvLnRlc3QoZyk/IlJpZ2h0 IjoiTGVmdCJdLmpvaW4oIiIpO3EuY3NzKGgscik7dGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKX1p ZighZih0aGlzLmhhbmRsZXNbZ10pLmxlbmd0aCl7Y29udGludWV9fX07dGhpcy5fcmVuZGVyQXhpcyh0 aGlzLmVsZW1lbnQpO3RoaXMuX2hhbmRsZXM9ZigiLnVpLXJlc2l6YWJsZS1oYW5kbGUiLHRoaXMuZWxl bWVudCkuZGlzYWJsZVNlbGVjdGlvbigpO3RoaXMuX2hhbmRsZXMubW91c2VvdmVyKGZ1bmN0aW9uKCl7 aWYoIW8ucmVzaXppbmcpe2lmKHRoaXMuY2xhc3NOYW1lKXt2YXIgZz10aGlzLmNsYXNzTmFtZS5tYXRj aCgvdWktcmVzaXphYmxlLShzZXxzd3xuZXxud3xufGV8c3x3KS9pKX1vLmF4aXM9ZyYmZ1sxXT9nWzFd OiJzZSJ9fSk7aWYoYi5hdXRvSGlkZSl7dGhpcy5faGFuZGxlcy5oaWRlKCk7Zih0aGlzLmVsZW1lbnQp LmFkZENsYXNzKCJ1aS1yZXNpemFibGUtYXV0b2hpZGUiKS5ob3ZlcihmdW5jdGlvbigpe2YodGhpcyku cmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZS1hdXRvaGlkZSIpO28uX2hhbmRsZXMuc2hvdygpfSxmdW5j dGlvbigpe2lmKCFvLnJlc2l6aW5nKXtmKHRoaXMpLmFkZENsYXNzKCJ1aS1yZXNpemFibGUtYXV0b2hp ZGUiKTtvLl9oYW5kbGVzLmhpZGUoKX19KX10aGlzLl9tb3VzZUluaXQoKX0sZGVzdHJveTpmdW5jdGlv bigpe3RoaXMuX21vdXNlRGVzdHJveSgpO3ZhciBiPWZ1bmN0aW9uKGMpe2YoYykucmVtb3ZlQ2xhc3Mo InVpLXJlc2l6YWJsZSB1aS1yZXNpemFibGUtZGlzYWJsZWQgdWktcmVzaXphYmxlLXJlc2l6aW5nIiku cmVtb3ZlRGF0YSgicmVzaXphYmxlIikudW5iaW5kKCIucmVzaXphYmxlIikuZmluZCgiLnVpLXJlc2l6 YWJsZS1oYW5kbGUiKS5yZW1vdmUoKX07aWYodGhpcy5lbGVtZW50SXNXcmFwcGVyKXtiKHRoaXMuZWxl bWVudCk7dmFyIGE9dGhpcy5lbGVtZW50O2EucGFyZW50KCkuYXBwZW5kKHRoaXMub3JpZ2luYWxFbGVt ZW50LmNzcyh7cG9zaXRpb246YS5jc3MoInBvc2l0aW9uIiksd2lkdGg6YS5vdXRlcldpZHRoKCksaGVp Z2h0OmEub3V0ZXJIZWlnaHQoKSx0b3A6YS5jc3MoInRvcCIpLGxlZnQ6YS5jc3MoImxlZnQiKX0pKS5l bmQoKS5yZW1vdmUoKX10aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIsdGhpcy5vcmlnaW5h bFJlc2l6ZVN0eWxlKTtiKHRoaXMub3JpZ2luYWxFbGVtZW50KX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlv bihiKXt2YXIgYT1mYWxzZTtmb3IodmFyIGMgaW4gdGhpcy5oYW5kbGVzKXtpZihmKHRoaXMuaGFuZGxl c1tjXSlbMF09PWIudGFyZ2V0KXthPXRydWV9fXJldHVybiB0aGlzLm9wdGlvbnMuZGlzYWJsZWR8fCEh YX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24obil7dmFyIGI9dGhpcy5vcHRpb25zLG89dGhpcy5lbGVtZW50 LnBvc2l0aW9uKCkscD10aGlzLmVsZW1lbnQ7dGhpcy5yZXNpemluZz10cnVlO3RoaXMuZG9jdW1lbnRT Y3JvbGw9e3RvcDpmKGRvY3VtZW50KS5zY3JvbGxUb3AoKSxsZWZ0OmYoZG9jdW1lbnQpLnNjcm9sbExl ZnQoKX07aWYocC5pcygiLnVpLWRyYWdnYWJsZSIpfHwoL2Fic29sdXRlLykudGVzdChwLmNzcygicG9z aXRpb24iKSkpe3AuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDpvLnRvcCxsZWZ0Om8ubGVmdH0p fWlmKGYuYnJvd3Nlci5vcGVyYSYmKC9yZWxhdGl2ZS8pLnRlc3QocC5jc3MoInBvc2l0aW9uIikpKXtw LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6ImF1dG8iLGxlZnQ6ImF1dG8ifSl9dGhpcy5fcmVu ZGVyUHJveHkoKTt2YXIgYT1kKHRoaXMuaGVscGVyLmNzcygibGVmdCIpKSxsPWQodGhpcy5oZWxwZXIu Y3NzKCJ0b3AiKSk7aWYoYi5jb250YWlubWVudCl7YSs9ZihiLmNvbnRhaW5tZW50KS5zY3JvbGxMZWZ0 KCl8fDA7bCs9ZihiLmNvbnRhaW5tZW50KS5zY3JvbGxUb3AoKXx8MH10aGlzLm9mZnNldD10aGlzLmhl bHBlci5vZmZzZXQoKTt0aGlzLnBvc2l0aW9uPXtsZWZ0OmEsdG9wOmx9O3RoaXMuc2l6ZT10aGlzLl9o ZWxwZXI/e3dpZHRoOnAub3V0ZXJXaWR0aCgpLGhlaWdodDpwLm91dGVySGVpZ2h0KCl9Ont3aWR0aDpw LndpZHRoKCksaGVpZ2h0OnAuaGVpZ2h0KCl9O3RoaXMub3JpZ2luYWxTaXplPXRoaXMuX2hlbHBlcj97 d2lkdGg6cC5vdXRlcldpZHRoKCksaGVpZ2h0OnAub3V0ZXJIZWlnaHQoKX06e3dpZHRoOnAud2lkdGgo KSxoZWlnaHQ6cC5oZWlnaHQoKX07dGhpcy5vcmlnaW5hbFBvc2l0aW9uPXtsZWZ0OmEsdG9wOmx9O3Ro aXMuc2l6ZURpZmY9e3dpZHRoOnAub3V0ZXJXaWR0aCgpLXAud2lkdGgoKSxoZWlnaHQ6cC5vdXRlckhl aWdodCgpLXAuaGVpZ2h0KCl9O3RoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uPXtsZWZ0Om4ucGFnZVgs dG9wOm4ucGFnZVl9O3RoaXMuYXNwZWN0UmF0aW89KHR5cGVvZiBiLmFzcGVjdFJhdGlvPT0ibnVtYmVy Iik/Yi5hc3BlY3RSYXRpbzooKHRoaXMub3JpZ2luYWxTaXplLndpZHRoL3RoaXMub3JpZ2luYWxTaXpl LmhlaWdodCl8fDEpO3ZhciBjPWYoIi51aS1yZXNpemFibGUtIit0aGlzLmF4aXMpLmNzcygiY3Vyc29y Iik7ZigiYm9keSIpLmNzcygiY3Vyc29yIixjPT0iYXV0byI/dGhpcy5heGlzKyItcmVzaXplIjpjKTtw LmFkZENsYXNzKCJ1aS1yZXNpemFibGUtcmVzaXppbmciKTt0aGlzLl9wcm9wYWdhdGUoInN0YXJ0Iixu KTtyZXR1cm4gdHJ1ZX0sX21vdXNlRHJhZzpmdW5jdGlvbihBKXt2YXIgeD10aGlzLmhlbHBlcix5PXRo aXMub3B0aW9ucyxyPXt9LGI9dGhpcyx2PXRoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uLG89dGhpcy5h eGlzO3ZhciBhPShBLnBhZ2VYLXYubGVmdCl8fDAsYz0oQS5wYWdlWS12LnRvcCl8fDA7dmFyIHc9dGhp cy5fY2hhbmdlW29dO2lmKCF3KXtyZXR1cm4gZmFsc2V9dmFyIHM9dy5hcHBseSh0aGlzLFtBLGEsY10p LHU9Zi5icm93c2VyLm1zaWUmJmYuYnJvd3Nlci52ZXJzaW9uPDcsej10aGlzLnNpemVEaWZmO2lmKHRo aXMuX2FzcGVjdFJhdGlvfHxBLnNoaWZ0S2V5KXtzPXRoaXMuX3VwZGF0ZVJhdGlvKHMsQSl9cz10aGlz Ll9yZXNwZWN0U2l6ZShzLEEpO3RoaXMuX3Byb3BhZ2F0ZSgicmVzaXplIixBKTt4LmNzcyh7dG9wOnRo aXMucG9zaXRpb24udG9wKyJweCIsbGVmdDp0aGlzLnBvc2l0aW9uLmxlZnQrInB4Iix3aWR0aDp0aGlz LnNpemUud2lkdGgrInB4IixoZWlnaHQ6dGhpcy5zaXplLmhlaWdodCsicHgifSk7aWYoIXRoaXMuX2hl bHBlciYmdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cy5sZW5ndGgpe3RoaXMuX3Byb3Bv cnRpb25hbGx5UmVzaXplKCl9dGhpcy5fdXBkYXRlQ2FjaGUocyk7dGhpcy5fdHJpZ2dlcigicmVzaXpl IixBLHRoaXMudWkoKSk7cmV0dXJuIGZhbHNlfSxfbW91c2VTdG9wOmZ1bmN0aW9uKHEpe3RoaXMucmVz aXppbmc9ZmFsc2U7dmFyIHA9dGhpcy5vcHRpb25zLGI9dGhpcztpZih0aGlzLl9oZWxwZXIpe3ZhciBy PXRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMsdT1yLmxlbmd0aCYmKC90ZXh0YXJlYS9p KS50ZXN0KHJbMF0ubm9kZU5hbWUpLHM9dSYmZi51aS5oYXNTY3JvbGwoclswXSwibGVmdCIpPzA6Yi5z aXplRGlmZi5oZWlnaHQsbj11PzA6Yi5zaXplRGlmZi53aWR0aDt2YXIgYT17d2lkdGg6KGIuc2l6ZS53 aWR0aC1uKSxoZWlnaHQ6KGIuc2l6ZS5oZWlnaHQtcyl9LG89KHBhcnNlSW50KGIuZWxlbWVudC5jc3Mo ImxlZnQiKSwxMCkrKGIucG9zaXRpb24ubGVmdC1iLm9yaWdpbmFsUG9zaXRpb24ubGVmdCkpfHxudWxs LGM9KHBhcnNlSW50KGIuZWxlbWVudC5jc3MoInRvcCIpLDEwKSsoYi5wb3NpdGlvbi50b3AtYi5vcmln aW5hbFBvc2l0aW9uLnRvcCkpfHxudWxsO2lmKCFwLmFuaW1hdGUpe3RoaXMuZWxlbWVudC5jc3MoZi5l eHRlbmQoYSx7dG9wOmMsbGVmdDpvfSkpfWIuaGVscGVyLmhlaWdodChiLnNpemUuaGVpZ2h0KTtiLmhl bHBlci53aWR0aChiLnNpemUud2lkdGgpO2lmKHRoaXMuX2hlbHBlciYmIXAuYW5pbWF0ZSl7dGhpcy5f cHJvcG9ydGlvbmFsbHlSZXNpemUoKX19ZigiYm9keSIpLmNzcygiY3Vyc29yIiwiYXV0byIpO3RoaXMu ZWxlbWVudC5yZW1vdmVDbGFzcygidWktcmVzaXphYmxlLXJlc2l6aW5nIik7dGhpcy5fcHJvcGFnYXRl KCJzdG9wIixxKTtpZih0aGlzLl9oZWxwZXIpe3RoaXMuaGVscGVyLnJlbW92ZSgpfXJldHVybiBmYWxz ZX0sX3VwZGF0ZUNhY2hlOmZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMub3B0aW9uczt0aGlzLm9mZnNldD10 aGlzLmhlbHBlci5vZmZzZXQoKTtpZihlKGIubGVmdCkpe3RoaXMucG9zaXRpb24ubGVmdD1iLmxlZnR9 aWYoZShiLnRvcCkpe3RoaXMucG9zaXRpb24udG9wPWIudG9wfWlmKGUoYi5oZWlnaHQpKXt0aGlzLnNp emUuaGVpZ2h0PWIuaGVpZ2h0fWlmKGUoYi53aWR0aCkpe3RoaXMuc2l6ZS53aWR0aD1iLndpZHRofX0s X3VwZGF0ZVJhdGlvOmZ1bmN0aW9uKGMsbCl7dmFyIGI9dGhpcy5vcHRpb25zLGE9dGhpcy5wb3NpdGlv bixuPXRoaXMuc2l6ZSxvPXRoaXMuYXhpcztpZihjLmhlaWdodCl7Yy53aWR0aD0obi5oZWlnaHQqdGhp cy5hc3BlY3RSYXRpbyl9ZWxzZXtpZihjLndpZHRoKXtjLmhlaWdodD0obi53aWR0aC90aGlzLmFzcGVj dFJhdGlvKX19aWYobz09InN3Iil7Yy5sZWZ0PWEubGVmdCsobi53aWR0aC1jLndpZHRoKTtjLnRvcD1u dWxsfWlmKG89PSJudyIpe2MudG9wPWEudG9wKyhuLmhlaWdodC1jLmhlaWdodCk7Yy5sZWZ0PWEubGVm dCsobi53aWR0aC1jLndpZHRoKX1yZXR1cm4gY30sX3Jlc3BlY3RTaXplOmZ1bmN0aW9uKHcsQil7dmFy IHk9dGhpcy5oZWxwZXIsej10aGlzLm9wdGlvbnMsYj10aGlzLl9hc3BlY3RSYXRpb3x8Qi5zaGlmdEtl eSxjPXRoaXMuYXhpcyxFPWUody53aWR0aCkmJnoubWF4V2lkdGgmJih6Lm1heFdpZHRoPHcud2lkdGgp LHY9ZSh3LmhlaWdodCkmJnoubWF4SGVpZ2h0JiYoei5tYXhIZWlnaHQ8dy5oZWlnaHQpLEE9ZSh3Lndp ZHRoKSYmei5taW5XaWR0aCYmKHoubWluV2lkdGg+dy53aWR0aCksYT1lKHcuaGVpZ2h0KSYmei5taW5I ZWlnaHQmJih6Lm1pbkhlaWdodD53LmhlaWdodCk7aWYoQSl7dy53aWR0aD16Lm1pbldpZHRofWlmKGEp e3cuaGVpZ2h0PXoubWluSGVpZ2h0fWlmKEUpe3cud2lkdGg9ei5tYXhXaWR0aH1pZih2KXt3LmhlaWdo dD16Lm1heEhlaWdodH12YXIgQz10aGlzLm9yaWdpbmFsUG9zaXRpb24ubGVmdCt0aGlzLm9yaWdpbmFs U2l6ZS53aWR0aCxvPXRoaXMucG9zaXRpb24udG9wK3RoaXMuc2l6ZS5oZWlnaHQ7dmFyIHg9L3N3fG53 fHcvLnRlc3QoYyksRD0vbnd8bmV8bi8udGVzdChjKTtpZihBJiZ4KXt3LmxlZnQ9Qy16Lm1pbldpZHRo fWlmKEUmJngpe3cubGVmdD1DLXoubWF4V2lkdGh9aWYoYSYmRCl7dy50b3A9by16Lm1pbkhlaWdodH1p Zih2JiZEKXt3LnRvcD1vLXoubWF4SGVpZ2h0fXZhciB1PSF3LndpZHRoJiYhdy5oZWlnaHQ7aWYodSYm IXcubGVmdCYmdy50b3Ape3cudG9wPW51bGx9ZWxzZXtpZih1JiYhdy50b3AmJncubGVmdCl7dy5sZWZ0 PW51bGx9fXJldHVybiB3fSxfcHJvcG9ydGlvbmFsbHlSZXNpemU6ZnVuY3Rpb24oKXt2YXIgYT10aGlz Lm9wdGlvbnM7aWYoIXRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoKXtyZXR1 cm59dmFyIGw9dGhpcy5oZWxwZXJ8fHRoaXMuZWxlbWVudDtmb3IodmFyIG49MDtuPHRoaXMuX3Byb3Bv cnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoO24rKyl7dmFyIGM9dGhpcy5fcHJvcG9ydGlvbmFs bHlSZXNpemVFbGVtZW50c1tuXTtpZighdGhpcy5ib3JkZXJEaWYpe3ZhciBvPVtjLmNzcygiYm9yZGVy VG9wV2lkdGgiKSxjLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLGMuY3NzKCJib3JkZXJCb3R0b21XaWR0 aCIpLGMuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKV0sYj1bYy5jc3MoInBhZGRpbmdUb3AiKSxjLmNzcygi cGFkZGluZ1JpZ2h0IiksYy5jc3MoInBhZGRpbmdCb3R0b20iKSxjLmNzcygicGFkZGluZ0xlZnQiKV07 dGhpcy5ib3JkZXJEaWY9Zi5tYXAobyxmdW5jdGlvbihwLGcpe3ZhciBoPXBhcnNlSW50KHAsMTApfHww LHE9cGFyc2VJbnQoYltnXSwxMCl8fDA7cmV0dXJuIGgrcX0pfWlmKGYuYnJvd3Nlci5tc2llJiYhKCEo ZihsKS5pcygiOmhpZGRlbiIpfHxmKGwpLnBhcmVudHMoIjpoaWRkZW4iKS5sZW5ndGgpKSl7Y29udGlu dWV9Yy5jc3Moe2hlaWdodDoobC5oZWlnaHQoKS10aGlzLmJvcmRlckRpZlswXS10aGlzLmJvcmRlckRp ZlsyXSl8fDAsd2lkdGg6KGwud2lkdGgoKS10aGlzLmJvcmRlckRpZlsxXS10aGlzLmJvcmRlckRpZlsz XSl8fDB9KX19LF9yZW5kZXJQcm94eTpmdW5jdGlvbigpe3ZhciBsPXRoaXMuZWxlbWVudCxhPXRoaXMu b3B0aW9uczt0aGlzLmVsZW1lbnRPZmZzZXQ9bC5vZmZzZXQoKTtpZih0aGlzLl9oZWxwZXIpe3RoaXMu aGVscGVyPXRoaXMuaGVscGVyfHxmKCc8ZGl2IHN0eWxlPSJvdmVyZmxvdzpoaWRkZW47Ij48L2Rpdj4n KTt2YXIgbj1mLmJyb3dzZXIubXNpZSYmZi5icm93c2VyLnZlcnNpb248NyxjPShuPzE6MCksYj0obj8y Oi0xKTt0aGlzLmhlbHBlci5hZGRDbGFzcyh0aGlzLl9oZWxwZXIpLmNzcyh7d2lkdGg6dGhpcy5lbGVt ZW50Lm91dGVyV2lkdGgoKStiLGhlaWdodDp0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKStiLHBvc2l0 aW9uOiJhYnNvbHV0ZSIsbGVmdDp0aGlzLmVsZW1lbnRPZmZzZXQubGVmdC1jKyJweCIsdG9wOnRoaXMu ZWxlbWVudE9mZnNldC50b3AtYysicHgiLHpJbmRleDorK2EuekluZGV4fSk7dGhpcy5oZWxwZXIuYXBw ZW5kVG8oImJvZHkiKS5kaXNhYmxlU2VsZWN0aW9uKCl9ZWxzZXt0aGlzLmhlbHBlcj10aGlzLmVsZW1l bnR9fSxfY2hhbmdlOntlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm57d2lkdGg6dGhpcy5vcmlnaW5hbFNp emUud2lkdGgrYn19LHc6ZnVuY3Rpb24oYyxuLG8pe3ZhciBhPXRoaXMub3B0aW9ucyxsPXRoaXMub3Jp Z2luYWxTaXplLGI9dGhpcy5vcmlnaW5hbFBvc2l0aW9uO3JldHVybntsZWZ0OmIubGVmdCtuLHdpZHRo Omwud2lkdGgtbn19LG46ZnVuY3Rpb24oYyxuLG8pe3ZhciBhPXRoaXMub3B0aW9ucyxsPXRoaXMub3Jp Z2luYWxTaXplLGI9dGhpcy5vcmlnaW5hbFBvc2l0aW9uO3JldHVybnt0b3A6Yi50b3ArbyxoZWlnaHQ6 bC5oZWlnaHQtb319LHM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybntoZWlnaHQ6dGhpcy5vcmlnaW5hbFNp emUuaGVpZ2h0K2N9fSxzZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZXh0ZW5kKHRoaXMuX2NoYW5n ZS5zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2UuZS5hcHBseSh0aGlzLFthLGIsY10p KX0sc3c6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmV4dGVuZCh0aGlzLl9jaGFuZ2Uucy5hcHBseSh0 aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLncuYXBwbHkodGhpcyxbYSxiLGNdKSl9LG5lOmZ1bmN0 aW9uKGEsYixjKXtyZXR1cm4gZi5leHRlbmQodGhpcy5fY2hhbmdlLm4uYXBwbHkodGhpcyxhcmd1bWVu dHMpLHRoaXMuX2NoYW5nZS5lLmFwcGx5KHRoaXMsW2EsYixjXSkpfSxudzpmdW5jdGlvbihhLGIsYyl7 cmV0dXJuIGYuZXh0ZW5kKHRoaXMuX2NoYW5nZS5uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9j aGFuZ2Uudy5hcHBseSh0aGlzLFthLGIsY10pKX19LF9wcm9wYWdhdGU6ZnVuY3Rpb24oYSxiKXtmLnVp LnBsdWdpbi5jYWxsKHRoaXMsYSxbYix0aGlzLnVpKCldKTsoYSE9InJlc2l6ZSImJnRoaXMuX3RyaWdn ZXIoYSxiLHRoaXMudWkoKSkpfSxwbHVnaW5zOnt9LHVpOmZ1bmN0aW9uKCl7cmV0dXJue29yaWdpbmFs RWxlbWVudDp0aGlzLm9yaWdpbmFsRWxlbWVudCxlbGVtZW50OnRoaXMuZWxlbWVudCxoZWxwZXI6dGhp cy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixzaXplOnRoaXMuc2l6ZSxvcmlnaW5hbFNpemU6 dGhpcy5vcmlnaW5hbFNpemUsb3JpZ2luYWxQb3NpdGlvbjp0aGlzLm9yaWdpbmFsUG9zaXRpb259fX0p KTtmLmV4dGVuZChmLnVpLnJlc2l6YWJsZSx7dmVyc2lvbjoiMS43LjIiLGV2ZW50UHJlZml4OiJyZXNp emUiLGRlZmF1bHRzOnthbHNvUmVzaXplOmZhbHNlLGFuaW1hdGU6ZmFsc2UsYW5pbWF0ZUR1cmF0aW9u OiJzbG93IixhbmltYXRlRWFzaW5nOiJzd2luZyIsYXNwZWN0UmF0aW86ZmFsc2UsYXV0b0hpZGU6ZmFs c2UsY2FuY2VsOiI6aW5wdXQsb3B0aW9uIixjb250YWlubWVudDpmYWxzZSxkZWxheTowLGRpc3RhbmNl OjEsZ2hvc3Q6ZmFsc2UsZ3JpZDpmYWxzZSxoYW5kbGVzOiJlLHMsc2UiLGhlbHBlcjpmYWxzZSxtYXhI ZWlnaHQ6bnVsbCxtYXhXaWR0aDpudWxsLG1pbkhlaWdodDoxMCxtaW5XaWR0aDoxMCx6SW5kZXg6MTAw MH19KTtmLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFsc29SZXNpemUiLHtzdGFydDpmdW5jdGlv bihjLGIpe3ZhciBoPWYodGhpcykuZGF0YSgicmVzaXphYmxlIiksYT1oLm9wdGlvbnM7X3N0b3JlPWZ1 bmN0aW9uKGcpe2YoZykuZWFjaChmdW5jdGlvbigpe2YodGhpcykuZGF0YSgicmVzaXphYmxlLWFsc29y ZXNpemUiLHt3aWR0aDpwYXJzZUludChmKHRoaXMpLndpZHRoKCksMTApLGhlaWdodDpwYXJzZUludChm KHRoaXMpLmhlaWdodCgpLDEwKSxsZWZ0OnBhcnNlSW50KGYodGhpcykuY3NzKCJsZWZ0IiksMTApLHRv cDpwYXJzZUludChmKHRoaXMpLmNzcygidG9wIiksMTApfSl9KX07aWYodHlwZW9mKGEuYWxzb1Jlc2l6 ZSk9PSJvYmplY3QiJiYhYS5hbHNvUmVzaXplLnBhcmVudE5vZGUpe2lmKGEuYWxzb1Jlc2l6ZS5sZW5n dGgpe2EuYWxzb1Jlc2l6ZT1hLmFsc29SZXNpemVbMF07X3N0b3JlKGEuYWxzb1Jlc2l6ZSl9ZWxzZXtm LmVhY2goYS5hbHNvUmVzaXplLGZ1bmN0aW9uKGwsZyl7X3N0b3JlKGwpfSl9fWVsc2V7X3N0b3JlKGEu YWxzb1Jlc2l6ZSl9fSxyZXNpemU6ZnVuY3Rpb24obyxsKXt2YXIgcD1mKHRoaXMpLmRhdGEoInJlc2l6 YWJsZSIpLGM9cC5vcHRpb25zLG49cC5vcmlnaW5hbFNpemUsYT1wLm9yaWdpbmFsUG9zaXRpb247dmFy IGI9e2hlaWdodDoocC5zaXplLmhlaWdodC1uLmhlaWdodCl8fDAsd2lkdGg6KHAuc2l6ZS53aWR0aC1u LndpZHRoKXx8MCx0b3A6KHAucG9zaXRpb24udG9wLWEudG9wKXx8MCxsZWZ0OihwLnBvc2l0aW9uLmxl ZnQtYS5sZWZ0KXx8MH0scT1mdW5jdGlvbihoLGcpe2YoaCkuZWFjaChmdW5jdGlvbigpe3ZhciBzPWYo dGhpcykscj1mKHRoaXMpLmRhdGEoInJlc2l6YWJsZS1hbHNvcmVzaXplIiksdT17fSx2PWcmJmcubGVu Z3RoP2c6WyJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiXTtmLmVhY2godnx8WyJ3aWR0aCIsImhl aWdodCIsInRvcCIsImxlZnQiXSxmdW5jdGlvbih5LHcpe3ZhciB4PShyW3ddfHwwKSsoYlt3XXx8MCk7 aWYoeCYmeD49MCl7dVt3XT14fHxudWxsfX0pO2lmKC9yZWxhdGl2ZS8udGVzdChzLmNzcygicG9zaXRp b24iKSkmJmYuYnJvd3Nlci5vcGVyYSl7cC5fcmV2ZXJ0VG9SZWxhdGl2ZVBvc2l0aW9uPXRydWU7cy5j c3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiJhdXRvIixsZWZ0OiJhdXRvIn0pfXMuY3NzKHUpfSl9 O2lmKHR5cGVvZihjLmFsc29SZXNpemUpPT0ib2JqZWN0IiYmIWMuYWxzb1Jlc2l6ZS5ub2RlVHlwZSl7 Zi5lYWNoKGMuYWxzb1Jlc2l6ZSxmdW5jdGlvbihoLGcpe3EoaCxnKX0pfWVsc2V7cShjLmFsc29SZXNp emUpfX0sc3RvcDpmdW5jdGlvbihiLGEpe3ZhciBjPWYodGhpcykuZGF0YSgicmVzaXphYmxlIik7aWYo Yy5fcmV2ZXJ0VG9SZWxhdGl2ZVBvc2l0aW9uJiZmLmJyb3dzZXIub3BlcmEpe2MuX3JldmVydFRvUmVs YXRpdmVQb3NpdGlvbj1mYWxzZTtlbC5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KX1mKHRoaXMpLnJl bW92ZURhdGEoInJlc2l6YWJsZS1hbHNvcmVzaXplLXN0YXJ0Iil9fSk7Zi51aS5wbHVnaW4uYWRkKCJy ZXNpemFibGUiLCJhbmltYXRlIix7c3RvcDpmdW5jdGlvbihyLGIpe3ZhciBhPWYodGhpcykuZGF0YSgi cmVzaXphYmxlIikscT1hLm9wdGlvbnM7dmFyIHM9YS5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50 cyx3PXMubGVuZ3RoJiYoL3RleHRhcmVhL2kpLnRlc3Qoc1swXS5ub2RlTmFtZSksdj13JiZmLnVpLmhh c1Njcm9sbChzWzBdLCJsZWZ0Iik/MDphLnNpemVEaWZmLmhlaWdodCxvPXc/MDphLnNpemVEaWZmLndp ZHRoO3ZhciB1PXt3aWR0aDooYS5zaXplLndpZHRoLW8pLGhlaWdodDooYS5zaXplLmhlaWdodC12KX0s cD0ocGFyc2VJbnQoYS5lbGVtZW50LmNzcygibGVmdCIpLDEwKSsoYS5wb3NpdGlvbi5sZWZ0LWEub3Jp Z2luYWxQb3NpdGlvbi5sZWZ0KSl8fG51bGwsYz0ocGFyc2VJbnQoYS5lbGVtZW50LmNzcygidG9wIiks MTApKyhhLnBvc2l0aW9uLnRvcC1hLm9yaWdpbmFsUG9zaXRpb24udG9wKSl8fG51bGw7YS5lbGVtZW50 LmFuaW1hdGUoZi5leHRlbmQodSxjJiZwP3t0b3A6YyxsZWZ0OnB9Ont9KSx7ZHVyYXRpb246cS5hbmlt YXRlRHVyYXRpb24sZWFzaW5nOnEuYW5pbWF0ZUVhc2luZyxzdGVwOmZ1bmN0aW9uKCl7dmFyIGc9e3dp ZHRoOnBhcnNlSW50KGEuZWxlbWVudC5jc3MoIndpZHRoIiksMTApLGhlaWdodDpwYXJzZUludChhLmVs ZW1lbnQuY3NzKCJoZWlnaHQiKSwxMCksdG9wOnBhcnNlSW50KGEuZWxlbWVudC5jc3MoInRvcCIpLDEw KSxsZWZ0OnBhcnNlSW50KGEuZWxlbWVudC5jc3MoImxlZnQiKSwxMCl9O2lmKHMmJnMubGVuZ3RoKXtm KHNbMF0pLmNzcyh7d2lkdGg6Zy53aWR0aCxoZWlnaHQ6Zy5oZWlnaHR9KX1hLl91cGRhdGVDYWNoZShn KTthLl9wcm9wYWdhdGUoInJlc2l6ZSIscil9fSl9fSk7Zi51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUi LCJjb250YWlubWVudCIse3N0YXJ0OmZ1bmN0aW9uKEEsYil7dmFyIEM9Zih0aGlzKS5kYXRhKCJyZXNp emFibGUiKSx3PUMub3B0aW9ucyx1PUMuZWxlbWVudDt2YXIgej13LmNvbnRhaW5tZW50LHY9KHogaW5z dGFuY2VvZiBmKT96LmdldCgwKTooL3BhcmVudC8udGVzdCh6KSk/dS5wYXJlbnQoKS5nZXQoMCk6ejtp Zighdil7cmV0dXJufUMuY29udGFpbmVyRWxlbWVudD1mKHYpO2lmKC9kb2N1bWVudC8udGVzdCh6KXx8 ej09ZG9jdW1lbnQpe0MuY29udGFpbmVyT2Zmc2V0PXtsZWZ0OjAsdG9wOjB9O0MuY29udGFpbmVyUG9z aXRpb249e2xlZnQ6MCx0b3A6MH07Qy5wYXJlbnREYXRhPXtlbGVtZW50OmYoZG9jdW1lbnQpLGxlZnQ6 MCx0b3A6MCx3aWR0aDpmKGRvY3VtZW50KS53aWR0aCgpLGhlaWdodDpmKGRvY3VtZW50KS5oZWlnaHQo KXx8ZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodH19ZWxzZXt2YXIgbz1mKHYpLHg9 W107ZihbIlRvcCIsIlJpZ2h0IiwiTGVmdCIsIkJvdHRvbSJdKS5lYWNoKGZ1bmN0aW9uKGcsaCl7eFtn XT1kKG8uY3NzKCJwYWRkaW5nIitoKSl9KTtDLmNvbnRhaW5lck9mZnNldD1vLm9mZnNldCgpO0MuY29u dGFpbmVyUG9zaXRpb249by5wb3NpdGlvbigpO0MuY29udGFpbmVyU2l6ZT17aGVpZ2h0OihvLmlubmVy SGVpZ2h0KCkteFszXSksd2lkdGg6KG8uaW5uZXJXaWR0aCgpLXhbMV0pfTt2YXIgYz1DLmNvbnRhaW5l ck9mZnNldCxCPUMuY29udGFpbmVyU2l6ZS5oZWlnaHQscD1DLmNvbnRhaW5lclNpemUud2lkdGgseT0o Zi51aS5oYXNTY3JvbGwodiwibGVmdCIpP3Yuc2Nyb2xsV2lkdGg6cCksYT0oZi51aS5oYXNTY3JvbGwo dik/di5zY3JvbGxIZWlnaHQ6Qik7Qy5wYXJlbnREYXRhPXtlbGVtZW50OnYsbGVmdDpjLmxlZnQsdG9w OmMudG9wLHdpZHRoOnksaGVpZ2h0OmF9fX0scmVzaXplOmZ1bmN0aW9uKEIsYyl7dmFyIEU9Zih0aGlz KS5kYXRhKCJyZXNpemFibGUiKSx6PUUub3B0aW9ucyxDPUUuY29udGFpbmVyU2l6ZSxvPUUuY29udGFp bmVyT2Zmc2V0LHY9RS5zaXplLHU9RS5wb3NpdGlvbixiPUUuX2FzcGVjdFJhdGlvfHxCLnNoaWZ0S2V5 LEQ9e3RvcDowLGxlZnQ6MH0sQT1FLmNvbnRhaW5lckVsZW1lbnQ7aWYoQVswXSE9ZG9jdW1lbnQmJigv c3RhdGljLykudGVzdChBLmNzcygicG9zaXRpb24iKSkpe0Q9b31pZih1LmxlZnQ8KEUuX2hlbHBlcj9v LmxlZnQ6MCkpe0Uuc2l6ZS53aWR0aD1FLnNpemUud2lkdGgrKEUuX2hlbHBlcj8oRS5wb3NpdGlvbi5s ZWZ0LW8ubGVmdCk6KEUucG9zaXRpb24ubGVmdC1ELmxlZnQpKTtpZihiKXtFLnNpemUuaGVpZ2h0PUUu c2l6ZS53aWR0aC96LmFzcGVjdFJhdGlvfUUucG9zaXRpb24ubGVmdD16LmhlbHBlcj9vLmxlZnQ6MH1p Zih1LnRvcDwoRS5faGVscGVyP28udG9wOjApKXtFLnNpemUuaGVpZ2h0PUUuc2l6ZS5oZWlnaHQrKEUu X2hlbHBlcj8oRS5wb3NpdGlvbi50b3Atby50b3ApOkUucG9zaXRpb24udG9wKTtpZihiKXtFLnNpemUu d2lkdGg9RS5zaXplLmhlaWdodCp6LmFzcGVjdFJhdGlvfUUucG9zaXRpb24udG9wPUUuX2hlbHBlcj9v LnRvcDowfUUub2Zmc2V0LmxlZnQ9RS5wYXJlbnREYXRhLmxlZnQrRS5wb3NpdGlvbi5sZWZ0O0Uub2Zm c2V0LnRvcD1FLnBhcmVudERhdGEudG9wK0UucG9zaXRpb24udG9wO3ZhciB3PU1hdGguYWJzKChFLl9o ZWxwZXI/RS5vZmZzZXQubGVmdC1ELmxlZnQ6KEUub2Zmc2V0LmxlZnQtRC5sZWZ0KSkrRS5zaXplRGlm Zi53aWR0aCksYT1NYXRoLmFicygoRS5faGVscGVyP0Uub2Zmc2V0LnRvcC1ELnRvcDooRS5vZmZzZXQu dG9wLW8udG9wKSkrRS5zaXplRGlmZi5oZWlnaHQpO3ZhciB4PUUuY29udGFpbmVyRWxlbWVudC5nZXQo MCk9PUUuZWxlbWVudC5wYXJlbnQoKS5nZXQoMCkseT0vcmVsYXRpdmV8YWJzb2x1dGUvLnRlc3QoRS5j b250YWluZXJFbGVtZW50LmNzcygicG9zaXRpb24iKSk7aWYoeCYmeSl7dy09RS5wYXJlbnREYXRhLmxl ZnR9aWYodytFLnNpemUud2lkdGg+PUUucGFyZW50RGF0YS53aWR0aCl7RS5zaXplLndpZHRoPUUucGFy ZW50RGF0YS53aWR0aC13O2lmKGIpe0Uuc2l6ZS5oZWlnaHQ9RS5zaXplLndpZHRoL0UuYXNwZWN0UmF0 aW99fWlmKGErRS5zaXplLmhlaWdodD49RS5wYXJlbnREYXRhLmhlaWdodCl7RS5zaXplLmhlaWdodD1F LnBhcmVudERhdGEuaGVpZ2h0LWE7aWYoYil7RS5zaXplLndpZHRoPUUuc2l6ZS5oZWlnaHQqRS5hc3Bl Y3RSYXRpb319fSxzdG9wOmZ1bmN0aW9uKHgsaCl7dmFyIGI9Zih0aGlzKS5kYXRhKCJyZXNpemFibGUi KSx3PWIub3B0aW9ucyxyPWIucG9zaXRpb24sbz1iLmNvbnRhaW5lck9mZnNldCx5PWIuY29udGFpbmVy UG9zaXRpb24sdj1iLmNvbnRhaW5lckVsZW1lbnQ7dmFyIHU9ZihiLmhlbHBlciksYT11Lm9mZnNldCgp LGM9dS5vdXRlcldpZHRoKCktYi5zaXplRGlmZi53aWR0aCxzPXUub3V0ZXJIZWlnaHQoKS1iLnNpemVE aWZmLmhlaWdodDtpZihiLl9oZWxwZXImJiF3LmFuaW1hdGUmJigvcmVsYXRpdmUvKS50ZXN0KHYuY3Nz KCJwb3NpdGlvbiIpKSl7Zih0aGlzKS5jc3Moe2xlZnQ6YS5sZWZ0LXkubGVmdC1vLmxlZnQsd2lkdGg6 YyxoZWlnaHQ6c30pfWlmKGIuX2hlbHBlciYmIXcuYW5pbWF0ZSYmKC9zdGF0aWMvKS50ZXN0KHYuY3Nz KCJwb3NpdGlvbiIpKSl7Zih0aGlzKS5jc3Moe2xlZnQ6YS5sZWZ0LXkubGVmdC1vLmxlZnQsd2lkdGg6 YyxoZWlnaHQ6c30pfX19KTtmLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImdob3N0Iix7c3RhcnQ6 ZnVuY3Rpb24oYyxiKXt2YXIgbj1mKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpLGE9bi5vcHRpb25zLGw9 bi5zaXplO24uZ2hvc3Q9bi5vcmlnaW5hbEVsZW1lbnQuY2xvbmUoKTtuLmdob3N0LmNzcyh7b3BhY2l0 eTowLjI1LGRpc3BsYXk6ImJsb2NrIixwb3NpdGlvbjoicmVsYXRpdmUiLGhlaWdodDpsLmhlaWdodCx3 aWR0aDpsLndpZHRoLG1hcmdpbjowLGxlZnQ6MCx0b3A6MH0pLmFkZENsYXNzKCJ1aS1yZXNpemFibGUt Z2hvc3QiKS5hZGRDbGFzcyh0eXBlb2YgYS5naG9zdD09InN0cmluZyI/YS5naG9zdDoiIik7bi5naG9z dC5hcHBlbmRUbyhuLmhlbHBlcil9LHJlc2l6ZTpmdW5jdGlvbihjLGIpe3ZhciBoPWYodGhpcykuZGF0 YSgicmVzaXphYmxlIiksYT1oLm9wdGlvbnM7aWYoaC5naG9zdCl7aC5naG9zdC5jc3Moe3Bvc2l0aW9u OiJyZWxhdGl2ZSIsaGVpZ2h0Omguc2l6ZS5oZWlnaHQsd2lkdGg6aC5zaXplLndpZHRofSl9fSxzdG9w OmZ1bmN0aW9uKGMsYil7dmFyIGg9Zih0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxhPWgub3B0aW9ucztp ZihoLmdob3N0JiZoLmhlbHBlcil7aC5oZWxwZXIuZ2V0KDApLnJlbW92ZUNoaWxkKGguZ2hvc3QuZ2V0 KDApKX19fSk7Zi51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUiLCJncmlkIix7cmVzaXplOmZ1bmN0aW9u KHcsYyl7dmFyIGE9Zih0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxzPWEub3B0aW9ucyxwPWEuc2l6ZSxy PWEub3JpZ2luYWxTaXplLHE9YS5vcmlnaW5hbFBvc2l0aW9uLGI9YS5heGlzLG89cy5fYXNwZWN0UmF0 aW98fHcuc2hpZnRLZXk7cy5ncmlkPXR5cGVvZiBzLmdyaWQ9PSJudW1iZXIiP1tzLmdyaWQscy5ncmlk XTpzLmdyaWQ7dmFyIHU9TWF0aC5yb3VuZCgocC53aWR0aC1yLndpZHRoKS8ocy5ncmlkWzBdfHwxKSkq KHMuZ3JpZFswXXx8MSksdj1NYXRoLnJvdW5kKChwLmhlaWdodC1yLmhlaWdodCkvKHMuZ3JpZFsxXXx8 MSkpKihzLmdyaWRbMV18fDEpO2lmKC9eKHNlfHN8ZSkkLy50ZXN0KGIpKXthLnNpemUud2lkdGg9ci53 aWR0aCt1O2Euc2l6ZS5oZWlnaHQ9ci5oZWlnaHQrdn1lbHNle2lmKC9eKG5lKSQvLnRlc3QoYikpe2Eu c2l6ZS53aWR0aD1yLndpZHRoK3U7YS5zaXplLmhlaWdodD1yLmhlaWdodCt2O2EucG9zaXRpb24udG9w PXEudG9wLXZ9ZWxzZXtpZigvXihzdykkLy50ZXN0KGIpKXthLnNpemUud2lkdGg9ci53aWR0aCt1O2Eu c2l6ZS5oZWlnaHQ9ci5oZWlnaHQrdjthLnBvc2l0aW9uLmxlZnQ9cS5sZWZ0LXV9ZWxzZXthLnNpemUu d2lkdGg9ci53aWR0aCt1O2Euc2l6ZS5oZWlnaHQ9ci5oZWlnaHQrdjthLnBvc2l0aW9uLnRvcD1xLnRv cC12O2EucG9zaXRpb24ubGVmdD1xLmxlZnQtdX19fX19KTt2YXIgZD1mdW5jdGlvbihhKXtyZXR1cm4g cGFyc2VJbnQoYSwxMCl8fDB9O3ZhciBlPWZ1bmN0aW9uKGEpe3JldHVybiAhaXNOYU4ocGFyc2VJbnQo YSwxMCkpfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGIpe2Iud2lkZ2V0KCJ1aS5zZWxlY3RhYmxlIixiLmV4 dGVuZCh7fSxiLnVpLm1vdXNlLHtfaW5pdDpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5lbGVtZW50 LmFkZENsYXNzKCJ1aS1zZWxlY3RhYmxlIik7dGhpcy5kcmFnZ2VkPWZhbHNlO3ZhciBkO3RoaXMucmVm cmVzaD1mdW5jdGlvbigpe2Q9YihhLm9wdGlvbnMuZmlsdGVyLGEuZWxlbWVudFswXSk7ZC5lYWNoKGZ1 bmN0aW9uKCl7dmFyIGY9Yih0aGlzKTt2YXIgYz1mLm9mZnNldCgpO2IuZGF0YSh0aGlzLCJzZWxlY3Rh YmxlLWl0ZW0iLHtlbGVtZW50OnRoaXMsJGVsZW1lbnQ6ZixsZWZ0OmMubGVmdCx0b3A6Yy50b3Ascmln aHQ6Yy5sZWZ0K2Yub3V0ZXJXaWR0aCgpLGJvdHRvbTpjLnRvcCtmLm91dGVySGVpZ2h0KCksc3RhcnRz ZWxlY3RlZDpmYWxzZSxzZWxlY3RlZDpmLmhhc0NsYXNzKCJ1aS1zZWxlY3RlZCIpLHNlbGVjdGluZzpm Lmhhc0NsYXNzKCJ1aS1zZWxlY3RpbmciKSx1bnNlbGVjdGluZzpmLmhhc0NsYXNzKCJ1aS11bnNlbGVj dGluZyIpfSl9KX07dGhpcy5yZWZyZXNoKCk7dGhpcy5zZWxlY3RlZXM9ZC5hZGRDbGFzcygidWktc2Vs ZWN0ZWUiKTt0aGlzLl9tb3VzZUluaXQoKTt0aGlzLmhlbHBlcj1iKGRvY3VtZW50LmNyZWF0ZUVsZW1l bnQoImRpdiIpKS5jc3Moe2JvcmRlcjoiMXB4IGRvdHRlZCBibGFjayJ9KS5hZGRDbGFzcygidWktc2Vs ZWN0YWJsZS1oZWxwZXIiKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFz cygidWktc2VsZWN0YWJsZSB1aS1zZWxlY3RhYmxlLWRpc2FibGVkIikucmVtb3ZlRGF0YSgic2VsZWN0 YWJsZSIpLnVuYmluZCgiLnNlbGVjdGFibGUiKTt0aGlzLl9tb3VzZURlc3Ryb3koKX0sX21vdXNlU3Rh cnQ6ZnVuY3Rpb24oZSl7dmFyIGE9dGhpczt0aGlzLm9wb3M9W2UucGFnZVgsZS5wYWdlWV07aWYodGhp cy5vcHRpb25zLmRpc2FibGVkKXtyZXR1cm59dmFyIGY9dGhpcy5vcHRpb25zO3RoaXMuc2VsZWN0ZWVz PWIoZi5maWx0ZXIsdGhpcy5lbGVtZW50WzBdKTt0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSk7YihmLmFw cGVuZFRvKS5hcHBlbmQodGhpcy5oZWxwZXIpO3RoaXMuaGVscGVyLmNzcyh7InotaW5kZXgiOjEwMCxw b3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6ZS5jbGllbnRYLHRvcDplLmNsaWVudFksd2lkdGg6MCxoZWln aHQ6MH0pO2lmKGYuYXV0b1JlZnJlc2gpe3RoaXMucmVmcmVzaCgpfXRoaXMuc2VsZWN0ZWVzLmZpbHRl cigiLnVpLXNlbGVjdGVkIikuZWFjaChmdW5jdGlvbigpe3ZhciBjPWIuZGF0YSh0aGlzLCJzZWxlY3Rh YmxlLWl0ZW0iKTtjLnN0YXJ0c2VsZWN0ZWQ9dHJ1ZTtpZighZS5tZXRhS2V5KXtjLiRlbGVtZW50LnJl bW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpO2Muc2VsZWN0ZWQ9ZmFsc2U7Yy4kZWxlbWVudC5hZGRDbGFz cygidWktdW5zZWxlY3RpbmciKTtjLnVuc2VsZWN0aW5nPXRydWU7YS5fdHJpZ2dlcigidW5zZWxlY3Rp bmciLGUse3Vuc2VsZWN0aW5nOmMuZWxlbWVudH0pfX0pO2IoZS50YXJnZXQpLnBhcmVudHMoKS5hbmRT ZWxmKCkuZWFjaChmdW5jdGlvbigpe3ZhciBjPWIuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKTtp ZihjKXtjLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS11bnNlbGVjdGluZyIpLmFkZENsYXNzKCJ1aS1z ZWxlY3RpbmciKTtjLnVuc2VsZWN0aW5nPWZhbHNlO2Muc2VsZWN0aW5nPXRydWU7Yy5zZWxlY3RlZD10 cnVlO2EuX3RyaWdnZXIoInNlbGVjdGluZyIsZSx7c2VsZWN0aW5nOmMuZWxlbWVudH0pO3JldHVybiBm YWxzZX19KX0sX21vdXNlRHJhZzpmdW5jdGlvbihsKXt2YXIgcz10aGlzO3RoaXMuZHJhZ2dlZD10cnVl O2lmKHRoaXMub3B0aW9ucy5kaXNhYmxlZCl7cmV0dXJufXZhciBxPXRoaXMub3B0aW9uczt2YXIgcj10 aGlzLm9wb3NbMF0sbj10aGlzLm9wb3NbMV0sYT1sLnBhZ2VYLG89bC5wYWdlWTtpZihyPmEpe3ZhciBw PWE7YT1yO3I9cH1pZihuPm8pe3ZhciBwPW87bz1uO249cH10aGlzLmhlbHBlci5jc3Moe2xlZnQ6cix0 b3A6bix3aWR0aDphLXIsaGVpZ2h0Om8tbn0pO3RoaXMuc2VsZWN0ZWVzLmVhY2goZnVuY3Rpb24oKXt2 YXIgZD1iLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7aWYoIWR8fGQuZWxlbWVudD09cy5lbGVt ZW50WzBdKXtyZXR1cm59dmFyIGM9ZmFsc2U7aWYocS50b2xlcmFuY2U9PSJ0b3VjaCIpe2M9KCEoZC5s ZWZ0PmF8fGQucmlnaHQ8cnx8ZC50b3A+b3x8ZC5ib3R0b208bikpfWVsc2V7aWYocS50b2xlcmFuY2U9 PSJmaXQiKXtjPShkLmxlZnQ+ciYmZC5yaWdodDxhJiZkLnRvcD5uJiZkLmJvdHRvbTxvKX19aWYoYyl7 aWYoZC5zZWxlY3RlZCl7ZC4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0ZWQiKTtkLnNlbGVj dGVkPWZhbHNlfWlmKGQudW5zZWxlY3Rpbmcpe2QuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXVuc2Vs ZWN0aW5nIik7ZC51bnNlbGVjdGluZz1mYWxzZX1pZighZC5zZWxlY3Rpbmcpe2QuJGVsZW1lbnQuYWRk Q2xhc3MoInVpLXNlbGVjdGluZyIpO2Quc2VsZWN0aW5nPXRydWU7cy5fdHJpZ2dlcigic2VsZWN0aW5n IixsLHtzZWxlY3Rpbmc6ZC5lbGVtZW50fSl9fWVsc2V7aWYoZC5zZWxlY3Rpbmcpe2lmKGwubWV0YUtl eSYmZC5zdGFydHNlbGVjdGVkKXtkLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKTtk LnNlbGVjdGluZz1mYWxzZTtkLiRlbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RlZCIpO2Quc2VsZWN0 ZWQ9dHJ1ZX1lbHNle2QuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpO2Quc2VsZWN0 aW5nPWZhbHNlO2lmKGQuc3RhcnRzZWxlY3RlZCl7ZC4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxl Y3RpbmciKTtkLnVuc2VsZWN0aW5nPXRydWV9cy5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGwse3Vuc2Vs ZWN0aW5nOmQuZWxlbWVudH0pfX1pZihkLnNlbGVjdGVkKXtpZighbC5tZXRhS2V5JiYhZC5zdGFydHNl bGVjdGVkKXtkLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpO2Quc2VsZWN0ZWQ9ZmFs c2U7ZC4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKTtkLnVuc2VsZWN0aW5nPXRydWU7 cy5fdHJpZ2dlcigidW5zZWxlY3RpbmciLGwse3Vuc2VsZWN0aW5nOmQuZWxlbWVudH0pfX19fSk7cmV0 dXJuIGZhbHNlfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGUpe3ZhciBhPXRoaXM7dGhpcy5kcmFnZ2VkPWZh bHNlO3ZhciBmPXRoaXMub3B0aW9ucztiKCIudWktdW5zZWxlY3RpbmciLHRoaXMuZWxlbWVudFswXSku ZWFjaChmdW5jdGlvbigpe3ZhciBjPWIuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKTtjLiRlbGVt ZW50LnJlbW92ZUNsYXNzKCJ1aS11bnNlbGVjdGluZyIpO2MudW5zZWxlY3Rpbmc9ZmFsc2U7Yy5zdGFy dHNlbGVjdGVkPWZhbHNlO2EuX3RyaWdnZXIoInVuc2VsZWN0ZWQiLGUse3Vuc2VsZWN0ZWQ6Yy5lbGVt ZW50fSl9KTtiKCIudWktc2VsZWN0aW5nIix0aGlzLmVsZW1lbnRbMF0pLmVhY2goZnVuY3Rpb24oKXt2 YXIgYz1iLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7Yy4kZWxlbWVudC5yZW1vdmVDbGFzcygi dWktc2VsZWN0aW5nIikuYWRkQ2xhc3MoInVpLXNlbGVjdGVkIik7Yy5zZWxlY3Rpbmc9ZmFsc2U7Yy5z ZWxlY3RlZD10cnVlO2Muc3RhcnRzZWxlY3RlZD10cnVlO2EuX3RyaWdnZXIoInNlbGVjdGVkIixlLHtz ZWxlY3RlZDpjLmVsZW1lbnR9KX0pO3RoaXMuX3RyaWdnZXIoInN0b3AiLGUpO3RoaXMuaGVscGVyLnJl bW92ZSgpO3JldHVybiBmYWxzZX19KSk7Yi5leHRlbmQoYi51aS5zZWxlY3RhYmxlLHt2ZXJzaW9uOiIx LjcuMiIsZGVmYXVsdHM6e2FwcGVuZFRvOiJib2R5IixhdXRvUmVmcmVzaDp0cnVlLGNhbmNlbDoiOmlu cHV0LG9wdGlvbiIsZGVsYXk6MCxkaXN0YW5jZTowLGZpbHRlcjoiKiIsdG9sZXJhbmNlOiJ0b3VjaCJ9 fSl9KShqUXVlcnkpOyhmdW5jdGlvbihiKXtiLndpZGdldCgidWkuc29ydGFibGUiLGIuZXh0ZW5kKHt9 LGIudWkubW91c2Use19pbml0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zO3RoaXMuY29udGFp bmVyQ2FjaGU9e307dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zb3J0YWJsZSIpO3RoaXMucmVmcmVz aCgpO3RoaXMuZmxvYXRpbmc9dGhpcy5pdGVtcy5sZW5ndGg/KC9sZWZ0fHJpZ2h0LykudGVzdCh0aGlz Lml0ZW1zWzBdLml0ZW0uY3NzKCJmbG9hdCIpKTpmYWxzZTt0aGlzLm9mZnNldD10aGlzLmVsZW1lbnQu b2Zmc2V0KCk7dGhpcy5fbW91c2VJbml0KCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQu cmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlIHVpLXNvcnRhYmxlLWRpc2FibGVkIikucmVtb3ZlRGF0YSgi c29ydGFibGUiKS51bmJpbmQoIi5zb3J0YWJsZSIpO3RoaXMuX21vdXNlRGVzdHJveSgpO2Zvcih2YXIg YT10aGlzLml0ZW1zLmxlbmd0aC0xO2E+PTA7YS0tKXt0aGlzLml0ZW1zW2FdLml0ZW0ucmVtb3ZlRGF0 YSgic29ydGFibGUtaXRlbSIpfX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbihuLGwpe2lmKHRoaXMucmV2 ZXJ0aW5nKXtyZXR1cm4gZmFsc2V9aWYodGhpcy5vcHRpb25zLmRpc2FibGVkfHx0aGlzLm9wdGlvbnMu dHlwZT09InN0YXRpYyIpe3JldHVybiBmYWxzZX10aGlzLl9yZWZyZXNoSXRlbXMobik7dmFyIG89bnVs bCxwPXRoaXMsYT1iKG4udGFyZ2V0KS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe2lmKGIuZGF0YSh0 aGlzLCJzb3J0YWJsZS1pdGVtIik9PXApe289Yih0aGlzKTtyZXR1cm4gZmFsc2V9fSk7aWYoYi5kYXRh KG4udGFyZ2V0LCJzb3J0YWJsZS1pdGVtIik9PXApe289YihuLnRhcmdldCl9aWYoIW8pe3JldHVybiBm YWxzZX1pZih0aGlzLm9wdGlvbnMuaGFuZGxlJiYhbCl7dmFyIGg9ZmFsc2U7Yih0aGlzLm9wdGlvbnMu aGFuZGxlLG8pLmZpbmQoIioiKS5hbmRTZWxmKCkuZWFjaChmdW5jdGlvbigpe2lmKHRoaXM9PW4udGFy Z2V0KXtoPXRydWV9fSk7aWYoIWgpe3JldHVybiBmYWxzZX19dGhpcy5jdXJyZW50SXRlbT1vO3RoaXMu X3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zKCk7cmV0dXJuIHRydWV9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9u KG4sbCxhKXt2YXIgaD10aGlzLm9wdGlvbnMscD10aGlzO3RoaXMuY3VycmVudENvbnRhaW5lcj10aGlz O3RoaXMucmVmcmVzaFBvc2l0aW9ucygpO3RoaXMuaGVscGVyPXRoaXMuX2NyZWF0ZUhlbHBlcihuKTt0 aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCk7dGhpcy5fY2FjaGVNYXJnaW5zKCk7dGhpcy5zY3Jv bGxQYXJlbnQ9dGhpcy5oZWxwZXIuc2Nyb2xsUGFyZW50KCk7dGhpcy5vZmZzZXQ9dGhpcy5jdXJyZW50 SXRlbS5vZmZzZXQoKTt0aGlzLm9mZnNldD17dG9wOnRoaXMub2Zmc2V0LnRvcC10aGlzLm1hcmdpbnMu dG9wLGxlZnQ6dGhpcy5vZmZzZXQubGVmdC10aGlzLm1hcmdpbnMubGVmdH07dGhpcy5oZWxwZXIuY3Nz KCJwb3NpdGlvbiIsImFic29sdXRlIik7dGhpcy5jc3NQb3NpdGlvbj10aGlzLmhlbHBlci5jc3MoInBv c2l0aW9uIik7Yi5leHRlbmQodGhpcy5vZmZzZXQse2NsaWNrOntsZWZ0Om4ucGFnZVgtdGhpcy5vZmZz ZXQubGVmdCx0b3A6bi5wYWdlWS10aGlzLm9mZnNldC50b3B9LHBhcmVudDp0aGlzLl9nZXRQYXJlbnRP ZmZzZXQoKSxyZWxhdGl2ZTp0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfSk7dGhpcy5vcmlnaW5hbFBv c2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24obik7dGhpcy5vcmlnaW5hbFBhZ2VYPW4ucGFnZVg7 dGhpcy5vcmlnaW5hbFBhZ2VZPW4ucGFnZVk7aWYoaC5jdXJzb3JBdCl7dGhpcy5fYWRqdXN0T2Zmc2V0 RnJvbUhlbHBlcihoLmN1cnNvckF0KX10aGlzLmRvbVBvc2l0aW9uPXtwcmV2OnRoaXMuY3VycmVudEl0 ZW0ucHJldigpWzBdLHBhcmVudDp0aGlzLmN1cnJlbnRJdGVtLnBhcmVudCgpWzBdfTtpZih0aGlzLmhl bHBlclswXSE9dGhpcy5jdXJyZW50SXRlbVswXSl7dGhpcy5jdXJyZW50SXRlbS5oaWRlKCl9dGhpcy5f Y3JlYXRlUGxhY2Vob2xkZXIoKTtpZihoLmNvbnRhaW5tZW50KXt0aGlzLl9zZXRDb250YWlubWVudCgp fWlmKGguY3Vyc29yKXtpZihiKCJib2R5IikuY3NzKCJjdXJzb3IiKSl7dGhpcy5fc3RvcmVkQ3Vyc29y PWIoImJvZHkiKS5jc3MoImN1cnNvciIpfWIoImJvZHkiKS5jc3MoImN1cnNvciIsaC5jdXJzb3IpfWlm KGgub3BhY2l0eSl7aWYodGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5Iikpe3RoaXMuX3N0b3JlZE9wYWNp dHk9dGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5Iil9dGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IixoLm9w YWNpdHkpfWlmKGguekluZGV4KXtpZih0aGlzLmhlbHBlci5jc3MoInpJbmRleCIpKXt0aGlzLl9zdG9y ZWRaSW5kZXg9dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiKX10aGlzLmhlbHBlci5jc3MoInpJbmRleCIs aC56SW5kZXgpfWlmKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmdGhpcy5zY3JvbGxQYXJl bnRbMF0udGFnTmFtZSE9IkhUTUwiKXt0aGlzLm92ZXJmbG93T2Zmc2V0PXRoaXMuc2Nyb2xsUGFyZW50 Lm9mZnNldCgpfXRoaXMuX3RyaWdnZXIoInN0YXJ0IixuLHRoaXMuX3VpSGFzaCgpKTtpZighdGhpcy5f cHJlc2VydmVIZWxwZXJQcm9wb3J0aW9ucyl7dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpfWlm KCFhKXtmb3IodmFyIG89dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO28+PTA7by0tKXt0aGlzLmNvbnRh aW5lcnNbb10uX3RyaWdnZXIoImFjdGl2YXRlIixuLHAuX3VpSGFzaCh0aGlzKSl9fWlmKGIudWkuZGRt YW5hZ2VyKXtiLnVpLmRkbWFuYWdlci5jdXJyZW50PXRoaXN9aWYoYi51aS5kZG1hbmFnZXImJiFoLmRy b3BCZWhhdmlvdXIpe2IudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsbil9dGhpcy5kcmFn Z2luZz10cnVlO3RoaXMuaGVscGVyLmFkZENsYXNzKCJ1aS1zb3J0YWJsZS1oZWxwZXIiKTt0aGlzLl9t b3VzZURyYWcobik7cmV0dXJuIHRydWV9LF9tb3VzZURyYWc6ZnVuY3Rpb24obyl7dGhpcy5wb3NpdGlv bj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKG8pO3RoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBv c2l0aW9uVG8oImFic29sdXRlIik7aWYoIXRoaXMubGFzdFBvc2l0aW9uQWJzKXt0aGlzLmxhc3RQb3Np dGlvbkFicz10aGlzLnBvc2l0aW9uQWJzfWlmKHRoaXMub3B0aW9ucy5zY3JvbGwpe3ZhciBuPXRoaXMu b3B0aW9ucyxhPWZhbHNlO2lmKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmdGhpcy5zY3Jv bGxQYXJlbnRbMF0udGFnTmFtZSE9IkhUTUwiKXtpZigodGhpcy5vdmVyZmxvd09mZnNldC50b3ArdGhp cy5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0SGVpZ2h0KS1vLnBhZ2VZPG4uc2Nyb2xsU2Vuc2l0aXZpdHkp e3RoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbFRvcD1hPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9s bFRvcCtuLnNjcm9sbFNwZWVkfWVsc2V7aWYoby5wYWdlWS10aGlzLm92ZXJmbG93T2Zmc2V0LnRvcDxu LnNjcm9sbFNlbnNpdGl2aXR5KXt0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9YT10aGlzLnNj cm9sbFBhcmVudFswXS5zY3JvbGxUb3Atbi5zY3JvbGxTcGVlZH19aWYoKHRoaXMub3ZlcmZsb3dPZmZz ZXQubGVmdCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRXaWR0aCktby5wYWdlWDxuLnNjcm9sbFNl bnNpdGl2aXR5KXt0aGlzLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PWE9dGhpcy5zY3JvbGxQYXJl bnRbMF0uc2Nyb2xsTGVmdCtuLnNjcm9sbFNwZWVkfWVsc2V7aWYoby5wYWdlWC10aGlzLm92ZXJmbG93 T2Zmc2V0LmxlZnQ8bi5zY3JvbGxTZW5zaXRpdml0eSl7dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xs TGVmdD1hPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQtbi5zY3JvbGxTcGVlZH19fWVsc2V7 aWYoby5wYWdlWS1iKGRvY3VtZW50KS5zY3JvbGxUb3AoKTxuLnNjcm9sbFNlbnNpdGl2aXR5KXthPWIo ZG9jdW1lbnQpLnNjcm9sbFRvcChiKGRvY3VtZW50KS5zY3JvbGxUb3AoKS1uLnNjcm9sbFNwZWVkKX1l bHNle2lmKGIod2luZG93KS5oZWlnaHQoKS0oby5wYWdlWS1iKGRvY3VtZW50KS5zY3JvbGxUb3AoKSk8 bi5zY3JvbGxTZW5zaXRpdml0eSl7YT1iKGRvY3VtZW50KS5zY3JvbGxUb3AoYihkb2N1bWVudCkuc2Ny b2xsVG9wKCkrbi5zY3JvbGxTcGVlZCl9fWlmKG8ucGFnZVgtYihkb2N1bWVudCkuc2Nyb2xsTGVmdCgp PG4uc2Nyb2xsU2Vuc2l0aXZpdHkpe2E9Yihkb2N1bWVudCkuc2Nyb2xsTGVmdChiKGRvY3VtZW50KS5z Y3JvbGxMZWZ0KCktbi5zY3JvbGxTcGVlZCl9ZWxzZXtpZihiKHdpbmRvdykud2lkdGgoKS0oby5wYWdl WC1iKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkpPG4uc2Nyb2xsU2Vuc2l0aXZpdHkpe2E9Yihkb2N1bWVu dCkuc2Nyb2xsTGVmdChiKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkrbi5zY3JvbGxTcGVlZCl9fX1pZihh IT09ZmFsc2UmJmIudWkuZGRtYW5hZ2VyJiYhbi5kcm9wQmVoYXZpb3VyKXtiLnVpLmRkbWFuYWdlci5w cmVwYXJlT2Zmc2V0cyh0aGlzLG8pfX10aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlv blRvKCJhYnNvbHV0ZSIpO2lmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ5 Iil7dGhpcy5oZWxwZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4In1pZighdGhp cy5vcHRpb25zLmF4aXN8fHRoaXMub3B0aW9ucy5heGlzIT0ieCIpe3RoaXMuaGVscGVyWzBdLnN0eWxl LnRvcD10aGlzLnBvc2l0aW9uLnRvcCsicHgifWZvcih2YXIgcT10aGlzLml0ZW1zLmxlbmd0aC0xO3E+ PTA7cS0tKXt2YXIgcD10aGlzLml0ZW1zW3FdLHI9cC5pdGVtWzBdLGw9dGhpcy5faW50ZXJzZWN0c1dp dGhQb2ludGVyKHApO2lmKCFsKXtjb250aW51ZX1pZihyIT10aGlzLmN1cnJlbnRJdGVtWzBdJiZ0aGlz LnBsYWNlaG9sZGVyW2w9PTE/Im5leHQiOiJwcmV2Il0oKVswXSE9ciYmIWIudWkuY29udGFpbnModGhp cy5wbGFjZWhvbGRlclswXSxyKSYmKHRoaXMub3B0aW9ucy50eXBlPT0ic2VtaS1keW5hbWljIj8hYi51 aS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0scik6dHJ1ZSkpe3RoaXMuZGlyZWN0aW9uPWw9PTE/ImRv d24iOiJ1cCI7aWYodGhpcy5vcHRpb25zLnRvbGVyYW5jZT09InBvaW50ZXIifHx0aGlzLl9pbnRlcnNl Y3RzV2l0aFNpZGVzKHApKXt0aGlzLl9yZWFycmFuZ2UobyxwKX1lbHNle2JyZWFrfXRoaXMuX3RyaWdn ZXIoImNoYW5nZSIsbyx0aGlzLl91aUhhc2goKSk7YnJlYWt9fXRoaXMuX2NvbnRhY3RDb250YWluZXJz KG8pO2lmKGIudWkuZGRtYW5hZ2VyKXtiLnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsbyl9dGhpcy5fdHJp Z2dlcigic29ydCIsbyx0aGlzLl91aUhhc2goKSk7dGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3Np dGlvbkFicztyZXR1cm4gZmFsc2V9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oaCxnKXtpZighaCl7cmV0dXJu fWlmKGIudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXIpe2IudWkuZGRtYW5h Z2VyLmRyb3AodGhpcyxoKX1pZih0aGlzLm9wdGlvbnMucmV2ZXJ0KXt2YXIgYT10aGlzO3ZhciBmPWEu cGxhY2Vob2xkZXIub2Zmc2V0KCk7YS5yZXZlcnRpbmc9dHJ1ZTtiKHRoaXMuaGVscGVyKS5hbmltYXRl KHtsZWZ0OmYubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdC1hLm1hcmdpbnMubGVmdCsodGhpcy5v ZmZzZXRQYXJlbnRbMF09PWRvY3VtZW50LmJvZHk/MDp0aGlzLm9mZnNldFBhcmVudFswXS5zY3JvbGxM ZWZ0KSx0b3A6Zi50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcC1hLm1hcmdpbnMudG9wKyh0aGlzLm9m ZnNldFBhcmVudFswXT09ZG9jdW1lbnQuYm9keT8wOnRoaXMub2Zmc2V0UGFyZW50WzBdLnNjcm9sbFRv cCl9LHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnQsMTApfHw1MDAsZnVuY3Rpb24oKXthLl9jbGVh cihoKX0pfWVsc2V7dGhpcy5fY2xlYXIoaCxnKX1yZXR1cm4gZmFsc2V9LGNhbmNlbDpmdW5jdGlvbigp e3ZhciBhPXRoaXM7aWYodGhpcy5kcmFnZ2luZyl7dGhpcy5fbW91c2VVcCgpO2lmKHRoaXMub3B0aW9u cy5oZWxwZXI9PSJvcmlnaW5hbCIpe3RoaXMuY3VycmVudEl0ZW0uY3NzKHRoaXMuX3N0b3JlZENTUyku cmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpfWVsc2V7dGhpcy5jdXJyZW50SXRlbS5zaG93 KCl9Zm9yKHZhciBkPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtkPj0wO2QtLSl7dGhpcy5jb250YWlu ZXJzW2RdLl90cmlnZ2VyKCJkZWFjdGl2YXRlIixudWxsLGEuX3VpSGFzaCh0aGlzKSk7aWYodGhpcy5j b250YWluZXJzW2RdLmNvbnRhaW5lckNhY2hlLm92ZXIpe3RoaXMuY29udGFpbmVyc1tkXS5fdHJpZ2dl cigib3V0IixudWxsLGEuX3VpSGFzaCh0aGlzKSk7dGhpcy5jb250YWluZXJzW2RdLmNvbnRhaW5lckNh Y2hlLm92ZXI9MH19fWlmKHRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZSl7dGhpcy5wbGFjZWhv bGRlclswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pfWlmKHRoaXMu b3B0aW9ucy5oZWxwZXIhPSJvcmlnaW5hbCImJnRoaXMuaGVscGVyJiZ0aGlzLmhlbHBlclswXS5wYXJl bnROb2RlKXt0aGlzLmhlbHBlci5yZW1vdmUoKX1iLmV4dGVuZCh0aGlzLHtoZWxwZXI6bnVsbCxkcmFn Z2luZzpmYWxzZSxyZXZlcnRpbmc6ZmFsc2UsX25vRmluYWxTb3J0Om51bGx9KTtpZih0aGlzLmRvbVBv c2l0aW9uLnByZXYpe2IodGhpcy5kb21Qb3NpdGlvbi5wcmV2KS5hZnRlcih0aGlzLmN1cnJlbnRJdGVt KX1lbHNle2IodGhpcy5kb21Qb3NpdGlvbi5wYXJlbnQpLnByZXBlbmQodGhpcy5jdXJyZW50SXRlbSl9 cmV0dXJuIHRydWV9LHNlcmlhbGl6ZTpmdW5jdGlvbihlKXt2YXIgYT10aGlzLl9nZXRJdGVtc0FzalF1 ZXJ5KGUmJmUuY29ubmVjdGVkKTt2YXIgZj1bXTtlPWV8fHt9O2IoYSkuZWFjaChmdW5jdGlvbigpe3Zh ciBjPShiKGUuaXRlbXx8dGhpcykuYXR0cihlLmF0dHJpYnV0ZXx8ImlkIil8fCIiKS5tYXRjaChlLmV4 cHJlc3Npb258fCgvKC4rKVstPV9dKC4rKS8pKTtpZihjKXtmLnB1c2goKGUua2V5fHxjWzFdKyJbXSIp KyI9IisoZS5rZXkmJmUuZXhwcmVzc2lvbj9jWzFdOmNbMl0pKX19KTtyZXR1cm4gZi5qb2luKCImIil9 LHRvQXJyYXk6ZnVuY3Rpb24oZSl7dmFyIGE9dGhpcy5fZ2V0SXRlbXNBc2pRdWVyeShlJiZlLmNvbm5l Y3RlZCk7dmFyIGY9W107ZT1lfHx7fTthLmVhY2goZnVuY3Rpb24oKXtmLnB1c2goYihlLml0ZW18fHRo aXMpLmF0dHIoZS5hdHRyaWJ1dGV8fCJpZCIpfHwiIil9KTtyZXR1cm4gZn0sX2ludGVyc2VjdHNXaXRo OmZ1bmN0aW9uKHApe3ZhciB4PXRoaXMucG9zaXRpb25BYnMubGVmdCx5PXgrdGhpcy5oZWxwZXJQcm9w b3J0aW9ucy53aWR0aCxxPXRoaXMucG9zaXRpb25BYnMudG9wLHI9cSt0aGlzLmhlbHBlclByb3BvcnRp b25zLmhlaWdodDt2YXIgdz1wLmxlZnQsej13K3Aud2lkdGgsbD1wLnRvcCxzPWwrcC5oZWlnaHQ7dmFy IGE9dGhpcy5vZmZzZXQuY2xpY2sudG9wLHU9dGhpcy5vZmZzZXQuY2xpY2subGVmdDt2YXIgdj0ocSth KT5sJiYocSthKTxzJiYoeCt1KT53JiYoeCt1KTx6O2lmKHRoaXMub3B0aW9ucy50b2xlcmFuY2U9PSJw b2ludGVyInx8dGhpcy5vcHRpb25zLmZvcmNlUG9pbnRlckZvckNvbnRhaW5lcnN8fCh0aGlzLm9wdGlv bnMudG9sZXJhbmNlIT0icG9pbnRlciImJnRoaXMuaGVscGVyUHJvcG9ydGlvbnNbdGhpcy5mbG9hdGlu Zz8id2lkdGgiOiJoZWlnaHQiXT5wW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0pKXtyZXR1 cm4gdn1lbHNle3JldHVybih3PHgrKHRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMikmJnktKHRo aXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMik8eiYmbDxxKyh0aGlzLmhlbHBlclByb3BvcnRpb25z LmhlaWdodC8yKSYmci0odGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMik8cyl9fSxfaW50ZXJz ZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKG8pe3ZhciBuPWIudWkuaXNPdmVyQXhpcyh0aGlzLnBvc2l0 aW9uQWJzLnRvcCt0aGlzLm9mZnNldC5jbGljay50b3Asby50b3Asby5oZWlnaHQpLHA9Yi51aS5pc092 ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMubGVmdCt0aGlzLm9mZnNldC5jbGljay5sZWZ0LG8ubGVmdCxv LndpZHRoKSxoPW4mJnAsYT10aGlzLl9nZXREcmFnVmVydGljYWxEaXJlY3Rpb24oKSxsPXRoaXMuX2dl dERyYWdIb3Jpem9udGFsRGlyZWN0aW9uKCk7aWYoIWgpe3JldHVybiBmYWxzZX1yZXR1cm4gdGhpcy5m bG9hdGluZz8oKChsJiZsPT0icmlnaHQiKXx8YT09ImRvd24iKT8yOjEpOihhJiYoYT09ImRvd24iPzI6 MSkpfSxfaW50ZXJzZWN0c1dpdGhTaWRlczpmdW5jdGlvbihoKXt2YXIgbj1iLnVpLmlzT3ZlckF4aXMo dGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLGgudG9wKyhoLmhlaWdodC8y KSxoLmhlaWdodCksbD1iLnVpLmlzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zm c2V0LmNsaWNrLmxlZnQsaC5sZWZ0KyhoLndpZHRoLzIpLGgud2lkdGgpLGE9dGhpcy5fZ2V0RHJhZ1Zl cnRpY2FsRGlyZWN0aW9uKCksZz10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO2lmKHRo aXMuZmxvYXRpbmcmJmcpe3JldHVybigoZz09InJpZ2h0IiYmbCl8fChnPT0ibGVmdCImJiFsKSl9ZWxz ZXtyZXR1cm4gYSYmKChhPT0iZG93biImJm4pfHwoYT09InVwIiYmIW4pKX19LF9nZXREcmFnVmVydGlj YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvc2l0aW9uQWJzLnRvcC10aGlzLmxhc3RQ b3NpdGlvbkFicy50b3A7cmV0dXJuIGEhPTAmJihhPjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6 b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5s YXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gYSE9MCYmKGE+MD8icmlnaHQiOiJsZWZ0Iil9LHJlZnJl c2g6ZnVuY3Rpb24oYSl7dGhpcy5fcmVmcmVzaEl0ZW1zKGEpO3RoaXMucmVmcmVzaFBvc2l0aW9ucygp fSxfY29ubmVjdFdpdGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7cmV0dXJuIGEuY29ubmVj dFdpdGguY29uc3RydWN0b3I9PVN0cmluZz9bYS5jb25uZWN0V2l0aF06YS5jb25uZWN0V2l0aH0sX2dl dEl0ZW1zQXNqUXVlcnk6ZnVuY3Rpb24odil7dmFyIGE9dGhpczt2YXIgcD1bXTt2YXIgcj1bXTt2YXIg bz10aGlzLl9jb25uZWN0V2l0aCgpO2lmKG8mJnYpe2Zvcih2YXIgcz1vLmxlbmd0aC0xO3M+PTA7cy0t KXt2YXIgbj1iKG9bc10pO2Zvcih2YXIgdT1uLmxlbmd0aC0xO3U+PTA7dS0tKXt2YXIgcT1iLmRhdGEo blt1XSwic29ydGFibGUiKTtpZihxJiZxIT10aGlzJiYhcS5vcHRpb25zLmRpc2FibGVkKXtyLnB1c2go W2IuaXNGdW5jdGlvbihxLm9wdGlvbnMuaXRlbXMpP3Eub3B0aW9ucy5pdGVtcy5jYWxsKHEuZWxlbWVu dCk6YihxLm9wdGlvbnMuaXRlbXMscS5lbGVtZW50KS5ub3QoIi51aS1zb3J0YWJsZS1oZWxwZXIiKSxx XSl9fX19ci5wdXNoKFtiLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMu aXRlbXMuY2FsbCh0aGlzLmVsZW1lbnQsbnVsbCx7b3B0aW9uczp0aGlzLm9wdGlvbnMsaXRlbTp0aGlz LmN1cnJlbnRJdGVtfSk6Yih0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KS5ub3QoIi51aS1z b3J0YWJsZS1oZWxwZXIiKSx0aGlzXSk7Zm9yKHZhciBzPXIubGVuZ3RoLTE7cz49MDtzLS0pe3Jbc11b MF0uZWFjaChmdW5jdGlvbigpe3AucHVzaCh0aGlzKX0pfXJldHVybiBiKHApfSxfcmVtb3ZlQ3VycmVu dHNGcm9tSXRlbXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmN1cnJlbnRJdGVtLmZpbmQoIjpkYXRhKHNv cnRhYmxlLWl0ZW0pIik7Zm9yKHZhciBmPTA7Zjx0aGlzLml0ZW1zLmxlbmd0aDtmKyspe2Zvcih2YXIg YT0wO2E8ZS5sZW5ndGg7YSsrKXtpZihlW2FdPT10aGlzLml0ZW1zW2ZdLml0ZW1bMF0pe3RoaXMuaXRl bXMuc3BsaWNlKGYsMSl9fX19LF9yZWZyZXNoSXRlbXM6ZnVuY3Rpb24oQyl7dGhpcy5pdGVtcz1bXTt0 aGlzLmNvbnRhaW5lcnM9W3RoaXNdO3ZhciB3PXRoaXMuaXRlbXM7dmFyIGE9dGhpczt2YXIgeT1bW2Iu aXNGdW5jdGlvbih0aGlzLm9wdGlvbnMuaXRlbXMpP3RoaXMub3B0aW9ucy5pdGVtcy5jYWxsKHRoaXMu ZWxlbWVudFswXSxDLHtpdGVtOnRoaXMuY3VycmVudEl0ZW19KTpiKHRoaXMub3B0aW9ucy5pdGVtcyx0 aGlzLmVsZW1lbnQpLHRoaXNdXTt2YXIgdT10aGlzLl9jb25uZWN0V2l0aCgpO2lmKHUpe2Zvcih2YXIg ej11Lmxlbmd0aC0xO3o+PTA7ei0tKXt2YXIgcz1iKHVbel0pO2Zvcih2YXIgQT1zLmxlbmd0aC0xO0E+ PTA7QS0tKXt2YXIgeD1iLmRhdGEoc1tBXSwic29ydGFibGUiKTtpZih4JiZ4IT10aGlzJiYheC5vcHRp b25zLmRpc2FibGVkKXt5LnB1c2goW2IuaXNGdW5jdGlvbih4Lm9wdGlvbnMuaXRlbXMpP3gub3B0aW9u cy5pdGVtcy5jYWxsKHguZWxlbWVudFswXSxDLHtpdGVtOnRoaXMuY3VycmVudEl0ZW19KTpiKHgub3B0 aW9ucy5pdGVtcyx4LmVsZW1lbnQpLHhdKTt0aGlzLmNvbnRhaW5lcnMucHVzaCh4KX19fX1mb3IodmFy IHo9eS5sZW5ndGgtMTt6Pj0wO3otLSl7dmFyIHY9eVt6XVsxXTt2YXIgQj15W3pdWzBdO2Zvcih2YXIg QT0wLHI9Qi5sZW5ndGg7QTxyO0ErKyl7dmFyIHE9YihCW0FdKTtxLmRhdGEoInNvcnRhYmxlLWl0ZW0i LHYpO3cucHVzaCh7aXRlbTpxLGluc3RhbmNlOnYsd2lkdGg6MCxoZWlnaHQ6MCxsZWZ0OjAsdG9wOjB9 KX19fSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKGEpe2lmKHRoaXMub2Zmc2V0UGFyZW50JiZ0aGlz LmhlbHBlcil7dGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpfWZvcih2YXIg bD10aGlzLml0ZW1zLmxlbmd0aC0xO2w+PTA7bC0tKXt2YXIgaD10aGlzLml0ZW1zW2xdO2lmKGguaW5z dGFuY2UhPXRoaXMuY3VycmVudENvbnRhaW5lciYmdGhpcy5jdXJyZW50Q29udGFpbmVyJiZoLml0ZW1b MF0hPXRoaXMuY3VycmVudEl0ZW1bMF0pe2NvbnRpbnVlfXZhciBuPXRoaXMub3B0aW9ucy50b2xlcmFu Y2VFbGVtZW50P2IodGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQsaC5pdGVtKTpoLml0ZW07aWYo IWEpe2gud2lkdGg9bi5vdXRlcldpZHRoKCk7aC5oZWlnaHQ9bi5vdXRlckhlaWdodCgpfXZhciBnPW4u b2Zmc2V0KCk7aC5sZWZ0PWcubGVmdDtoLnRvcD1nLnRvcH1pZih0aGlzLm9wdGlvbnMuY3VzdG9tJiZ0 aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzKXt0aGlzLm9wdGlvbnMuY3VzdG9tLnJl ZnJlc2hDb250YWluZXJzLmNhbGwodGhpcyl9ZWxzZXtmb3IodmFyIGw9dGhpcy5jb250YWluZXJzLmxl bmd0aC0xO2w+PTA7bC0tKXt2YXIgZz10aGlzLmNvbnRhaW5lcnNbbF0uZWxlbWVudC5vZmZzZXQoKTt0 aGlzLmNvbnRhaW5lcnNbbF0uY29udGFpbmVyQ2FjaGUubGVmdD1nLmxlZnQ7dGhpcy5jb250YWluZXJz W2xdLmNvbnRhaW5lckNhY2hlLnRvcD1nLnRvcDt0aGlzLmNvbnRhaW5lcnNbbF0uY29udGFpbmVyQ2Fj aGUud2lkdGg9dGhpcy5jb250YWluZXJzW2xdLmVsZW1lbnQub3V0ZXJXaWR0aCgpO3RoaXMuY29udGFp bmVyc1tsXS5jb250YWluZXJDYWNoZS5oZWlnaHQ9dGhpcy5jb250YWluZXJzW2xdLmVsZW1lbnQub3V0 ZXJIZWlnaHQoKX19fSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZyl7dmFyIGE9Z3x8dGhpcyxm PWEub3B0aW9ucztpZighZi5wbGFjZWhvbGRlcnx8Zi5wbGFjZWhvbGRlci5jb25zdHJ1Y3Rvcj09U3Ry aW5nKXt2YXIgaD1mLnBsYWNlaG9sZGVyO2YucGxhY2Vob2xkZXI9e2VsZW1lbnQ6ZnVuY3Rpb24oKXt2 YXIgYz1iKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYS5jdXJyZW50SXRlbVswXS5ub2RlTmFtZSkpLmFk ZENsYXNzKGh8fGEuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUtcGxhY2Vob2xk ZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIilbMF07aWYoIWgpe2Muc3R5bGUudmlz aWJpbGl0eT0iaGlkZGVuIn1yZXR1cm4gY30sdXBkYXRlOmZ1bmN0aW9uKGQsYyl7aWYoaCYmIWYuZm9y Y2VQbGFjZWhvbGRlclNpemUpe3JldHVybn1pZighYy5oZWlnaHQoKSl7Yy5oZWlnaHQoYS5jdXJyZW50 SXRlbS5pbm5lckhlaWdodCgpLXBhcnNlSW50KGEuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nVG9wIil8 fDAsMTApLXBhcnNlSW50KGEuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nQm90dG9tIil8fDAsMTApKX1p ZighYy53aWR0aCgpKXtjLndpZHRoKGEuY3VycmVudEl0ZW0uaW5uZXJXaWR0aCgpLXBhcnNlSW50KGEu Y3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nTGVmdCIpfHwwLDEwKS1wYXJzZUludChhLmN1cnJlbnRJdGVt LmNzcygicGFkZGluZ1JpZ2h0Iil8fDAsMTApKX19fX1hLnBsYWNlaG9sZGVyPWIoZi5wbGFjZWhvbGRl ci5lbGVtZW50LmNhbGwoYS5lbGVtZW50LGEuY3VycmVudEl0ZW0pKTthLmN1cnJlbnRJdGVtLmFmdGVy KGEucGxhY2Vob2xkZXIpO2YucGxhY2Vob2xkZXIudXBkYXRlKGEsYS5wbGFjZWhvbGRlcil9LF9jb250 YWN0Q29udGFpbmVyczpmdW5jdGlvbihxKXtmb3IodmFyIHI9dGhpcy5jb250YWluZXJzLmxlbmd0aC0x O3I+PTA7ci0tKXtpZih0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lcnNbcl0uY29udGFp bmVyQ2FjaGUpKXtpZighdGhpcy5jb250YWluZXJzW3JdLmNvbnRhaW5lckNhY2hlLm92ZXIpe2lmKHRo aXMuY3VycmVudENvbnRhaW5lciE9dGhpcy5jb250YWluZXJzW3JdKXt2YXIgbD0xMDAwMDt2YXIgbj1u dWxsO3ZhciBwPXRoaXMucG9zaXRpb25BYnNbdGhpcy5jb250YWluZXJzW3JdLmZsb2F0aW5nPyJsZWZ0 IjoidG9wIl07Zm9yKHZhciBhPXRoaXMuaXRlbXMubGVuZ3RoLTE7YT49MDthLS0pe2lmKCFiLnVpLmNv bnRhaW5zKHRoaXMuY29udGFpbmVyc1tyXS5lbGVtZW50WzBdLHRoaXMuaXRlbXNbYV0uaXRlbVswXSkp e2NvbnRpbnVlfXZhciBvPXRoaXMuaXRlbXNbYV1bdGhpcy5jb250YWluZXJzW3JdLmZsb2F0aW5nPyJs ZWZ0IjoidG9wIl07aWYoTWF0aC5hYnMoby1wKTxsKXtsPU1hdGguYWJzKG8tcCk7bj10aGlzLml0ZW1z W2FdfX1pZighbiYmIXRoaXMub3B0aW9ucy5kcm9wT25FbXB0eSl7Y29udGludWV9dGhpcy5jdXJyZW50 Q29udGFpbmVyPXRoaXMuY29udGFpbmVyc1tyXTtuP3RoaXMuX3JlYXJyYW5nZShxLG4sbnVsbCx0cnVl KTp0aGlzLl9yZWFycmFuZ2UocSxudWxsLHRoaXMuY29udGFpbmVyc1tyXS5lbGVtZW50LHRydWUpO3Ro aXMuX3RyaWdnZXIoImNoYW5nZSIscSx0aGlzLl91aUhhc2goKSk7dGhpcy5jb250YWluZXJzW3JdLl90 cmlnZ2VyKCJjaGFuZ2UiLHEsdGhpcy5fdWlIYXNoKHRoaXMpKTt0aGlzLm9wdGlvbnMucGxhY2Vob2xk ZXIudXBkYXRlKHRoaXMuY3VycmVudENvbnRhaW5lcix0aGlzLnBsYWNlaG9sZGVyKX10aGlzLmNvbnRh aW5lcnNbcl0uX3RyaWdnZXIoIm92ZXIiLHEsdGhpcy5fdWlIYXNoKHRoaXMpKTt0aGlzLmNvbnRhaW5l cnNbcl0uY29udGFpbmVyQ2FjaGUub3Zlcj0xfX1lbHNle2lmKHRoaXMuY29udGFpbmVyc1tyXS5jb250 YWluZXJDYWNoZS5vdmVyKXt0aGlzLmNvbnRhaW5lcnNbcl0uX3RyaWdnZXIoIm91dCIscSx0aGlzLl91 aUhhc2godGhpcykpO3RoaXMuY29udGFpbmVyc1tyXS5jb250YWluZXJDYWNoZS5vdmVyPTB9fX19LF9j cmVhdGVIZWxwZXI6ZnVuY3Rpb24oZil7dmFyIGU9dGhpcy5vcHRpb25zO3ZhciBhPWIuaXNGdW5jdGlv bihlLmhlbHBlcik/YihlLmhlbHBlci5hcHBseSh0aGlzLmVsZW1lbnRbMF0sW2YsdGhpcy5jdXJyZW50 SXRlbV0pKTooZS5oZWxwZXI9PSJjbG9uZSI/dGhpcy5jdXJyZW50SXRlbS5jbG9uZSgpOnRoaXMuY3Vy cmVudEl0ZW0pO2lmKCFhLnBhcmVudHMoImJvZHkiKS5sZW5ndGgpe2IoZS5hcHBlbmRUbyE9InBhcmVu dCI/ZS5hcHBlbmRUbzp0aGlzLmN1cnJlbnRJdGVtWzBdLnBhcmVudE5vZGUpWzBdLmFwcGVuZENoaWxk KGFbMF0pfWlmKGFbMF09PXRoaXMuY3VycmVudEl0ZW1bMF0pe3RoaXMuX3N0b3JlZENTUz17d2lkdGg6 dGhpcy5jdXJyZW50SXRlbVswXS5zdHlsZS53aWR0aCxoZWlnaHQ6dGhpcy5jdXJyZW50SXRlbVswXS5z dHlsZS5oZWlnaHQscG9zaXRpb246dGhpcy5jdXJyZW50SXRlbS5jc3MoInBvc2l0aW9uIiksdG9wOnRo aXMuY3VycmVudEl0ZW0uY3NzKCJ0b3AiKSxsZWZ0OnRoaXMuY3VycmVudEl0ZW0uY3NzKCJsZWZ0Iil9 fWlmKGFbMF0uc3R5bGUud2lkdGg9PSIifHxlLmZvcmNlSGVscGVyU2l6ZSl7YS53aWR0aCh0aGlzLmN1 cnJlbnRJdGVtLndpZHRoKCkpfWlmKGFbMF0uc3R5bGUuaGVpZ2h0PT0iInx8ZS5mb3JjZUhlbHBlclNp emUpe2EuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpfXJldHVybiBhfSxfYWRqdXN0T2Zm c2V0RnJvbUhlbHBlcjpmdW5jdGlvbihhKXtpZihhLmxlZnQhPXVuZGVmaW5lZCl7dGhpcy5vZmZzZXQu Y2xpY2subGVmdD1hLmxlZnQrdGhpcy5tYXJnaW5zLmxlZnR9aWYoYS5yaWdodCE9dW5kZWZpbmVkKXt0 aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtYS5yaWdodCt0 aGlzLm1hcmdpbnMubGVmdH1pZihhLnRvcCE9dW5kZWZpbmVkKXt0aGlzLm9mZnNldC5jbGljay50b3A9 YS50b3ArdGhpcy5tYXJnaW5zLnRvcH1pZihhLmJvdHRvbSE9dW5kZWZpbmVkKXt0aGlzLm9mZnNldC5j bGljay50b3A9dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtYS5ib3R0b20rdGhpcy5tYXJnaW5z LnRvcH19LF9nZXRQYXJlbnRPZmZzZXQ6ZnVuY3Rpb24oKXt0aGlzLm9mZnNldFBhcmVudD10aGlzLmhl bHBlci5vZmZzZXRQYXJlbnQoKTt2YXIgYT10aGlzLm9mZnNldFBhcmVudC5vZmZzZXQoKTtpZih0aGlz LmNzc1Bvc2l0aW9uPT0iYWJzb2x1dGUiJiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmIu dWkuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pKXthLmxl ZnQrPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTthLnRvcCs9dGhpcy5zY3JvbGxQYXJlbnQu c2Nyb2xsVG9wKCl9aWYoKHRoaXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5ib2R5KXx8KHRoaXMu b2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJnRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUudG9Mb3dl ckNhc2UoKT09Imh0bWwiJiZiLmJyb3dzZXIubXNpZSkpe2E9e3RvcDowLGxlZnQ6MH19cmV0dXJue3Rv cDphLnRvcCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEw KXx8MCksbGVmdDphLmxlZnQrKHBhcnNlSW50KHRoaXMub2Zmc2V0UGFyZW50LmNzcygiYm9yZGVyTGVm dFdpZHRoIiksMTApfHwwKX19LF9nZXRSZWxhdGl2ZU9mZnNldDpmdW5jdGlvbigpe2lmKHRoaXMuY3Nz UG9zaXRpb249PSJyZWxhdGl2ZSIpe3ZhciBhPXRoaXMuY3VycmVudEl0ZW0ucG9zaXRpb24oKTtyZXR1 cm57dG9wOmEudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5z Y3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDphLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNz cygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpfX1lbHNle3JldHVy bnt0b3A6MCxsZWZ0OjB9fX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVm dDoocGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpbkxlZnQiKSwxMCl8fDApLHRvcDoo cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MCl9fSxfY2FjaGVI ZWxwZXJQcm9wb3J0aW9uczpmdW5jdGlvbigpe3RoaXMuaGVscGVyUHJvcG9ydGlvbnM9e3dpZHRoOnRo aXMuaGVscGVyLm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIub3V0ZXJIZWlnaHQoKX19LF9z ZXRDb250YWlubWVudDpmdW5jdGlvbigpe3ZhciBmPXRoaXMub3B0aW9ucztpZihmLmNvbnRhaW5tZW50 PT0icGFyZW50Iil7Zi5jb250YWlubWVudD10aGlzLmhlbHBlclswXS5wYXJlbnROb2RlfWlmKGYuY29u dGFpbm1lbnQ9PSJkb2N1bWVudCJ8fGYuY29udGFpbm1lbnQ9PSJ3aW5kb3ciKXt0aGlzLmNvbnRhaW5t ZW50PVswLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsMC10 aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCxiKGYuY29udGFpbm1l bnQ9PSJkb2N1bWVudCI/ZG9jdW1lbnQ6d2luZG93KS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlv bnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKGIoZi5jb250YWlubWVudD09ImRvY3VtZW50Ij9kb2N1 bWVudDp3aW5kb3cpLmhlaWdodCgpfHxkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0 KS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXX1pZighKC9eKGRv Y3VtZW50fHdpbmRvd3xwYXJlbnQpJC8pLnRlc3QoZi5jb250YWlubWVudCkpe3ZhciBoPWIoZi5jb250 YWlubWVudClbMF07dmFyIGc9YihmLmNvbnRhaW5tZW50KS5vZmZzZXQoKTt2YXIgYT0oYihoKS5jc3Mo Im92ZXJmbG93IikhPSJoaWRkZW4iKTt0aGlzLmNvbnRhaW5tZW50PVtnLmxlZnQrKHBhcnNlSW50KGIo aCkuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChiKGgpLmNzcygicGFkZGlu Z0xlZnQiKSwxMCl8fDApLXRoaXMubWFyZ2lucy5sZWZ0LGcudG9wKyhwYXJzZUludChiKGgpLmNzcygi Ym9yZGVyVG9wV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChiKGgpLmNzcygicGFkZGluZ1RvcCIpLDEw KXx8MCktdGhpcy5tYXJnaW5zLnRvcCxnLmxlZnQrKGE/TWF0aC5tYXgoaC5zY3JvbGxXaWR0aCxoLm9m ZnNldFdpZHRoKTpoLm9mZnNldFdpZHRoKS0ocGFyc2VJbnQoYihoKS5jc3MoImJvcmRlckxlZnRXaWR0 aCIpLDEwKXx8MCktKHBhcnNlSW50KGIoaCkuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMu aGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsZy50b3ArKGE/TWF0aC5tYXgo aC5zY3JvbGxIZWlnaHQsaC5vZmZzZXRIZWlnaHQpOmgub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoYiho KS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoYihoKS5jc3MoInBhZGRpbmdC b3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50 b3BdfX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKG4sZCl7aWYoIWQpe2Q9dGhpcy5wb3NpdGlv bn12YXIgcD1uPT0iYWJzb2x1dGUiPzE6LTE7dmFyIG89dGhpcy5vcHRpb25zLGE9dGhpcy5jc3NQb3Np dGlvbj09ImFic29sdXRlIiYmISh0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJmIudWkuY29u dGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pKT90aGlzLm9mZnNl dFBhcmVudDp0aGlzLnNjcm9sbFBhcmVudCxsPSgvKGh0bWx8Ym9keSkvaSkudGVzdChhWzBdLnRhZ05h bWUpO3JldHVybnt0b3A6KGQudG9wK3RoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcCpwK3RoaXMub2Zmc2V0 LnBhcmVudC50b3AqcC0oYi5icm93c2VyLnNhZmFyaSYmdGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8w Oih0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKToo bD8wOmEuc2Nyb2xsVG9wKCkpKSpwKSksbGVmdDooZC5sZWZ0K3RoaXMub2Zmc2V0LnJlbGF0aXZlLmxl ZnQqcCt0aGlzLm9mZnNldC5wYXJlbnQubGVmdCpwLShiLmJyb3dzZXIuc2FmYXJpJiZ0aGlzLmNzc1Bv c2l0aW9uPT0iZml4ZWQiPzA6KHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFy ZW50LnNjcm9sbExlZnQoKTpsPzA6YS5zY3JvbGxMZWZ0KCkpKnApKX19LF9nZW5lcmF0ZVBvc2l0aW9u OmZ1bmN0aW9uKHEpe3ZhciBuPXRoaXMub3B0aW9ucyxhPXRoaXMuY3NzUG9zaXRpb249PSJhYnNvbHV0 ZSImJiEodGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZiLnVpLmNvbnRhaW5zKHRoaXMuc2Ny b2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSk/dGhpcy5vZmZzZXRQYXJlbnQ6dGhpcy5z Y3JvbGxQYXJlbnQsbD0oLyhodG1sfGJvZHkpL2kpLnRlc3QoYVswXS50YWdOYW1lKTtpZih0aGlzLmNz c1Bvc2l0aW9uPT0icmVsYXRpdmUiJiYhKHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmdGhp cy5zY3JvbGxQYXJlbnRbMF0hPXRoaXMub2Zmc2V0UGFyZW50WzBdKSl7dGhpcy5vZmZzZXQucmVsYXRp dmU9dGhpcy5fZ2V0UmVsYXRpdmVPZmZzZXQoKX12YXIgcj1xLnBhZ2VYO3ZhciBzPXEucGFnZVk7aWYo dGhpcy5vcmlnaW5hbFBvc2l0aW9uKXtpZih0aGlzLmNvbnRhaW5tZW50KXtpZihxLnBhZ2VYLXRoaXMu b2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSl7cj10aGlzLmNvbnRhaW5tZW50WzBd K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnR9aWYocS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A8dGhp cy5jb250YWlubWVudFsxXSl7cz10aGlzLmNvbnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRv cH1pZihxLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dGhpcy5jb250YWlubWVudFsyXSl7cj10 aGlzLmNvbnRhaW5tZW50WzJdK3RoaXMub2Zmc2V0LmNsaWNrLmxlZnR9aWYocS5wYWdlWS10aGlzLm9m ZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXSl7cz10aGlzLmNvbnRhaW5tZW50WzNdK3Ro aXMub2Zmc2V0LmNsaWNrLnRvcH19aWYobi5ncmlkKXt2YXIgbz10aGlzLm9yaWdpbmFsUGFnZVkrTWF0 aC5yb3VuZCgocy10aGlzLm9yaWdpbmFsUGFnZVkpL24uZ3JpZFsxXSkqbi5ncmlkWzFdO3M9dGhpcy5j b250YWlubWVudD8oIShvLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdfHxv LXRoaXMub2Zmc2V0LmNsaWNrLnRvcD50aGlzLmNvbnRhaW5tZW50WzNdKT9vOighKG8tdGhpcy5vZmZz ZXQuY2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV0pP28tbi5ncmlkWzFdOm8rbi5ncmlkWzFdKSk6 bzt2YXIgcD10aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoci10aGlzLm9yaWdpbmFsUGFnZVgp L24uZ3JpZFswXSkqbi5ncmlkWzBdO3I9dGhpcy5jb250YWlubWVudD8oIShwLXRoaXMub2Zmc2V0LmNs aWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXXx8cC10aGlzLm9mZnNldC5jbGljay5sZWZ0PnRoaXMu Y29udGFpbm1lbnRbMl0pP3A6KCEocC10aGlzLm9mZnNldC5jbGljay5sZWZ0PHRoaXMuY29udGFpbm1l bnRbMF0pP3Atbi5ncmlkWzBdOnArbi5ncmlkWzBdKSk6cH19cmV0dXJue3RvcDoocy10aGlzLm9mZnNl dC5jbGljay50b3AtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3Ar KGIuYnJvd3Nlci5zYWZhcmkmJnRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/MDoodGhpcy5jc3NQb3Np dGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6KGw/MDphLnNjcm9sbFRv cCgpKSkpKSxsZWZ0OihyLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQtdGhpcy5vZmZzZXQucmVsYXRpdmUu bGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCsoYi5icm93c2VyLnNhZmFyaSYmdGhpcy5jc3NQb3Np dGlvbj09ImZpeGVkIj8wOih0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVu dC5zY3JvbGxMZWZ0KCk6bD8wOmEuc2Nyb2xsTGVmdCgpKSkpfX0sX3JlYXJyYW5nZTpmdW5jdGlvbiho LGwscCxuKXtwP3BbMF0uYXBwZW5kQ2hpbGQodGhpcy5wbGFjZWhvbGRlclswXSk6bC5pdGVtWzBdLnBh cmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMucGxhY2Vob2xkZXJbMF0sKHRoaXMuZGlyZWN0aW9uPT0i ZG93biI/bC5pdGVtWzBdOmwuaXRlbVswXS5uZXh0U2libGluZykpO3RoaXMuY291bnRlcj10aGlzLmNv dW50ZXI/Kyt0aGlzLmNvdW50ZXI6MTt2YXIgbz10aGlzLGE9dGhpcy5jb3VudGVyO3dpbmRvdy5zZXRU aW1lb3V0KGZ1bmN0aW9uKCl7aWYoYT09by5jb3VudGVyKXtvLnJlZnJlc2hQb3NpdGlvbnMoIW4pfX0s MCl9LF9jbGVhcjpmdW5jdGlvbihsLGgpe3RoaXMucmV2ZXJ0aW5nPWZhbHNlO3ZhciBnPVtdLGE9dGhp cztpZighdGhpcy5fbm9GaW5hbFNvcnQmJnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSl7dGhp cy5wbGFjZWhvbGRlci5iZWZvcmUodGhpcy5jdXJyZW50SXRlbSl9dGhpcy5fbm9GaW5hbFNvcnQ9bnVs bDtpZih0aGlzLmhlbHBlclswXT09dGhpcy5jdXJyZW50SXRlbVswXSl7Zm9yKHZhciBuIGluIHRoaXMu X3N0b3JlZENTUyl7aWYodGhpcy5fc3RvcmVkQ1NTW25dPT0iYXV0byJ8fHRoaXMuX3N0b3JlZENTU1tu XT09InN0YXRpYyIpe3RoaXMuX3N0b3JlZENTU1tuXT0iIn19dGhpcy5jdXJyZW50SXRlbS5jc3ModGhp cy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIil9ZWxzZXt0aGlzLmN1 cnJlbnRJdGVtLnNob3coKX1pZih0aGlzLmZyb21PdXRzaWRlJiYhaCl7Zy5wdXNoKGZ1bmN0aW9uKGMp e3RoaXMuX3RyaWdnZXIoInJlY2VpdmUiLGMsdGhpcy5fdWlIYXNoKHRoaXMuZnJvbU91dHNpZGUpKX0p fWlmKCh0aGlzLmZyb21PdXRzaWRlfHx0aGlzLmRvbVBvc2l0aW9uLnByZXYhPXRoaXMuY3VycmVudEl0 ZW0ucHJldigpLm5vdCgiLnVpLXNvcnRhYmxlLWhlbHBlciIpWzBdfHx0aGlzLmRvbVBvc2l0aW9uLnBh cmVudCE9dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXSkmJiFoKXtnLnB1c2goZnVuY3Rpb24oYyl7 dGhpcy5fdHJpZ2dlcigidXBkYXRlIixjLHRoaXMuX3VpSGFzaCgpKX0pfWlmKCFiLnVpLmNvbnRhaW5z KHRoaXMuZWxlbWVudFswXSx0aGlzLmN1cnJlbnRJdGVtWzBdKSl7aWYoIWgpe2cucHVzaChmdW5jdGlv bihjKXt0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLGMsdGhpcy5fdWlIYXNoKCkpfSl9Zm9yKHZhciBuPXRo aXMuY29udGFpbmVycy5sZW5ndGgtMTtuPj0wO24tLSl7aWYoYi51aS5jb250YWlucyh0aGlzLmNvbnRh aW5lcnNbbl0uZWxlbWVudFswXSx0aGlzLmN1cnJlbnRJdGVtWzBdKSYmIWgpe2cucHVzaCgoZnVuY3Rp b24oYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe2MuX3RyaWdnZXIoInJlY2VpdmUiLGQsdGhpcy5fdWlIYXNo KHRoaXMpKX19KS5jYWxsKHRoaXMsdGhpcy5jb250YWluZXJzW25dKSk7Zy5wdXNoKChmdW5jdGlvbihj KXtyZXR1cm4gZnVuY3Rpb24oZCl7Yy5fdHJpZ2dlcigidXBkYXRlIixkLHRoaXMuX3VpSGFzaCh0aGlz KSl9fSkuY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tuXSkpfX19Zm9yKHZhciBuPXRoaXMuY29udGFp bmVycy5sZW5ndGgtMTtuPj0wO24tLSl7aWYoIWgpe2cucHVzaCgoZnVuY3Rpb24oYyl7cmV0dXJuIGZ1 bmN0aW9uKGQpe2MuX3RyaWdnZXIoImRlYWN0aXZhdGUiLGQsdGhpcy5fdWlIYXNoKHRoaXMpKX19KS5j YWxsKHRoaXMsdGhpcy5jb250YWluZXJzW25dKSl9aWYodGhpcy5jb250YWluZXJzW25dLmNvbnRhaW5l ckNhY2hlLm92ZXIpe2cucHVzaCgoZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe2MuX3RyaWdn ZXIoIm91dCIsZCx0aGlzLl91aUhhc2godGhpcykpfX0pLmNhbGwodGhpcyx0aGlzLmNvbnRhaW5lcnNb bl0pKTt0aGlzLmNvbnRhaW5lcnNbbl0uY29udGFpbmVyQ2FjaGUub3Zlcj0wfX1pZih0aGlzLl9zdG9y ZWRDdXJzb3Ipe2IoImJvZHkiKS5jc3MoImN1cnNvciIsdGhpcy5fc3RvcmVkQ3Vyc29yKX1pZih0aGlz Ll9zdG9yZWRPcGFjaXR5KXt0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLHRoaXMuX3N0b3JlZE9wYWNp dHkpfWlmKHRoaXMuX3N0b3JlZFpJbmRleCl7dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLHRoaXMuX3N0 b3JlZFpJbmRleD09ImF1dG8iPyIiOnRoaXMuX3N0b3JlZFpJbmRleCl9dGhpcy5kcmFnZ2luZz1mYWxz ZTtpZih0aGlzLmNhbmNlbEhlbHBlclJlbW92YWwpe2lmKCFoKXt0aGlzLl90cmlnZ2VyKCJiZWZvcmVT dG9wIixsLHRoaXMuX3VpSGFzaCgpKTtmb3IodmFyIG49MDtuPGcubGVuZ3RoO24rKyl7Z1tuXS5jYWxs KHRoaXMsbCl9dGhpcy5fdHJpZ2dlcigic3RvcCIsbCx0aGlzLl91aUhhc2goKSl9cmV0dXJuIGZhbHNl fWlmKCFoKXt0aGlzLl90cmlnZ2VyKCJiZWZvcmVTdG9wIixsLHRoaXMuX3VpSGFzaCgpKX10aGlzLnBs YWNlaG9sZGVyWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wbGFjZWhvbGRlclswXSk7aWYo dGhpcy5oZWxwZXJbMF0hPXRoaXMuY3VycmVudEl0ZW1bMF0pe3RoaXMuaGVscGVyLnJlbW92ZSgpfXRo aXMuaGVscGVyPW51bGw7aWYoIWgpe2Zvcih2YXIgbj0wO248Zy5sZW5ndGg7bisrKXtnW25dLmNhbGwo dGhpcyxsKX10aGlzLl90cmlnZ2VyKCJzdG9wIixsLHRoaXMuX3VpSGFzaCgpKX10aGlzLmZyb21PdXRz aWRlPWZhbHNlO3JldHVybiB0cnVlfSxfdHJpZ2dlcjpmdW5jdGlvbigpe2lmKGIud2lkZ2V0LnByb3Rv dHlwZS5fdHJpZ2dlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk9PT1mYWxzZSl7dGhpcy5jYW5jZWwoKX19 LF91aUhhc2g6ZnVuY3Rpb24oZCl7dmFyIGE9ZHx8dGhpcztyZXR1cm57aGVscGVyOmEuaGVscGVyLHBs YWNlaG9sZGVyOmEucGxhY2Vob2xkZXJ8fGIoW10pLHBvc2l0aW9uOmEucG9zaXRpb24sYWJzb2x1dGVQ b3NpdGlvbjphLnBvc2l0aW9uQWJzLG9mZnNldDphLnBvc2l0aW9uQWJzLGl0ZW06YS5jdXJyZW50SXRl bSxzZW5kZXI6ZD9kLmVsZW1lbnQ6bnVsbH19fSkpO2IuZXh0ZW5kKGIudWkuc29ydGFibGUse2dldHRl cjoic2VyaWFsaXplIHRvQXJyYXkiLHZlcnNpb246IjEuNy4yIixldmVudFByZWZpeDoic29ydCIsZGVm YXVsdHM6e2FwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ZmFsc2UsY2FuY2VsOiI6aW5wdXQsb3B0aW9uIixj b25uZWN0V2l0aDpmYWxzZSxjb250YWlubWVudDpmYWxzZSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OmZh bHNlLGRlbGF5OjAsZGlzdGFuY2U6MSxkcm9wT25FbXB0eTp0cnVlLGZvcmNlUGxhY2Vob2xkZXJTaXpl OmZhbHNlLGZvcmNlSGVscGVyU2l6ZTpmYWxzZSxncmlkOmZhbHNlLGhhbmRsZTpmYWxzZSxoZWxwZXI6 Im9yaWdpbmFsIixpdGVtczoiPiAqIixvcGFjaXR5OmZhbHNlLHBsYWNlaG9sZGVyOmZhbHNlLHJldmVy dDpmYWxzZSxzY3JvbGw6dHJ1ZSxzY3JvbGxTZW5zaXRpdml0eToyMCxzY3JvbGxTcGVlZDoyMCxzY29w ZToiZGVmYXVsdCIsdG9sZXJhbmNlOiJpbnRlcnNlY3QiLHpJbmRleDoxMDAwfX0pfSkoalF1ZXJ5KTtq UXVlcnkuZWZmZWN0c3x8KGZ1bmN0aW9uKGwpe2wuZWZmZWN0cz17dmVyc2lvbjoiMS43LjIiLHNhdmU6 ZnVuY3Rpb24oYixhKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7aWYoYVtjXSE9PW51bGwpe2Iu ZGF0YSgiZWMuc3RvcmFnZS4iK2FbY10sYlswXS5zdHlsZVthW2NdXSl9fX0scmVzdG9yZTpmdW5jdGlv bihiLGEpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXtpZihhW2NdIT09bnVsbCl7Yi5jc3MoYVtj XSxiLmRhdGEoImVjLnN0b3JhZ2UuIithW2NdKSl9fX0sc2V0TW9kZTpmdW5jdGlvbihiLGEpe2lmKGE9 PSJ0b2dnbGUiKXthPWIuaXMoIjpoaWRkZW4iKT8ic2hvdyI6ImhpZGUifXJldHVybiBhfSxnZXRCYXNl bGluZTpmdW5jdGlvbihjLGIpe3ZhciBhLGQ7c3dpdGNoKGNbMF0pe2Nhc2UidG9wIjphPTA7YnJlYWs7 Y2FzZSJtaWRkbGUiOmE9MC41O2JyZWFrO2Nhc2UiYm90dG9tIjphPTE7YnJlYWs7ZGVmYXVsdDphPWNb MF0vYi5oZWlnaHR9c3dpdGNoKGNbMV0pe2Nhc2UibGVmdCI6ZD0wO2JyZWFrO2Nhc2UiY2VudGVyIjpk PTAuNTticmVhaztjYXNlInJpZ2h0IjpkPTE7YnJlYWs7ZGVmYXVsdDpkPWNbMV0vYi53aWR0aH1yZXR1 cm57eDpkLHk6YX19LGNyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7aWYoZS5wYXJlbnQoKS5pcygiLnVp LWVmZmVjdHMtd3JhcHBlciIpKXtyZXR1cm4gZS5wYXJlbnQoKX12YXIgZD17d2lkdGg6ZS5vdXRlcldp ZHRoKHRydWUpLGhlaWdodDplLm91dGVySGVpZ2h0KHRydWUpLCJmbG9hdCI6ZS5jc3MoImZsb2F0Iil9 O2Uud3JhcCgnPGRpdiBjbGFzcz0idWktZWZmZWN0cy13cmFwcGVyIiBzdHlsZT0iZm9udC1zaXplOjEw MCU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTttYXJnaW46MDtwYWRkaW5nOjAiPjwv ZGl2PicpO3ZhciBhPWUucGFyZW50KCk7aWYoZS5jc3MoInBvc2l0aW9uIik9PSJzdGF0aWMiKXthLmNz cyh7cG9zaXRpb246InJlbGF0aXZlIn0pO2UuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUifSl9ZWxzZXt2 YXIgYj1lLmNzcygidG9wIik7aWYoaXNOYU4ocGFyc2VJbnQoYiwxMCkpKXtiPSJhdXRvIn12YXIgYz1l LmNzcygibGVmdCIpO2lmKGlzTmFOKHBhcnNlSW50KGMsMTApKSl7Yz0iYXV0byJ9YS5jc3Moe3Bvc2l0 aW9uOmUuY3NzKCJwb3NpdGlvbiIpLHRvcDpiLGxlZnQ6Yyx6SW5kZXg6ZS5jc3MoInotaW5kZXgiKX0p LnNob3coKTtlLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6MCxsZWZ0OjB9KX1hLmNzcyhkKTty ZXR1cm4gYX0scmVtb3ZlV3JhcHBlcjpmdW5jdGlvbihhKXtpZihhLnBhcmVudCgpLmlzKCIudWktZWZm ZWN0cy13cmFwcGVyIikpe3JldHVybiBhLnBhcmVudCgpLnJlcGxhY2VXaXRoKGEpfXJldHVybiBhfSxz ZXRUcmFuc2l0aW9uOmZ1bmN0aW9uKGMsYSxkLGIpe2I9Ynx8e307bC5lYWNoKGEsZnVuY3Rpb24oZSxv KXt1bml0PWMuY3NzVW5pdChvKTtpZih1bml0WzBdPjApe2Jbb109dW5pdFswXSpkK3VuaXRbMV19fSk7 cmV0dXJuIGJ9LGFuaW1hdGVDbGFzczpmdW5jdGlvbihkLGMsYSxiKXt2YXIgbz0odHlwZW9mIGE9PSJm dW5jdGlvbiI/YTooYj9iOm51bGwpKTt2YXIgZT0odHlwZW9mIGE9PSJzdHJpbmciP2E6bnVsbCk7cmV0 dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB3PXt9O3ZhciB5PWwodGhpcyk7dmFyIHg9eS5hdHRy KCJzdHlsZSIpfHwiIjtpZih0eXBlb2YgeD09Im9iamVjdCIpe3g9eC5jc3NUZXh0fWlmKGQudG9nZ2xl KXt5Lmhhc0NsYXNzKGQudG9nZ2xlKT9kLnJlbW92ZT1kLnRvZ2dsZTpkLmFkZD1kLnRvZ2dsZX12YXIg dT1sLmV4dGVuZCh7fSwoZG9jdW1lbnQuZGVmYXVsdFZpZXc/ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0 Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpOnRoaXMuY3VycmVudFN0eWxlKSk7aWYoZC5hZGQpe3kuYWRk Q2xhc3MoZC5hZGQpfWlmKGQucmVtb3ZlKXt5LnJlbW92ZUNsYXNzKGQucmVtb3ZlKX12YXIgcz1sLmV4 dGVuZCh7fSwoZG9jdW1lbnQuZGVmYXVsdFZpZXc/ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0 ZWRTdHlsZSh0aGlzLG51bGwpOnRoaXMuY3VycmVudFN0eWxlKSk7aWYoZC5hZGQpe3kucmVtb3ZlQ2xh c3MoZC5hZGQpfWlmKGQucmVtb3ZlKXt5LmFkZENsYXNzKGQucmVtb3ZlKX1mb3IodmFyIHYgaW4gcyl7 aWYodHlwZW9mIHNbdl0hPSJmdW5jdGlvbiImJnNbdl0mJnYuaW5kZXhPZigiTW96Iik9PS0xJiZ2Lmlu ZGV4T2YoImxlbmd0aCIpPT0tMSYmc1t2XSE9dVt2XSYmKHYubWF0Y2goL2NvbG9yL2kpfHwoIXYubWF0 Y2goL2NvbG9yL2kpJiYhaXNOYU4ocGFyc2VJbnQoc1t2XSwxMCkpKSkmJih1LnBvc2l0aW9uIT0ic3Rh dGljInx8KHUucG9zaXRpb249PSJzdGF0aWMiJiYhdi5tYXRjaCgvbGVmdHx0b3B8Ym90dG9tfHJpZ2h0 LykpKSl7d1t2XT1zW3ZdfX15LmFuaW1hdGUodyxjLGUsZnVuY3Rpb24oKXtpZih0eXBlb2YgbCh0aGlz KS5hdHRyKCJzdHlsZSIpPT0ib2JqZWN0Iil7bCh0aGlzKS5hdHRyKCJzdHlsZSIpWyJjc3NUZXh0Il09 IiI7bCh0aGlzKS5hdHRyKCJzdHlsZSIpWyJjc3NUZXh0Il09eH1lbHNle2wodGhpcykuYXR0cigic3R5 bGUiLHgpfWlmKGQuYWRkKXtsKHRoaXMpLmFkZENsYXNzKGQuYWRkKX1pZihkLnJlbW92ZSl7bCh0aGlz KS5yZW1vdmVDbGFzcyhkLnJlbW92ZSl9aWYobyl7by5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSl9KX19 O2Z1bmN0aW9uIG4oZCxlKXt2YXIgYj1kWzFdJiZkWzFdLmNvbnN0cnVjdG9yPT1PYmplY3Q/ZFsxXTp7 fTtpZihlKXtiLm1vZGU9ZX12YXIgYz1kWzFdJiZkWzFdLmNvbnN0cnVjdG9yIT1PYmplY3Q/ZFsxXToo Yi5kdXJhdGlvbj9iLmR1cmF0aW9uOmRbMl0pO2M9bC5meC5vZmY/MDp0eXBlb2YgYz09PSJudW1iZXIi P2M6bC5meC5zcGVlZHNbY118fGwuZnguc3BlZWRzLl9kZWZhdWx0O3ZhciBhPWIuY2FsbGJhY2t8fChs LmlzRnVuY3Rpb24oZFsxXSkmJmRbMV0pfHwobC5pc0Z1bmN0aW9uKGRbMl0pJiZkWzJdKXx8KGwuaXNG dW5jdGlvbihkWzNdKSYmZFszXSk7cmV0dXJuW2RbMF0sYixjLGFdfWwuZm4uZXh0ZW5kKHtfc2hvdzps LmZuLnNob3csX2hpZGU6bC5mbi5oaWRlLF9fdG9nZ2xlOmwuZm4udG9nZ2xlLF9hZGRDbGFzczpsLmZu LmFkZENsYXNzLF9yZW1vdmVDbGFzczpsLmZuLnJlbW92ZUNsYXNzLF90b2dnbGVDbGFzczpsLmZuLnRv Z2dsZUNsYXNzLGVmZmVjdDpmdW5jdGlvbihjLGQsYixhKXtyZXR1cm4gbC5lZmZlY3RzW2NdP2wuZWZm ZWN0c1tjXS5jYWxsKHRoaXMse21ldGhvZDpjLG9wdGlvbnM6ZHx8e30sZHVyYXRpb246YixjYWxsYmFj azphfSk6bnVsbH0sc2hvdzpmdW5jdGlvbigpe2lmKCFhcmd1bWVudHNbMF18fChhcmd1bWVudHNbMF0u Y29uc3RydWN0b3I9PU51bWJlcnx8KC8oc2xvd3xub3JtYWx8ZmFzdCkvKS50ZXN0KGFyZ3VtZW50c1sw XSkpKXtyZXR1cm4gdGhpcy5fc2hvdy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZWxzZXtyZXR1cm4gdGhp cy5lZmZlY3QuYXBwbHkodGhpcyxuKGFyZ3VtZW50cywic2hvdyIpKX19LGhpZGU6ZnVuY3Rpb24oKXtp ZighYXJndW1lbnRzWzBdfHwoYXJndW1lbnRzWzBdLmNvbnN0cnVjdG9yPT1OdW1iZXJ8fCgvKHNsb3d8 bm9ybWFsfGZhc3QpLykudGVzdChhcmd1bWVudHNbMF0pKSl7cmV0dXJuIHRoaXMuX2hpZGUuYXBwbHko dGhpcyxhcmd1bWVudHMpfWVsc2V7cmV0dXJuIHRoaXMuZWZmZWN0LmFwcGx5KHRoaXMsbihhcmd1bWVu dHMsImhpZGUiKSl9fSx0b2dnbGU6ZnVuY3Rpb24oKXtpZighYXJndW1lbnRzWzBdfHwoYXJndW1lbnRz WzBdLmNvbnN0cnVjdG9yPT1OdW1iZXJ8fCgvKHNsb3d8bm9ybWFsfGZhc3QpLykudGVzdChhcmd1bWVu dHNbMF0pKXx8KGwuaXNGdW5jdGlvbihhcmd1bWVudHNbMF0pfHx0eXBlb2YgYXJndW1lbnRzWzBdPT0i Ym9vbGVhbiIpKXtyZXR1cm4gdGhpcy5fX3RvZ2dsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZWxzZXty ZXR1cm4gdGhpcy5lZmZlY3QuYXBwbHkodGhpcyxuKGFyZ3VtZW50cywidG9nZ2xlIikpfX0sYWRkQ2xh c3M6ZnVuY3Rpb24oYyxkLGEsYil7cmV0dXJuIGQ/bC5lZmZlY3RzLmFuaW1hdGVDbGFzcy5hcHBseSh0 aGlzLFt7YWRkOmN9LGQsYSxiXSk6dGhpcy5fYWRkQ2xhc3MoYyl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9u KGMsZCxhLGIpe3JldHVybiBkP2wuZWZmZWN0cy5hbmltYXRlQ2xhc3MuYXBwbHkodGhpcyxbe3JlbW92 ZTpjfSxkLGEsYl0pOnRoaXMuX3JlbW92ZUNsYXNzKGMpfSx0b2dnbGVDbGFzczpmdW5jdGlvbihjLGQs YSxiKXtyZXR1cm4oKHR5cGVvZiBkIT09ImJvb2xlYW4iKSYmZCk/bC5lZmZlY3RzLmFuaW1hdGVDbGFz cy5hcHBseSh0aGlzLFt7dG9nZ2xlOmN9LGQsYSxiXSk6dGhpcy5fdG9nZ2xlQ2xhc3MoYyxkKX0sbW9y cGg6ZnVuY3Rpb24oZSxjLGQsYSxiKXtyZXR1cm4gbC5lZmZlY3RzLmFuaW1hdGVDbGFzcy5hcHBseSh0 aGlzLFt7YWRkOmMscmVtb3ZlOmV9LGQsYSxiXSl9LHN3aXRjaENsYXNzOmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMubW9ycGguYXBwbHkodGhpcyxhcmd1bWVudHMpfSxjc3NVbml0OmZ1bmN0aW9uKGMpe3ZhciBi PXRoaXMuY3NzKGMpLGE9W107bC5lYWNoKFsiZW0iLCJweCIsIiUiLCJwdCJdLGZ1bmN0aW9uKGUsZCl7 aWYoYi5pbmRleE9mKGQpPjApe2E9W3BhcnNlRmxvYXQoYiksZF19fSk7cmV0dXJuIGF9fSk7bC5lYWNo KFsiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyQm90dG9tQ29sb3IiLCJib3JkZXJMZWZ0Q29sb3IiLCJi b3JkZXJSaWdodENvbG9yIiwiYm9yZGVyVG9wQ29sb3IiLCJjb2xvciIsIm91dGxpbmVDb2xvciJdLGZ1 bmN0aW9uKGEsYil7bC5meC5zdGVwW2JdPWZ1bmN0aW9uKGMpe2lmKGMuc3RhdGU9PTApe2Muc3RhcnQ9 aChjLmVsZW0sYik7Yy5lbmQ9ZihjLmVuZCl9Yy5lbGVtLnN0eWxlW2JdPSJyZ2IoIitbTWF0aC5tYXgo TWF0aC5taW4ocGFyc2VJbnQoKGMucG9zKihjLmVuZFswXS1jLnN0YXJ0WzBdKSkrYy5zdGFydFswXSwx MCksMjU1KSwwKSxNYXRoLm1heChNYXRoLm1pbihwYXJzZUludCgoYy5wb3MqKGMuZW5kWzFdLWMuc3Rh cnRbMV0pKStjLnN0YXJ0WzFdLDEwKSwyNTUpLDApLE1hdGgubWF4KE1hdGgubWluKHBhcnNlSW50KChj LnBvcyooYy5lbmRbMl0tYy5zdGFydFsyXSkpK2Muc3RhcnRbMl0sMTApLDI1NSksMCldLmpvaW4oIiwi KSsiKSJ9fSk7ZnVuY3Rpb24gZihhKXt2YXIgYjtpZihhJiZhLmNvbnN0cnVjdG9yPT1BcnJheSYmYS5s ZW5ndGg9PTMpe3JldHVybiBhfWlmKGI9L3JnYlwoXHMqKFswLTldezEsM30pXHMqLFxzKihbMC05XXsx LDN9KVxzKixccyooWzAtOV17MSwzfSlccypcKS8uZXhlYyhhKSl7cmV0dXJuW3BhcnNlSW50KGJbMV0s MTApLHBhcnNlSW50KGJbMl0sMTApLHBhcnNlSW50KGJbM10sMTApXX1pZihiPS9yZ2JcKFxzKihbMC05 XSsoPzpcLlswLTldKyk/KVwlXHMqLFxzKihbMC05XSsoPzpcLlswLTldKyk/KVwlXHMqLFxzKihbMC05 XSsoPzpcLlswLTldKyk/KVwlXHMqXCkvLmV4ZWMoYSkpe3JldHVybltwYXJzZUZsb2F0KGJbMV0pKjIu NTUscGFyc2VGbG9hdChiWzJdKSoyLjU1LHBhcnNlRmxvYXQoYlszXSkqMi41NV19aWYoYj0vIyhbYS1m QS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KS8uZXhlYyhhKSl7cmV0dXJu W3BhcnNlSW50KGJbMV0sMTYpLHBhcnNlSW50KGJbMl0sMTYpLHBhcnNlSW50KGJbM10sMTYpXX1pZihi PS8jKFthLWZBLUYwLTldKShbYS1mQS1GMC05XSkoW2EtZkEtRjAtOV0pLy5leGVjKGEpKXtyZXR1cm5b cGFyc2VJbnQoYlsxXStiWzFdLDE2KSxwYXJzZUludChiWzJdK2JbMl0sMTYpLHBhcnNlSW50KGJbM10r YlszXSwxNildfWlmKGI9L3JnYmFcKDAsIDAsIDAsIDBcKS8uZXhlYyhhKSl7cmV0dXJuIGcudHJhbnNw YXJlbnR9cmV0dXJuIGdbbC50cmltKGEpLnRvTG93ZXJDYXNlKCldfWZ1bmN0aW9uIGgoYSxjKXt2YXIg Yjtkb3tiPWwuY3VyQ1NTKGEsYyk7aWYoYiE9IiImJmIhPSJ0cmFuc3BhcmVudCJ8fGwubm9kZU5hbWUo YSwiYm9keSIpKXticmVha31jPSJiYWNrZ3JvdW5kQ29sb3IifXdoaWxlKGE9YS5wYXJlbnROb2RlKTty ZXR1cm4gZihiKX12YXIgZz17YXF1YTpbMCwyNTUsMjU1XSxhenVyZTpbMjQwLDI1NSwyNTVdLGJlaWdl OlsyNDUsMjQ1LDIyMF0sYmxhY2s6WzAsMCwwXSxibHVlOlswLDAsMjU1XSxicm93bjpbMTY1LDQyLDQy XSxjeWFuOlswLDI1NSwyNTVdLGRhcmtibHVlOlswLDAsMTM5XSxkYXJrY3lhbjpbMCwxMzksMTM5XSxk YXJrZ3JleTpbMTY5LDE2OSwxNjldLGRhcmtncmVlbjpbMCwxMDAsMF0sZGFya2toYWtpOlsxODksMTgz LDEwN10sZGFya21hZ2VudGE6WzEzOSwwLDEzOV0sZGFya29saXZlZ3JlZW46Wzg1LDEwNyw0N10sZGFy a29yYW5nZTpbMjU1LDE0MCwwXSxkYXJrb3JjaGlkOlsxNTMsNTAsMjA0XSxkYXJrcmVkOlsxMzksMCww XSxkYXJrc2FsbW9uOlsyMzMsMTUwLDEyMl0sZGFya3Zpb2xldDpbMTQ4LDAsMjExXSxmdWNoc2lhOlsy NTUsMCwyNTVdLGdvbGQ6WzI1NSwyMTUsMF0sZ3JlZW46WzAsMTI4LDBdLGluZGlnbzpbNzUsMCwxMzBd LGtoYWtpOlsyNDAsMjMwLDE0MF0sbGlnaHRibHVlOlsxNzMsMjE2LDIzMF0sbGlnaHRjeWFuOlsyMjQs MjU1LDI1NV0sbGlnaHRncmVlbjpbMTQ0LDIzOCwxNDRdLGxpZ2h0Z3JleTpbMjExLDIxMSwyMTFdLGxp Z2h0cGluazpbMjU1LDE4MiwxOTNdLGxpZ2h0eWVsbG93OlsyNTUsMjU1LDIyNF0sbGltZTpbMCwyNTUs MF0sbWFnZW50YTpbMjU1LDAsMjU1XSxtYXJvb246WzEyOCwwLDBdLG5hdnk6WzAsMCwxMjhdLG9saXZl OlsxMjgsMTI4LDBdLG9yYW5nZTpbMjU1LDE2NSwwXSxwaW5rOlsyNTUsMTkyLDIwM10scHVycGxlOlsx MjgsMCwxMjhdLHZpb2xldDpbMTI4LDAsMTI4XSxyZWQ6WzI1NSwwLDBdLHNpbHZlcjpbMTkyLDE5Miwx OTJdLHdoaXRlOlsyNTUsMjU1LDI1NV0seWVsbG93OlsyNTUsMjU1LDBdLHRyYW5zcGFyZW50OlsyNTUs MjU1LDI1NV19O2wuZWFzaW5nLmpzd2luZz1sLmVhc2luZy5zd2luZztsLmV4dGVuZChsLmVhc2luZyx7 ZGVmOiJlYXNlT3V0UXVhZCIsc3dpbmc6ZnVuY3Rpb24oZCxjLGUsYSxiKXtyZXR1cm4gbC5lYXNpbmdb bC5lYXNpbmcuZGVmXShkLGMsZSxhLGIpfSxlYXNlSW5RdWFkOmZ1bmN0aW9uKGQsYyxlLGEsYil7cmV0 dXJuIGEqKGMvPWIpKmMrZX0sZWFzZU91dFF1YWQ6ZnVuY3Rpb24oZCxjLGUsYSxiKXtyZXR1cm4gLWEq KGMvPWIpKihjLTIpK2V9LGVhc2VJbk91dFF1YWQ6ZnVuY3Rpb24oZCxjLGUsYSxiKXtpZigoYy89Yi8y KTwxKXtyZXR1cm4gYS8yKmMqYytlfXJldHVybiAtYS8yKigoLS1jKSooYy0yKS0xKStlfSxlYXNlSW5D dWJpYzpmdW5jdGlvbihkLGMsZSxhLGIpe3JldHVybiBhKihjLz1iKSpjKmMrZX0sZWFzZU91dEN1Ymlj OmZ1bmN0aW9uKGQsYyxlLGEsYil7cmV0dXJuIGEqKChjPWMvYi0xKSpjKmMrMSkrZX0sZWFzZUluT3V0 Q3ViaWM6ZnVuY3Rpb24oZCxjLGUsYSxiKXtpZigoYy89Yi8yKTwxKXtyZXR1cm4gYS8yKmMqYypjK2V9 cmV0dXJuIGEvMiooKGMtPTIpKmMqYysyKStlfSxlYXNlSW5RdWFydDpmdW5jdGlvbihkLGMsZSxhLGIp e3JldHVybiBhKihjLz1iKSpjKmMqYytlfSxlYXNlT3V0UXVhcnQ6ZnVuY3Rpb24oZCxjLGUsYSxiKXty ZXR1cm4gLWEqKChjPWMvYi0xKSpjKmMqYy0xKStlfSxlYXNlSW5PdXRRdWFydDpmdW5jdGlvbihkLGMs ZSxhLGIpe2lmKChjLz1iLzIpPDEpe3JldHVybiBhLzIqYypjKmMqYytlfXJldHVybiAtYS8yKigoYy09 MikqYypjKmMtMikrZX0sZWFzZUluUXVpbnQ6ZnVuY3Rpb24oZCxjLGUsYSxiKXtyZXR1cm4gYSooYy89 YikqYypjKmMqYytlfSxlYXNlT3V0UXVpbnQ6ZnVuY3Rpb24oZCxjLGUsYSxiKXtyZXR1cm4gYSooKGM9 Yy9iLTEpKmMqYypjKmMrMSkrZX0sZWFzZUluT3V0UXVpbnQ6ZnVuY3Rpb24oZCxjLGUsYSxiKXtpZigo Yy89Yi8yKTwxKXtyZXR1cm4gYS8yKmMqYypjKmMqYytlfXJldHVybiBhLzIqKChjLT0yKSpjKmMqYypj KzIpK2V9LGVhc2VJblNpbmU6ZnVuY3Rpb24oZCxjLGUsYSxiKXtyZXR1cm4gLWEqTWF0aC5jb3MoYy9i KihNYXRoLlBJLzIpKSthK2V9LGVhc2VPdXRTaW5lOmZ1bmN0aW9uKGQsYyxlLGEsYil7cmV0dXJuIGEq TWF0aC5zaW4oYy9iKihNYXRoLlBJLzIpKStlfSxlYXNlSW5PdXRTaW5lOmZ1bmN0aW9uKGQsYyxlLGEs Yil7cmV0dXJuIC1hLzIqKE1hdGguY29zKE1hdGguUEkqYy9iKS0xKStlfSxlYXNlSW5FeHBvOmZ1bmN0 aW9uKGQsYyxlLGEsYil7cmV0dXJuKGM9PTApP2U6YSpNYXRoLnBvdygyLDEwKihjL2ItMSkpK2V9LGVh c2VPdXRFeHBvOmZ1bmN0aW9uKGQsYyxlLGEsYil7cmV0dXJuKGM9PWIpP2UrYTphKigtTWF0aC5wb3co MiwtMTAqYy9iKSsxKStlfSxlYXNlSW5PdXRFeHBvOmZ1bmN0aW9uKGQsYyxlLGEsYil7aWYoYz09MCl7 cmV0dXJuIGV9aWYoYz09Yil7cmV0dXJuIGUrYX1pZigoYy89Yi8yKTwxKXtyZXR1cm4gYS8yKk1hdGgu cG93KDIsMTAqKGMtMSkpK2V9cmV0dXJuIGEvMiooLU1hdGgucG93KDIsLTEwKi0tYykrMikrZX0sZWFz ZUluQ2lyYzpmdW5jdGlvbihkLGMsZSxhLGIpe3JldHVybiAtYSooTWF0aC5zcXJ0KDEtKGMvPWIpKmMp LTEpK2V9LGVhc2VPdXRDaXJjOmZ1bmN0aW9uKGQsYyxlLGEsYil7cmV0dXJuIGEqTWF0aC5zcXJ0KDEt KGM9Yy9iLTEpKmMpK2V9LGVhc2VJbk91dENpcmM6ZnVuY3Rpb24oZCxjLGUsYSxiKXtpZigoYy89Yi8y KTwxKXtyZXR1cm4gLWEvMiooTWF0aC5zcXJ0KDEtYypjKS0xKStlfXJldHVybiBhLzIqKE1hdGguc3Fy dCgxLShjLT0yKSpjKSsxKStlfSxlYXNlSW5FbGFzdGljOmZ1bmN0aW9uKHAsZSxxLGEsYil7dmFyIGQ9 MS43MDE1ODt2YXIgYz0wO3ZhciBvPWE7aWYoZT09MCl7cmV0dXJuIHF9aWYoKGUvPWIpPT0xKXtyZXR1 cm4gcSthfWlmKCFjKXtjPWIqMC4zfWlmKG88TWF0aC5hYnMoYSkpe289YTt2YXIgZD1jLzR9ZWxzZXt2 YXIgZD1jLygyKk1hdGguUEkpKk1hdGguYXNpbihhL28pfXJldHVybiAtKG8qTWF0aC5wb3coMiwxMCoo ZS09MSkpKk1hdGguc2luKChlKmItZCkqKDIqTWF0aC5QSSkvYykpK3F9LGVhc2VPdXRFbGFzdGljOmZ1 bmN0aW9uKHAsZSxxLGEsYil7dmFyIGQ9MS43MDE1ODt2YXIgYz0wO3ZhciBvPWE7aWYoZT09MCl7cmV0 dXJuIHF9aWYoKGUvPWIpPT0xKXtyZXR1cm4gcSthfWlmKCFjKXtjPWIqMC4zfWlmKG88TWF0aC5hYnMo YSkpe289YTt2YXIgZD1jLzR9ZWxzZXt2YXIgZD1jLygyKk1hdGguUEkpKk1hdGguYXNpbihhL28pfXJl dHVybiBvKk1hdGgucG93KDIsLTEwKmUpKk1hdGguc2luKChlKmItZCkqKDIqTWF0aC5QSSkvYykrYStx fSxlYXNlSW5PdXRFbGFzdGljOmZ1bmN0aW9uKHAsZSxxLGEsYil7dmFyIGQ9MS43MDE1ODt2YXIgYz0w O3ZhciBvPWE7aWYoZT09MCl7cmV0dXJuIHF9aWYoKGUvPWIvMik9PTIpe3JldHVybiBxK2F9aWYoIWMp e2M9YiooMC4zKjEuNSl9aWYobzxNYXRoLmFicyhhKSl7bz1hO3ZhciBkPWMvNH1lbHNle3ZhciBkPWMv KDIqTWF0aC5QSSkqTWF0aC5hc2luKGEvbyl9aWYoZTwxKXtyZXR1cm4gLTAuNSoobypNYXRoLnBvdygy LDEwKihlLT0xKSkqTWF0aC5zaW4oKGUqYi1kKSooMipNYXRoLlBJKS9jKSkrcX1yZXR1cm4gbypNYXRo LnBvdygyLC0xMCooZS09MSkpKk1hdGguc2luKChlKmItZCkqKDIqTWF0aC5QSSkvYykqMC41K2ErcX0s ZWFzZUluQmFjazpmdW5jdGlvbihlLGQsbyxhLGIsYyl7aWYoYz09dW5kZWZpbmVkKXtjPTEuNzAxNTh9 cmV0dXJuIGEqKGQvPWIpKmQqKChjKzEpKmQtYykrb30sZWFzZU91dEJhY2s6ZnVuY3Rpb24oZSxkLG8s YSxiLGMpe2lmKGM9PXVuZGVmaW5lZCl7Yz0xLjcwMTU4fXJldHVybiBhKigoZD1kL2ItMSkqZCooKGMr MSkqZCtjKSsxKStvfSxlYXNlSW5PdXRCYWNrOmZ1bmN0aW9uKGUsZCxvLGEsYixjKXtpZihjPT11bmRl ZmluZWQpe2M9MS43MDE1OH1pZigoZC89Yi8yKTwxKXtyZXR1cm4gYS8yKihkKmQqKCgoYyo9KDEuNTI1 KSkrMSkqZC1jKSkrb31yZXR1cm4gYS8yKigoZC09MikqZCooKChjKj0oMS41MjUpKSsxKSpkK2MpKzIp K299LGVhc2VJbkJvdW5jZTpmdW5jdGlvbihkLGMsZSxhLGIpe3JldHVybiBhLWwuZWFzaW5nLmVhc2VP dXRCb3VuY2UoZCxiLWMsMCxhLGIpK2V9LGVhc2VPdXRCb3VuY2U6ZnVuY3Rpb24oZCxjLGUsYSxiKXtp ZigoYy89Yik8KDEvMi43NSkpe3JldHVybiBhKig3LjU2MjUqYypjKStlfWVsc2V7aWYoYzwoMi8yLjc1 KSl7cmV0dXJuIGEqKDcuNTYyNSooYy09KDEuNS8yLjc1KSkqYyswLjc1KStlfWVsc2V7aWYoYzwoMi41 LzIuNzUpKXtyZXR1cm4gYSooNy41NjI1KihjLT0oMi4yNS8yLjc1KSkqYyswLjkzNzUpK2V9ZWxzZXty ZXR1cm4gYSooNy41NjI1KihjLT0oMi42MjUvMi43NSkpKmMrMC45ODQzNzUpK2V9fX19LGVhc2VJbk91 dEJvdW5jZTpmdW5jdGlvbihkLGMsZSxhLGIpe2lmKGM8Yi8yKXtyZXR1cm4gbC5lYXNpbmcuZWFzZUlu Qm91bmNlKGQsYyoyLDAsYSxiKSowLjUrZX1yZXR1cm4gbC5lYXNpbmcuZWFzZU91dEJvdW5jZShkLGMq Mi1iLDAsYSxiKSowLjUrYSowLjUrZX19KX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGIpe2IuZWZmZWN0cy5i bGluZD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBzPWIodGhpcyks dT1bInBvc2l0aW9uIiwidG9wIiwibGVmdCJdO3ZhciBvPWIuZWZmZWN0cy5zZXRNb2RlKHMsYS5vcHRp b25zLm1vZGV8fCJoaWRlIik7dmFyIHA9YS5vcHRpb25zLmRpcmVjdGlvbnx8InZlcnRpY2FsIjtiLmVm ZmVjdHMuc2F2ZShzLHUpO3Muc2hvdygpO3ZhciBsPWIuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKHMpLmNz cyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KTt2YXIgcj0ocD09InZlcnRpY2FsIik/ImhlaWdodCI6IndpZHRo Ijt2YXIgbj0ocD09InZlcnRpY2FsIik/bC5oZWlnaHQoKTpsLndpZHRoKCk7aWYobz09InNob3ciKXts LmNzcyhyLDApfXZhciBxPXt9O3Fbcl09bz09InNob3ciP246MDtsLmFuaW1hdGUocSxhLmR1cmF0aW9u LGEub3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24oKXtpZihvPT0iaGlkZSIpe3MuaGlkZSgpfWIuZWZmZWN0 cy5yZXN0b3JlKHMsdSk7Yi5lZmZlY3RzLnJlbW92ZVdyYXBwZXIocyk7aWYoYS5jYWxsYmFjayl7YS5j YWxsYmFjay5hcHBseShzWzBdLGFyZ3VtZW50cyl9cy5kZXF1ZXVlKCl9KX0pfX0pKGpRdWVyeSk7KGZ1 bmN0aW9uKGIpe2IuZWZmZWN0cy5ib3VuY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoZnVu Y3Rpb24oKXt2YXIgQj1iKHRoaXMpLHY9WyJwb3NpdGlvbiIsInRvcCIsImxlZnQiXTt2YXIgdz1iLmVm ZmVjdHMuc2V0TW9kZShCLGEub3B0aW9ucy5tb2RlfHwiZWZmZWN0Iik7dmFyIHM9YS5vcHRpb25zLmRp cmVjdGlvbnx8InVwIjt2YXIgRD1hLm9wdGlvbnMuZGlzdGFuY2V8fDIwO3ZhciBDPWEub3B0aW9ucy50 aW1lc3x8NTt2YXIgej1hLmR1cmF0aW9ufHwyNTA7aWYoL3Nob3d8aGlkZS8udGVzdCh3KSl7di5wdXNo KCJvcGFjaXR5Iil9Yi5lZmZlY3RzLnNhdmUoQix2KTtCLnNob3coKTtiLmVmZmVjdHMuY3JlYXRlV3Jh cHBlcihCKTt2YXIgQT0ocz09InVwInx8cz09ImRvd24iKT8idG9wIjoibGVmdCI7dmFyIHE9KHM9PSJ1 cCJ8fHM9PSJsZWZ0Iik/InBvcyI6Im5lZyI7dmFyIEQ9YS5vcHRpb25zLmRpc3RhbmNlfHwoQT09InRv cCI/Qi5vdXRlckhlaWdodCh7bWFyZ2luOnRydWV9KS8zOkIub3V0ZXJXaWR0aCh7bWFyZ2luOnRydWV9 KS8zKTtpZih3PT0ic2hvdyIpe0IuY3NzKCJvcGFjaXR5IiwwKS5jc3MoQSxxPT0icG9zIj8tRDpEKX1p Zih3PT0iaGlkZSIpe0Q9RC8oQyoyKX1pZih3IT0iaGlkZSIpe0MtLX1pZih3PT0ic2hvdyIpe3ZhciB5 PXtvcGFjaXR5OjF9O3lbQV09KHE9PSJwb3MiPyIrPSI6Ii09IikrRDtCLmFuaW1hdGUoeSx6LzIsYS5v cHRpb25zLmVhc2luZyk7RD1ELzI7Qy0tfWZvcih2YXIgeD0wO3g8Qzt4Kyspe3ZhciByPXt9LHU9e307 cltBXT0ocT09InBvcyI/Ii09IjoiKz0iKStEO3VbQV09KHE9PSJwb3MiPyIrPSI6Ii09IikrRDtCLmFu aW1hdGUocix6LzIsYS5vcHRpb25zLmVhc2luZykuYW5pbWF0ZSh1LHovMixhLm9wdGlvbnMuZWFzaW5n KTtEPSh3PT0iaGlkZSIpP0QqMjpELzJ9aWYodz09ImhpZGUiKXt2YXIgeT17b3BhY2l0eTowfTt5W0Fd PShxPT0icG9zIj8iLT0iOiIrPSIpK0Q7Qi5hbmltYXRlKHksei8yLGEub3B0aW9ucy5lYXNpbmcsZnVu Y3Rpb24oKXtCLmhpZGUoKTtiLmVmZmVjdHMucmVzdG9yZShCLHYpO2IuZWZmZWN0cy5yZW1vdmVXcmFw cGVyKEIpO2lmKGEuY2FsbGJhY2spe2EuY2FsbGJhY2suYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pfWVs c2V7dmFyIHI9e30sdT17fTtyW0FdPShxPT0icG9zIj8iLT0iOiIrPSIpK0Q7dVtBXT0ocT09InBvcyI/ Iis9IjoiLT0iKStEO0IuYW5pbWF0ZShyLHovMixhLm9wdGlvbnMuZWFzaW5nKS5hbmltYXRlKHUsei8y LGEub3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24oKXtiLmVmZmVjdHMucmVzdG9yZShCLHYpO2IuZWZmZWN0 cy5yZW1vdmVXcmFwcGVyKEIpO2lmKGEuY2FsbGJhY2spe2EuY2FsbGJhY2suYXBwbHkodGhpcyxhcmd1 bWVudHMpfX0pfUIucXVldWUoImZ4IixmdW5jdGlvbigpe0IuZGVxdWV1ZSgpfSk7Qi5kZXF1ZXVlKCl9 KX19KShqUXVlcnkpOyhmdW5jdGlvbihiKXtiLmVmZmVjdHMuY2xpcD1mdW5jdGlvbihhKXtyZXR1cm4g dGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciByPWIodGhpcyksbj1bInBvc2l0aW9uIiwidG9wIiwibGVm dCIsImhlaWdodCIsIndpZHRoIl07dmFyIG89Yi5lZmZlY3RzLnNldE1vZGUocixhLm9wdGlvbnMubW9k ZXx8ImhpZGUiKTt2YXIgbD1hLm9wdGlvbnMuZGlyZWN0aW9ufHwidmVydGljYWwiO2IuZWZmZWN0cy5z YXZlKHIsbik7ci5zaG93KCk7dmFyIHY9Yi5lZmZlY3RzLmNyZWF0ZVdyYXBwZXIocikuY3NzKHtvdmVy ZmxvdzoiaGlkZGVuIn0pO3ZhciBzPXJbMF0udGFnTmFtZT09IklNRyI/djpyO3ZhciBxPXtzaXplOihs PT0idmVydGljYWwiKT8iaGVpZ2h0Ijoid2lkdGgiLHBvc2l0aW9uOihsPT0idmVydGljYWwiKT8idG9w IjoibGVmdCJ9O3ZhciB1PShsPT0idmVydGljYWwiKT9zLmhlaWdodCgpOnMud2lkdGgoKTtpZihvPT0i c2hvdyIpe3MuY3NzKHEuc2l6ZSwwKTtzLmNzcyhxLnBvc2l0aW9uLHUvMil9dmFyIHA9e307cFtxLnNp emVdPW89PSJzaG93Ij91OjA7cFtxLnBvc2l0aW9uXT1vPT0ic2hvdyI/MDp1LzI7cy5hbmltYXRlKHAs e3F1ZXVlOmZhbHNlLGR1cmF0aW9uOmEuZHVyYXRpb24sZWFzaW5nOmEub3B0aW9ucy5lYXNpbmcsY29t cGxldGU6ZnVuY3Rpb24oKXtpZihvPT0iaGlkZSIpe3IuaGlkZSgpfWIuZWZmZWN0cy5yZXN0b3JlKHIs bik7Yi5lZmZlY3RzLnJlbW92ZVdyYXBwZXIocik7aWYoYS5jYWxsYmFjayl7YS5jYWxsYmFjay5hcHBs eShyWzBdLGFyZ3VtZW50cyl9ci5kZXF1ZXVlKCl9fSl9KX19KShqUXVlcnkpOyhmdW5jdGlvbihiKXti LmVmZmVjdHMuZHJvcD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBy PWIodGhpcykscz1bInBvc2l0aW9uIiwidG9wIiwibGVmdCIsIm9wYWNpdHkiXTt2YXIgbj1iLmVmZmVj dHMuc2V0TW9kZShyLGEub3B0aW9ucy5tb2RlfHwiaGlkZSIpO3ZhciBvPWEub3B0aW9ucy5kaXJlY3Rp b258fCJsZWZ0IjtiLmVmZmVjdHMuc2F2ZShyLHMpO3Iuc2hvdygpO2IuZWZmZWN0cy5jcmVhdGVXcmFw cGVyKHIpO3ZhciBxPShvPT0idXAifHxvPT0iZG93biIpPyJ0b3AiOiJsZWZ0Ijt2YXIgdT0obz09InVw Inx8bz09ImxlZnQiKT8icG9zIjoibmVnIjt2YXIgbD1hLm9wdGlvbnMuZGlzdGFuY2V8fChxPT0idG9w Ij9yLm91dGVySGVpZ2h0KHttYXJnaW46dHJ1ZX0pLzI6ci5vdXRlcldpZHRoKHttYXJnaW46dHJ1ZX0p LzIpO2lmKG49PSJzaG93Iil7ci5jc3MoIm9wYWNpdHkiLDApLmNzcyhxLHU9PSJwb3MiPy1sOmwpfXZh ciBwPXtvcGFjaXR5Om49PSJzaG93Ij8xOjB9O3BbcV09KG49PSJzaG93Ij8odT09InBvcyI/Iis9Ijoi LT0iKToodT09InBvcyI/Ii09IjoiKz0iKSkrbDtyLmFuaW1hdGUocCx7cXVldWU6ZmFsc2UsZHVyYXRp b246YS5kdXJhdGlvbixlYXNpbmc6YS5vcHRpb25zLmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe2lm KG49PSJoaWRlIil7ci5oaWRlKCl9Yi5lZmZlY3RzLnJlc3RvcmUocixzKTtiLmVmZmVjdHMucmVtb3Zl V3JhcHBlcihyKTtpZihhLmNhbGxiYWNrKXthLmNhbGxiYWNrLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1y LmRlcXVldWUoKX19KX0pfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGIpe2IuZWZmZWN0cy5leHBsb2RlPWZ1 bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIG89YS5vcHRpb25zLnBpZWNl cz9NYXRoLnJvdW5kKE1hdGguc3FydChhLm9wdGlvbnMucGllY2VzKSk6Mzt2YXIgcz1hLm9wdGlvbnMu cGllY2VzP01hdGgucm91bmQoTWF0aC5zcXJ0KGEub3B0aW9ucy5waWVjZXMpKTozO2Eub3B0aW9ucy5t b2RlPWEub3B0aW9ucy5tb2RlPT0idG9nZ2xlIj8oYih0aGlzKS5pcygiOnZpc2libGUiKT8iaGlkZSI6 InNob3ciKTphLm9wdGlvbnMubW9kZTt2YXIgcD1iKHRoaXMpLnNob3coKS5jc3MoInZpc2liaWxpdHki LCJoaWRkZW4iKTt2YXIgbj1wLm9mZnNldCgpO24udG9wLT1wYXJzZUludChwLmNzcygibWFyZ2luVG9w IiksMTApfHwwO24ubGVmdC09cGFyc2VJbnQocC5jc3MoIm1hcmdpbkxlZnQiKSwxMCl8fDA7dmFyIHE9 cC5vdXRlcldpZHRoKHRydWUpO3ZhciB2PXAub3V0ZXJIZWlnaHQodHJ1ZSk7Zm9yKHZhciByPTA7cjxv O3IrKyl7Zm9yKHZhciB1PTA7dTxzO3UrKyl7cC5jbG9uZSgpLmFwcGVuZFRvKCJib2R5Iikud3JhcCgi PGRpdj48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToidmlzaWJsZSIs bGVmdDotdSoocS9zKSx0b3A6LXIqKHYvbyl9KS5wYXJlbnQoKS5hZGRDbGFzcygidWktZWZmZWN0cy1l eHBsb2RlIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG92ZXJmbG93OiJoaWRkZW4iLHdpZHRoOnEv cyxoZWlnaHQ6di9vLGxlZnQ6bi5sZWZ0K3UqKHEvcykrKGEub3B0aW9ucy5tb2RlPT0ic2hvdyI/KHUt TWF0aC5mbG9vcihzLzIpKSoocS9zKTowKSx0b3A6bi50b3Arcioodi9vKSsoYS5vcHRpb25zLm1vZGU9 PSJzaG93Ij8oci1NYXRoLmZsb29yKG8vMikpKih2L28pOjApLG9wYWNpdHk6YS5vcHRpb25zLm1vZGU9 PSJzaG93Ij8wOjF9KS5hbmltYXRlKHtsZWZ0Om4ubGVmdCt1KihxL3MpKyhhLm9wdGlvbnMubW9kZT09 InNob3ciPzA6KHUtTWF0aC5mbG9vcihzLzIpKSoocS9zKSksdG9wOm4udG9wK3IqKHYvbykrKGEub3B0 aW9ucy5tb2RlPT0ic2hvdyI/MDooci1NYXRoLmZsb29yKG8vMikpKih2L28pKSxvcGFjaXR5OmEub3B0 aW9ucy5tb2RlPT0ic2hvdyI/MTowfSxhLmR1cmF0aW9ufHw1MDApfX1zZXRUaW1lb3V0KGZ1bmN0aW9u KCl7YS5vcHRpb25zLm1vZGU9PSJzaG93Ij9wLmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSJ9KTpwLmNz cyh7dmlzaWJpbGl0eToidmlzaWJsZSJ9KS5oaWRlKCk7aWYoYS5jYWxsYmFjayl7YS5jYWxsYmFjay5h cHBseShwWzBdKX1wLmRlcXVldWUoKTtiKCJkaXYudWktZWZmZWN0cy1leHBsb2RlIikucmVtb3ZlKCl9 LGEuZHVyYXRpb258fDUwMCl9KX19KShqUXVlcnkpOyhmdW5jdGlvbihiKXtiLmVmZmVjdHMuZm9sZD1m dW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBBPWIodGhpcyksdT1bInBv c2l0aW9uIiwidG9wIiwibGVmdCJdO3ZhciB4PWIuZWZmZWN0cy5zZXRNb2RlKEEsYS5vcHRpb25zLm1v ZGV8fCJoaWRlIik7dmFyIHA9YS5vcHRpb25zLnNpemV8fDE1O3ZhciBxPSEoIWEub3B0aW9ucy5ob3Jp ekZpcnN0KTt2YXIgeT1hLmR1cmF0aW9uP2EuZHVyYXRpb24vMjpiLmZ4LnNwZWVkcy5fZGVmYXVsdC8y O2IuZWZmZWN0cy5zYXZlKEEsdSk7QS5zaG93KCk7dmFyIEI9Yi5lZmZlY3RzLmNyZWF0ZVdyYXBwZXIo QSkuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIn0pO3ZhciB3PSgoeD09InNob3ciKSE9cSk7dmFyIHo9dz9b IndpZHRoIiwiaGVpZ2h0Il06WyJoZWlnaHQiLCJ3aWR0aCJdO3ZhciBDPXc/W0Iud2lkdGgoKSxCLmhl aWdodCgpXTpbQi5oZWlnaHQoKSxCLndpZHRoKCldO3ZhciB2PS8oWzAtOV0rKSUvLmV4ZWMocCk7aWYo dil7cD1wYXJzZUludCh2WzFdLDEwKS8xMDAqQ1t4PT0iaGlkZSI/MDoxXX1pZih4PT0ic2hvdyIpe0Iu Y3NzKHE/e2hlaWdodDowLHdpZHRoOnB9OntoZWlnaHQ6cCx3aWR0aDowfSl9dmFyIHI9e30scz17fTty W3pbMF1dPXg9PSJzaG93Ij9DWzBdOnA7c1t6WzFdXT14PT0ic2hvdyI/Q1sxXTowO0IuYW5pbWF0ZShy LHksYS5vcHRpb25zLmVhc2luZykuYW5pbWF0ZShzLHksYS5vcHRpb25zLmVhc2luZyxmdW5jdGlvbigp e2lmKHg9PSJoaWRlIil7QS5oaWRlKCl9Yi5lZmZlY3RzLnJlc3RvcmUoQSx1KTtiLmVmZmVjdHMucmVt b3ZlV3JhcHBlcihBKTtpZihhLmNhbGxiYWNrKXthLmNhbGxiYWNrLmFwcGx5KEFbMF0sYXJndW1lbnRz KX1BLmRlcXVldWUoKX0pfSl9fSkoalF1ZXJ5KTsoZnVuY3Rpb24oYil7Yi5lZmZlY3RzLmhpZ2hsaWdo dD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBwPWIodGhpcykscT1b ImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRDb2xvciIsIm9wYWNpdHkiXTt2YXIgbD1iLmVmZmVj dHMuc2V0TW9kZShwLGEub3B0aW9ucy5tb2RlfHwic2hvdyIpO3ZhciByPWEub3B0aW9ucy5jb2xvcnx8 IiNmZmZmOTkiO3ZhciBuPXAuY3NzKCJiYWNrZ3JvdW5kQ29sb3IiKTtiLmVmZmVjdHMuc2F2ZShwLHEp O3Auc2hvdygpO3AuY3NzKHtiYWNrZ3JvdW5kSW1hZ2U6Im5vbmUiLGJhY2tncm91bmRDb2xvcjpyfSk7 dmFyIG89e2JhY2tncm91bmRDb2xvcjpufTtpZihsPT0iaGlkZSIpe28ub3BhY2l0eT0wfXAuYW5pbWF0 ZShvLHtxdWV1ZTpmYWxzZSxkdXJhdGlvbjphLmR1cmF0aW9uLGVhc2luZzphLm9wdGlvbnMuZWFzaW5n LGNvbXBsZXRlOmZ1bmN0aW9uKCl7aWYobD09ImhpZGUiKXtwLmhpZGUoKX1iLmVmZmVjdHMucmVzdG9y ZShwLHEpO2lmKGw9PSJzaG93IiYmYi5icm93c2VyLm1zaWUpe3RoaXMuc3R5bGUucmVtb3ZlQXR0cmli dXRlKCJmaWx0ZXIiKX1pZihhLmNhbGxiYWNrKXthLmNhbGxiYWNrLmFwcGx5KHRoaXMsYXJndW1lbnRz KX1wLmRlcXVldWUoKX19KX0pfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGIpe2IuZWZmZWN0cy5wdWxzYXRl PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIG89Yih0aGlzKTt2YXIg aD1iLmVmZmVjdHMuc2V0TW9kZShvLGEub3B0aW9ucy5tb2RlfHwic2hvdyIpO3ZhciBsPWEub3B0aW9u cy50aW1lc3x8NTt2YXIgbj1hLmR1cmF0aW9uP2EuZHVyYXRpb24vMjpiLmZ4LnNwZWVkcy5fZGVmYXVs dC8yO2lmKGg9PSJoaWRlIil7bC0tfWlmKG8uaXMoIjpoaWRkZW4iKSl7by5jc3MoIm9wYWNpdHkiLDAp O28uc2hvdygpO28uYW5pbWF0ZSh7b3BhY2l0eToxfSxuLGEub3B0aW9ucy5lYXNpbmcpO2w9bC0yfWZv cih2YXIgcD0wO3A8bDtwKyspe28uYW5pbWF0ZSh7b3BhY2l0eTowfSxuLGEub3B0aW9ucy5lYXNpbmcp LmFuaW1hdGUoe29wYWNpdHk6MX0sbixhLm9wdGlvbnMuZWFzaW5nKX1pZihoPT0iaGlkZSIpe28uYW5p bWF0ZSh7b3BhY2l0eTowfSxuLGEub3B0aW9ucy5lYXNpbmcsZnVuY3Rpb24oKXtvLmhpZGUoKTtpZihh LmNhbGxiYWNrKXthLmNhbGxiYWNrLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KX1lbHNle28uYW5pbWF0 ZSh7b3BhY2l0eTowfSxuLGEub3B0aW9ucy5lYXNpbmcpLmFuaW1hdGUoe29wYWNpdHk6MX0sbixhLm9w dGlvbnMuZWFzaW5nLGZ1bmN0aW9uKCl7aWYoYS5jYWxsYmFjayl7YS5jYWxsYmFjay5hcHBseSh0aGlz LGFyZ3VtZW50cyl9fSl9by5xdWV1ZSgiZngiLGZ1bmN0aW9uKCl7by5kZXF1ZXVlKCl9KTtvLmRlcXVl dWUoKX0pfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGIpe2IuZWZmZWN0cy5wdWZmPWZ1bmN0aW9uKGEpe3Jl dHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIG89Yih0aGlzKTt2YXIgcj1iLmV4dGVuZCh0cnVl LHt9LGEub3B0aW9ucyk7dmFyIGw9Yi5lZmZlY3RzLnNldE1vZGUobyxhLm9wdGlvbnMubW9kZXx8Imhp ZGUiKTt2YXIgbj1wYXJzZUludChhLm9wdGlvbnMucGVyY2VudCwxMCl8fDE1MDtyLmZhZGU9dHJ1ZTt2 YXIgcD17aGVpZ2h0Om8uaGVpZ2h0KCksd2lkdGg6by53aWR0aCgpfTt2YXIgcT1uLzEwMDtvLmZyb209 KGw9PSJoaWRlIik/cDp7aGVpZ2h0OnAuaGVpZ2h0KnEsd2lkdGg6cC53aWR0aCpxfTtyLmZyb209by5m cm9tO3IucGVyY2VudD0obD09ImhpZGUiKT9uOjEwMDtyLm1vZGU9bDtvLmVmZmVjdCgic2NhbGUiLHIs YS5kdXJhdGlvbixhLmNhbGxiYWNrKTtvLmRlcXVldWUoKX0pfTtiLmVmZmVjdHMuc2NhbGU9ZnVuY3Rp b24oYSl7cmV0dXJuIHRoaXMucXVldWUoZnVuY3Rpb24oKXt2YXIgcD1iKHRoaXMpO3ZhciBzPWIuZXh0 ZW5kKHRydWUse30sYS5vcHRpb25zKTt2YXIgbD1iLmVmZmVjdHMuc2V0TW9kZShwLGEub3B0aW9ucy5t b2RlfHwiZWZmZWN0Iik7dmFyIG89cGFyc2VJbnQoYS5vcHRpb25zLnBlcmNlbnQsMTApfHwocGFyc2VJ bnQoYS5vcHRpb25zLnBlcmNlbnQsMTApPT0wPzA6KGw9PSJoaWRlIj8wOjEwMCkpO3ZhciBuPWEub3B0 aW9ucy5kaXJlY3Rpb258fCJib3RoIjt2YXIgdT1hLm9wdGlvbnMub3JpZ2luO2lmKGwhPSJlZmZlY3Qi KXtzLm9yaWdpbj11fHxbIm1pZGRsZSIsImNlbnRlciJdO3MucmVzdG9yZT10cnVlfXZhciBxPXtoZWln aHQ6cC5oZWlnaHQoKSx3aWR0aDpwLndpZHRoKCl9O3AuZnJvbT1hLm9wdGlvbnMuZnJvbXx8KGw9PSJz aG93Ij97aGVpZ2h0OjAsd2lkdGg6MH06cSk7dmFyIHI9e3k6biE9Imhvcml6b250YWwiPyhvLzEwMCk6 MSx4Om4hPSJ2ZXJ0aWNhbCI/KG8vMTAwKToxfTtwLnRvPXtoZWlnaHQ6cS5oZWlnaHQqci55LHdpZHRo OnEud2lkdGgqci54fTtpZihhLm9wdGlvbnMuZmFkZSl7aWYobD09InNob3ciKXtwLmZyb20ub3BhY2l0 eT0wO3AudG8ub3BhY2l0eT0xfWlmKGw9PSJoaWRlIil7cC5mcm9tLm9wYWNpdHk9MTtwLnRvLm9wYWNp dHk9MH19cy5mcm9tPXAuZnJvbTtzLnRvPXAudG87cy5tb2RlPWw7cC5lZmZlY3QoInNpemUiLHMsYS5k dXJhdGlvbixhLmNhbGxiYWNrKTtwLmRlcXVldWUoKX0pfTtiLmVmZmVjdHMuc2l6ZT1mdW5jdGlvbihh KXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBFPWIodGhpcykscz1bInBvc2l0aW9uIiwi dG9wIiwibGVmdCIsIndpZHRoIiwiaGVpZ2h0Iiwib3ZlcmZsb3ciLCJvcGFjaXR5Il07dmFyIHU9WyJw b3NpdGlvbiIsInRvcCIsImxlZnQiLCJvdmVyZmxvdyIsIm9wYWNpdHkiXTt2YXIgeD1bIndpZHRoIiwi aGVpZ2h0Iiwib3ZlcmZsb3ciXTt2YXIgcT1bImZvbnRTaXplIl07dmFyIHc9WyJib3JkZXJUb3BXaWR0 aCIsImJvcmRlckJvdHRvbVdpZHRoIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iXTt2YXIgQj1b ImJvcmRlckxlZnRXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdS aWdodCJdO3ZhciBBPWIuZWZmZWN0cy5zZXRNb2RlKEUsYS5vcHRpb25zLm1vZGV8fCJlZmZlY3QiKTt2 YXIgeT1hLm9wdGlvbnMucmVzdG9yZXx8ZmFsc2U7dmFyIEM9YS5vcHRpb25zLnNjYWxlfHwiYm90aCI7 dmFyIHI9YS5vcHRpb25zLm9yaWdpbjt2YXIgRD17aGVpZ2h0OkUuaGVpZ2h0KCksd2lkdGg6RS53aWR0 aCgpfTtFLmZyb209YS5vcHRpb25zLmZyb218fEQ7RS50bz1hLm9wdGlvbnMudG98fEQ7aWYocil7dmFy IHo9Yi5lZmZlY3RzLmdldEJhc2VsaW5lKHIsRCk7RS5mcm9tLnRvcD0oRC5oZWlnaHQtRS5mcm9tLmhl aWdodCkqei55O0UuZnJvbS5sZWZ0PShELndpZHRoLUUuZnJvbS53aWR0aCkqei54O0UudG8udG9wPShE LmhlaWdodC1FLnRvLmhlaWdodCkqei55O0UudG8ubGVmdD0oRC53aWR0aC1FLnRvLndpZHRoKSp6Lnh9 dmFyIHY9e2Zyb206e3k6RS5mcm9tLmhlaWdodC9ELmhlaWdodCx4OkUuZnJvbS53aWR0aC9ELndpZHRo fSx0bzp7eTpFLnRvLmhlaWdodC9ELmhlaWdodCx4OkUudG8ud2lkdGgvRC53aWR0aH19O2lmKEM9PSJi b3gifHxDPT0iYm90aCIpe2lmKHYuZnJvbS55IT12LnRvLnkpe3M9cy5jb25jYXQodyk7RS5mcm9tPWIu ZWZmZWN0cy5zZXRUcmFuc2l0aW9uKEUsdyx2LmZyb20ueSxFLmZyb20pO0UudG89Yi5lZmZlY3RzLnNl dFRyYW5zaXRpb24oRSx3LHYudG8ueSxFLnRvKX1pZih2LmZyb20ueCE9di50by54KXtzPXMuY29uY2F0 KEIpO0UuZnJvbT1iLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihFLEIsdi5mcm9tLngsRS5mcm9tKTtFLnRv PWIuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKEUsQix2LnRvLngsRS50byl9fWlmKEM9PSJjb250ZW50Inx8 Qz09ImJvdGgiKXtpZih2LmZyb20ueSE9di50by55KXtzPXMuY29uY2F0KHEpO0UuZnJvbT1iLmVmZmVj dHMuc2V0VHJhbnNpdGlvbihFLHEsdi5mcm9tLnksRS5mcm9tKTtFLnRvPWIuZWZmZWN0cy5zZXRUcmFu c2l0aW9uKEUscSx2LnRvLnksRS50byl9fWIuZWZmZWN0cy5zYXZlKEUseT9zOnUpO0Uuc2hvdygpO2Iu ZWZmZWN0cy5jcmVhdGVXcmFwcGVyKEUpO0UuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpLmNzcyhFLmZy b20pO2lmKEM9PSJjb250ZW50Inx8Qz09ImJvdGgiKXt3PXcuY29uY2F0KFsibWFyZ2luVG9wIiwibWFy Z2luQm90dG9tIl0pLmNvbmNhdChxKTtCPUIuY29uY2F0KFsibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0 Il0pO3g9cy5jb25jYXQodykuY29uY2F0KEIpO0UuZmluZCgiKlt3aWR0aF0iKS5lYWNoKGZ1bmN0aW9u KCl7Y2hpbGQ9Yih0aGlzKTtpZih5KXtiLmVmZmVjdHMuc2F2ZShjaGlsZCx4KX12YXIgYz17aGVpZ2h0 OmNoaWxkLmhlaWdodCgpLHdpZHRoOmNoaWxkLndpZHRoKCl9O2NoaWxkLmZyb209e2hlaWdodDpjLmhl aWdodCp2LmZyb20ueSx3aWR0aDpjLndpZHRoKnYuZnJvbS54fTtjaGlsZC50bz17aGVpZ2h0OmMuaGVp Z2h0KnYudG8ueSx3aWR0aDpjLndpZHRoKnYudG8ueH07aWYodi5mcm9tLnkhPXYudG8ueSl7Y2hpbGQu ZnJvbT1iLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihjaGlsZCx3LHYuZnJvbS55LGNoaWxkLmZyb20pO2No aWxkLnRvPWIuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGNoaWxkLHcsdi50by55LGNoaWxkLnRvKX1pZih2 LmZyb20ueCE9di50by54KXtjaGlsZC5mcm9tPWIuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGNoaWxkLEIs di5mcm9tLngsY2hpbGQuZnJvbSk7Y2hpbGQudG89Yi5lZmZlY3RzLnNldFRyYW5zaXRpb24oY2hpbGQs Qix2LnRvLngsY2hpbGQudG8pfWNoaWxkLmNzcyhjaGlsZC5mcm9tKTtjaGlsZC5hbmltYXRlKGNoaWxk LnRvLGEuZHVyYXRpb24sYS5vcHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2lmKHkpe2IuZWZmZWN0cy5y ZXN0b3JlKGNoaWxkLHgpfX0pfSl9RS5hbmltYXRlKEUudG8se3F1ZXVlOmZhbHNlLGR1cmF0aW9uOmEu ZHVyYXRpb24sZWFzaW5nOmEub3B0aW9ucy5lYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXtpZihBPT0i aGlkZSIpe0UuaGlkZSgpfWIuZWZmZWN0cy5yZXN0b3JlKEUseT9zOnUpO2IuZWZmZWN0cy5yZW1vdmVX cmFwcGVyKEUpO2lmKGEuY2FsbGJhY2spe2EuY2FsbGJhY2suYXBwbHkodGhpcyxhcmd1bWVudHMpfUUu ZGVxdWV1ZSgpfX0pfSl9fSkoalF1ZXJ5KTsoZnVuY3Rpb24oYil7Yi5lZmZlY3RzLnNoYWtlPWZ1bmN0 aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIEI9Yih0aGlzKSx2PVsicG9zaXRp b24iLCJ0b3AiLCJsZWZ0Il07dmFyIHc9Yi5lZmZlY3RzLnNldE1vZGUoQixhLm9wdGlvbnMubW9kZXx8 ImVmZmVjdCIpO3ZhciBzPWEub3B0aW9ucy5kaXJlY3Rpb258fCJsZWZ0Ijt2YXIgRD1hLm9wdGlvbnMu ZGlzdGFuY2V8fDIwO3ZhciBDPWEub3B0aW9ucy50aW1lc3x8Mzt2YXIgej1hLmR1cmF0aW9ufHxhLm9w dGlvbnMuZHVyYXRpb258fDE0MDtiLmVmZmVjdHMuc2F2ZShCLHYpO0Iuc2hvdygpO2IuZWZmZWN0cy5j cmVhdGVXcmFwcGVyKEIpO3ZhciBBPShzPT0idXAifHxzPT0iZG93biIpPyJ0b3AiOiJsZWZ0Ijt2YXIg cT0ocz09InVwInx8cz09ImxlZnQiKT8icG9zIjoibmVnIjt2YXIgeT17fSxyPXt9LHU9e307eVtBXT0o cT09InBvcyI/Ii09IjoiKz0iKStEO3JbQV09KHE9PSJwb3MiPyIrPSI6Ii09IikrRCoyO3VbQV09KHE9 PSJwb3MiPyItPSI6Iis9IikrRCoyO0IuYW5pbWF0ZSh5LHosYS5vcHRpb25zLmVhc2luZyk7Zm9yKHZh ciB4PTE7eDxDO3grKyl7Qi5hbmltYXRlKHIseixhLm9wdGlvbnMuZWFzaW5nKS5hbmltYXRlKHUseixh Lm9wdGlvbnMuZWFzaW5nKX1CLmFuaW1hdGUocix6LGEub3B0aW9ucy5lYXNpbmcpLmFuaW1hdGUoeSx6 LzIsYS5vcHRpb25zLmVhc2luZyxmdW5jdGlvbigpe2IuZWZmZWN0cy5yZXN0b3JlKEIsdik7Yi5lZmZl Y3RzLnJlbW92ZVdyYXBwZXIoQik7aWYoYS5jYWxsYmFjayl7YS5jYWxsYmFjay5hcHBseSh0aGlzLGFy Z3VtZW50cyl9fSk7Qi5xdWV1ZSgiZngiLGZ1bmN0aW9uKCl7Qi5kZXF1ZXVlKCl9KTtCLmRlcXVldWUo KX0pfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGIpe2IuZWZmZWN0cy5zbGlkZT1mdW5jdGlvbihhKXtyZXR1 cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciByPWIodGhpcykscz1bInBvc2l0aW9uIiwidG9wIiwi bGVmdCJdO3ZhciBuPWIuZWZmZWN0cy5zZXRNb2RlKHIsYS5vcHRpb25zLm1vZGV8fCJzaG93Iik7dmFy IG89YS5vcHRpb25zLmRpcmVjdGlvbnx8ImxlZnQiO2IuZWZmZWN0cy5zYXZlKHIscyk7ci5zaG93KCk7 Yi5lZmZlY3RzLmNyZWF0ZVdyYXBwZXIocikuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIn0pO3ZhciBxPShv PT0idXAifHxvPT0iZG93biIpPyJ0b3AiOiJsZWZ0Ijt2YXIgdT0obz09InVwInx8bz09ImxlZnQiKT8i cG9zIjoibmVnIjt2YXIgbD1hLm9wdGlvbnMuZGlzdGFuY2V8fChxPT0idG9wIj9yLm91dGVySGVpZ2h0 KHttYXJnaW46dHJ1ZX0pOnIub3V0ZXJXaWR0aCh7bWFyZ2luOnRydWV9KSk7aWYobj09InNob3ciKXty LmNzcyhxLHU9PSJwb3MiPy1sOmwpfXZhciBwPXt9O3BbcV09KG49PSJzaG93Ij8odT09InBvcyI/Iis9 IjoiLT0iKToodT09InBvcyI/Ii09IjoiKz0iKSkrbDtyLmFuaW1hdGUocCx7cXVldWU6ZmFsc2UsZHVy YXRpb246YS5kdXJhdGlvbixlYXNpbmc6YS5vcHRpb25zLmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigp e2lmKG49PSJoaWRlIil7ci5oaWRlKCl9Yi5lZmZlY3RzLnJlc3RvcmUocixzKTtiLmVmZmVjdHMucmVt b3ZlV3JhcHBlcihyKTtpZihhLmNhbGxiYWNrKXthLmNhbGxiYWNrLmFwcGx5KHRoaXMsYXJndW1lbnRz KX1yLmRlcXVldWUoKX19KX0pfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGIpe2IuZWZmZWN0cy50cmFuc2Zl cj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShmdW5jdGlvbigpe3ZhciBvPWIodGhpcyksbD1i KGEub3B0aW9ucy50bykscD1sLm9mZnNldCgpLG49e3RvcDpwLnRvcCxsZWZ0OnAubGVmdCxoZWlnaHQ6 bC5pbm5lckhlaWdodCgpLHdpZHRoOmwuaW5uZXJXaWR0aCgpfSxxPW8ub2Zmc2V0KCkscj1iKCc8ZGl2 IGNsYXNzPSJ1aS1lZmZlY3RzLXRyYW5zZmVyIj48L2Rpdj4nKS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5 KS5hZGRDbGFzcyhhLm9wdGlvbnMuY2xhc3NOYW1lKS5jc3Moe3RvcDpxLnRvcCxsZWZ0OnEubGVmdCxo ZWlnaHQ6by5pbm5lckhlaWdodCgpLHdpZHRoOm8uaW5uZXJXaWR0aCgpLHBvc2l0aW9uOiJhYnNvbHV0 ZSJ9KS5hbmltYXRlKG4sYS5kdXJhdGlvbixhLm9wdGlvbnMuZWFzaW5nLGZ1bmN0aW9uKCl7ci5yZW1v dmUoKTsoYS5jYWxsYmFjayYmYS5jYWxsYmFjay5hcHBseShvWzBdLGFyZ3VtZW50cykpO28uZGVxdWV1 ZSgpfSl9KX19KShqUXVlcnkpOyhmdW5jdGlvbihiKXtiLndpZGdldCgidWkuYWNjb3JkaW9uIix7X2lu aXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMsYT10aGlzO3RoaXMucnVubmluZz0wO2lmKGUu Y29sbGFwc2libGU9PWIudWkuYWNjb3JkaW9uLmRlZmF1bHRzLmNvbGxhcHNpYmxlJiZlLmFsd2F5c09w ZW4hPWIudWkuYWNjb3JkaW9uLmRlZmF1bHRzLmFsd2F5c09wZW4pe2UuY29sbGFwc2libGU9IWUuYWx3 YXlzT3Blbn1pZihlLm5hdmlnYXRpb24pe3ZhciBmPXRoaXMuZWxlbWVudC5maW5kKCJhIikuZmlsdGVy KGUubmF2aWdhdGlvbkZpbHRlcik7aWYoZi5sZW5ndGgpe2lmKGYuZmlsdGVyKGUuaGVhZGVyKS5sZW5n dGgpe3RoaXMuYWN0aXZlPWZ9ZWxzZXt0aGlzLmFjdGl2ZT1mLnBhcmVudCgpLnBhcmVudCgpLnByZXYo KTtmLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKX19fXRoaXMuZWxlbWVudC5h ZGRDbGFzcygidWktYWNjb3JkaW9uIHVpLXdpZGdldCB1aS1oZWxwZXItcmVzZXQiKTtpZih0aGlzLmVs ZW1lbnRbMF0ubm9kZU5hbWU9PSJVTCIpe3RoaXMuZWxlbWVudC5jaGlsZHJlbigibGkiKS5hZGRDbGFz cygidWktYWNjb3JkaW9uLWxpLWZpeCIpfXRoaXMuaGVhZGVycz10aGlzLmVsZW1lbnQuZmluZChlLmhl YWRlcikuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXIgdWktaGVscGVyLXJlc2V0IHVpLXN0YXRl LWRlZmF1bHQgdWktY29ybmVyLWFsbCIpLmJpbmQoIm1vdXNlZW50ZXIuYWNjb3JkaW9uIixmdW5jdGlv bigpe2IodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9KS5iaW5kKCJtb3VzZWxlYXZlLmFj Y29yZGlvbiIsZnVuY3Rpb24oKXtiKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSku YmluZCgiZm9jdXMuYWNjb3JkaW9uIixmdW5jdGlvbigpe2IodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRl LWZvY3VzIil9KS5iaW5kKCJibHVyLmFjY29yZGlvbiIsZnVuY3Rpb24oKXtiKHRoaXMpLnJlbW92ZUNs YXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSk7dGhpcy5oZWFkZXJzLm5leHQoKS5hZGRDbGFzcygidWktYWNj b3JkaW9uLWNvbnRlbnQgdWktaGVscGVyLXJlc2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1i b3R0b20iKTt0aGlzLmFjdGl2ZT10aGlzLl9maW5kQWN0aXZlKHRoaXMuYWN0aXZlfHxlLmFjdGl2ZSku dG9nZ2xlQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQiKS50b2dnbGVDbGFzcygidWktc3RhdGUtYWN0aXZl IikudG9nZ2xlQ2xhc3MoInVpLWNvcm5lci1hbGwiKS50b2dnbGVDbGFzcygidWktY29ybmVyLXRvcCIp O3RoaXMuYWN0aXZlLm5leHQoKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIik7 YigiPHNwYW4vPiIpLmFkZENsYXNzKCJ1aS1pY29uICIrZS5pY29ucy5oZWFkZXIpLnByZXBlbmRUbyh0 aGlzLmhlYWRlcnMpO3RoaXMuYWN0aXZlLmZpbmQoIi51aS1pY29uIikudG9nZ2xlQ2xhc3MoZS5pY29u cy5oZWFkZXIpLnRvZ2dsZUNsYXNzKGUuaWNvbnMuaGVhZGVyU2VsZWN0ZWQpO2lmKGIuYnJvd3Nlci5t c2llKXt0aGlzLmVsZW1lbnQuZmluZCgiYSIpLmNzcygiem9vbSIsIjEiKX10aGlzLnJlc2l6ZSgpO3Ro aXMuZWxlbWVudC5hdHRyKCJyb2xlIiwidGFibGlzdCIpO3RoaXMuaGVhZGVycy5hdHRyKCJyb2xlIiwi dGFiIikuYmluZCgia2V5ZG93biIsZnVuY3Rpb24oYyl7cmV0dXJuIGEuX2tleWRvd24oYyl9KS5uZXh0 KCkuYXR0cigicm9sZSIsInRhYnBhbmVsIik7dGhpcy5oZWFkZXJzLm5vdCh0aGlzLmFjdGl2ZXx8IiIp LmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLmF0dHIoInRhYkluZGV4IiwiLTEiKS5uZXh0KCku aGlkZSgpO2lmKCF0aGlzLmFjdGl2ZS5sZW5ndGgpe3RoaXMuaGVhZGVycy5lcSgwKS5hdHRyKCJ0YWJJ bmRleCIsIjAiKX1lbHNle3RoaXMuYWN0aXZlLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJ0cnVlIikuYXR0 cigidGFiSW5kZXgiLCIwIil9aWYoIWIuYnJvd3Nlci5zYWZhcmkpe3RoaXMuaGVhZGVycy5maW5kKCJh IikuYXR0cigidGFiSW5kZXgiLCItMSIpfWlmKGUuZXZlbnQpe3RoaXMuaGVhZGVycy5iaW5kKChlLmV2 ZW50KSsiLmFjY29yZGlvbiIsZnVuY3Rpb24oYyl7cmV0dXJuIGEuX2NsaWNrSGFuZGxlci5jYWxsKGEs Yyx0aGlzKX0pfX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3B0aW9uczt0aGlzLmVsZW1l bnQucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbiB1aS13aWRnZXQgdWktaGVscGVyLXJlc2V0IikucmVt b3ZlQXR0cigicm9sZSIpLnVuYmluZCgiLmFjY29yZGlvbiIpLnJlbW92ZURhdGEoImFjY29yZGlvbiIp O3RoaXMuaGVhZGVycy51bmJpbmQoIi5hY2NvcmRpb24iKS5yZW1vdmVDbGFzcygidWktYWNjb3JkaW9u LWhlYWRlciB1aS1oZWxwZXItcmVzZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLXN0 YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFy aWEtZXhwYW5kZWQiKS5yZW1vdmVBdHRyKCJ0YWJpbmRleCIpO3RoaXMuaGVhZGVycy5maW5kKCJhIiku cmVtb3ZlQXR0cigidGFiaW5kZXgiKTt0aGlzLmhlYWRlcnMuY2hpbGRyZW4oIi51aS1pY29uIikucmVt b3ZlKCk7dmFyIGE9dGhpcy5oZWFkZXJzLm5leHQoKS5jc3MoImRpc3BsYXkiLCIiKS5yZW1vdmVBdHRy KCJyb2xlIikucmVtb3ZlQ2xhc3MoInVpLWhlbHBlci1yZXNldCB1aS13aWRnZXQtY29udGVudCB1aS1j b3JuZXItYm90dG9tIHVpLWFjY29yZGlvbi1jb250ZW50IHVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2 ZSIpO2lmKGQuYXV0b0hlaWdodHx8ZC5maWxsSGVpZ2h0KXthLmNzcygiaGVpZ2h0IiwiIil9fSxfc2V0 RGF0YTpmdW5jdGlvbihhLGQpe2lmKGE9PSJhbHdheXNPcGVuIil7YT0iY29sbGFwc2libGUiO2Q9IWR9 Yi53aWRnZXQucHJvdG90eXBlLl9zZXREYXRhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX2tleWRvd246 ZnVuY3Rpb24obil7dmFyIGg9dGhpcy5vcHRpb25zLGw9Yi51aS5rZXlDb2RlO2lmKGguZGlzYWJsZWR8 fG4uYWx0S2V5fHxuLmN0cmxLZXkpe3JldHVybn12YXIgbz10aGlzLmhlYWRlcnMubGVuZ3RoO3ZhciBh PXRoaXMuaGVhZGVycy5pbmRleChuLnRhcmdldCk7dmFyIHA9ZmFsc2U7c3dpdGNoKG4ua2V5Q29kZSl7 Y2FzZSBsLlJJR0hUOmNhc2UgbC5ET1dOOnA9dGhpcy5oZWFkZXJzWyhhKzEpJW9dO2JyZWFrO2Nhc2Ug bC5MRUZUOmNhc2UgbC5VUDpwPXRoaXMuaGVhZGVyc1soYS0xK28pJW9dO2JyZWFrO2Nhc2UgbC5TUEFD RTpjYXNlIGwuRU5URVI6cmV0dXJuIHRoaXMuX2NsaWNrSGFuZGxlcih7dGFyZ2V0Om4udGFyZ2V0fSxu LnRhcmdldCl9aWYocCl7YihuLnRhcmdldCkuYXR0cigidGFiSW5kZXgiLCItMSIpO2IocCkuYXR0cigi dGFiSW5kZXgiLCIwIik7cC5mb2N1cygpO3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX0scmVzaXplOmZ1 bmN0aW9uKCl7dmFyIGY9dGhpcy5vcHRpb25zLGc7aWYoZi5maWxsU3BhY2Upe2lmKGIuYnJvd3Nlci5t c2llKXt2YXIgYT10aGlzLmVsZW1lbnQucGFyZW50KCkuY3NzKCJvdmVyZmxvdyIpO3RoaXMuZWxlbWVu dC5wYXJlbnQoKS5jc3MoIm92ZXJmbG93IiwiaGlkZGVuIil9Zz10aGlzLmVsZW1lbnQucGFyZW50KCku aGVpZ2h0KCk7aWYoYi5icm93c2VyLm1zaWUpe3RoaXMuZWxlbWVudC5wYXJlbnQoKS5jc3MoIm92ZXJm bG93IixhKX10aGlzLmhlYWRlcnMuZWFjaChmdW5jdGlvbigpe2ctPWIodGhpcykub3V0ZXJIZWlnaHQo KX0pO3ZhciBoPTA7dGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCl7aD1NYXRoLm1heCho LGIodGhpcykuaW5uZXJIZWlnaHQoKS1iKHRoaXMpLmhlaWdodCgpKX0pLmhlaWdodChNYXRoLm1heCgw LGctaCkpLmNzcygib3ZlcmZsb3ciLCJhdXRvIil9ZWxzZXtpZihmLmF1dG9IZWlnaHQpe2c9MDt0aGlz LmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXtnPU1hdGgubWF4KGcsYih0aGlzKS5vdXRlckhl aWdodCgpKX0pLmhlaWdodChnKX19fSxhY3RpdmF0ZTpmdW5jdGlvbihhKXt2YXIgZD10aGlzLl9maW5k QWN0aXZlKGEpWzBdO3RoaXMuX2NsaWNrSGFuZGxlcih7dGFyZ2V0OmR9LGQpfSxfZmluZEFjdGl2ZTpm dW5jdGlvbihhKXtyZXR1cm4gYT90eXBlb2YgYT09Im51bWJlciI/dGhpcy5oZWFkZXJzLmZpbHRlcigi OmVxKCIrYSsiKSIpOnRoaXMuaGVhZGVycy5ub3QodGhpcy5oZWFkZXJzLm5vdChhKSk6YT09PWZhbHNl P2IoW10pOnRoaXMuaGVhZGVycy5maWx0ZXIoIjplcSgwKSIpfSxfY2xpY2tIYW5kbGVyOmZ1bmN0aW9u KHUscCl7dmFyIHI9dGhpcy5vcHRpb25zO2lmKHIuZGlzYWJsZWQpe3JldHVybiBmYWxzZX1pZighdS50 YXJnZXQmJnIuY29sbGFwc2libGUpe3RoaXMuYWN0aXZlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3Rp dmUgdWktY29ybmVyLXRvcCIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwi KS5maW5kKCIudWktaWNvbiIpLnJlbW92ZUNsYXNzKHIuaWNvbnMuaGVhZGVyU2VsZWN0ZWQpLmFkZENs YXNzKHIuaWNvbnMuaGVhZGVyKTt0aGlzLmFjdGl2ZS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlv bi1jb250ZW50LWFjdGl2ZSIpO3ZhciBuPXRoaXMuYWN0aXZlLm5leHQoKSxxPXtvcHRpb25zOnIsbmV3 SGVhZGVyOmIoW10pLG9sZEhlYWRlcjpyLmFjdGl2ZSxuZXdDb250ZW50OmIoW10pLG9sZENvbnRlbnQ6 bn0scz0odGhpcy5hY3RpdmU9YihbXSkpO3RoaXMuX3RvZ2dsZShzLG4scSk7cmV0dXJuIGZhbHNlfXZh ciBvPWIodS5jdXJyZW50VGFyZ2V0fHxwKTt2YXIgbD1vWzBdPT10aGlzLmFjdGl2ZVswXTtpZih0aGlz LnJ1bm5pbmd8fCghci5jb2xsYXBzaWJsZSYmbCkpe3JldHVybiBmYWxzZX10aGlzLmFjdGl2ZS5yZW1v dmVDbGFzcygidWktc3RhdGUtYWN0aXZlIHVpLWNvcm5lci10b3AiKS5hZGRDbGFzcygidWktc3RhdGUt ZGVmYXVsdCB1aS1jb3JuZXItYWxsIikuZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyhyLmljb25z LmhlYWRlclNlbGVjdGVkKS5hZGRDbGFzcyhyLmljb25zLmhlYWRlcik7dGhpcy5hY3RpdmUubmV4dCgp LmFkZENsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKTtpZighbCl7by5yZW1vdmVDbGFz cygidWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIikuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2 ZSB1aS1jb3JuZXItdG9wIikuZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyhyLmljb25zLmhlYWRl cikuYWRkQ2xhc3Moci5pY29ucy5oZWFkZXJTZWxlY3RlZCk7by5uZXh0KCkuYWRkQ2xhc3MoInVpLWFj Y29yZGlvbi1jb250ZW50LWFjdGl2ZSIpfXZhciBzPW8ubmV4dCgpLG49dGhpcy5hY3RpdmUubmV4dCgp LHE9e29wdGlvbnM6cixuZXdIZWFkZXI6bCYmci5jb2xsYXBzaWJsZT9iKFtdKTpvLG9sZEhlYWRlcjp0 aGlzLmFjdGl2ZSxuZXdDb250ZW50OmwmJnIuY29sbGFwc2libGU/YihbXSk6cy5maW5kKCI+ICoiKSxv bGRDb250ZW50Om4uZmluZCgiPiAqIil9LGE9dGhpcy5oZWFkZXJzLmluZGV4KHRoaXMuYWN0aXZlWzBd KT50aGlzLmhlYWRlcnMuaW5kZXgob1swXSk7dGhpcy5hY3RpdmU9bD9iKFtdKTpvO3RoaXMuX3RvZ2ds ZShzLG4scSxsLGEpO3JldHVybiBmYWxzZX0sX3RvZ2dsZTpmdW5jdGlvbih5LHEscyxwLG8pe3ZhciB3 PXRoaXMub3B0aW9ucyxhPXRoaXM7dGhpcy50b1Nob3c9eTt0aGlzLnRvSGlkZT1xO3RoaXMuZGF0YT1z O3ZhciB4PWZ1bmN0aW9uKCl7aWYoIWEpe3JldHVybn1yZXR1cm4gYS5fY29tcGxldGVkLmFwcGx5KGEs YXJndW1lbnRzKX07dGhpcy5fdHJpZ2dlcigiY2hhbmdlc3RhcnQiLG51bGwsdGhpcy5kYXRhKTt0aGlz LnJ1bm5pbmc9cS5zaXplKCk9PT0wP3kuc2l6ZSgpOnEuc2l6ZSgpO2lmKHcuYW5pbWF0ZWQpe3ZhciB1 PXt9O2lmKHcuY29sbGFwc2libGUmJnApe3U9e3RvU2hvdzpiKFtdKSx0b0hpZGU6cSxjb21wbGV0ZTp4 LGRvd246byxhdXRvSGVpZ2h0OncuYXV0b0hlaWdodHx8dy5maWxsU3BhY2V9fWVsc2V7dT17dG9TaG93 OnksdG9IaWRlOnEsY29tcGxldGU6eCxkb3duOm8sYXV0b0hlaWdodDp3LmF1dG9IZWlnaHR8fHcuZmls bFNwYWNlfX1pZighdy5wcm94aWVkKXt3LnByb3hpZWQ9dy5hbmltYXRlZH1pZighdy5wcm94aWVkRHVy YXRpb24pe3cucHJveGllZER1cmF0aW9uPXcuZHVyYXRpb259dy5hbmltYXRlZD1iLmlzRnVuY3Rpb24o dy5wcm94aWVkKT93LnByb3hpZWQodSk6dy5wcm94aWVkO3cuZHVyYXRpb249Yi5pc0Z1bmN0aW9uKHcu cHJveGllZER1cmF0aW9uKT93LnByb3hpZWREdXJhdGlvbih1KTp3LnByb3hpZWREdXJhdGlvbjt2YXIg bj1iLnVpLmFjY29yZGlvbi5hbmltYXRpb25zLHY9dy5kdXJhdGlvbixyPXcuYW5pbWF0ZWQ7aWYoIW5b cl0pe25bcl09ZnVuY3Rpb24oYyl7dGhpcy5zbGlkZShjLHtlYXNpbmc6cixkdXJhdGlvbjp2fHw3MDB9 KX19bltyXSh1KX1lbHNle2lmKHcuY29sbGFwc2libGUmJnApe3kudG9nZ2xlKCl9ZWxzZXtxLmhpZGUo KTt5LnNob3coKX14KHRydWUpfXEucHJldigpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLmF0 dHIoInRhYkluZGV4IiwiLTEiKS5ibHVyKCk7eS5wcmV2KCkuYXR0cigiYXJpYS1leHBhbmRlZCIsInRy dWUiKS5hdHRyKCJ0YWJJbmRleCIsIjAiKS5mb2N1cygpfSxfY29tcGxldGVkOmZ1bmN0aW9uKGEpe3Zh ciBkPXRoaXMub3B0aW9uczt0aGlzLnJ1bm5pbmc9YT8wOi0tdGhpcy5ydW5uaW5nO2lmKHRoaXMucnVu bmluZyl7cmV0dXJufWlmKGQuY2xlYXJTdHlsZSl7dGhpcy50b1Nob3cuYWRkKHRoaXMudG9IaWRlKS5j c3Moe2hlaWdodDoiIixvdmVyZmxvdzoiIn0pfXRoaXMuX3RyaWdnZXIoImNoYW5nZSIsbnVsbCx0aGlz LmRhdGEpfX0pO2IuZXh0ZW5kKGIudWkuYWNjb3JkaW9uLHt2ZXJzaW9uOiIxLjcuMiIsZGVmYXVsdHM6 e2FjdGl2ZTpudWxsLGFsd2F5c09wZW46dHJ1ZSxhbmltYXRlZDoic2xpZGUiLGF1dG9IZWlnaHQ6dHJ1 ZSxjbGVhclN0eWxlOmZhbHNlLGNvbGxhcHNpYmxlOmZhbHNlLGV2ZW50OiJjbGljayIsZmlsbFNwYWNl OmZhbHNlLGhlYWRlcjoiPiBsaSA+IDpmaXJzdC1jaGlsZCw+IDpub3QobGkpOmV2ZW4iLGljb25zOnto ZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1lIixoZWFkZXJTZWxlY3RlZDoidWktaWNvbi10cmlhbmds ZS0xLXMifSxuYXZpZ2F0aW9uOmZhbHNlLG5hdmlnYXRpb25GaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5ocmVmLnRvTG93ZXJDYXNlKCk9PWxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKX19LGFuaW1h dGlvbnM6e3NsaWRlOmZ1bmN0aW9uKGEsbil7YT1iLmV4dGVuZCh7ZWFzaW5nOiJzd2luZyIsZHVyYXRp b246MzAwfSxhLG4pO2lmKCFhLnRvSGlkZS5zaXplKCkpe2EudG9TaG93LmFuaW1hdGUoe2hlaWdodDoi c2hvdyJ9LGEpO3JldHVybn1pZighYS50b1Nob3cuc2l6ZSgpKXthLnRvSGlkZS5hbmltYXRlKHtoZWln aHQ6ImhpZGUifSxhKTtyZXR1cm59dmFyIHM9YS50b1Nob3cuY3NzKCJvdmVyZmxvdyIpLG8scj17fSxw PXt9LHE9WyJoZWlnaHQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLHU7dmFyIGw9YS50b1No b3c7dT1sWzBdLnN0eWxlLndpZHRoO2wud2lkdGgocGFyc2VJbnQobC5wYXJlbnQoKS53aWR0aCgpLDEw KS1wYXJzZUludChsLmNzcygicGFkZGluZ0xlZnQiKSwxMCktcGFyc2VJbnQobC5jc3MoInBhZGRpbmdS aWdodCIpLDEwKS0ocGFyc2VJbnQobC5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCktKHBhcnNl SW50KGwuY3NzKCJib3JkZXJSaWdodFdpZHRoIiksMTApfHwwKSk7Yi5lYWNoKHEsZnVuY3Rpb24oZSxj KXtwW2NdPSJoaWRlIjt2YXIgZD0oIiIrYi5jc3MoYS50b1Nob3dbMF0sYykpLm1hdGNoKC9eKFtcZCst Ll0rKSguKikkLyk7cltjXT17dmFsdWU6ZFsxXSx1bml0OmRbMl18fCJweCJ9fSk7YS50b1Nob3cuY3Nz KHtoZWlnaHQ6MCxvdmVyZmxvdzoiaGlkZGVuIn0pLnNob3coKTthLnRvSGlkZS5maWx0ZXIoIjpoaWRk ZW4iKS5lYWNoKGEuY29tcGxldGUpLmVuZCgpLmZpbHRlcigiOnZpc2libGUiKS5hbmltYXRlKHAse3N0 ZXA6ZnVuY3Rpb24oZCxjKXtpZihjLnByb3A9PSJoZWlnaHQiKXtvPShjLm5vdy1jLnN0YXJ0KS8oYy5l bmQtYy5zdGFydCl9YS50b1Nob3dbMF0uc3R5bGVbYy5wcm9wXT0obypyW2MucHJvcF0udmFsdWUpK3Jb Yy5wcm9wXS51bml0fSxkdXJhdGlvbjphLmR1cmF0aW9uLGVhc2luZzphLmVhc2luZyxjb21wbGV0ZTpm dW5jdGlvbigpe2lmKCFhLmF1dG9IZWlnaHQpe2EudG9TaG93LmNzcygiaGVpZ2h0IiwiIil9YS50b1No b3cuY3NzKCJ3aWR0aCIsdSk7YS50b1Nob3cuY3NzKHtvdmVyZmxvdzpzfSk7YS5jb21wbGV0ZSgpfX0p fSxib3VuY2VzbGlkZTpmdW5jdGlvbihhKXt0aGlzLnNsaWRlKGEse2Vhc2luZzphLmRvd24/ImVhc2VP dXRCb3VuY2UiOiJzd2luZyIsZHVyYXRpb246YS5kb3duPzEwMDA6MjAwfSl9LGVhc2VzbGlkZTpmdW5j dGlvbihhKXt0aGlzLnNsaWRlKGEse2Vhc2luZzoiZWFzZWlub3V0IixkdXJhdGlvbjo3MDB9KX19fSl9 KShqUXVlcnkpOyhmdW5jdGlvbigkKXskLmV4dGVuZCgkLnVpLHtkYXRlcGlja2VyOnt2ZXJzaW9uOiIx LjcuMiJ9fSk7dmFyIFBST1BfTkFNRT0iZGF0ZXBpY2tlciI7ZnVuY3Rpb24gRGF0ZXBpY2tlcigpe3Ro aXMuZGVidWc9ZmFsc2U7dGhpcy5fY3VySW5zdD1udWxsO3RoaXMuX2tleUV2ZW50PWZhbHNlO3RoaXMu X2Rpc2FibGVkSW5wdXRzPVtdO3RoaXMuX2RhdGVwaWNrZXJTaG93aW5nPWZhbHNlO3RoaXMuX2luRGlh bG9nPWZhbHNlO3RoaXMuX21haW5EaXZJZD0idWktZGF0ZXBpY2tlci1kaXYiO3RoaXMuX2lubGluZUNs YXNzPSJ1aS1kYXRlcGlja2VyLWlubGluZSI7dGhpcy5fYXBwZW5kQ2xhc3M9InVpLWRhdGVwaWNrZXIt YXBwZW5kIjt0aGlzLl90cmlnZ2VyQ2xhc3M9InVpLWRhdGVwaWNrZXItdHJpZ2dlciI7dGhpcy5fZGlh bG9nQ2xhc3M9InVpLWRhdGVwaWNrZXItZGlhbG9nIjt0aGlzLl9kaXNhYmxlQ2xhc3M9InVpLWRhdGVw aWNrZXItZGlzYWJsZWQiO3RoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzPSJ1aS1kYXRlcGlja2VyLXVuc2Vs ZWN0YWJsZSI7dGhpcy5fY3VycmVudENsYXNzPSJ1aS1kYXRlcGlja2VyLWN1cnJlbnQtZGF5Ijt0aGlz Ll9kYXlPdmVyQ2xhc3M9InVpLWRhdGVwaWNrZXItZGF5cy1jZWxsLW92ZXIiO3RoaXMucmVnaW9uYWw9 W107dGhpcy5yZWdpb25hbFsiIl09e2Nsb3NlVGV4dDoiRG9uZSIscHJldlRleHQ6IlByZXYiLG5leHRU ZXh0OiJOZXh0IixjdXJyZW50VGV4dDoiVG9kYXkiLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVh cnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIi LCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZl YiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRl YyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJz ZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwi V2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRo IiwiRnIiLCJTYSJdLGRhdGVGb3JtYXQ6Im1tL2RkL3l5IixmaXJzdERheTowLGlzUlRMOmZhbHNlfTt0 aGlzLl9kZWZhdWx0cz17c2hvd09uOiJmb2N1cyIsc2hvd0FuaW06InNob3ciLHNob3dPcHRpb25zOnt9 LGRlZmF1bHREYXRlOm51bGwsYXBwZW5kVGV4dDoiIixidXR0b25UZXh0OiIuLi4iLGJ1dHRvbkltYWdl OiIiLGJ1dHRvbkltYWdlT25seTpmYWxzZSxoaWRlSWZOb1ByZXZOZXh0OmZhbHNlLG5hdmlnYXRpb25B c0RhdGVGb3JtYXQ6ZmFsc2UsZ290b0N1cnJlbnQ6ZmFsc2UsY2hhbmdlTW9udGg6ZmFsc2UsY2hhbmdl WWVhcjpmYWxzZSxzaG93TW9udGhBZnRlclllYXI6ZmFsc2UseWVhclJhbmdlOiItMTA6KzEwIixzaG93 T3RoZXJNb250aHM6ZmFsc2UsY2FsY3VsYXRlV2Vlazp0aGlzLmlzbzg2MDFXZWVrLHNob3J0WWVhckN1 dG9mZjoiKzEwIixtaW5EYXRlOm51bGwsbWF4RGF0ZTpudWxsLGR1cmF0aW9uOiJub3JtYWwiLGJlZm9y ZVNob3dEYXk6bnVsbCxiZWZvcmVTaG93Om51bGwsb25TZWxlY3Q6bnVsbCxvbkNoYW5nZU1vbnRoWWVh cjpudWxsLG9uQ2xvc2U6bnVsbCxudW1iZXJPZk1vbnRoczoxLHNob3dDdXJyZW50QXRQb3M6MCxzdGVw TW9udGhzOjEsc3RlcEJpZ01vbnRoczoxMixhbHRGaWVsZDoiIixhbHRGb3JtYXQ6IiIsY29uc3RyYWlu SW5wdXQ6dHJ1ZSxzaG93QnV0dG9uUGFuZWw6ZmFsc2V9OyQuZXh0ZW5kKHRoaXMuX2RlZmF1bHRzLHRo aXMucmVnaW9uYWxbIiJdKTt0aGlzLmRwRGl2PSQoJzxkaXYgaWQ9IicrdGhpcy5fbWFpbkRpdklkKyci IGNsYXNzPSJ1aS1kYXRlcGlja2VyIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1oZWxwZXIt Y2xlYXJmaXggdWktY29ybmVyLWFsbCB1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiPjwvZGl2Picp fSQuZXh0ZW5kKERhdGVwaWNrZXIucHJvdG90eXBlLHttYXJrZXJDbGFzc05hbWU6Imhhc0RhdGVwaWNr ZXIiLGxvZzpmdW5jdGlvbigpe2lmKHRoaXMuZGVidWcpe2NvbnNvbGUubG9nLmFwcGx5KCIiLGFyZ3Vt ZW50cyl9fSxzZXREZWZhdWx0czpmdW5jdGlvbihzZXR0aW5ncyl7ZXh0ZW5kUmVtb3ZlKHRoaXMuX2Rl ZmF1bHRzLHNldHRpbmdzfHx7fSk7cmV0dXJuIHRoaXN9LF9hdHRhY2hEYXRlcGlja2VyOmZ1bmN0aW9u KHRhcmdldCxzZXR0aW5ncyl7dmFyIGlubGluZVNldHRpbmdzPW51bGw7Zm9yKHZhciBhdHRyTmFtZSBp biB0aGlzLl9kZWZhdWx0cyl7dmFyIGF0dHJWYWx1ZT10YXJnZXQuZ2V0QXR0cmlidXRlKCJkYXRlOiIr YXR0ck5hbWUpO2lmKGF0dHJWYWx1ZSl7aW5saW5lU2V0dGluZ3M9aW5saW5lU2V0dGluZ3N8fHt9O3Ry eXtpbmxpbmVTZXR0aW5nc1thdHRyTmFtZV09ZXZhbChhdHRyVmFsdWUpfWNhdGNoKGVycil7aW5saW5l U2V0dGluZ3NbYXR0ck5hbWVdPWF0dHJWYWx1ZX19fXZhciBub2RlTmFtZT10YXJnZXQubm9kZU5hbWUu dG9Mb3dlckNhc2UoKTt2YXIgaW5saW5lPShub2RlTmFtZT09ImRpdiJ8fG5vZGVOYW1lPT0ic3BhbiIp O2lmKCF0YXJnZXQuaWQpe3RhcmdldC5pZD0iZHAiKygrK3RoaXMudXVpZCl9dmFyIGluc3Q9dGhpcy5f bmV3SW5zdCgkKHRhcmdldCksaW5saW5lKTtpbnN0LnNldHRpbmdzPSQuZXh0ZW5kKHt9LHNldHRpbmdz fHx7fSxpbmxpbmVTZXR0aW5nc3x8e30pO2lmKG5vZGVOYW1lPT0iaW5wdXQiKXt0aGlzLl9jb25uZWN0 RGF0ZXBpY2tlcih0YXJnZXQsaW5zdCl9ZWxzZXtpZihpbmxpbmUpe3RoaXMuX2lubGluZURhdGVwaWNr ZXIodGFyZ2V0LGluc3QpfX19LF9uZXdJbnN0OmZ1bmN0aW9uKHRhcmdldCxpbmxpbmUpe3ZhciBpZD10 YXJnZXRbMF0uaWQucmVwbGFjZSgvKFs6XFtcXVwuXSkvZywiXFxcXCQxIik7cmV0dXJue2lkOmlkLGlu cHV0OnRhcmdldCxzZWxlY3RlZERheTowLHNlbGVjdGVkTW9udGg6MCxzZWxlY3RlZFllYXI6MCxkcmF3 TW9udGg6MCxkcmF3WWVhcjowLGlubGluZTppbmxpbmUsZHBEaXY6KCFpbmxpbmU/dGhpcy5kcERpdjok KCc8ZGl2IGNsYXNzPSInK3RoaXMuX2lubGluZUNsYXNzKycgdWktZGF0ZXBpY2tlciB1aS13aWRnZXQg dWktd2lkZ2V0LWNvbnRlbnQgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci1hbGwiPjwvZGl2Picp KX19LF9jb25uZWN0RGF0ZXBpY2tlcjpmdW5jdGlvbih0YXJnZXQsaW5zdCl7dmFyIGlucHV0PSQodGFy Z2V0KTtpbnN0LmFwcGVuZD0kKFtdKTtpbnN0LnRyaWdnZXI9JChbXSk7aWYoaW5wdXQuaGFzQ2xhc3Mo dGhpcy5tYXJrZXJDbGFzc05hbWUpKXtyZXR1cm59dmFyIGFwcGVuZFRleHQ9dGhpcy5fZ2V0KGluc3Qs ImFwcGVuZFRleHQiKTt2YXIgaXNSVEw9dGhpcy5fZ2V0KGluc3QsImlzUlRMIik7aWYoYXBwZW5kVGV4 dCl7aW5zdC5hcHBlbmQ9JCgnPHNwYW4gY2xhc3M9IicrdGhpcy5fYXBwZW5kQ2xhc3MrJyI+JythcHBl bmRUZXh0KyI8L3NwYW4+Iik7aW5wdXRbaXNSVEw/ImJlZm9yZSI6ImFmdGVyIl0oaW5zdC5hcHBlbmQp fXZhciBzaG93T249dGhpcy5fZ2V0KGluc3QsInNob3dPbiIpO2lmKHNob3dPbj09ImZvY3VzInx8c2hv d09uPT0iYm90aCIpe2lucHV0LmZvY3VzKHRoaXMuX3Nob3dEYXRlcGlja2VyKX1pZihzaG93T249PSJi dXR0b24ifHxzaG93T249PSJib3RoIil7dmFyIGJ1dHRvblRleHQ9dGhpcy5fZ2V0KGluc3QsImJ1dHRv blRleHQiKTt2YXIgYnV0dG9uSW1hZ2U9dGhpcy5fZ2V0KGluc3QsImJ1dHRvbkltYWdlIik7aW5zdC50 cmlnZ2VyPSQodGhpcy5fZ2V0KGluc3QsImJ1dHRvbkltYWdlT25seSIpPyQoIjxpbWcvPiIpLmFkZENs YXNzKHRoaXMuX3RyaWdnZXJDbGFzcykuYXR0cih7c3JjOmJ1dHRvbkltYWdlLGFsdDpidXR0b25UZXh0 LHRpdGxlOmJ1dHRvblRleHR9KTokKCc8YnV0dG9uIHR5cGU9ImJ1dHRvbiI+PC9idXR0b24+JykuYWRk Q2xhc3ModGhpcy5fdHJpZ2dlckNsYXNzKS5odG1sKGJ1dHRvbkltYWdlPT0iIj9idXR0b25UZXh0OiQo IjxpbWcvPiIpLmF0dHIoe3NyYzpidXR0b25JbWFnZSxhbHQ6YnV0dG9uVGV4dCx0aXRsZTpidXR0b25U ZXh0fSkpKTtpbnB1dFtpc1JUTD8iYmVmb3JlIjoiYWZ0ZXIiXShpbnN0LnRyaWdnZXIpO2luc3QudHJp Z2dlci5jbGljayhmdW5jdGlvbigpe2lmKCQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmcmJiQu ZGF0ZXBpY2tlci5fbGFzdElucHV0PT10YXJnZXQpeyQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIo KX1lbHNleyQuZGF0ZXBpY2tlci5fc2hvd0RhdGVwaWNrZXIodGFyZ2V0KX1yZXR1cm4gZmFsc2V9KX1p bnB1dC5hZGRDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkua2V5ZG93bih0aGlzLl9kb0tleURvd24p LmtleXByZXNzKHRoaXMuX2RvS2V5UHJlc3MpLmJpbmQoInNldERhdGEuZGF0ZXBpY2tlciIsZnVuY3Rp b24oZXZlbnQsa2V5LHZhbHVlKXtpbnN0LnNldHRpbmdzW2tleV09dmFsdWV9KS5iaW5kKCJnZXREYXRh LmRhdGVwaWNrZXIiLGZ1bmN0aW9uKGV2ZW50LGtleSl7cmV0dXJuIHRoaXMuX2dldChpbnN0LGtleSl9 KTskLmRhdGEodGFyZ2V0LFBST1BfTkFNRSxpbnN0KX0sX2lubGluZURhdGVwaWNrZXI6ZnVuY3Rpb24o dGFyZ2V0LGluc3Qpe3ZhciBkaXZTcGFuPSQodGFyZ2V0KTtpZihkaXZTcGFuLmhhc0NsYXNzKHRoaXMu bWFya2VyQ2xhc3NOYW1lKSl7cmV0dXJufWRpdlNwYW4uYWRkQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05h bWUpLmFwcGVuZChpbnN0LmRwRGl2KS5iaW5kKCJzZXREYXRhLmRhdGVwaWNrZXIiLGZ1bmN0aW9uKGV2 ZW50LGtleSx2YWx1ZSl7aW5zdC5zZXR0aW5nc1trZXldPXZhbHVlfSkuYmluZCgiZ2V0RGF0YS5kYXRl cGlja2VyIixmdW5jdGlvbihldmVudCxrZXkpe3JldHVybiB0aGlzLl9nZXQoaW5zdCxrZXkpfSk7JC5k YXRhKHRhcmdldCxQUk9QX05BTUUsaW5zdCk7dGhpcy5fc2V0RGF0ZShpbnN0LHRoaXMuX2dldERlZmF1 bHREYXRlKGluc3QpKTt0aGlzLl91cGRhdGVEYXRlcGlja2VyKGluc3QpO3RoaXMuX3VwZGF0ZUFsdGVy bmF0ZShpbnN0KX0sX2RpYWxvZ0RhdGVwaWNrZXI6ZnVuY3Rpb24oaW5wdXQsZGF0ZVRleHQsb25TZWxl Y3Qsc2V0dGluZ3MscG9zKXt2YXIgaW5zdD10aGlzLl9kaWFsb2dJbnN0O2lmKCFpbnN0KXt2YXIgaWQ9 ImRwIisoKyt0aGlzLnV1aWQpO3RoaXMuX2RpYWxvZ0lucHV0PSQoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBp ZD0iJytpZCsnIiBzaXplPSIxIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IC0xMDBweDsi Lz4nKTt0aGlzLl9kaWFsb2dJbnB1dC5rZXlkb3duKHRoaXMuX2RvS2V5RG93bik7JCgiYm9keSIpLmFw cGVuZCh0aGlzLl9kaWFsb2dJbnB1dCk7aW5zdD10aGlzLl9kaWFsb2dJbnN0PXRoaXMuX25ld0luc3Qo dGhpcy5fZGlhbG9nSW5wdXQsZmFsc2UpO2luc3Quc2V0dGluZ3M9e307JC5kYXRhKHRoaXMuX2RpYWxv Z0lucHV0WzBdLFBST1BfTkFNRSxpbnN0KX1leHRlbmRSZW1vdmUoaW5zdC5zZXR0aW5ncyxzZXR0aW5n c3x8e30pO3RoaXMuX2RpYWxvZ0lucHV0LnZhbChkYXRlVGV4dCk7dGhpcy5fcG9zPShwb3M/KHBvcy5s ZW5ndGg/cG9zOltwb3MucGFnZVgscG9zLnBhZ2VZXSk6bnVsbCk7aWYoIXRoaXMuX3Bvcyl7dmFyIGJy b3dzZXJXaWR0aD13aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVu dFdpZHRofHxkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO3ZhciBicm93c2VySGVpZ2h0PXdpbmRvdy5p bm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8ZG9jdW1lbnQu Ym9keS5jbGllbnRIZWlnaHQ7dmFyIHNjcm9sbFg9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9s bExlZnR8fGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdDt2YXIgc2Nyb2xsWT1kb2N1bWVudC5kb2N1bWVu dEVsZW1lbnQuc2Nyb2xsVG9wfHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDt0aGlzLl9wb3M9Wyhicm93 c2VyV2lkdGgvMiktMTAwK3Njcm9sbFgsKGJyb3dzZXJIZWlnaHQvMiktMTUwK3Njcm9sbFldfXRoaXMu X2RpYWxvZ0lucHV0LmNzcygibGVmdCIsdGhpcy5fcG9zWzBdKyJweCIpLmNzcygidG9wIix0aGlzLl9w b3NbMV0rInB4Iik7aW5zdC5zZXR0aW5ncy5vblNlbGVjdD1vblNlbGVjdDt0aGlzLl9pbkRpYWxvZz10 cnVlO3RoaXMuZHBEaXYuYWRkQ2xhc3ModGhpcy5fZGlhbG9nQ2xhc3MpO3RoaXMuX3Nob3dEYXRlcGlj a2VyKHRoaXMuX2RpYWxvZ0lucHV0WzBdKTtpZigkLmJsb2NrVUkpeyQuYmxvY2tVSSh0aGlzLmRwRGl2 KX0kLmRhdGEodGhpcy5fZGlhbG9nSW5wdXRbMF0sUFJPUF9OQU1FLGluc3QpO3JldHVybiB0aGlzfSxf ZGVzdHJveURhdGVwaWNrZXI6ZnVuY3Rpb24odGFyZ2V0KXt2YXIgJHRhcmdldD0kKHRhcmdldCk7dmFy IGluc3Q9JC5kYXRhKHRhcmdldCxQUk9QX05BTUUpO2lmKCEkdGFyZ2V0Lmhhc0NsYXNzKHRoaXMubWFy a2VyQ2xhc3NOYW1lKSl7cmV0dXJufXZhciBub2RlTmFtZT10YXJnZXQubm9kZU5hbWUudG9Mb3dlckNh c2UoKTskLnJlbW92ZURhdGEodGFyZ2V0LFBST1BfTkFNRSk7aWYobm9kZU5hbWU9PSJpbnB1dCIpe2lu c3QuYXBwZW5kLnJlbW92ZSgpO2luc3QudHJpZ2dlci5yZW1vdmUoKTskdGFyZ2V0LnJlbW92ZUNsYXNz KHRoaXMubWFya2VyQ2xhc3NOYW1lKS51bmJpbmQoImZvY3VzIix0aGlzLl9zaG93RGF0ZXBpY2tlciku dW5iaW5kKCJrZXlkb3duIix0aGlzLl9kb0tleURvd24pLnVuYmluZCgia2V5cHJlc3MiLHRoaXMuX2Rv S2V5UHJlc3MpfWVsc2V7aWYobm9kZU5hbWU9PSJkaXYifHxub2RlTmFtZT09InNwYW4iKXskdGFyZ2V0 LnJlbW92ZUNsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKS5lbXB0eSgpfX19LF9lbmFibGVEYXRlcGlj a2VyOmZ1bmN0aW9uKHRhcmdldCl7dmFyICR0YXJnZXQ9JCh0YXJnZXQpO3ZhciBpbnN0PSQuZGF0YSh0 YXJnZXQsUFJPUF9OQU1FKTtpZighJHRhcmdldC5oYXNDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkp e3JldHVybn12YXIgbm9kZU5hbWU9dGFyZ2V0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYobm9kZU5h bWU9PSJpbnB1dCIpe3RhcmdldC5kaXNhYmxlZD1mYWxzZTtpbnN0LnRyaWdnZXIuZmlsdGVyKCJidXR0 b24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD1mYWxzZX0pLmVuZCgpLmZpbHRlcigiaW1n IikuY3NzKHtvcGFjaXR5OiIxLjAiLGN1cnNvcjoiIn0pfWVsc2V7aWYobm9kZU5hbWU9PSJkaXYifHxu b2RlTmFtZT09InNwYW4iKXt2YXIgaW5saW5lPSR0YXJnZXQuY2hpbGRyZW4oIi4iK3RoaXMuX2lubGlu ZUNsYXNzKTtpbmxpbmUuY2hpbGRyZW4oKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKX19 dGhpcy5fZGlzYWJsZWRJbnB1dHM9JC5tYXAodGhpcy5fZGlzYWJsZWRJbnB1dHMsZnVuY3Rpb24odmFs dWUpe3JldHVybih2YWx1ZT09dGFyZ2V0P251bGw6dmFsdWUpfSl9LF9kaXNhYmxlRGF0ZXBpY2tlcjpm dW5jdGlvbih0YXJnZXQpe3ZhciAkdGFyZ2V0PSQodGFyZ2V0KTt2YXIgaW5zdD0kLmRhdGEodGFyZ2V0 LFBST1BfTkFNRSk7aWYoISR0YXJnZXQuaGFzQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpKXtyZXR1 cm59dmFyIG5vZGVOYW1lPXRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKG5vZGVOYW1lPT0i aW5wdXQiKXt0YXJnZXQuZGlzYWJsZWQ9dHJ1ZTtpbnN0LnRyaWdnZXIuZmlsdGVyKCJidXR0b24iKS5l YWNoKGZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD10cnVlfSkuZW5kKCkuZmlsdGVyKCJpbWciKS5jc3Mo e29wYWNpdHk6IjAuNSIsY3Vyc29yOiJkZWZhdWx0In0pfWVsc2V7aWYobm9kZU5hbWU9PSJkaXYifHxu b2RlTmFtZT09InNwYW4iKXt2YXIgaW5saW5lPSR0YXJnZXQuY2hpbGRyZW4oIi4iK3RoaXMuX2lubGlu ZUNsYXNzKTtpbmxpbmUuY2hpbGRyZW4oKS5hZGRDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKX19dGhp cy5fZGlzYWJsZWRJbnB1dHM9JC5tYXAodGhpcy5fZGlzYWJsZWRJbnB1dHMsZnVuY3Rpb24odmFsdWUp e3JldHVybih2YWx1ZT09dGFyZ2V0P251bGw6dmFsdWUpfSk7dGhpcy5fZGlzYWJsZWRJbnB1dHNbdGhp cy5fZGlzYWJsZWRJbnB1dHMubGVuZ3RoXT10YXJnZXR9LF9pc0Rpc2FibGVkRGF0ZXBpY2tlcjpmdW5j dGlvbih0YXJnZXQpe2lmKCF0YXJnZXQpe3JldHVybiBmYWxzZX1mb3IodmFyIGk9MDtpPHRoaXMuX2Rp c2FibGVkSW5wdXRzLmxlbmd0aDtpKyspe2lmKHRoaXMuX2Rpc2FibGVkSW5wdXRzW2ldPT10YXJnZXQp e3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9LF9nZXRJbnN0OmZ1bmN0aW9uKHRhcmdldCl7dHJ5e3Jl dHVybiAkLmRhdGEodGFyZ2V0LFBST1BfTkFNRSl9Y2F0Y2goZXJyKXt0aHJvdyJNaXNzaW5nIGluc3Rh bmNlIGRhdGEgZm9yIHRoaXMgZGF0ZXBpY2tlciJ9fSxfb3B0aW9uRGF0ZXBpY2tlcjpmdW5jdGlvbih0 YXJnZXQsbmFtZSx2YWx1ZSl7dmFyIGluc3Q9dGhpcy5fZ2V0SW5zdCh0YXJnZXQpO2lmKGFyZ3VtZW50 cy5sZW5ndGg9PTImJnR5cGVvZiBuYW1lPT0ic3RyaW5nIil7cmV0dXJuKG5hbWU9PSJkZWZhdWx0cyI/ JC5leHRlbmQoe30sJC5kYXRlcGlja2VyLl9kZWZhdWx0cyk6KGluc3Q/KG5hbWU9PSJhbGwiPyQuZXh0 ZW5kKHt9LGluc3Quc2V0dGluZ3MpOnRoaXMuX2dldChpbnN0LG5hbWUpKTpudWxsKSl9dmFyIHNldHRp bmdzPW5hbWV8fHt9O2lmKHR5cGVvZiBuYW1lPT0ic3RyaW5nIil7c2V0dGluZ3M9e307c2V0dGluZ3Nb bmFtZV09dmFsdWV9aWYoaW5zdCl7aWYodGhpcy5fY3VySW5zdD09aW5zdCl7dGhpcy5faGlkZURhdGVw aWNrZXIobnVsbCl9dmFyIGRhdGU9dGhpcy5fZ2V0RGF0ZURhdGVwaWNrZXIodGFyZ2V0KTtleHRlbmRS ZW1vdmUoaW5zdC5zZXR0aW5ncyxzZXR0aW5ncyk7dGhpcy5fc2V0RGF0ZURhdGVwaWNrZXIodGFyZ2V0 LGRhdGUpO3RoaXMuX3VwZGF0ZURhdGVwaWNrZXIoaW5zdCl9fSxfY2hhbmdlRGF0ZXBpY2tlcjpmdW5j dGlvbih0YXJnZXQsbmFtZSx2YWx1ZSl7dGhpcy5fb3B0aW9uRGF0ZXBpY2tlcih0YXJnZXQsbmFtZSx2 YWx1ZSl9LF9yZWZyZXNoRGF0ZXBpY2tlcjpmdW5jdGlvbih0YXJnZXQpe3ZhciBpbnN0PXRoaXMuX2dl dEluc3QodGFyZ2V0KTtpZihpbnN0KXt0aGlzLl91cGRhdGVEYXRlcGlja2VyKGluc3QpfX0sX3NldERh dGVEYXRlcGlja2VyOmZ1bmN0aW9uKHRhcmdldCxkYXRlLGVuZERhdGUpe3ZhciBpbnN0PXRoaXMuX2dl dEluc3QodGFyZ2V0KTtpZihpbnN0KXt0aGlzLl9zZXREYXRlKGluc3QsZGF0ZSxlbmREYXRlKTt0aGlz Ll91cGRhdGVEYXRlcGlja2VyKGluc3QpO3RoaXMuX3VwZGF0ZUFsdGVybmF0ZShpbnN0KX19LF9nZXRE YXRlRGF0ZXBpY2tlcjpmdW5jdGlvbih0YXJnZXQpe3ZhciBpbnN0PXRoaXMuX2dldEluc3QodGFyZ2V0 KTtpZihpbnN0JiYhaW5zdC5pbmxpbmUpe3RoaXMuX3NldERhdGVGcm9tRmllbGQoaW5zdCl9cmV0dXJu KGluc3Q/dGhpcy5fZ2V0RGF0ZShpbnN0KTpudWxsKX0sX2RvS2V5RG93bjpmdW5jdGlvbihldmVudCl7 dmFyIGluc3Q9JC5kYXRlcGlja2VyLl9nZXRJbnN0KGV2ZW50LnRhcmdldCk7dmFyIGhhbmRsZWQ9dHJ1 ZTt2YXIgaXNSVEw9aW5zdC5kcERpdi5pcygiLnVpLWRhdGVwaWNrZXItcnRsIik7aW5zdC5fa2V5RXZl bnQ9dHJ1ZTtpZigkLmRhdGVwaWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nKXtzd2l0Y2goZXZlbnQua2V5 Q29kZSl7Y2FzZSA5OiQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIobnVsbCwiIik7YnJlYWs7Y2Fz ZSAxMzp2YXIgc2VsPSQoInRkLiIrJC5kYXRlcGlja2VyLl9kYXlPdmVyQ2xhc3MrIiwgdGQuIiskLmRh dGVwaWNrZXIuX2N1cnJlbnRDbGFzcyxpbnN0LmRwRGl2KTtpZihzZWxbMF0peyQuZGF0ZXBpY2tlci5f c2VsZWN0RGF5KGV2ZW50LnRhcmdldCxpbnN0LnNlbGVjdGVkTW9udGgsaW5zdC5zZWxlY3RlZFllYXIs c2VsWzBdKX1lbHNleyQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIobnVsbCwkLmRhdGVwaWNrZXIu X2dldChpbnN0LCJkdXJhdGlvbiIpKX1yZXR1cm4gZmFsc2U7YnJlYWs7Y2FzZSAyNzokLmRhdGVwaWNr ZXIuX2hpZGVEYXRlcGlja2VyKG51bGwsJC5kYXRlcGlja2VyLl9nZXQoaW5zdCwiZHVyYXRpb24iKSk7 YnJlYWs7Y2FzZSAzMzokLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZXZlbnQudGFyZ2V0LChldmVudC5j dHJsS2V5Py0kLmRhdGVwaWNrZXIuX2dldChpbnN0LCJzdGVwQmlnTW9udGhzIik6LSQuZGF0ZXBpY2tl ci5fZ2V0KGluc3QsInN0ZXBNb250aHMiKSksIk0iKTticmVhaztjYXNlIDM0OiQuZGF0ZXBpY2tlci5f YWRqdXN0RGF0ZShldmVudC50YXJnZXQsKGV2ZW50LmN0cmxLZXk/KyQuZGF0ZXBpY2tlci5fZ2V0KGlu c3QsInN0ZXBCaWdNb250aHMiKTorJC5kYXRlcGlja2VyLl9nZXQoaW5zdCwic3RlcE1vbnRocyIpKSwi TSIpO2JyZWFrO2Nhc2UgMzU6aWYoZXZlbnQuY3RybEtleXx8ZXZlbnQubWV0YUtleSl7JC5kYXRlcGlj a2VyLl9jbGVhckRhdGUoZXZlbnQudGFyZ2V0KX1oYW5kbGVkPWV2ZW50LmN0cmxLZXl8fGV2ZW50Lm1l dGFLZXk7YnJlYWs7Y2FzZSAzNjppZihldmVudC5jdHJsS2V5fHxldmVudC5tZXRhS2V5KXskLmRhdGVw aWNrZXIuX2dvdG9Ub2RheShldmVudC50YXJnZXQpfWhhbmRsZWQ9ZXZlbnQuY3RybEtleXx8ZXZlbnQu bWV0YUtleTticmVhaztjYXNlIDM3OmlmKGV2ZW50LmN0cmxLZXl8fGV2ZW50Lm1ldGFLZXkpeyQuZGF0 ZXBpY2tlci5fYWRqdXN0RGF0ZShldmVudC50YXJnZXQsKGlzUlRMPysxOi0xKSwiRCIpfWhhbmRsZWQ9 ZXZlbnQuY3RybEtleXx8ZXZlbnQubWV0YUtleTtpZihldmVudC5vcmlnaW5hbEV2ZW50LmFsdEtleSl7 JC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGV2ZW50LnRhcmdldCwoZXZlbnQuY3RybEtleT8tJC5kYXRl cGlja2VyLl9nZXQoaW5zdCwic3RlcEJpZ01vbnRocyIpOi0kLmRhdGVwaWNrZXIuX2dldChpbnN0LCJz dGVwTW9udGhzIikpLCJNIil9YnJlYWs7Y2FzZSAzODppZihldmVudC5jdHJsS2V5fHxldmVudC5tZXRh S2V5KXskLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZXZlbnQudGFyZ2V0LC03LCJEIil9aGFuZGxlZD1l dmVudC5jdHJsS2V5fHxldmVudC5tZXRhS2V5O2JyZWFrO2Nhc2UgMzk6aWYoZXZlbnQuY3RybEtleXx8 ZXZlbnQubWV0YUtleSl7JC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGV2ZW50LnRhcmdldCwoaXNSVEw/ LTE6KzEpLCJEIil9aGFuZGxlZD1ldmVudC5jdHJsS2V5fHxldmVudC5tZXRhS2V5O2lmKGV2ZW50Lm9y aWdpbmFsRXZlbnQuYWx0S2V5KXskLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZXZlbnQudGFyZ2V0LChl dmVudC5jdHJsS2V5PyskLmRhdGVwaWNrZXIuX2dldChpbnN0LCJzdGVwQmlnTW9udGhzIik6KyQuZGF0 ZXBpY2tlci5fZ2V0KGluc3QsInN0ZXBNb250aHMiKSksIk0iKX1icmVhaztjYXNlIDQwOmlmKGV2ZW50 LmN0cmxLZXl8fGV2ZW50Lm1ldGFLZXkpeyQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShldmVudC50YXJn ZXQsKzcsIkQiKX1oYW5kbGVkPWV2ZW50LmN0cmxLZXl8fGV2ZW50Lm1ldGFLZXk7YnJlYWs7ZGVmYXVs dDpoYW5kbGVkPWZhbHNlfX1lbHNle2lmKGV2ZW50LmtleUNvZGU9PTM2JiZldmVudC5jdHJsS2V5KXsk LmRhdGVwaWNrZXIuX3Nob3dEYXRlcGlja2VyKHRoaXMpfWVsc2V7aGFuZGxlZD1mYWxzZX19aWYoaGFu ZGxlZCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTtldmVudC5zdG9wUHJvcGFnYXRpb24oKX19LF9kb0tl eVByZXNzOmZ1bmN0aW9uKGV2ZW50KXt2YXIgaW5zdD0kLmRhdGVwaWNrZXIuX2dldEluc3QoZXZlbnQu dGFyZ2V0KTtpZigkLmRhdGVwaWNrZXIuX2dldChpbnN0LCJjb25zdHJhaW5JbnB1dCIpKXt2YXIgY2hh cnM9JC5kYXRlcGlja2VyLl9wb3NzaWJsZUNoYXJzKCQuZGF0ZXBpY2tlci5fZ2V0KGluc3QsImRhdGVG b3JtYXQiKSk7dmFyIGNocj1TdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlPT11bmRlZmlu ZWQ/ZXZlbnQua2V5Q29kZTpldmVudC5jaGFyQ29kZSk7cmV0dXJuIGV2ZW50LmN0cmxLZXl8fChjaHI8 IiAifHwhY2hhcnN8fGNoYXJzLmluZGV4T2YoY2hyKT4tMSl9fSxfc2hvd0RhdGVwaWNrZXI6ZnVuY3Rp b24oaW5wdXQpe2lucHV0PWlucHV0LnRhcmdldHx8aW5wdXQ7aWYoaW5wdXQubm9kZU5hbWUudG9Mb3dl ckNhc2UoKSE9ImlucHV0Iil7aW5wdXQ9JCgiaW5wdXQiLGlucHV0LnBhcmVudE5vZGUpWzBdfWlmKCQu ZGF0ZXBpY2tlci5faXNEaXNhYmxlZERhdGVwaWNrZXIoaW5wdXQpfHwkLmRhdGVwaWNrZXIuX2xhc3RJ bnB1dD09aW5wdXQpe3JldHVybn12YXIgaW5zdD0kLmRhdGVwaWNrZXIuX2dldEluc3QoaW5wdXQpO3Zh ciBiZWZvcmVTaG93PSQuZGF0ZXBpY2tlci5fZ2V0KGluc3QsImJlZm9yZVNob3ciKTtleHRlbmRSZW1v dmUoaW5zdC5zZXR0aW5ncywoYmVmb3JlU2hvdz9iZWZvcmVTaG93LmFwcGx5KGlucHV0LFtpbnB1dCxp bnN0XSk6e30pKTskLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKG51bGwsIiIpOyQuZGF0ZXBpY2tl ci5fbGFzdElucHV0PWlucHV0OyQuZGF0ZXBpY2tlci5fc2V0RGF0ZUZyb21GaWVsZChpbnN0KTtpZigk LmRhdGVwaWNrZXIuX2luRGlhbG9nKXtpbnB1dC52YWx1ZT0iIn1pZighJC5kYXRlcGlja2VyLl9wb3Mp eyQuZGF0ZXBpY2tlci5fcG9zPSQuZGF0ZXBpY2tlci5fZmluZFBvcyhpbnB1dCk7JC5kYXRlcGlja2Vy Ll9wb3NbMV0rPWlucHV0Lm9mZnNldEhlaWdodH12YXIgaXNGaXhlZD1mYWxzZTskKGlucHV0KS5wYXJl bnRzKCkuZWFjaChmdW5jdGlvbigpe2lzRml4ZWR8PSQodGhpcykuY3NzKCJwb3NpdGlvbiIpPT0iZml4 ZWQiO3JldHVybiAhaXNGaXhlZH0pO2lmKGlzRml4ZWQmJiQuYnJvd3Nlci5vcGVyYSl7JC5kYXRlcGlj a2VyLl9wb3NbMF0tPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0OyQuZGF0ZXBpY2tl ci5fcG9zWzFdLT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfXZhciBvZmZzZXQ9e2xl ZnQ6JC5kYXRlcGlja2VyLl9wb3NbMF0sdG9wOiQuZGF0ZXBpY2tlci5fcG9zWzFdfTskLmRhdGVwaWNr ZXIuX3Bvcz1udWxsO2luc3QucmFuZ2VTdGFydD1udWxsO2luc3QuZHBEaXYuY3NzKHtwb3NpdGlvbjoi YWJzb2x1dGUiLGRpc3BsYXk6ImJsb2NrIix0b3A6Ii0xMDAwcHgifSk7JC5kYXRlcGlja2VyLl91cGRh dGVEYXRlcGlja2VyKGluc3QpO29mZnNldD0kLmRhdGVwaWNrZXIuX2NoZWNrT2Zmc2V0KGluc3Qsb2Zm c2V0LGlzRml4ZWQpO2luc3QuZHBEaXYuY3NzKHtwb3NpdGlvbjooJC5kYXRlcGlja2VyLl9pbkRpYWxv ZyYmJC5ibG9ja1VJPyJzdGF0aWMiOihpc0ZpeGVkPyJmaXhlZCI6ImFic29sdXRlIikpLGRpc3BsYXk6 Im5vbmUiLGxlZnQ6b2Zmc2V0LmxlZnQrInB4Iix0b3A6b2Zmc2V0LnRvcCsicHgifSk7aWYoIWluc3Qu aW5saW5lKXt2YXIgc2hvd0FuaW09JC5kYXRlcGlja2VyLl9nZXQoaW5zdCwic2hvd0FuaW0iKXx8InNo b3ciO3ZhciBkdXJhdGlvbj0kLmRhdGVwaWNrZXIuX2dldChpbnN0LCJkdXJhdGlvbiIpO3ZhciBwb3N0 UHJvY2Vzcz1mdW5jdGlvbigpeyQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmc9dHJ1ZTtpZigk LmJyb3dzZXIubXNpZSYmcGFyc2VJbnQoJC5icm93c2VyLnZlcnNpb24sMTApPDcpeyQoImlmcmFtZS51 aS1kYXRlcGlja2VyLWNvdmVyIikuY3NzKHt3aWR0aDppbnN0LmRwRGl2LndpZHRoKCkrNCxoZWlnaHQ6 aW5zdC5kcERpdi5oZWlnaHQoKSs0fSl9fTtpZigkLmVmZmVjdHMmJiQuZWZmZWN0c1tzaG93QW5pbV0p e2luc3QuZHBEaXYuc2hvdyhzaG93QW5pbSwkLmRhdGVwaWNrZXIuX2dldChpbnN0LCJzaG93T3B0aW9u cyIpLGR1cmF0aW9uLHBvc3RQcm9jZXNzKX1lbHNle2luc3QuZHBEaXZbc2hvd0FuaW1dKGR1cmF0aW9u LHBvc3RQcm9jZXNzKX1pZihkdXJhdGlvbj09IiIpe3Bvc3RQcm9jZXNzKCl9aWYoaW5zdC5pbnB1dFsw XS50eXBlIT0iaGlkZGVuIil7aW5zdC5pbnB1dFswXS5mb2N1cygpfSQuZGF0ZXBpY2tlci5fY3VySW5z dD1pbnN0fX0sX3VwZGF0ZURhdGVwaWNrZXI6ZnVuY3Rpb24oaW5zdCl7dmFyIGRpbXM9e3dpZHRoOmlu c3QuZHBEaXYud2lkdGgoKSs0LGhlaWdodDppbnN0LmRwRGl2LmhlaWdodCgpKzR9O3ZhciBzZWxmPXRo aXM7aW5zdC5kcERpdi5lbXB0eSgpLmFwcGVuZCh0aGlzLl9nZW5lcmF0ZUhUTUwoaW5zdCkpLmZpbmQo ImlmcmFtZS51aS1kYXRlcGlja2VyLWNvdmVyIikuY3NzKHt3aWR0aDpkaW1zLndpZHRoLGhlaWdodDpk aW1zLmhlaWdodH0pLmVuZCgpLmZpbmQoImJ1dHRvbiwgLnVpLWRhdGVwaWNrZXItcHJldiwgLnVpLWRh dGVwaWNrZXItbmV4dCwgLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdGQgYSIpLmJpbmQoIm1vdXNlb3V0 IixmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIik7aWYodGhpcy5j bGFzc05hbWUuaW5kZXhPZigidWktZGF0ZXBpY2tlci1wcmV2IikhPS0xKXskKHRoaXMpLnJlbW92ZUNs YXNzKCJ1aS1kYXRlcGlja2VyLXByZXYtaG92ZXIiKX1pZih0aGlzLmNsYXNzTmFtZS5pbmRleE9mKCJ1 aS1kYXRlcGlja2VyLW5leHQiKSE9LTEpeyQodGhpcykucmVtb3ZlQ2xhc3MoInVpLWRhdGVwaWNrZXIt bmV4dC1ob3ZlciIpfX0pLmJpbmQoIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtpZighc2VsZi5faXNEaXNh YmxlZERhdGVwaWNrZXIoaW5zdC5pbmxpbmU/aW5zdC5kcERpdi5wYXJlbnQoKVswXTppbnN0LmlucHV0 WzBdKSl7JCh0aGlzKS5wYXJlbnRzKCIudWktZGF0ZXBpY2tlci1jYWxlbmRhciIpLmZpbmQoImEiKS5y ZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKTskKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3Zl ciIpO2lmKHRoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNrZXItcHJldiIpIT0tMSl7JCh0 aGlzKS5hZGRDbGFzcygidWktZGF0ZXBpY2tlci1wcmV2LWhvdmVyIil9aWYodGhpcy5jbGFzc05hbWUu aW5kZXhPZigidWktZGF0ZXBpY2tlci1uZXh0IikhPS0xKXskKHRoaXMpLmFkZENsYXNzKCJ1aS1kYXRl cGlja2VyLW5leHQtaG92ZXIiKX19fSkuZW5kKCkuZmluZCgiLiIrdGhpcy5fZGF5T3ZlckNsYXNzKyIg YSIpLnRyaWdnZXIoIm1vdXNlb3ZlciIpLmVuZCgpO3ZhciBudW1Nb250aHM9dGhpcy5fZ2V0TnVtYmVy T2ZNb250aHMoaW5zdCk7dmFyIGNvbHM9bnVtTW9udGhzWzFdO3ZhciB3aWR0aD0xNztpZihjb2xzPjEp e2luc3QuZHBEaXYuYWRkQ2xhc3MoInVpLWRhdGVwaWNrZXItbXVsdGktIitjb2xzKS5jc3MoIndpZHRo Iiwod2lkdGgqY29scykrImVtIil9ZWxzZXtpbnN0LmRwRGl2LnJlbW92ZUNsYXNzKCJ1aS1kYXRlcGlj a2VyLW11bHRpLTIgdWktZGF0ZXBpY2tlci1tdWx0aS0zIHVpLWRhdGVwaWNrZXItbXVsdGktNCIpLndp ZHRoKCIiKX1pbnN0LmRwRGl2WyhudW1Nb250aHNbMF0hPTF8fG51bU1vbnRoc1sxXSE9MT8iYWRkIjoi cmVtb3ZlIikrIkNsYXNzIl0oInVpLWRhdGVwaWNrZXItbXVsdGkiKTtpbnN0LmRwRGl2Wyh0aGlzLl9n ZXQoaW5zdCwiaXNSVEwiKT8iYWRkIjoicmVtb3ZlIikrIkNsYXNzIl0oInVpLWRhdGVwaWNrZXItcnRs Iik7aWYoaW5zdC5pbnB1dCYmaW5zdC5pbnB1dFswXS50eXBlIT0iaGlkZGVuIiYmaW5zdD09JC5kYXRl cGlja2VyLl9jdXJJbnN0KXskKGluc3QuaW5wdXRbMF0pLmZvY3VzKCl9fSxfY2hlY2tPZmZzZXQ6ZnVu Y3Rpb24oaW5zdCxvZmZzZXQsaXNGaXhlZCl7dmFyIGRwV2lkdGg9aW5zdC5kcERpdi5vdXRlcldpZHRo KCk7dmFyIGRwSGVpZ2h0PWluc3QuZHBEaXYub3V0ZXJIZWlnaHQoKTt2YXIgaW5wdXRXaWR0aD1pbnN0 LmlucHV0P2luc3QuaW5wdXQub3V0ZXJXaWR0aCgpOjA7dmFyIGlucHV0SGVpZ2h0PWluc3QuaW5wdXQ/ aW5zdC5pbnB1dC5vdXRlckhlaWdodCgpOjA7dmFyIHZpZXdXaWR0aD0od2luZG93LmlubmVyV2lkdGh8 fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aHx8ZG9jdW1lbnQuYm9keS5jbGllbnRX aWR0aCkrJChkb2N1bWVudCkuc2Nyb2xsTGVmdCgpO3ZhciB2aWV3SGVpZ2h0PSh3aW5kb3cuaW5uZXJI ZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fGRvY3VtZW50LmJvZHku Y2xpZW50SGVpZ2h0KSskKGRvY3VtZW50KS5zY3JvbGxUb3AoKTtvZmZzZXQubGVmdC09KHRoaXMuX2dl dChpbnN0LCJpc1JUTCIpPyhkcFdpZHRoLWlucHV0V2lkdGgpOjApO29mZnNldC5sZWZ0LT0oaXNGaXhl ZCYmb2Zmc2V0LmxlZnQ9PWluc3QuaW5wdXQub2Zmc2V0KCkubGVmdCk/JChkb2N1bWVudCkuc2Nyb2xs TGVmdCgpOjA7b2Zmc2V0LnRvcC09KGlzRml4ZWQmJm9mZnNldC50b3A9PShpbnN0LmlucHV0Lm9mZnNl dCgpLnRvcCtpbnB1dEhlaWdodCkpPyQoZG9jdW1lbnQpLnNjcm9sbFRvcCgpOjA7b2Zmc2V0LmxlZnQt PShvZmZzZXQubGVmdCtkcFdpZHRoPnZpZXdXaWR0aCYmdmlld1dpZHRoPmRwV2lkdGgpP01hdGguYWJz KG9mZnNldC5sZWZ0K2RwV2lkdGgtdmlld1dpZHRoKTowO29mZnNldC50b3AtPShvZmZzZXQudG9wK2Rw SGVpZ2h0PnZpZXdIZWlnaHQmJnZpZXdIZWlnaHQ+ZHBIZWlnaHQpP01hdGguYWJzKG9mZnNldC50b3Ar ZHBIZWlnaHQraW5wdXRIZWlnaHQqMi12aWV3SGVpZ2h0KTowO3JldHVybiBvZmZzZXR9LF9maW5kUG9z OmZ1bmN0aW9uKG9iail7d2hpbGUob2JqJiYob2JqLnR5cGU9PSJoaWRkZW4ifHxvYmoubm9kZVR5cGUh PTEpKXtvYmo9b2JqLm5leHRTaWJsaW5nfXZhciBwb3NpdGlvbj0kKG9iaikub2Zmc2V0KCk7cmV0dXJu W3Bvc2l0aW9uLmxlZnQscG9zaXRpb24udG9wXX0sX2hpZGVEYXRlcGlja2VyOmZ1bmN0aW9uKGlucHV0 LGR1cmF0aW9uKXt2YXIgaW5zdD10aGlzLl9jdXJJbnN0O2lmKCFpbnN0fHwoaW5wdXQmJmluc3QhPSQu ZGF0YShpbnB1dCxQUk9QX05BTUUpKSl7cmV0dXJufWlmKGluc3Quc3RheU9wZW4pe3RoaXMuX3NlbGVj dERhdGUoIiMiK2luc3QuaWQsdGhpcy5fZm9ybWF0RGF0ZShpbnN0LGluc3QuY3VycmVudERheSxpbnN0 LmN1cnJlbnRNb250aCxpbnN0LmN1cnJlbnRZZWFyKSl9aW5zdC5zdGF5T3Blbj1mYWxzZTtpZih0aGlz Ll9kYXRlcGlja2VyU2hvd2luZyl7ZHVyYXRpb249KGR1cmF0aW9uIT1udWxsP2R1cmF0aW9uOnRoaXMu X2dldChpbnN0LCJkdXJhdGlvbiIpKTt2YXIgc2hvd0FuaW09dGhpcy5fZ2V0KGluc3QsInNob3dBbmlt Iik7dmFyIHBvc3RQcm9jZXNzPWZ1bmN0aW9uKCl7JC5kYXRlcGlja2VyLl90aWR5RGlhbG9nKGluc3Qp fTtpZihkdXJhdGlvbiE9IiImJiQuZWZmZWN0cyYmJC5lZmZlY3RzW3Nob3dBbmltXSl7aW5zdC5kcERp di5oaWRlKHNob3dBbmltLCQuZGF0ZXBpY2tlci5fZ2V0KGluc3QsInNob3dPcHRpb25zIiksZHVyYXRp b24scG9zdFByb2Nlc3MpfWVsc2V7aW5zdC5kcERpdlsoZHVyYXRpb249PSIiPyJoaWRlIjooc2hvd0Fu aW09PSJzbGlkZURvd24iPyJzbGlkZVVwIjooc2hvd0FuaW09PSJmYWRlSW4iPyJmYWRlT3V0IjoiaGlk ZSIpKSldKGR1cmF0aW9uLHBvc3RQcm9jZXNzKX1pZihkdXJhdGlvbj09IiIpe3RoaXMuX3RpZHlEaWFs b2coaW5zdCl9dmFyIG9uQ2xvc2U9dGhpcy5fZ2V0KGluc3QsIm9uQ2xvc2UiKTtpZihvbkNsb3NlKXtv bkNsb3NlLmFwcGx5KChpbnN0LmlucHV0P2luc3QuaW5wdXRbMF06bnVsbCksWyhpbnN0LmlucHV0P2lu c3QuaW5wdXQudmFsKCk6IiIpLGluc3RdKX10aGlzLl9kYXRlcGlja2VyU2hvd2luZz1mYWxzZTt0aGlz Ll9sYXN0SW5wdXQ9bnVsbDtpZih0aGlzLl9pbkRpYWxvZyl7dGhpcy5fZGlhbG9nSW5wdXQuY3NzKHtw b3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6IjAiLHRvcDoiLTEwMHB4In0pO2lmKCQuYmxvY2tVSSl7JC51 bmJsb2NrVUkoKTskKCJib2R5IikuYXBwZW5kKHRoaXMuZHBEaXYpfX10aGlzLl9pbkRpYWxvZz1mYWxz ZX10aGlzLl9jdXJJbnN0PW51bGx9LF90aWR5RGlhbG9nOmZ1bmN0aW9uKGluc3Qpe2luc3QuZHBEaXYu cmVtb3ZlQ2xhc3ModGhpcy5fZGlhbG9nQ2xhc3MpLnVuYmluZCgiLnVpLWRhdGVwaWNrZXItY2FsZW5k YXIiKX0sX2NoZWNrRXh0ZXJuYWxDbGljazpmdW5jdGlvbihldmVudCl7aWYoISQuZGF0ZXBpY2tlci5f Y3VySW5zdCl7cmV0dXJufXZhciAkdGFyZ2V0PSQoZXZlbnQudGFyZ2V0KTtpZigoJHRhcmdldC5wYXJl bnRzKCIjIiskLmRhdGVwaWNrZXIuX21haW5EaXZJZCkubGVuZ3RoPT0wKSYmISR0YXJnZXQuaGFzQ2xh c3MoJC5kYXRlcGlja2VyLm1hcmtlckNsYXNzTmFtZSkmJiEkdGFyZ2V0Lmhhc0NsYXNzKCQuZGF0ZXBp Y2tlci5fdHJpZ2dlckNsYXNzKSYmJC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyYmISgkLmRh dGVwaWNrZXIuX2luRGlhbG9nJiYkLmJsb2NrVUkpKXskLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2Vy KG51bGwsIiIpfX0sX2FkanVzdERhdGU6ZnVuY3Rpb24oaWQsb2Zmc2V0LHBlcmlvZCl7dmFyIHRhcmdl dD0kKGlkKTt2YXIgaW5zdD10aGlzLl9nZXRJbnN0KHRhcmdldFswXSk7aWYodGhpcy5faXNEaXNhYmxl ZERhdGVwaWNrZXIodGFyZ2V0WzBdKSl7cmV0dXJufXRoaXMuX2FkanVzdEluc3REYXRlKGluc3Qsb2Zm c2V0KyhwZXJpb2Q9PSJNIj90aGlzLl9nZXQoaW5zdCwic2hvd0N1cnJlbnRBdFBvcyIpOjApLHBlcmlv ZCk7dGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihpbnN0KX0sX2dvdG9Ub2RheTpmdW5jdGlvbihpZCl7dmFy IHRhcmdldD0kKGlkKTt2YXIgaW5zdD10aGlzLl9nZXRJbnN0KHRhcmdldFswXSk7aWYodGhpcy5fZ2V0 KGluc3QsImdvdG9DdXJyZW50IikmJmluc3QuY3VycmVudERheSl7aW5zdC5zZWxlY3RlZERheT1pbnN0 LmN1cnJlbnREYXk7aW5zdC5kcmF3TW9udGg9aW5zdC5zZWxlY3RlZE1vbnRoPWluc3QuY3VycmVudE1v bnRoO2luc3QuZHJhd1llYXI9aW5zdC5zZWxlY3RlZFllYXI9aW5zdC5jdXJyZW50WWVhcn1lbHNle3Zh ciBkYXRlPW5ldyBEYXRlKCk7aW5zdC5zZWxlY3RlZERheT1kYXRlLmdldERhdGUoKTtpbnN0LmRyYXdN b250aD1pbnN0LnNlbGVjdGVkTW9udGg9ZGF0ZS5nZXRNb250aCgpO2luc3QuZHJhd1llYXI9aW5zdC5z ZWxlY3RlZFllYXI9ZGF0ZS5nZXRGdWxsWWVhcigpfXRoaXMuX25vdGlmeUNoYW5nZShpbnN0KTt0aGlz Ll9hZGp1c3REYXRlKHRhcmdldCl9LF9zZWxlY3RNb250aFllYXI6ZnVuY3Rpb24oaWQsc2VsZWN0LHBl cmlvZCl7dmFyIHRhcmdldD0kKGlkKTt2YXIgaW5zdD10aGlzLl9nZXRJbnN0KHRhcmdldFswXSk7aW5z dC5fc2VsZWN0aW5nTW9udGhZZWFyPWZhbHNlO2luc3RbInNlbGVjdGVkIisocGVyaW9kPT0iTSI/Ik1v bnRoIjoiWWVhciIpXT1pbnN0WyJkcmF3IisocGVyaW9kPT0iTSI/Ik1vbnRoIjoiWWVhciIpXT1wYXJz ZUludChzZWxlY3Qub3B0aW9uc1tzZWxlY3Quc2VsZWN0ZWRJbmRleF0udmFsdWUsMTApO3RoaXMuX25v dGlmeUNoYW5nZShpbnN0KTt0aGlzLl9hZGp1c3REYXRlKHRhcmdldCl9LF9jbGlja01vbnRoWWVhcjpm dW5jdGlvbihpZCl7dmFyIHRhcmdldD0kKGlkKTt2YXIgaW5zdD10aGlzLl9nZXRJbnN0KHRhcmdldFsw XSk7aWYoaW5zdC5pbnB1dCYmaW5zdC5fc2VsZWN0aW5nTW9udGhZZWFyJiYhJC5icm93c2VyLm1zaWUp e2luc3QuaW5wdXRbMF0uZm9jdXMoKX1pbnN0Ll9zZWxlY3RpbmdNb250aFllYXI9IWluc3QuX3NlbGVj dGluZ01vbnRoWWVhcn0sX3NlbGVjdERheTpmdW5jdGlvbihpZCxtb250aCx5ZWFyLHRkKXt2YXIgdGFy Z2V0PSQoaWQpO2lmKCQodGQpLmhhc0NsYXNzKHRoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzKXx8dGhpcy5f aXNEaXNhYmxlZERhdGVwaWNrZXIodGFyZ2V0WzBdKSl7cmV0dXJufXZhciBpbnN0PXRoaXMuX2dldElu c3QodGFyZ2V0WzBdKTtpbnN0LnNlbGVjdGVkRGF5PWluc3QuY3VycmVudERheT0kKCJhIix0ZCkuaHRt bCgpO2luc3Quc2VsZWN0ZWRNb250aD1pbnN0LmN1cnJlbnRNb250aD1tb250aDtpbnN0LnNlbGVjdGVk WWVhcj1pbnN0LmN1cnJlbnRZZWFyPXllYXI7aWYoaW5zdC5zdGF5T3Blbil7aW5zdC5lbmREYXk9aW5z dC5lbmRNb250aD1pbnN0LmVuZFllYXI9bnVsbH10aGlzLl9zZWxlY3REYXRlKGlkLHRoaXMuX2Zvcm1h dERhdGUoaW5zdCxpbnN0LmN1cnJlbnREYXksaW5zdC5jdXJyZW50TW9udGgsaW5zdC5jdXJyZW50WWVh cikpO2lmKGluc3Quc3RheU9wZW4pe2luc3QucmFuZ2VTdGFydD10aGlzLl9kYXlsaWdodFNhdmluZ0Fk anVzdChuZXcgRGF0ZShpbnN0LmN1cnJlbnRZZWFyLGluc3QuY3VycmVudE1vbnRoLGluc3QuY3VycmVu dERheSkpO3RoaXMuX3VwZGF0ZURhdGVwaWNrZXIoaW5zdCl9fSxfY2xlYXJEYXRlOmZ1bmN0aW9uKGlk KXt2YXIgdGFyZ2V0PSQoaWQpO3ZhciBpbnN0PXRoaXMuX2dldEluc3QodGFyZ2V0WzBdKTtpbnN0LnN0 YXlPcGVuPWZhbHNlO2luc3QuZW5kRGF5PWluc3QuZW5kTW9udGg9aW5zdC5lbmRZZWFyPWluc3QucmFu Z2VTdGFydD1udWxsO3RoaXMuX3NlbGVjdERhdGUodGFyZ2V0LCIiKX0sX3NlbGVjdERhdGU6ZnVuY3Rp b24oaWQsZGF0ZVN0cil7dmFyIHRhcmdldD0kKGlkKTt2YXIgaW5zdD10aGlzLl9nZXRJbnN0KHRhcmdl dFswXSk7ZGF0ZVN0cj0oZGF0ZVN0ciE9bnVsbD9kYXRlU3RyOnRoaXMuX2Zvcm1hdERhdGUoaW5zdCkp O2lmKGluc3QuaW5wdXQpe2luc3QuaW5wdXQudmFsKGRhdGVTdHIpfXRoaXMuX3VwZGF0ZUFsdGVybmF0 ZShpbnN0KTt2YXIgb25TZWxlY3Q9dGhpcy5fZ2V0KGluc3QsIm9uU2VsZWN0Iik7aWYob25TZWxlY3Qp e29uU2VsZWN0LmFwcGx5KChpbnN0LmlucHV0P2luc3QuaW5wdXRbMF06bnVsbCksW2RhdGVTdHIsaW5z dF0pfWVsc2V7aWYoaW5zdC5pbnB1dCl7aW5zdC5pbnB1dC50cmlnZ2VyKCJjaGFuZ2UiKX19aWYoaW5z dC5pbmxpbmUpe3RoaXMuX3VwZGF0ZURhdGVwaWNrZXIoaW5zdCl9ZWxzZXtpZighaW5zdC5zdGF5T3Bl bil7dGhpcy5faGlkZURhdGVwaWNrZXIobnVsbCx0aGlzLl9nZXQoaW5zdCwiZHVyYXRpb24iKSk7dGhp cy5fbGFzdElucHV0PWluc3QuaW5wdXRbMF07aWYodHlwZW9mKGluc3QuaW5wdXRbMF0pIT0ib2JqZWN0 Iil7aW5zdC5pbnB1dFswXS5mb2N1cygpfXRoaXMuX2xhc3RJbnB1dD1udWxsfX19LF91cGRhdGVBbHRl cm5hdGU6ZnVuY3Rpb24oaW5zdCl7dmFyIGFsdEZpZWxkPXRoaXMuX2dldChpbnN0LCJhbHRGaWVsZCIp O2lmKGFsdEZpZWxkKXt2YXIgYWx0Rm9ybWF0PXRoaXMuX2dldChpbnN0LCJhbHRGb3JtYXQiKXx8dGhp cy5fZ2V0KGluc3QsImRhdGVGb3JtYXQiKTt2YXIgZGF0ZT10aGlzLl9nZXREYXRlKGluc3QpO2RhdGVT dHI9dGhpcy5mb3JtYXREYXRlKGFsdEZvcm1hdCxkYXRlLHRoaXMuX2dldEZvcm1hdENvbmZpZyhpbnN0 KSk7JChhbHRGaWVsZCkuZWFjaChmdW5jdGlvbigpeyQodGhpcykudmFsKGRhdGVTdHIpfSl9fSxub1dl ZWtlbmRzOmZ1bmN0aW9uKGRhdGUpe3ZhciBkYXk9ZGF0ZS5nZXREYXkoKTtyZXR1cm5bKGRheT4wJiZk YXk8NiksIiJdfSxpc284NjAxV2VlazpmdW5jdGlvbihkYXRlKXt2YXIgY2hlY2tEYXRlPW5ldyBEYXRl KGRhdGUuZ2V0RnVsbFllYXIoKSxkYXRlLmdldE1vbnRoKCksZGF0ZS5nZXREYXRlKCkpO3ZhciBmaXJz dE1vbj1uZXcgRGF0ZShjaGVja0RhdGUuZ2V0RnVsbFllYXIoKSwxLTEsNCk7dmFyIGZpcnN0RGF5PWZp cnN0TW9uLmdldERheSgpfHw3O2ZpcnN0TW9uLnNldERhdGUoZmlyc3RNb24uZ2V0RGF0ZSgpKzEtZmly c3REYXkpO2lmKGZpcnN0RGF5PDQmJmNoZWNrRGF0ZTxmaXJzdE1vbil7Y2hlY2tEYXRlLnNldERhdGUo Y2hlY2tEYXRlLmdldERhdGUoKS0zKTtyZXR1cm4gJC5kYXRlcGlja2VyLmlzbzg2MDFXZWVrKGNoZWNr RGF0ZSl9ZWxzZXtpZihjaGVja0RhdGU+bmV3IERhdGUoY2hlY2tEYXRlLmdldEZ1bGxZZWFyKCksMTIt MSwyOCkpe2ZpcnN0RGF5PW5ldyBEYXRlKGNoZWNrRGF0ZS5nZXRGdWxsWWVhcigpKzEsMS0xLDQpLmdl dERheSgpfHw3O2lmKGZpcnN0RGF5PjQmJihjaGVja0RhdGUuZ2V0RGF5KCl8fDcpPGZpcnN0RGF5LTMp e3JldHVybiAxfX19cmV0dXJuIE1hdGguZmxvb3IoKChjaGVja0RhdGUtZmlyc3RNb24pLzg2NDAwMDAw KS83KSsxfSxwYXJzZURhdGU6ZnVuY3Rpb24oZm9ybWF0LHZhbHVlLHNldHRpbmdzKXtpZihmb3JtYXQ9 PW51bGx8fHZhbHVlPT1udWxsKXt0aHJvdyJJbnZhbGlkIGFyZ3VtZW50cyJ9dmFsdWU9KHR5cGVvZiB2 YWx1ZT09Im9iamVjdCI/dmFsdWUudG9TdHJpbmcoKTp2YWx1ZSsiIik7aWYodmFsdWU9PSIiKXtyZXR1 cm4gbnVsbH12YXIgc2hvcnRZZWFyQ3V0b2ZmPShzZXR0aW5ncz9zZXR0aW5ncy5zaG9ydFllYXJDdXRv ZmY6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLnNob3J0WWVhckN1dG9mZjt2YXIgZGF5TmFtZXNTaG9ydD0o c2V0dGluZ3M/c2V0dGluZ3MuZGF5TmFtZXNTaG9ydDpudWxsKXx8dGhpcy5fZGVmYXVsdHMuZGF5TmFt ZXNTaG9ydDt2YXIgZGF5TmFtZXM9KHNldHRpbmdzP3NldHRpbmdzLmRheU5hbWVzOm51bGwpfHx0aGlz Ll9kZWZhdWx0cy5kYXlOYW1lczt2YXIgbW9udGhOYW1lc1Nob3J0PShzZXR0aW5ncz9zZXR0aW5ncy5t b250aE5hbWVzU2hvcnQ6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLm1vbnRoTmFtZXNTaG9ydDt2YXIgbW9u dGhOYW1lcz0oc2V0dGluZ3M/c2V0dGluZ3MubW9udGhOYW1lczpudWxsKXx8dGhpcy5fZGVmYXVsdHMu bW9udGhOYW1lczt2YXIgeWVhcj0tMTt2YXIgbW9udGg9LTE7dmFyIGRheT0tMTt2YXIgZG95PS0xO3Zh ciBsaXRlcmFsPWZhbHNlO3ZhciBsb29rQWhlYWQ9ZnVuY3Rpb24obWF0Y2gpe3ZhciBtYXRjaGVzPShp Rm9ybWF0KzE8Zm9ybWF0Lmxlbmd0aCYmZm9ybWF0LmNoYXJBdChpRm9ybWF0KzEpPT1tYXRjaCk7aWYo bWF0Y2hlcyl7aUZvcm1hdCsrfXJldHVybiBtYXRjaGVzfTt2YXIgZ2V0TnVtYmVyPWZ1bmN0aW9uKG1h dGNoKXtsb29rQWhlYWQobWF0Y2gpO3ZhciBvcmlnU2l6ZT0obWF0Y2g9PSJAIj8xNDoobWF0Y2g9PSJ5 Ij80OihtYXRjaD09Im8iPzM6MikpKTt2YXIgc2l6ZT1vcmlnU2l6ZTt2YXIgbnVtPTA7d2hpbGUoc2l6 ZT4wJiZpVmFsdWU8dmFsdWUubGVuZ3RoJiZ2YWx1ZS5jaGFyQXQoaVZhbHVlKT49IjAiJiZ2YWx1ZS5j aGFyQXQoaVZhbHVlKTw9IjkiKXtudW09bnVtKjEwK3BhcnNlSW50KHZhbHVlLmNoYXJBdChpVmFsdWUr KyksMTApO3NpemUtLX1pZihzaXplPT1vcmlnU2l6ZSl7dGhyb3ciTWlzc2luZyBudW1iZXIgYXQgcG9z aXRpb24gIitpVmFsdWV9cmV0dXJuIG51bX07dmFyIGdldE5hbWU9ZnVuY3Rpb24obWF0Y2gsc2hvcnRO YW1lcyxsb25nTmFtZXMpe3ZhciBuYW1lcz0obG9va0FoZWFkKG1hdGNoKT9sb25nTmFtZXM6c2hvcnRO YW1lcyk7dmFyIHNpemU9MDtmb3IodmFyIGo9MDtqPG5hbWVzLmxlbmd0aDtqKyspe3NpemU9TWF0aC5t YXgoc2l6ZSxuYW1lc1tqXS5sZW5ndGgpfXZhciBuYW1lPSIiO3ZhciBpSW5pdD1pVmFsdWU7d2hpbGUo c2l6ZT4wJiZpVmFsdWU8dmFsdWUubGVuZ3RoKXtuYW1lKz12YWx1ZS5jaGFyQXQoaVZhbHVlKyspO2Zv cih2YXIgaT0wO2k8bmFtZXMubGVuZ3RoO2krKyl7aWYobmFtZT09bmFtZXNbaV0pe3JldHVybiBpKzF9 fXNpemUtLX10aHJvdyJVbmtub3duIG5hbWUgYXQgcG9zaXRpb24gIitpSW5pdH07dmFyIGNoZWNrTGl0 ZXJhbD1mdW5jdGlvbigpe2lmKHZhbHVlLmNoYXJBdChpVmFsdWUpIT1mb3JtYXQuY2hhckF0KGlGb3Jt YXQpKXt0aHJvdyJVbmV4cGVjdGVkIGxpdGVyYWwgYXQgcG9zaXRpb24gIitpVmFsdWV9aVZhbHVlKyt9 O3ZhciBpVmFsdWU9MDtmb3IodmFyIGlGb3JtYXQ9MDtpRm9ybWF0PGZvcm1hdC5sZW5ndGg7aUZvcm1h dCsrKXtpZihsaXRlcmFsKXtpZihmb3JtYXQuY2hhckF0KGlGb3JtYXQpPT0iJyImJiFsb29rQWhlYWQo IiciKSl7bGl0ZXJhbD1mYWxzZX1lbHNle2NoZWNrTGl0ZXJhbCgpfX1lbHNle3N3aXRjaChmb3JtYXQu Y2hhckF0KGlGb3JtYXQpKXtjYXNlImQiOmRheT1nZXROdW1iZXIoImQiKTticmVhaztjYXNlIkQiOmdl dE5hbWUoIkQiLGRheU5hbWVzU2hvcnQsZGF5TmFtZXMpO2JyZWFrO2Nhc2UibyI6ZG95PWdldE51bWJl cigibyIpO2JyZWFrO2Nhc2UibSI6bW9udGg9Z2V0TnVtYmVyKCJtIik7YnJlYWs7Y2FzZSJNIjptb250 aD1nZXROYW1lKCJNIixtb250aE5hbWVzU2hvcnQsbW9udGhOYW1lcyk7YnJlYWs7Y2FzZSJ5Ijp5ZWFy PWdldE51bWJlcigieSIpO2JyZWFrO2Nhc2UiQCI6dmFyIGRhdGU9bmV3IERhdGUoZ2V0TnVtYmVyKCJA IikpO3llYXI9ZGF0ZS5nZXRGdWxsWWVhcigpO21vbnRoPWRhdGUuZ2V0TW9udGgoKSsxO2RheT1kYXRl LmdldERhdGUoKTticmVhaztjYXNlIiciOmlmKGxvb2tBaGVhZCgiJyIpKXtjaGVja0xpdGVyYWwoKX1l bHNle2xpdGVyYWw9dHJ1ZX1icmVhaztkZWZhdWx0OmNoZWNrTGl0ZXJhbCgpfX19aWYoeWVhcj09LTEp e3llYXI9bmV3IERhdGUoKS5nZXRGdWxsWWVhcigpfWVsc2V7aWYoeWVhcjwxMDApe3llYXIrPW5ldyBE YXRlKCkuZ2V0RnVsbFllYXIoKS1uZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCklMTAwKyh5ZWFyPD1zaG9y dFllYXJDdXRvZmY/MDotMTAwKX19aWYoZG95Pi0xKXttb250aD0xO2RheT1kb3k7ZG97dmFyIGRpbT10 aGlzLl9nZXREYXlzSW5Nb250aCh5ZWFyLG1vbnRoLTEpO2lmKGRheTw9ZGltKXticmVha31tb250aCsr O2RheS09ZGltfXdoaWxlKHRydWUpfXZhciBkYXRlPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5l dyBEYXRlKHllYXIsbW9udGgtMSxkYXkpKTtpZihkYXRlLmdldEZ1bGxZZWFyKCkhPXllYXJ8fGRhdGUu Z2V0TW9udGgoKSsxIT1tb250aHx8ZGF0ZS5nZXREYXRlKCkhPWRheSl7dGhyb3ciSW52YWxpZCBkYXRl In1yZXR1cm4gZGF0ZX0sQVRPTToieXktbW0tZGQiLENPT0tJRToiRCwgZGQgTSB5eSIsSVNPXzg2MDE6 Inl5LW1tLWRkIixSRkNfODIyOiJELCBkIE0geSIsUkZDXzg1MDoiREQsIGRkLU0teSIsUkZDXzEwMzY6 IkQsIGQgTSB5IixSRkNfMTEyMzoiRCwgZCBNIHl5IixSRkNfMjgyMjoiRCwgZCBNIHl5IixSU1M6IkQs IGQgTSB5IixUSU1FU1RBTVA6IkAiLFczQzoieXktbW0tZGQiLGZvcm1hdERhdGU6ZnVuY3Rpb24oZm9y bWF0LGRhdGUsc2V0dGluZ3Mpe2lmKCFkYXRlKXtyZXR1cm4iIn12YXIgZGF5TmFtZXNTaG9ydD0oc2V0 dGluZ3M/c2V0dGluZ3MuZGF5TmFtZXNTaG9ydDpudWxsKXx8dGhpcy5fZGVmYXVsdHMuZGF5TmFtZXNT aG9ydDt2YXIgZGF5TmFtZXM9KHNldHRpbmdzP3NldHRpbmdzLmRheU5hbWVzOm51bGwpfHx0aGlzLl9k ZWZhdWx0cy5kYXlOYW1lczt2YXIgbW9udGhOYW1lc1Nob3J0PShzZXR0aW5ncz9zZXR0aW5ncy5tb250 aE5hbWVzU2hvcnQ6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLm1vbnRoTmFtZXNTaG9ydDt2YXIgbW9udGhO YW1lcz0oc2V0dGluZ3M/c2V0dGluZ3MubW9udGhOYW1lczpudWxsKXx8dGhpcy5fZGVmYXVsdHMubW9u dGhOYW1lczt2YXIgbG9va0FoZWFkPWZ1bmN0aW9uKG1hdGNoKXt2YXIgbWF0Y2hlcz0oaUZvcm1hdCsx PGZvcm1hdC5sZW5ndGgmJmZvcm1hdC5jaGFyQXQoaUZvcm1hdCsxKT09bWF0Y2gpO2lmKG1hdGNoZXMp e2lGb3JtYXQrK31yZXR1cm4gbWF0Y2hlc307dmFyIGZvcm1hdE51bWJlcj1mdW5jdGlvbihtYXRjaCx2 YWx1ZSxsZW4pe3ZhciBudW09IiIrdmFsdWU7aWYobG9va0FoZWFkKG1hdGNoKSl7d2hpbGUobnVtLmxl bmd0aDxsZW4pe251bT0iMCIrbnVtfX1yZXR1cm4gbnVtfTt2YXIgZm9ybWF0TmFtZT1mdW5jdGlvbiht YXRjaCx2YWx1ZSxzaG9ydE5hbWVzLGxvbmdOYW1lcyl7cmV0dXJuKGxvb2tBaGVhZChtYXRjaCk/bG9u Z05hbWVzW3ZhbHVlXTpzaG9ydE5hbWVzW3ZhbHVlXSl9O3ZhciBvdXRwdXQ9IiI7dmFyIGxpdGVyYWw9 ZmFsc2U7aWYoZGF0ZSl7Zm9yKHZhciBpRm9ybWF0PTA7aUZvcm1hdDxmb3JtYXQubGVuZ3RoO2lGb3Jt YXQrKyl7aWYobGl0ZXJhbCl7aWYoZm9ybWF0LmNoYXJBdChpRm9ybWF0KT09IiciJiYhbG9va0FoZWFk KCInIikpe2xpdGVyYWw9ZmFsc2V9ZWxzZXtvdXRwdXQrPWZvcm1hdC5jaGFyQXQoaUZvcm1hdCl9fWVs c2V7c3dpdGNoKGZvcm1hdC5jaGFyQXQoaUZvcm1hdCkpe2Nhc2UiZCI6b3V0cHV0Kz1mb3JtYXROdW1i ZXIoImQiLGRhdGUuZ2V0RGF0ZSgpLDIpO2JyZWFrO2Nhc2UiRCI6b3V0cHV0Kz1mb3JtYXROYW1lKCJE IixkYXRlLmdldERheSgpLGRheU5hbWVzU2hvcnQsZGF5TmFtZXMpO2JyZWFrO2Nhc2UibyI6dmFyIGRv eT1kYXRlLmdldERhdGUoKTtmb3IodmFyIG09ZGF0ZS5nZXRNb250aCgpLTE7bT49MDttLS0pe2RveSs9 dGhpcy5fZ2V0RGF5c0luTW9udGgoZGF0ZS5nZXRGdWxsWWVhcigpLG0pfW91dHB1dCs9Zm9ybWF0TnVt YmVyKCJvIixkb3ksMyk7YnJlYWs7Y2FzZSJtIjpvdXRwdXQrPWZvcm1hdE51bWJlcigibSIsZGF0ZS5n ZXRNb250aCgpKzEsMik7YnJlYWs7Y2FzZSJNIjpvdXRwdXQrPWZvcm1hdE5hbWUoIk0iLGRhdGUuZ2V0 TW9udGgoKSxtb250aE5hbWVzU2hvcnQsbW9udGhOYW1lcyk7YnJlYWs7Y2FzZSJ5IjpvdXRwdXQrPShs b29rQWhlYWQoInkiKT9kYXRlLmdldEZ1bGxZZWFyKCk6KGRhdGUuZ2V0WWVhcigpJTEwMDwxMD8iMCI6 IiIpK2RhdGUuZ2V0WWVhcigpJTEwMCk7YnJlYWs7Y2FzZSJAIjpvdXRwdXQrPWRhdGUuZ2V0VGltZSgp O2JyZWFrO2Nhc2UiJyI6aWYobG9va0FoZWFkKCInIikpe291dHB1dCs9IicifWVsc2V7bGl0ZXJhbD10 cnVlfWJyZWFrO2RlZmF1bHQ6b3V0cHV0Kz1mb3JtYXQuY2hhckF0KGlGb3JtYXQpfX19fXJldHVybiBv dXRwdXR9LF9wb3NzaWJsZUNoYXJzOmZ1bmN0aW9uKGZvcm1hdCl7dmFyIGNoYXJzPSIiO3ZhciBsaXRl cmFsPWZhbHNlO2Zvcih2YXIgaUZvcm1hdD0wO2lGb3JtYXQ8Zm9ybWF0Lmxlbmd0aDtpRm9ybWF0Kysp e2lmKGxpdGVyYWwpe2lmKGZvcm1hdC5jaGFyQXQoaUZvcm1hdCk9PSInIiYmIWxvb2tBaGVhZCgiJyIp KXtsaXRlcmFsPWZhbHNlfWVsc2V7Y2hhcnMrPWZvcm1hdC5jaGFyQXQoaUZvcm1hdCl9fWVsc2V7c3dp dGNoKGZvcm1hdC5jaGFyQXQoaUZvcm1hdCkpe2Nhc2UiZCI6Y2FzZSJtIjpjYXNlInkiOmNhc2UiQCI6 Y2hhcnMrPSIwMTIzNDU2Nzg5IjticmVhaztjYXNlIkQiOmNhc2UiTSI6cmV0dXJuIG51bGw7Y2FzZSIn IjppZihsb29rQWhlYWQoIiciKSl7Y2hhcnMrPSInIn1lbHNle2xpdGVyYWw9dHJ1ZX1icmVhaztkZWZh dWx0OmNoYXJzKz1mb3JtYXQuY2hhckF0KGlGb3JtYXQpfX19cmV0dXJuIGNoYXJzfSxfZ2V0OmZ1bmN0 aW9uKGluc3QsbmFtZSl7cmV0dXJuIGluc3Quc2V0dGluZ3NbbmFtZV0hPT11bmRlZmluZWQ/aW5zdC5z ZXR0aW5nc1tuYW1lXTp0aGlzLl9kZWZhdWx0c1tuYW1lXX0sX3NldERhdGVGcm9tRmllbGQ6ZnVuY3Rp b24oaW5zdCl7dmFyIGRhdGVGb3JtYXQ9dGhpcy5fZ2V0KGluc3QsImRhdGVGb3JtYXQiKTt2YXIgZGF0 ZXM9aW5zdC5pbnB1dD9pbnN0LmlucHV0LnZhbCgpOm51bGw7aW5zdC5lbmREYXk9aW5zdC5lbmRNb250 aD1pbnN0LmVuZFllYXI9bnVsbDt2YXIgZGF0ZT1kZWZhdWx0RGF0ZT10aGlzLl9nZXREZWZhdWx0RGF0 ZShpbnN0KTt2YXIgc2V0dGluZ3M9dGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGluc3QpO3RyeXtkYXRlPXRo aXMucGFyc2VEYXRlKGRhdGVGb3JtYXQsZGF0ZXMsc2V0dGluZ3MpfHxkZWZhdWx0RGF0ZX1jYXRjaChl dmVudCl7dGhpcy5sb2coZXZlbnQpO2RhdGU9ZGVmYXVsdERhdGV9aW5zdC5zZWxlY3RlZERheT1kYXRl LmdldERhdGUoKTtpbnN0LmRyYXdNb250aD1pbnN0LnNlbGVjdGVkTW9udGg9ZGF0ZS5nZXRNb250aCgp O2luc3QuZHJhd1llYXI9aW5zdC5zZWxlY3RlZFllYXI9ZGF0ZS5nZXRGdWxsWWVhcigpO2luc3QuY3Vy cmVudERheT0oZGF0ZXM/ZGF0ZS5nZXREYXRlKCk6MCk7aW5zdC5jdXJyZW50TW9udGg9KGRhdGVzP2Rh dGUuZ2V0TW9udGgoKTowKTtpbnN0LmN1cnJlbnRZZWFyPShkYXRlcz9kYXRlLmdldEZ1bGxZZWFyKCk6 MCk7dGhpcy5fYWRqdXN0SW5zdERhdGUoaW5zdCl9LF9nZXREZWZhdWx0RGF0ZTpmdW5jdGlvbihpbnN0 KXt2YXIgZGF0ZT10aGlzLl9kZXRlcm1pbmVEYXRlKHRoaXMuX2dldChpbnN0LCJkZWZhdWx0RGF0ZSIp LG5ldyBEYXRlKCkpO3ZhciBtaW5EYXRlPXRoaXMuX2dldE1pbk1heERhdGUoaW5zdCwibWluIix0cnVl KTt2YXIgbWF4RGF0ZT10aGlzLl9nZXRNaW5NYXhEYXRlKGluc3QsIm1heCIpO2RhdGU9KG1pbkRhdGUm JmRhdGU8bWluRGF0ZT9taW5EYXRlOmRhdGUpO2RhdGU9KG1heERhdGUmJmRhdGU+bWF4RGF0ZT9tYXhE YXRlOmRhdGUpO3JldHVybiBkYXRlfSxfZGV0ZXJtaW5lRGF0ZTpmdW5jdGlvbihkYXRlLGRlZmF1bHRE YXRlKXt2YXIgb2Zmc2V0TnVtZXJpYz1mdW5jdGlvbihvZmZzZXQpe3ZhciBkYXRlPW5ldyBEYXRlKCk7 ZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpK29mZnNldCk7cmV0dXJuIGRhdGV9O3ZhciBvZmZzZXRT dHJpbmc9ZnVuY3Rpb24ob2Zmc2V0LGdldERheXNJbk1vbnRoKXt2YXIgZGF0ZT1uZXcgRGF0ZSgpO3Zh ciB5ZWFyPWRhdGUuZ2V0RnVsbFllYXIoKTt2YXIgbW9udGg9ZGF0ZS5nZXRNb250aCgpO3ZhciBkYXk9 ZGF0ZS5nZXREYXRlKCk7dmFyIHBhdHRlcm49LyhbKy1dP1swLTldKylccyooZHxEfHd8V3xtfE18eXxZ KT8vZzt2YXIgbWF0Y2hlcz1wYXR0ZXJuLmV4ZWMob2Zmc2V0KTt3aGlsZShtYXRjaGVzKXtzd2l0Y2go bWF0Y2hlc1syXXx8ImQiKXtjYXNlImQiOmNhc2UiRCI6ZGF5Kz1wYXJzZUludChtYXRjaGVzWzFdLDEw KTticmVhaztjYXNlInciOmNhc2UiVyI6ZGF5Kz1wYXJzZUludChtYXRjaGVzWzFdLDEwKSo3O2JyZWFr O2Nhc2UibSI6Y2FzZSJNIjptb250aCs9cGFyc2VJbnQobWF0Y2hlc1sxXSwxMCk7ZGF5PU1hdGgubWlu KGRheSxnZXREYXlzSW5Nb250aCh5ZWFyLG1vbnRoKSk7YnJlYWs7Y2FzZSJ5IjpjYXNlIlkiOnllYXIr PXBhcnNlSW50KG1hdGNoZXNbMV0sMTApO2RheT1NYXRoLm1pbihkYXksZ2V0RGF5c0luTW9udGgoeWVh cixtb250aCkpO2JyZWFrfW1hdGNoZXM9cGF0dGVybi5leGVjKG9mZnNldCl9cmV0dXJuIG5ldyBEYXRl KHllYXIsbW9udGgsZGF5KX07ZGF0ZT0oZGF0ZT09bnVsbD9kZWZhdWx0RGF0ZToodHlwZW9mIGRhdGU9 PSJzdHJpbmciP29mZnNldFN0cmluZyhkYXRlLHRoaXMuX2dldERheXNJbk1vbnRoKToodHlwZW9mIGRh dGU9PSJudW1iZXIiPyhpc05hTihkYXRlKT9kZWZhdWx0RGF0ZTpvZmZzZXROdW1lcmljKGRhdGUpKTpk YXRlKSkpO2RhdGU9KGRhdGUmJmRhdGUudG9TdHJpbmcoKT09IkludmFsaWQgRGF0ZSI/ZGVmYXVsdERh dGU6ZGF0ZSk7aWYoZGF0ZSl7ZGF0ZS5zZXRIb3VycygwKTtkYXRlLnNldE1pbnV0ZXMoMCk7ZGF0ZS5z ZXRTZWNvbmRzKDApO2RhdGUuc2V0TWlsbGlzZWNvbmRzKDApfXJldHVybiB0aGlzLl9kYXlsaWdodFNh dmluZ0FkanVzdChkYXRlKX0sX2RheWxpZ2h0U2F2aW5nQWRqdXN0OmZ1bmN0aW9uKGRhdGUpe2lmKCFk YXRlKXtyZXR1cm4gbnVsbH1kYXRlLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKT4xMj9kYXRlLmdldEhv dXJzKCkrMjowKTtyZXR1cm4gZGF0ZX0sX3NldERhdGU6ZnVuY3Rpb24oaW5zdCxkYXRlLGVuZERhdGUp e3ZhciBjbGVhcj0hKGRhdGUpO3ZhciBvcmlnTW9udGg9aW5zdC5zZWxlY3RlZE1vbnRoO3ZhciBvcmln WWVhcj1pbnN0LnNlbGVjdGVkWWVhcjtkYXRlPXRoaXMuX2RldGVybWluZURhdGUoZGF0ZSxuZXcgRGF0 ZSgpKTtpbnN0LnNlbGVjdGVkRGF5PWluc3QuY3VycmVudERheT1kYXRlLmdldERhdGUoKTtpbnN0LmRy YXdNb250aD1pbnN0LnNlbGVjdGVkTW9udGg9aW5zdC5jdXJyZW50TW9udGg9ZGF0ZS5nZXRNb250aCgp O2luc3QuZHJhd1llYXI9aW5zdC5zZWxlY3RlZFllYXI9aW5zdC5jdXJyZW50WWVhcj1kYXRlLmdldEZ1 bGxZZWFyKCk7aWYob3JpZ01vbnRoIT1pbnN0LnNlbGVjdGVkTW9udGh8fG9yaWdZZWFyIT1pbnN0LnNl bGVjdGVkWWVhcil7dGhpcy5fbm90aWZ5Q2hhbmdlKGluc3QpfXRoaXMuX2FkanVzdEluc3REYXRlKGlu c3QpO2lmKGluc3QuaW5wdXQpe2luc3QuaW5wdXQudmFsKGNsZWFyPyIiOnRoaXMuX2Zvcm1hdERhdGUo aW5zdCkpfX0sX2dldERhdGU6ZnVuY3Rpb24oaW5zdCl7dmFyIHN0YXJ0RGF0ZT0oIWluc3QuY3VycmVu dFllYXJ8fChpbnN0LmlucHV0JiZpbnN0LmlucHV0LnZhbCgpPT0iIik/bnVsbDp0aGlzLl9kYXlsaWdo dFNhdmluZ0FkanVzdChuZXcgRGF0ZShpbnN0LmN1cnJlbnRZZWFyLGluc3QuY3VycmVudE1vbnRoLGlu c3QuY3VycmVudERheSkpKTtyZXR1cm4gc3RhcnREYXRlfSxfZ2VuZXJhdGVIVE1MOmZ1bmN0aW9uKGlu c3Qpe3ZhciB0b2RheT1uZXcgRGF0ZSgpO3RvZGF5PXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5l dyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCksdG9kYXkuZ2V0TW9udGgoKSx0b2RheS5nZXREYXRlKCkp KTt2YXIgaXNSVEw9dGhpcy5fZ2V0KGluc3QsImlzUlRMIik7dmFyIHNob3dCdXR0b25QYW5lbD10aGlz Ll9nZXQoaW5zdCwic2hvd0J1dHRvblBhbmVsIik7dmFyIGhpZGVJZk5vUHJldk5leHQ9dGhpcy5fZ2V0 KGluc3QsImhpZGVJZk5vUHJldk5leHQiKTt2YXIgbmF2aWdhdGlvbkFzRGF0ZUZvcm1hdD10aGlzLl9n ZXQoaW5zdCwibmF2aWdhdGlvbkFzRGF0ZUZvcm1hdCIpO3ZhciBudW1Nb250aHM9dGhpcy5fZ2V0TnVt YmVyT2ZNb250aHMoaW5zdCk7dmFyIHNob3dDdXJyZW50QXRQb3M9dGhpcy5fZ2V0KGluc3QsInNob3dD dXJyZW50QXRQb3MiKTt2YXIgc3RlcE1vbnRocz10aGlzLl9nZXQoaW5zdCwic3RlcE1vbnRocyIpO3Zh ciBzdGVwQmlnTW9udGhzPXRoaXMuX2dldChpbnN0LCJzdGVwQmlnTW9udGhzIik7dmFyIGlzTXVsdGlN b250aD0obnVtTW9udGhzWzBdIT0xfHxudW1Nb250aHNbMV0hPTEpO3ZhciBjdXJyZW50RGF0ZT10aGlz Ll9kYXlsaWdodFNhdmluZ0FkanVzdCgoIWluc3QuY3VycmVudERheT9uZXcgRGF0ZSg5OTk5LDksOSk6 bmV3IERhdGUoaW5zdC5jdXJyZW50WWVhcixpbnN0LmN1cnJlbnRNb250aCxpbnN0LmN1cnJlbnREYXkp KSk7dmFyIG1pbkRhdGU9dGhpcy5fZ2V0TWluTWF4RGF0ZShpbnN0LCJtaW4iLHRydWUpO3ZhciBtYXhE YXRlPXRoaXMuX2dldE1pbk1heERhdGUoaW5zdCwibWF4Iik7dmFyIGRyYXdNb250aD1pbnN0LmRyYXdN b250aC1zaG93Q3VycmVudEF0UG9zO3ZhciBkcmF3WWVhcj1pbnN0LmRyYXdZZWFyO2lmKGRyYXdNb250 aDwwKXtkcmF3TW9udGgrPTEyO2RyYXdZZWFyLS19aWYobWF4RGF0ZSl7dmFyIG1heERyYXc9dGhpcy5f ZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUobWF4RGF0ZS5nZXRGdWxsWWVhcigpLG1heERhdGUu Z2V0TW9udGgoKS1udW1Nb250aHNbMV0rMSxtYXhEYXRlLmdldERhdGUoKSkpO21heERyYXc9KG1pbkRh dGUmJm1heERyYXc8bWluRGF0ZT9taW5EYXRlOm1heERyYXcpO3doaWxlKHRoaXMuX2RheWxpZ2h0U2F2 aW5nQWRqdXN0KG5ldyBEYXRlKGRyYXdZZWFyLGRyYXdNb250aCwxKSk+bWF4RHJhdyl7ZHJhd01vbnRo LS07aWYoZHJhd01vbnRoPDApe2RyYXdNb250aD0xMTtkcmF3WWVhci0tfX19aW5zdC5kcmF3TW9udGg9 ZHJhd01vbnRoO2luc3QuZHJhd1llYXI9ZHJhd1llYXI7dmFyIHByZXZUZXh0PXRoaXMuX2dldChpbnN0 LCJwcmV2VGV4dCIpO3ByZXZUZXh0PSghbmF2aWdhdGlvbkFzRGF0ZUZvcm1hdD9wcmV2VGV4dDp0aGlz LmZvcm1hdERhdGUocHJldlRleHQsdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoZHJh d1llYXIsZHJhd01vbnRoLXN0ZXBNb250aHMsMSkpLHRoaXMuX2dldEZvcm1hdENvbmZpZyhpbnN0KSkp O3ZhciBwcmV2PSh0aGlzLl9jYW5BZGp1c3RNb250aChpbnN0LC0xLGRyYXdZZWFyLGRyYXdNb250aCk/ JzxhIGNsYXNzPSJ1aS1kYXRlcGlja2VyLXByZXYgdWktY29ybmVyLWFsbCIgb25jbGljaz0iRFBfalF1 ZXJ5LmRhdGVwaWNrZXIuX2FkanVzdERhdGUoXCcjJytpbnN0LmlkKyInLCAtIitzdGVwTW9udGhzKyIs ICdNJyk7XCIgdGl0bGU9XCIiK3ByZXZUZXh0KyciPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWljb24t Y2lyY2xlLXRyaWFuZ2xlLScrKGlzUlRMPyJlIjoidyIpKyciPicrcHJldlRleHQrIjwvc3Bhbj48L2E+ IjooaGlkZUlmTm9QcmV2TmV4dD8iIjonPGEgY2xhc3M9InVpLWRhdGVwaWNrZXItcHJldiB1aS1jb3Ju ZXItYWxsIHVpLXN0YXRlLWRpc2FibGVkIiB0aXRsZT0iJytwcmV2VGV4dCsnIj48c3BhbiBjbGFzcz0i dWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0nKyhpc1JUTD8iZSI6InciKSsnIj4nK3ByZXZU ZXh0KyI8L3NwYW4+PC9hPiIpKTt2YXIgbmV4dFRleHQ9dGhpcy5fZ2V0KGluc3QsIm5leHRUZXh0Iik7 bmV4dFRleHQ9KCFuYXZpZ2F0aW9uQXNEYXRlRm9ybWF0P25leHRUZXh0OnRoaXMuZm9ybWF0RGF0ZShu ZXh0VGV4dCx0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShkcmF3WWVhcixkcmF3TW9u dGgrc3RlcE1vbnRocywxKSksdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGluc3QpKSk7dmFyIG5leHQ9KHRo aXMuX2NhbkFkanVzdE1vbnRoKGluc3QsKzEsZHJhd1llYXIsZHJhd01vbnRoKT8nPGEgY2xhc3M9InVp LWRhdGVwaWNrZXItbmV4dCB1aS1jb3JuZXItYWxsIiBvbmNsaWNrPSJEUF9qUXVlcnkuZGF0ZXBpY2tl ci5fYWRqdXN0RGF0ZShcJyMnK2luc3QuaWQrIicsICsiK3N0ZXBNb250aHMrIiwgJ00nKTtcIiB0aXRs ZT1cIiIrbmV4dFRleHQrJyI+PHNwYW4gY2xhc3M9InVpLWljb24gdWktaWNvbi1jaXJjbGUtdHJpYW5n bGUtJysoaXNSVEw/InciOiJlIikrJyI+JytuZXh0VGV4dCsiPC9zcGFuPjwvYT4iOihoaWRlSWZOb1By ZXZOZXh0PyIiOic8YSBjbGFzcz0idWktZGF0ZXBpY2tlci1uZXh0IHVpLWNvcm5lci1hbGwgdWktc3Rh dGUtZGlzYWJsZWQiIHRpdGxlPSInK25leHRUZXh0KyciPjxzcGFuIGNsYXNzPSJ1aS1pY29uIHVpLWlj b24tY2lyY2xlLXRyaWFuZ2xlLScrKGlzUlRMPyJ3IjoiZSIpKyciPicrbmV4dFRleHQrIjwvc3Bhbj48 L2E+IikpO3ZhciBjdXJyZW50VGV4dD10aGlzLl9nZXQoaW5zdCwiY3VycmVudFRleHQiKTt2YXIgZ290 b0RhdGU9KHRoaXMuX2dldChpbnN0LCJnb3RvQ3VycmVudCIpJiZpbnN0LmN1cnJlbnREYXk/Y3VycmVu dERhdGU6dG9kYXkpO2N1cnJlbnRUZXh0PSghbmF2aWdhdGlvbkFzRGF0ZUZvcm1hdD9jdXJyZW50VGV4 dDp0aGlzLmZvcm1hdERhdGUoY3VycmVudFRleHQsZ290b0RhdGUsdGhpcy5fZ2V0Rm9ybWF0Q29uZmln KGluc3QpKSk7dmFyIGNvbnRyb2xzPSghaW5zdC5pbmxpbmU/JzxidXR0b24gdHlwZT0iYnV0dG9uIiBj bGFzcz0idWktZGF0ZXBpY2tlci1jbG9zZSB1aS1zdGF0ZS1kZWZhdWx0IHVpLXByaW9yaXR5LXByaW1h cnkgdWktY29ybmVyLWFsbCIgb25jbGljaz0iRFBfalF1ZXJ5LmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlj a2VyKCk7Ij4nK3RoaXMuX2dldChpbnN0LCJjbG9zZVRleHQiKSsiPC9idXR0b24+IjoiIik7dmFyIGJ1 dHRvblBhbmVsPShzaG93QnV0dG9uUGFuZWwpPyc8ZGl2IGNsYXNzPSJ1aS1kYXRlcGlja2VyLWJ1dHRv bnBhbmUgdWktd2lkZ2V0LWNvbnRlbnQiPicrKGlzUlRMP2NvbnRyb2xzOiIiKSsodGhpcy5faXNJblJh bmdlKGluc3QsZ290b0RhdGUpPyc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InVpLWRhdGVwaWNr ZXItY3VycmVudCB1aS1zdGF0ZS1kZWZhdWx0IHVpLXByaW9yaXR5LXNlY29uZGFyeSB1aS1jb3JuZXIt YWxsIiBvbmNsaWNrPSJEUF9qUXVlcnkuZGF0ZXBpY2tlci5fZ290b1RvZGF5KFwnIycraW5zdC5pZCsi Jyk7XCI+IitjdXJyZW50VGV4dCsiPC9idXR0b24+IjoiIikrKGlzUlRMPyIiOmNvbnRyb2xzKSsiPC9k aXY+IjoiIjt2YXIgZmlyc3REYXk9cGFyc2VJbnQodGhpcy5fZ2V0KGluc3QsImZpcnN0RGF5IiksMTAp O2ZpcnN0RGF5PShpc05hTihmaXJzdERheSk/MDpmaXJzdERheSk7dmFyIGRheU5hbWVzPXRoaXMuX2dl dChpbnN0LCJkYXlOYW1lcyIpO3ZhciBkYXlOYW1lc1Nob3J0PXRoaXMuX2dldChpbnN0LCJkYXlOYW1l c1Nob3J0Iik7dmFyIGRheU5hbWVzTWluPXRoaXMuX2dldChpbnN0LCJkYXlOYW1lc01pbiIpO3ZhciBt b250aE5hbWVzPXRoaXMuX2dldChpbnN0LCJtb250aE5hbWVzIik7dmFyIG1vbnRoTmFtZXNTaG9ydD10 aGlzLl9nZXQoaW5zdCwibW9udGhOYW1lc1Nob3J0Iik7dmFyIGJlZm9yZVNob3dEYXk9dGhpcy5fZ2V0 KGluc3QsImJlZm9yZVNob3dEYXkiKTt2YXIgc2hvd090aGVyTW9udGhzPXRoaXMuX2dldChpbnN0LCJz aG93T3RoZXJNb250aHMiKTt2YXIgY2FsY3VsYXRlV2Vlaz10aGlzLl9nZXQoaW5zdCwiY2FsY3VsYXRl V2VlayIpfHx0aGlzLmlzbzg2MDFXZWVrO3ZhciBlbmREYXRlPWluc3QuZW5kRGF5P3RoaXMuX2RheWxp Z2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGluc3QuZW5kWWVhcixpbnN0LmVuZE1vbnRoLGluc3QuZW5k RGF5KSk6Y3VycmVudERhdGU7dmFyIGRlZmF1bHREYXRlPXRoaXMuX2dldERlZmF1bHREYXRlKGluc3Qp O3ZhciBodG1sPSIiO2Zvcih2YXIgcm93PTA7cm93PG51bU1vbnRoc1swXTtyb3crKyl7dmFyIGdyb3Vw PSIiO2Zvcih2YXIgY29sPTA7Y29sPG51bU1vbnRoc1sxXTtjb2wrKyl7dmFyIHNlbGVjdGVkRGF0ZT10 aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShkcmF3WWVhcixkcmF3TW9udGgsaW5zdC5z ZWxlY3RlZERheSkpO3ZhciBjb3JuZXJDbGFzcz0iIHVpLWNvcm5lci1hbGwiO3ZhciBjYWxlbmRlcj0i IjtpZihpc011bHRpTW9udGgpe2NhbGVuZGVyKz0nPGRpdiBjbGFzcz0idWktZGF0ZXBpY2tlci1ncm91 cCB1aS1kYXRlcGlja2VyLWdyb3VwLSc7c3dpdGNoKGNvbCl7Y2FzZSAwOmNhbGVuZGVyKz0iZmlyc3Qi O2Nvcm5lckNsYXNzPSIgdWktY29ybmVyLSIrKGlzUlRMPyJyaWdodCI6ImxlZnQiKTticmVhaztjYXNl IG51bU1vbnRoc1sxXS0xOmNhbGVuZGVyKz0ibGFzdCI7Y29ybmVyQ2xhc3M9IiB1aS1jb3JuZXItIiso aXNSVEw/ImxlZnQiOiJyaWdodCIpO2JyZWFrO2RlZmF1bHQ6Y2FsZW5kZXIrPSJtaWRkbGUiO2Nvcm5l ckNsYXNzPSIiO2JyZWFrfWNhbGVuZGVyKz0nIj4nfWNhbGVuZGVyKz0nPGRpdiBjbGFzcz0idWktZGF0 ZXBpY2tlci1oZWFkZXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXgnK2Nvcm5lckNs YXNzKyciPicrKC9hbGx8bGVmdC8udGVzdChjb3JuZXJDbGFzcykmJnJvdz09MD8oaXNSVEw/bmV4dDpw cmV2KToiIikrKC9hbGx8cmlnaHQvLnRlc3QoY29ybmVyQ2xhc3MpJiZyb3c9PTA/KGlzUlRMP3ByZXY6 bmV4dCk6IiIpK3RoaXMuX2dlbmVyYXRlTW9udGhZZWFySGVhZGVyKGluc3QsZHJhd01vbnRoLGRyYXdZ ZWFyLG1pbkRhdGUsbWF4RGF0ZSxzZWxlY3RlZERhdGUscm93PjB8fGNvbD4wLG1vbnRoTmFtZXMsbW9u dGhOYW1lc1Nob3J0KSsnPC9kaXY+PHRhYmxlIGNsYXNzPSJ1aS1kYXRlcGlja2VyLWNhbGVuZGFyIj48 dGhlYWQ+PHRyPic7dmFyIHRoZWFkPSIiO2Zvcih2YXIgZG93PTA7ZG93PDc7ZG93Kyspe3ZhciBkYXk9 KGRvdytmaXJzdERheSklNzt0aGVhZCs9Ijx0aCIrKChkb3crZmlyc3REYXkrNiklNz49NT8nIGNsYXNz PSJ1aS1kYXRlcGlja2VyLXdlZWstZW5kIic6IiIpKyc+PHNwYW4gdGl0bGU9IicrZGF5TmFtZXNbZGF5 XSsnIj4nK2RheU5hbWVzTWluW2RheV0rIjwvc3Bhbj48L3RoPiJ9Y2FsZW5kZXIrPXRoZWFkKyI8L3Ry PjwvdGhlYWQ+PHRib2R5PiI7dmFyIGRheXNJbk1vbnRoPXRoaXMuX2dldERheXNJbk1vbnRoKGRyYXdZ ZWFyLGRyYXdNb250aCk7aWYoZHJhd1llYXI9PWluc3Quc2VsZWN0ZWRZZWFyJiZkcmF3TW9udGg9PWlu c3Quc2VsZWN0ZWRNb250aCl7aW5zdC5zZWxlY3RlZERheT1NYXRoLm1pbihpbnN0LnNlbGVjdGVkRGF5 LGRheXNJbk1vbnRoKX12YXIgbGVhZERheXM9KHRoaXMuX2dldEZpcnN0RGF5T2ZNb250aChkcmF3WWVh cixkcmF3TW9udGgpLWZpcnN0RGF5KzcpJTc7dmFyIG51bVJvd3M9KGlzTXVsdGlNb250aD82Ok1hdGgu Y2VpbCgobGVhZERheXMrZGF5c0luTW9udGgpLzcpKTt2YXIgcHJpbnREYXRlPXRoaXMuX2RheWxpZ2h0 U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGRyYXdZZWFyLGRyYXdNb250aCwxLWxlYWREYXlzKSk7Zm9yKHZh ciBkUm93PTA7ZFJvdzxudW1Sb3dzO2RSb3crKyl7Y2FsZW5kZXIrPSI8dHI+Ijt2YXIgdGJvZHk9IiI7 Zm9yKHZhciBkb3c9MDtkb3c8Nztkb3crKyl7dmFyIGRheVNldHRpbmdzPShiZWZvcmVTaG93RGF5P2Jl Zm9yZVNob3dEYXkuYXBwbHkoKGluc3QuaW5wdXQ/aW5zdC5pbnB1dFswXTpudWxsKSxbcHJpbnREYXRl XSk6W3RydWUsIiJdKTt2YXIgb3RoZXJNb250aD0ocHJpbnREYXRlLmdldE1vbnRoKCkhPWRyYXdNb250 aCk7dmFyIHVuc2VsZWN0YWJsZT1vdGhlck1vbnRofHwhZGF5U2V0dGluZ3NbMF18fChtaW5EYXRlJiZw cmludERhdGU8bWluRGF0ZSl8fChtYXhEYXRlJiZwcmludERhdGU+bWF4RGF0ZSk7dGJvZHkrPSc8dGQg Y2xhc3M9IicrKChkb3crZmlyc3REYXkrNiklNz49NT8iIHVpLWRhdGVwaWNrZXItd2Vlay1lbmQiOiIi KSsob3RoZXJNb250aD8iIHVpLWRhdGVwaWNrZXItb3RoZXItbW9udGgiOiIiKSsoKHByaW50RGF0ZS5n ZXRUaW1lKCk9PXNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkmJmRyYXdNb250aD09aW5zdC5zZWxlY3RlZE1v bnRoJiZpbnN0Ll9rZXlFdmVudCl8fChkZWZhdWx0RGF0ZS5nZXRUaW1lKCk9PXByaW50RGF0ZS5nZXRU aW1lKCkmJmRlZmF1bHREYXRlLmdldFRpbWUoKT09c2VsZWN0ZWREYXRlLmdldFRpbWUoKSk/IiAiK3Ro aXMuX2RheU92ZXJDbGFzczoiIikrKHVuc2VsZWN0YWJsZT8iICIrdGhpcy5fdW5zZWxlY3RhYmxlQ2xh c3MrIiB1aS1zdGF0ZS1kaXNhYmxlZCI6IiIpKyhvdGhlck1vbnRoJiYhc2hvd090aGVyTW9udGhzPyIi OiIgIitkYXlTZXR0aW5nc1sxXSsocHJpbnREYXRlLmdldFRpbWUoKT49Y3VycmVudERhdGUuZ2V0VGlt ZSgpJiZwcmludERhdGUuZ2V0VGltZSgpPD1lbmREYXRlLmdldFRpbWUoKT8iICIrdGhpcy5fY3VycmVu dENsYXNzOiIiKSsocHJpbnREYXRlLmdldFRpbWUoKT09dG9kYXkuZ2V0VGltZSgpPyIgdWktZGF0ZXBp Y2tlci10b2RheSI6IiIpKSsnIicrKCghb3RoZXJNb250aHx8c2hvd090aGVyTW9udGhzKSYmZGF5U2V0 dGluZ3NbMl0/JyB0aXRsZT0iJytkYXlTZXR0aW5nc1syXSsnIic6IiIpKyh1bnNlbGVjdGFibGU/IiI6 IiBvbmNsaWNrPVwiRFBfalF1ZXJ5LmRhdGVwaWNrZXIuX3NlbGVjdERheSgnIyIraW5zdC5pZCsiJywi K2RyYXdNb250aCsiLCIrZHJhd1llYXIrJywgdGhpcyk7cmV0dXJuIGZhbHNlOyInKSsiPiIrKG90aGVy TW9udGg/KHNob3dPdGhlck1vbnRocz9wcmludERhdGUuZ2V0RGF0ZSgpOiImI3hhMDsiKToodW5zZWxl Y3RhYmxlPyc8c3BhbiBjbGFzcz0idWktc3RhdGUtZGVmYXVsdCI+JytwcmludERhdGUuZ2V0RGF0ZSgp KyI8L3NwYW4+IjonPGEgY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQnKyhwcmludERhdGUuZ2V0VGltZSgp PT10b2RheS5nZXRUaW1lKCk/IiB1aS1zdGF0ZS1oaWdobGlnaHQiOiIiKSsocHJpbnREYXRlLmdldFRp bWUoKT49Y3VycmVudERhdGUuZ2V0VGltZSgpJiZwcmludERhdGUuZ2V0VGltZSgpPD1lbmREYXRlLmdl dFRpbWUoKT8iIHVpLXN0YXRlLWFjdGl2ZSI6IiIpKyciIGhyZWY9IiMiPicrcHJpbnREYXRlLmdldERh dGUoKSsiPC9hPiIpKSsiPC90ZD4iO3ByaW50RGF0ZS5zZXREYXRlKHByaW50RGF0ZS5nZXREYXRlKCkr MSk7cHJpbnREYXRlPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KHByaW50RGF0ZSl9Y2FsZW5kZXIr PXRib2R5KyI8L3RyPiJ9ZHJhd01vbnRoKys7aWYoZHJhd01vbnRoPjExKXtkcmF3TW9udGg9MDtkcmF3 WWVhcisrfWNhbGVuZGVyKz0iPC90Ym9keT48L3RhYmxlPiIrKGlzTXVsdGlNb250aD8iPC9kaXY+Iiso KG51bU1vbnRoc1swXT4wJiZjb2w9PW51bU1vbnRoc1sxXS0xKT8nPGRpdiBjbGFzcz0idWktZGF0ZXBp Y2tlci1yb3ctYnJlYWsiPjwvZGl2Pic6IiIpOiIiKTtncm91cCs9Y2FsZW5kZXJ9aHRtbCs9Z3JvdXB9 aHRtbCs9YnV0dG9uUGFuZWwrKCQuYnJvd3Nlci5tc2llJiZwYXJzZUludCgkLmJyb3dzZXIudmVyc2lv biwxMCk8NyYmIWluc3QuaW5saW5lPyc8aWZyYW1lIHNyYz0iamF2YXNjcmlwdDpmYWxzZTsiIGNsYXNz PSJ1aS1kYXRlcGlja2VyLWNvdmVyIiBmcmFtZWJvcmRlcj0iMCI+PC9pZnJhbWU+JzoiIik7aW5zdC5f a2V5RXZlbnQ9ZmFsc2U7cmV0dXJuIGh0bWx9LF9nZW5lcmF0ZU1vbnRoWWVhckhlYWRlcjpmdW5jdGlv bihpbnN0LGRyYXdNb250aCxkcmF3WWVhcixtaW5EYXRlLG1heERhdGUsc2VsZWN0ZWREYXRlLHNlY29u ZGFyeSxtb250aE5hbWVzLG1vbnRoTmFtZXNTaG9ydCl7bWluRGF0ZT0oaW5zdC5yYW5nZVN0YXJ0JiZt aW5EYXRlJiZzZWxlY3RlZERhdGU8bWluRGF0ZT9zZWxlY3RlZERhdGU6bWluRGF0ZSk7dmFyIGNoYW5n ZU1vbnRoPXRoaXMuX2dldChpbnN0LCJjaGFuZ2VNb250aCIpO3ZhciBjaGFuZ2VZZWFyPXRoaXMuX2dl dChpbnN0LCJjaGFuZ2VZZWFyIik7dmFyIHNob3dNb250aEFmdGVyWWVhcj10aGlzLl9nZXQoaW5zdCwi c2hvd01vbnRoQWZ0ZXJZZWFyIik7dmFyIGh0bWw9JzxkaXYgY2xhc3M9InVpLWRhdGVwaWNrZXItdGl0 bGUiPic7dmFyIG1vbnRoSHRtbD0iIjtpZihzZWNvbmRhcnl8fCFjaGFuZ2VNb250aCl7bW9udGhIdG1s Kz0nPHNwYW4gY2xhc3M9InVpLWRhdGVwaWNrZXItbW9udGgiPicrbW9udGhOYW1lc1tkcmF3TW9udGhd KyI8L3NwYW4+ICJ9ZWxzZXt2YXIgaW5NaW5ZZWFyPShtaW5EYXRlJiZtaW5EYXRlLmdldEZ1bGxZZWFy KCk9PWRyYXdZZWFyKTt2YXIgaW5NYXhZZWFyPShtYXhEYXRlJiZtYXhEYXRlLmdldEZ1bGxZZWFyKCk9 PWRyYXdZZWFyKTttb250aEh0bWwrPSc8c2VsZWN0IGNsYXNzPSJ1aS1kYXRlcGlja2VyLW1vbnRoIiBv bmNoYW5nZT0iRFBfalF1ZXJ5LmRhdGVwaWNrZXIuX3NlbGVjdE1vbnRoWWVhcihcJyMnK2luc3QuaWQr IicsIHRoaXMsICdNJyk7XCIgb25jbGljaz1cIkRQX2pRdWVyeS5kYXRlcGlja2VyLl9jbGlja01vbnRo WWVhcignIyIraW5zdC5pZCsiJyk7XCI+Ijtmb3IodmFyIG1vbnRoPTA7bW9udGg8MTI7bW9udGgrKyl7 aWYoKCFpbk1pblllYXJ8fG1vbnRoPj1taW5EYXRlLmdldE1vbnRoKCkpJiYoIWluTWF4WWVhcnx8bW9u dGg8PW1heERhdGUuZ2V0TW9udGgoKSkpe21vbnRoSHRtbCs9JzxvcHRpb24gdmFsdWU9IicrbW9udGgr JyInKyhtb250aD09ZHJhd01vbnRoPycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiIpKyI+Iittb250aE5h bWVzU2hvcnRbbW9udGhdKyI8L29wdGlvbj4ifX1tb250aEh0bWwrPSI8L3NlbGVjdD4ifWlmKCFzaG93 TW9udGhBZnRlclllYXIpe2h0bWwrPW1vbnRoSHRtbCsoKHNlY29uZGFyeXx8Y2hhbmdlTW9udGh8fGNo YW5nZVllYXIpJiYoIShjaGFuZ2VNb250aCYmY2hhbmdlWWVhcikpPyImI3hhMDsiOiIiKX1pZihzZWNv bmRhcnl8fCFjaGFuZ2VZZWFyKXtodG1sKz0nPHNwYW4gY2xhc3M9InVpLWRhdGVwaWNrZXIteWVhciI+ JytkcmF3WWVhcisiPC9zcGFuPiJ9ZWxzZXt2YXIgeWVhcnM9dGhpcy5fZ2V0KGluc3QsInllYXJSYW5n ZSIpLnNwbGl0KCI6Iik7dmFyIHllYXI9MDt2YXIgZW5kWWVhcj0wO2lmKHllYXJzLmxlbmd0aCE9Mil7 eWVhcj1kcmF3WWVhci0xMDtlbmRZZWFyPWRyYXdZZWFyKzEwfWVsc2V7aWYoeWVhcnNbMF0uY2hhckF0 KDApPT0iKyJ8fHllYXJzWzBdLmNoYXJBdCgwKT09Ii0iKXt5ZWFyPWRyYXdZZWFyK3BhcnNlSW50KHll YXJzWzBdLDEwKTtlbmRZZWFyPWRyYXdZZWFyK3BhcnNlSW50KHllYXJzWzFdLDEwKX1lbHNle3llYXI9 cGFyc2VJbnQoeWVhcnNbMF0sMTApO2VuZFllYXI9cGFyc2VJbnQoeWVhcnNbMV0sMTApfX15ZWFyPSht aW5EYXRlP01hdGgubWF4KHllYXIsbWluRGF0ZS5nZXRGdWxsWWVhcigpKTp5ZWFyKTtlbmRZZWFyPSht YXhEYXRlP01hdGgubWluKGVuZFllYXIsbWF4RGF0ZS5nZXRGdWxsWWVhcigpKTplbmRZZWFyKTtodG1s Kz0nPHNlbGVjdCBjbGFzcz0idWktZGF0ZXBpY2tlci15ZWFyIiBvbmNoYW5nZT0iRFBfalF1ZXJ5LmRh dGVwaWNrZXIuX3NlbGVjdE1vbnRoWWVhcihcJyMnK2luc3QuaWQrIicsIHRoaXMsICdZJyk7XCIgb25j bGljaz1cIkRQX2pRdWVyeS5kYXRlcGlja2VyLl9jbGlja01vbnRoWWVhcignIyIraW5zdC5pZCsiJyk7 XCI+Ijtmb3IoO3llYXI8PWVuZFllYXI7eWVhcisrKXtodG1sKz0nPG9wdGlvbiB2YWx1ZT0iJyt5ZWFy KyciJysoeWVhcj09ZHJhd1llYXI/JyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIikrIj4iK3llYXIrIjwv b3B0aW9uPiJ9aHRtbCs9Ijwvc2VsZWN0PiJ9aWYoc2hvd01vbnRoQWZ0ZXJZZWFyKXtodG1sKz0oc2Vj b25kYXJ5fHxjaGFuZ2VNb250aHx8Y2hhbmdlWWVhcj8iJiN4YTA7IjoiIikrbW9udGhIdG1sfWh0bWwr PSI8L2Rpdj4iO3JldHVybiBodG1sfSxfYWRqdXN0SW5zdERhdGU6ZnVuY3Rpb24oaW5zdCxvZmZzZXQs cGVyaW9kKXt2YXIgeWVhcj1pbnN0LmRyYXdZZWFyKyhwZXJpb2Q9PSJZIj9vZmZzZXQ6MCk7dmFyIG1v bnRoPWluc3QuZHJhd01vbnRoKyhwZXJpb2Q9PSJNIj9vZmZzZXQ6MCk7dmFyIGRheT1NYXRoLm1pbihp bnN0LnNlbGVjdGVkRGF5LHRoaXMuX2dldERheXNJbk1vbnRoKHllYXIsbW9udGgpKSsocGVyaW9kPT0i RCI/b2Zmc2V0OjApO3ZhciBkYXRlPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHll YXIsbW9udGgsZGF5KSk7dmFyIG1pbkRhdGU9dGhpcy5fZ2V0TWluTWF4RGF0ZShpbnN0LCJtaW4iLHRy dWUpO3ZhciBtYXhEYXRlPXRoaXMuX2dldE1pbk1heERhdGUoaW5zdCwibWF4Iik7ZGF0ZT0obWluRGF0 ZSYmZGF0ZTxtaW5EYXRlP21pbkRhdGU6ZGF0ZSk7ZGF0ZT0obWF4RGF0ZSYmZGF0ZT5tYXhEYXRlP21h eERhdGU6ZGF0ZSk7aW5zdC5zZWxlY3RlZERheT1kYXRlLmdldERhdGUoKTtpbnN0LmRyYXdNb250aD1p bnN0LnNlbGVjdGVkTW9udGg9ZGF0ZS5nZXRNb250aCgpO2luc3QuZHJhd1llYXI9aW5zdC5zZWxlY3Rl ZFllYXI9ZGF0ZS5nZXRGdWxsWWVhcigpO2lmKHBlcmlvZD09Ik0ifHxwZXJpb2Q9PSJZIil7dGhpcy5f bm90aWZ5Q2hhbmdlKGluc3QpfX0sX25vdGlmeUNoYW5nZTpmdW5jdGlvbihpbnN0KXt2YXIgb25DaGFu Z2U9dGhpcy5fZ2V0KGluc3QsIm9uQ2hhbmdlTW9udGhZZWFyIik7aWYob25DaGFuZ2Upe29uQ2hhbmdl LmFwcGx5KChpbnN0LmlucHV0P2luc3QuaW5wdXRbMF06bnVsbCksW2luc3Quc2VsZWN0ZWRZZWFyLGlu c3Quc2VsZWN0ZWRNb250aCsxLGluc3RdKX19LF9nZXROdW1iZXJPZk1vbnRoczpmdW5jdGlvbihpbnN0 KXt2YXIgbnVtTW9udGhzPXRoaXMuX2dldChpbnN0LCJudW1iZXJPZk1vbnRocyIpO3JldHVybihudW1N b250aHM9PW51bGw/WzEsMV06KHR5cGVvZiBudW1Nb250aHM9PSJudW1iZXIiP1sxLG51bU1vbnRoc106 bnVtTW9udGhzKSl9LF9nZXRNaW5NYXhEYXRlOmZ1bmN0aW9uKGluc3QsbWluTWF4LGNoZWNrUmFuZ2Up e3ZhciBkYXRlPXRoaXMuX2RldGVybWluZURhdGUodGhpcy5fZ2V0KGluc3QsbWluTWF4KyJEYXRlIiks bnVsbCk7cmV0dXJuKCFjaGVja1JhbmdlfHwhaW5zdC5yYW5nZVN0YXJ0P2RhdGU6KCFkYXRlfHxpbnN0 LnJhbmdlU3RhcnQ+ZGF0ZT9pbnN0LnJhbmdlU3RhcnQ6ZGF0ZSkpfSxfZ2V0RGF5c0luTW9udGg6ZnVu Y3Rpb24oeWVhcixtb250aCl7cmV0dXJuIDMyLW5ldyBEYXRlKHllYXIsbW9udGgsMzIpLmdldERhdGUo KX0sX2dldEZpcnN0RGF5T2ZNb250aDpmdW5jdGlvbih5ZWFyLG1vbnRoKXtyZXR1cm4gbmV3IERhdGUo eWVhcixtb250aCwxKS5nZXREYXkoKX0sX2NhbkFkanVzdE1vbnRoOmZ1bmN0aW9uKGluc3Qsb2Zmc2V0 LGN1clllYXIsY3VyTW9udGgpe3ZhciBudW1Nb250aHM9dGhpcy5fZ2V0TnVtYmVyT2ZNb250aHMoaW5z dCk7dmFyIGRhdGU9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoY3VyWWVhcixjdXJN b250aCsob2Zmc2V0PDA/b2Zmc2V0Om51bU1vbnRoc1sxXSksMSkpO2lmKG9mZnNldDwwKXtkYXRlLnNl dERhdGUodGhpcy5fZ2V0RGF5c0luTW9udGgoZGF0ZS5nZXRGdWxsWWVhcigpLGRhdGUuZ2V0TW9udGgo KSkpfXJldHVybiB0aGlzLl9pc0luUmFuZ2UoaW5zdCxkYXRlKX0sX2lzSW5SYW5nZTpmdW5jdGlvbihp bnN0LGRhdGUpe3ZhciBuZXdNaW5EYXRlPSghaW5zdC5yYW5nZVN0YXJ0P251bGw6dGhpcy5fZGF5bGln aHRTYXZpbmdBZGp1c3QobmV3IERhdGUoaW5zdC5zZWxlY3RlZFllYXIsaW5zdC5zZWxlY3RlZE1vbnRo LGluc3Quc2VsZWN0ZWREYXkpKSk7bmV3TWluRGF0ZT0obmV3TWluRGF0ZSYmaW5zdC5yYW5nZVN0YXJ0 PG5ld01pbkRhdGU/aW5zdC5yYW5nZVN0YXJ0Om5ld01pbkRhdGUpO3ZhciBtaW5EYXRlPW5ld01pbkRh dGV8fHRoaXMuX2dldE1pbk1heERhdGUoaW5zdCwibWluIik7dmFyIG1heERhdGU9dGhpcy5fZ2V0TWlu TWF4RGF0ZShpbnN0LCJtYXgiKTtyZXR1cm4oKCFtaW5EYXRlfHxkYXRlPj1taW5EYXRlKSYmKCFtYXhE YXRlfHxkYXRlPD1tYXhEYXRlKSl9LF9nZXRGb3JtYXRDb25maWc6ZnVuY3Rpb24oaW5zdCl7dmFyIHNo b3J0WWVhckN1dG9mZj10aGlzLl9nZXQoaW5zdCwic2hvcnRZZWFyQ3V0b2ZmIik7c2hvcnRZZWFyQ3V0 b2ZmPSh0eXBlb2Ygc2hvcnRZZWFyQ3V0b2ZmIT0ic3RyaW5nIj9zaG9ydFllYXJDdXRvZmY6bmV3IERh dGUoKS5nZXRGdWxsWWVhcigpJTEwMCtwYXJzZUludChzaG9ydFllYXJDdXRvZmYsMTApKTtyZXR1cm57 c2hvcnRZZWFyQ3V0b2ZmOnNob3J0WWVhckN1dG9mZixkYXlOYW1lc1Nob3J0OnRoaXMuX2dldChpbnN0 LCJkYXlOYW1lc1Nob3J0IiksZGF5TmFtZXM6dGhpcy5fZ2V0KGluc3QsImRheU5hbWVzIiksbW9udGhO YW1lc1Nob3J0OnRoaXMuX2dldChpbnN0LCJtb250aE5hbWVzU2hvcnQiKSxtb250aE5hbWVzOnRoaXMu X2dldChpbnN0LCJtb250aE5hbWVzIil9fSxfZm9ybWF0RGF0ZTpmdW5jdGlvbihpbnN0LGRheSxtb250 aCx5ZWFyKXtpZighZGF5KXtpbnN0LmN1cnJlbnREYXk9aW5zdC5zZWxlY3RlZERheTtpbnN0LmN1cnJl bnRNb250aD1pbnN0LnNlbGVjdGVkTW9udGg7aW5zdC5jdXJyZW50WWVhcj1pbnN0LnNlbGVjdGVkWWVh cn12YXIgZGF0ZT0oZGF5Pyh0eXBlb2YgZGF5PT0ib2JqZWN0Ij9kYXk6dGhpcy5fZGF5bGlnaHRTYXZp bmdBZGp1c3QobmV3IERhdGUoeWVhcixtb250aCxkYXkpKSk6dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1 c3QobmV3IERhdGUoaW5zdC5jdXJyZW50WWVhcixpbnN0LmN1cnJlbnRNb250aCxpbnN0LmN1cnJlbnRE YXkpKSk7cmV0dXJuIHRoaXMuZm9ybWF0RGF0ZSh0aGlzLl9nZXQoaW5zdCwiZGF0ZUZvcm1hdCIpLGRh dGUsdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGluc3QpKX19KTtmdW5jdGlvbiBleHRlbmRSZW1vdmUodGFy Z2V0LHByb3BzKXskLmV4dGVuZCh0YXJnZXQscHJvcHMpO2Zvcih2YXIgbmFtZSBpbiBwcm9wcyl7aWYo cHJvcHNbbmFtZV09PW51bGx8fHByb3BzW25hbWVdPT11bmRlZmluZWQpe3RhcmdldFtuYW1lXT1wcm9w c1tuYW1lXX19cmV0dXJuIHRhcmdldH1mdW5jdGlvbiBpc0FycmF5KGEpe3JldHVybihhJiYoKCQuYnJv d3Nlci5zYWZhcmkmJnR5cGVvZiBhPT0ib2JqZWN0IiYmYS5sZW5ndGgpfHwoYS5jb25zdHJ1Y3RvciYm YS5jb25zdHJ1Y3Rvci50b1N0cmluZygpLm1hdGNoKC9cQXJyYXlcKFwpLykpKSl9JC5mbi5kYXRlcGlj a2VyPWZ1bmN0aW9uKG9wdGlvbnMpe2lmKCEkLmRhdGVwaWNrZXIuaW5pdGlhbGl6ZWQpeyQoZG9jdW1l bnQpLm1vdXNlZG93bigkLmRhdGVwaWNrZXIuX2NoZWNrRXh0ZXJuYWxDbGljaykuZmluZCgiYm9keSIp LmFwcGVuZCgkLmRhdGVwaWNrZXIuZHBEaXYpOyQuZGF0ZXBpY2tlci5pbml0aWFsaXplZD10cnVlfXZh ciBvdGhlckFyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2lmKHR5cGVv ZiBvcHRpb25zPT0ic3RyaW5nIiYmKG9wdGlvbnM9PSJpc0Rpc2FibGVkInx8b3B0aW9ucz09ImdldERh dGUiKSl7cmV0dXJuICQuZGF0ZXBpY2tlclsiXyIrb3B0aW9ucysiRGF0ZXBpY2tlciJdLmFwcGx5KCQu ZGF0ZXBpY2tlcixbdGhpc1swXV0uY29uY2F0KG90aGVyQXJncykpfWlmKG9wdGlvbnM9PSJvcHRpb24i JiZhcmd1bWVudHMubGVuZ3RoPT0yJiZ0eXBlb2YgYXJndW1lbnRzWzFdPT0ic3RyaW5nIil7cmV0dXJu ICQuZGF0ZXBpY2tlclsiXyIrb3B0aW9ucysiRGF0ZXBpY2tlciJdLmFwcGx5KCQuZGF0ZXBpY2tlcixb dGhpc1swXV0uY29uY2F0KG90aGVyQXJncykpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0eXBl b2Ygb3B0aW9ucz09InN0cmluZyI/JC5kYXRlcGlja2VyWyJfIitvcHRpb25zKyJEYXRlcGlja2VyIl0u YXBwbHkoJC5kYXRlcGlja2VyLFt0aGlzXS5jb25jYXQob3RoZXJBcmdzKSk6JC5kYXRlcGlja2VyLl9h dHRhY2hEYXRlcGlja2VyKHRoaXMsb3B0aW9ucyl9KX07JC5kYXRlcGlja2VyPW5ldyBEYXRlcGlja2Vy KCk7JC5kYXRlcGlja2VyLmluaXRpYWxpemVkPWZhbHNlOyQuZGF0ZXBpY2tlci51dWlkPW5ldyBEYXRl KCkuZ2V0VGltZSgpOyQuZGF0ZXBpY2tlci52ZXJzaW9uPSIxLjcuMiI7d2luZG93LkRQX2pRdWVyeT0k fSkoalF1ZXJ5KTsoZnVuY3Rpb24oZil7dmFyIGQ9e2RyYWdTdGFydDoic3RhcnQuZHJhZ2dhYmxlIixk cmFnOiJkcmFnLmRyYWdnYWJsZSIsZHJhZ1N0b3A6InN0b3AuZHJhZ2dhYmxlIixtYXhIZWlnaHQ6Im1h eEhlaWdodC5yZXNpemFibGUiLG1pbkhlaWdodDoibWluSGVpZ2h0LnJlc2l6YWJsZSIsbWF4V2lkdGg6 Im1heFdpZHRoLnJlc2l6YWJsZSIsbWluV2lkdGg6Im1pbldpZHRoLnJlc2l6YWJsZSIscmVzaXplU3Rh cnQ6InN0YXJ0LnJlc2l6YWJsZSIscmVzaXplOiJkcmFnLnJlc2l6YWJsZSIscmVzaXplU3RvcDoic3Rv cC5yZXNpemFibGUifSxlPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNv cm5lci1hbGwgIjtmLndpZGdldCgidWkuZGlhbG9nIix7X2luaXQ6ZnVuY3Rpb24oKXt0aGlzLm9yaWdp bmFsVGl0bGU9dGhpcy5lbGVtZW50LmF0dHIoInRpdGxlIik7dmFyIGI9dGhpcyxhPXRoaXMub3B0aW9u cyxuPWEudGl0bGV8fHRoaXMub3JpZ2luYWxUaXRsZXx8IiZuYnNwOyIscz1mLnVpLmRpYWxvZy5nZXRU aXRsZUlkKHRoaXMuZWxlbWVudCksYz0odGhpcy51aURpYWxvZz1mKCI8ZGl2Lz4iKSkuYXBwZW5kVG8o ZG9jdW1lbnQuYm9keSkuaGlkZSgpLmFkZENsYXNzKGUrYS5kaWFsb2dDbGFzcykuY3NzKHtwb3NpdGlv bjoiYWJzb2x1dGUiLG92ZXJmbG93OiJoaWRkZW4iLHpJbmRleDphLnpJbmRleH0pLmF0dHIoInRhYklu ZGV4IiwtMSkuY3NzKCJvdXRsaW5lIiwwKS5rZXlkb3duKGZ1bmN0aW9uKGcpeyhhLmNsb3NlT25Fc2Nh cGUmJmcua2V5Q29kZSYmZy5rZXlDb2RlPT1mLnVpLmtleUNvZGUuRVNDQVBFJiZiLmNsb3NlKGcpKX0p LmF0dHIoe3JvbGU6ImRpYWxvZyIsImFyaWEtbGFiZWxsZWRieSI6c30pLm1vdXNlZG93bihmdW5jdGlv bihnKXtiLm1vdmVUb1RvcChmYWxzZSxnKX0pLHE9dGhpcy5lbGVtZW50LnNob3coKS5yZW1vdmVBdHRy KCJ0aXRsZSIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIpLmFw cGVuZFRvKGMpLHI9KHRoaXMudWlEaWFsb2dUaXRsZWJhcj1mKCI8ZGl2PjwvZGl2PiIpKS5hZGRDbGFz cygidWktZGlhbG9nLXRpdGxlYmFyIHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWFsbCB1aS1oZWxw ZXItY2xlYXJmaXgiKS5wcmVwZW5kVG8oYyksbz1mKCc8YSBocmVmPSIjIi8+JykuYWRkQ2xhc3MoInVp LWRpYWxvZy10aXRsZWJhci1jbG9zZSB1aS1jb3JuZXItYWxsIikuYXR0cigicm9sZSIsImJ1dHRvbiIp LmhvdmVyKGZ1bmN0aW9uKCl7by5hZGRDbGFzcygidWktc3RhdGUtaG92ZXIiKX0sZnVuY3Rpb24oKXtv LnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSkuZm9jdXMoZnVuY3Rpb24oKXtvLmFkZENsYXNz KCJ1aS1zdGF0ZS1mb2N1cyIpfSkuYmx1cihmdW5jdGlvbigpe28ucmVtb3ZlQ2xhc3MoInVpLXN0YXRl LWZvY3VzIil9KS5tb3VzZWRvd24oZnVuY3Rpb24oZyl7Zy5zdG9wUHJvcGFnYXRpb24oKX0pLmNsaWNr KGZ1bmN0aW9uKGcpe2IuY2xvc2UoZyk7cmV0dXJuIGZhbHNlfSkuYXBwZW5kVG8ocikscD0odGhpcy51 aURpYWxvZ1RpdGxlYmFyQ2xvc2VUZXh0PWYoIjxzcGFuLz4iKSkuYWRkQ2xhc3MoInVpLWljb24gdWkt aWNvbi1jbG9zZXRoaWNrIikudGV4dChhLmNsb3NlVGV4dCkuYXBwZW5kVG8obyksdT1mKCI8c3Bhbi8+ IikuYWRkQ2xhc3MoInVpLWRpYWxvZy10aXRsZSIpLmF0dHIoImlkIixzKS5odG1sKG4pLnByZXBlbmRU byhyKTtyLmZpbmQoIioiKS5hZGQocikuZGlzYWJsZVNlbGVjdGlvbigpOyhhLmRyYWdnYWJsZSYmZi5m bi5kcmFnZ2FibGUmJnRoaXMuX21ha2VEcmFnZ2FibGUoKSk7KGEucmVzaXphYmxlJiZmLmZuLnJlc2l6 YWJsZSYmdGhpcy5fbWFrZVJlc2l6YWJsZSgpKTt0aGlzLl9jcmVhdGVCdXR0b25zKGEuYnV0dG9ucyk7 dGhpcy5faXNPcGVuPWZhbHNlOyhhLmJnaWZyYW1lJiZmLmZuLmJnaWZyYW1lJiZjLmJnaWZyYW1lKCkp OyhhLmF1dG9PcGVuJiZ0aGlzLm9wZW4oKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXsodGhpcy5vdmVybGF5 JiZ0aGlzLm92ZXJsYXkuZGVzdHJveSgpKTt0aGlzLnVpRGlhbG9nLmhpZGUoKTt0aGlzLmVsZW1lbnQu dW5iaW5kKCIuZGlhbG9nIikucmVtb3ZlRGF0YSgiZGlhbG9nIikucmVtb3ZlQ2xhc3MoInVpLWRpYWxv Zy1jb250ZW50IHVpLXdpZGdldC1jb250ZW50IikuaGlkZSgpLmFwcGVuZFRvKCJib2R5Iik7dGhpcy51 aURpYWxvZy5yZW1vdmUoKTsodGhpcy5vcmlnaW5hbFRpdGxlJiZ0aGlzLmVsZW1lbnQuYXR0cigidGl0 bGUiLHRoaXMub3JpZ2luYWxUaXRsZSkpfSxjbG9zZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzO2lmKGZh bHNlPT09Yy5fdHJpZ2dlcigiYmVmb3JlY2xvc2UiLGEpKXtyZXR1cm59KGMub3ZlcmxheSYmYy5vdmVy bGF5LmRlc3Ryb3koKSk7Yy51aURpYWxvZy51bmJpbmQoImtleXByZXNzLnVpLWRpYWxvZyIpOyhjLm9w dGlvbnMuaGlkZT9jLnVpRGlhbG9nLmhpZGUoYy5vcHRpb25zLmhpZGUsZnVuY3Rpb24oKXtjLl90cmln Z2VyKCJjbG9zZSIsYSl9KTpjLnVpRGlhbG9nLmhpZGUoKSYmYy5fdHJpZ2dlcigiY2xvc2UiLGEpKTtm LnVpLmRpYWxvZy5vdmVybGF5LnJlc2l6ZSgpO2MuX2lzT3Blbj1mYWxzZTtpZihjLm9wdGlvbnMubW9k YWwpe3ZhciBiPTA7ZigiLnVpLWRpYWxvZyIpLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzIT1jLnVpRGlh bG9nWzBdKXtiPU1hdGgubWF4KGIsZih0aGlzKS5jc3MoInotaW5kZXgiKSl9fSk7Zi51aS5kaWFsb2cu bWF4Wj1ifX0saXNPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzT3Blbn0sbW92ZVRvVG9wOmZ1 bmN0aW9uKGEsYil7aWYoKHRoaXMub3B0aW9ucy5tb2RhbCYmIWEpfHwoIXRoaXMub3B0aW9ucy5zdGFj ayYmIXRoaXMub3B0aW9ucy5tb2RhbCkpe3JldHVybiB0aGlzLl90cmlnZ2VyKCJmb2N1cyIsYil9aWYo dGhpcy5vcHRpb25zLnpJbmRleD5mLnVpLmRpYWxvZy5tYXhaKXtmLnVpLmRpYWxvZy5tYXhaPXRoaXMu b3B0aW9ucy56SW5kZXh9KHRoaXMub3ZlcmxheSYmdGhpcy5vdmVybGF5LiRlbC5jc3MoInotaW5kZXgi LGYudWkuZGlhbG9nLm92ZXJsYXkubWF4Wj0rK2YudWkuZGlhbG9nLm1heFopKTt2YXIgYz17c2Nyb2xs VG9wOnRoaXMuZWxlbWVudC5hdHRyKCJzY3JvbGxUb3AiKSxzY3JvbGxMZWZ0OnRoaXMuZWxlbWVudC5h dHRyKCJzY3JvbGxMZWZ0Iil9O3RoaXMudWlEaWFsb2cuY3NzKCJ6LWluZGV4IiwrK2YudWkuZGlhbG9n Lm1heFopO3RoaXMuZWxlbWVudC5hdHRyKGMpO3RoaXMuX3RyaWdnZXIoImZvY3VzIixiKX0sb3Blbjpm dW5jdGlvbigpe2lmKHRoaXMuX2lzT3Blbil7cmV0dXJufXZhciBhPXRoaXMub3B0aW9ucyxiPXRoaXMu dWlEaWFsb2c7dGhpcy5vdmVybGF5PWEubW9kYWw/bmV3IGYudWkuZGlhbG9nLm92ZXJsYXkodGhpcyk6 bnVsbDsoYi5uZXh0KCkubGVuZ3RoJiZiLmFwcGVuZFRvKCJib2R5IikpO3RoaXMuX3NpemUoKTt0aGlz Ll9wb3NpdGlvbihhLnBvc2l0aW9uKTtiLnNob3coYS5zaG93KTt0aGlzLm1vdmVUb1RvcCh0cnVlKTso YS5tb2RhbCYmYi5iaW5kKCJrZXlwcmVzcy51aS1kaWFsb2ciLGZ1bmN0aW9uKGwpe2lmKGwua2V5Q29k ZSE9Zi51aS5rZXlDb2RlLlRBQil7cmV0dXJufXZhciBuPWYoIjp0YWJiYWJsZSIsdGhpcyksYz1uLmZp bHRlcigiOmZpcnN0IilbMF0sbz1uLmZpbHRlcigiOmxhc3QiKVswXTtpZihsLnRhcmdldD09byYmIWwu c2hpZnRLZXkpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmZvY3VzKCl9LDEpfWVsc2V7aWYobC50YXJn ZXQ9PWMmJmwuc2hpZnRLZXkpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtvLmZvY3VzKCl9LDEpfX19KSk7 ZihbXSkuYWRkKGIuZmluZCgiLnVpLWRpYWxvZy1jb250ZW50IDp0YWJiYWJsZTpmaXJzdCIpKS5hZGQo Yi5maW5kKCIudWktZGlhbG9nLWJ1dHRvbnBhbmUgOnRhYmJhYmxlOmZpcnN0IikpLmFkZChiKS5maWx0 ZXIoIjpmaXJzdCIpLmZvY3VzKCk7dGhpcy5fdHJpZ2dlcigib3BlbiIpO3RoaXMuX2lzT3Blbj10cnVl fSxfY3JlYXRlQnV0dG9uczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGg9ZmFsc2UsYz1mKCI8ZGl2Pjwv ZGl2PiIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctYnV0dG9ucGFuZSB1aS13aWRnZXQtY29udGVudCB1aS1o ZWxwZXItY2xlYXJmaXgiKTt0aGlzLnVpRGlhbG9nLmZpbmQoIi51aS1kaWFsb2ctYnV0dG9ucGFuZSIp LnJlbW92ZSgpOyh0eXBlb2YgYT09Im9iamVjdCImJmEhPT1udWxsJiZmLmVhY2goYSxmdW5jdGlvbigp e3JldHVybiAhKGg9dHJ1ZSl9KSk7aWYoaCl7Zi5lYWNoKGEsZnVuY3Rpb24obCxnKXtmKCc8YnV0dG9u IHR5cGU9ImJ1dHRvbiI+PC9idXR0b24+JykuYWRkQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktY29y bmVyLWFsbCIpLnRleHQobCkuY2xpY2soZnVuY3Rpb24oKXtnLmFwcGx5KGIuZWxlbWVudFswXSxhcmd1 bWVudHMpfSkuaG92ZXIoZnVuY3Rpb24oKXtmKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIp fSxmdW5jdGlvbigpe2YodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9KS5mb2N1cyhm dW5jdGlvbigpe2YodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9KS5ibHVyKGZ1bmN0aW9u KCl7Zih0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pLmFwcGVuZFRvKGMpfSk7Yy5h cHBlbmRUbyh0aGlzLnVpRGlhbG9nKX19LF9tYWtlRHJhZ2dhYmxlOmZ1bmN0aW9uKCl7dmFyIGM9dGhp cyxhPXRoaXMub3B0aW9ucyxiO3RoaXMudWlEaWFsb2cuZHJhZ2dhYmxlKHtjYW5jZWw6Ii51aS1kaWFs b2ctY29udGVudCIsaGFuZGxlOiIudWktZGlhbG9nLXRpdGxlYmFyIixjb250YWlubWVudDoiZG9jdW1l bnQiLHN0YXJ0OmZ1bmN0aW9uKCl7Yj1hLmhlaWdodDtmKHRoaXMpLmhlaWdodChmKHRoaXMpLmhlaWdo dCgpKS5hZGRDbGFzcygidWktZGlhbG9nLWRyYWdnaW5nIik7KGEuZHJhZ1N0YXJ0JiZhLmRyYWdTdGFy dC5hcHBseShjLmVsZW1lbnRbMF0sYXJndW1lbnRzKSl9LGRyYWc6ZnVuY3Rpb24oKXsoYS5kcmFnJiZh LmRyYWcuYXBwbHkoYy5lbGVtZW50WzBdLGFyZ3VtZW50cykpfSxzdG9wOmZ1bmN0aW9uKCl7Zih0aGlz KS5yZW1vdmVDbGFzcygidWktZGlhbG9nLWRyYWdnaW5nIikuaGVpZ2h0KGIpOyhhLmRyYWdTdG9wJiZh LmRyYWdTdG9wLmFwcGx5KGMuZWxlbWVudFswXSxhcmd1bWVudHMpKTtmLnVpLmRpYWxvZy5vdmVybGF5 LnJlc2l6ZSgpfX0pfSxfbWFrZVJlc2l6YWJsZTpmdW5jdGlvbihhKXthPShhPT09dW5kZWZpbmVkP3Ro aXMub3B0aW9ucy5yZXNpemFibGU6YSk7dmFyIGg9dGhpcyxiPXRoaXMub3B0aW9ucyxjPXR5cGVvZiBh PT0ic3RyaW5nIj9hOiJuLGUscyx3LHNlLHN3LG5lLG53Ijt0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSh7 Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQiLGFsc29SZXNpemU6dGhpcy5lbGVtZW50LG1heFdpZHRo OmIubWF4V2lkdGgsbWF4SGVpZ2h0OmIubWF4SGVpZ2h0LG1pbldpZHRoOmIubWluV2lkdGgsbWluSGVp Z2h0OmIubWluSGVpZ2h0LHN0YXJ0OmZ1bmN0aW9uKCl7Zih0aGlzKS5hZGRDbGFzcygidWktZGlhbG9n LXJlc2l6aW5nIik7KGIucmVzaXplU3RhcnQmJmIucmVzaXplU3RhcnQuYXBwbHkoaC5lbGVtZW50WzBd LGFyZ3VtZW50cykpfSxyZXNpemU6ZnVuY3Rpb24oKXsoYi5yZXNpemUmJmIucmVzaXplLmFwcGx5KGgu ZWxlbWVudFswXSxhcmd1bWVudHMpKX0saGFuZGxlczpjLHN0b3A6ZnVuY3Rpb24oKXtmKHRoaXMpLnJl bW92ZUNsYXNzKCJ1aS1kaWFsb2ctcmVzaXppbmciKTtiLmhlaWdodD1mKHRoaXMpLmhlaWdodCgpO2Iu d2lkdGg9Zih0aGlzKS53aWR0aCgpOyhiLnJlc2l6ZVN0b3AmJmIucmVzaXplU3RvcC5hcHBseShoLmVs ZW1lbnRbMF0sYXJndW1lbnRzKSk7Zi51aS5kaWFsb2cub3ZlcmxheS5yZXNpemUoKX19KS5maW5kKCIu dWktcmVzaXphYmxlLXNlIikuYWRkQ2xhc3MoInVpLWljb24gdWktaWNvbi1ncmlwLWRpYWdvbmFsLXNl Iil9LF9wb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgbj1mKHdpbmRvdyksbD1mKGRvY3VtZW50KSxjPWwu c2Nyb2xsVG9wKCksbz1sLnNjcm9sbExlZnQoKSxiPWM7aWYoZi5pbkFycmF5KGEsWyJjZW50ZXIiLCJ0 b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXSk+PTApe2E9W2E9PSJyaWdodCJ8fGE9PSJsZWZ0Ij9h OiJjZW50ZXIiLGE9PSJ0b3AifHxhPT0iYm90dG9tIj9hOiJtaWRkbGUiXX1pZihhLmNvbnN0cnVjdG9y IT1BcnJheSl7YT1bImNlbnRlciIsIm1pZGRsZSJdfWlmKGFbMF0uY29uc3RydWN0b3I9PU51bWJlcil7 bys9YVswXX1lbHNle3N3aXRjaChhWzBdKXtjYXNlImxlZnQiOm8rPTA7YnJlYWs7Y2FzZSJyaWdodCI6 bys9bi53aWR0aCgpLXRoaXMudWlEaWFsb2cub3V0ZXJXaWR0aCgpO2JyZWFrO2RlZmF1bHQ6Y2FzZSJj ZW50ZXIiOm8rPShuLndpZHRoKCktdGhpcy51aURpYWxvZy5vdXRlcldpZHRoKCkpLzJ9fWlmKGFbMV0u Y29uc3RydWN0b3I9PU51bWJlcil7Yys9YVsxXX1lbHNle3N3aXRjaChhWzFdKXtjYXNlInRvcCI6Yys9 MDticmVhaztjYXNlImJvdHRvbSI6Yys9bi5oZWlnaHQoKS10aGlzLnVpRGlhbG9nLm91dGVySGVpZ2h0 KCk7YnJlYWs7ZGVmYXVsdDpjYXNlIm1pZGRsZSI6Yys9KG4uaGVpZ2h0KCktdGhpcy51aURpYWxvZy5v dXRlckhlaWdodCgpKS8yfX1jPU1hdGgubWF4KGMsYik7dGhpcy51aURpYWxvZy5jc3Moe3RvcDpjLGxl ZnQ6b30pfSxfc2V0RGF0YTpmdW5jdGlvbihjLGIpeyhkW2NdJiZ0aGlzLnVpRGlhbG9nLmRhdGEoZFtj XSxiKSk7c3dpdGNoKGMpe2Nhc2UiYnV0dG9ucyI6dGhpcy5fY3JlYXRlQnV0dG9ucyhiKTticmVhaztj YXNlImNsb3NlVGV4dCI6dGhpcy51aURpYWxvZ1RpdGxlYmFyQ2xvc2VUZXh0LnRleHQoYik7YnJlYWs7 Y2FzZSJkaWFsb2dDbGFzcyI6dGhpcy51aURpYWxvZy5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuZGlh bG9nQ2xhc3MpLmFkZENsYXNzKGUrYik7YnJlYWs7Y2FzZSJkcmFnZ2FibGUiOihiP3RoaXMuX21ha2VE cmFnZ2FibGUoKTp0aGlzLnVpRGlhbG9nLmRyYWdnYWJsZSgiZGVzdHJveSIpKTticmVhaztjYXNlImhl aWdodCI6dGhpcy51aURpYWxvZy5oZWlnaHQoYik7YnJlYWs7Y2FzZSJwb3NpdGlvbiI6dGhpcy5fcG9z aXRpb24oYik7YnJlYWs7Y2FzZSJyZXNpemFibGUiOnZhciBoPXRoaXMudWlEaWFsb2csYT10aGlzLnVp RGlhbG9nLmlzKCI6ZGF0YShyZXNpemFibGUpIik7KGEmJiFiJiZoLnJlc2l6YWJsZSgiZGVzdHJveSIp KTsoYSYmdHlwZW9mIGI9PSJzdHJpbmciJiZoLnJlc2l6YWJsZSgib3B0aW9uIiwiaGFuZGxlcyIsYikp OyhhfHx0aGlzLl9tYWtlUmVzaXphYmxlKGIpKTticmVhaztjYXNlInRpdGxlIjpmKCIudWktZGlhbG9n LXRpdGxlIix0aGlzLnVpRGlhbG9nVGl0bGViYXIpLmh0bWwoYnx8IiZuYnNwOyIpO2JyZWFrO2Nhc2Ui d2lkdGgiOnRoaXMudWlEaWFsb2cud2lkdGgoYik7YnJlYWt9Zi53aWRnZXQucHJvdG90eXBlLl9zZXRE YXRhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX3NpemU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlv bnM7dGhpcy5lbGVtZW50LmNzcyh7aGVpZ2h0OjAsbWluSGVpZ2h0OjAsd2lkdGg6ImF1dG8ifSk7dmFy IGI9dGhpcy51aURpYWxvZy5jc3Moe2hlaWdodDoiYXV0byIsd2lkdGg6YS53aWR0aH0pLmhlaWdodCgp O3RoaXMuZWxlbWVudC5jc3Moe21pbkhlaWdodDpNYXRoLm1heChhLm1pbkhlaWdodC1iLDApLGhlaWdo dDphLmhlaWdodD09ImF1dG8iPyJhdXRvIjpNYXRoLm1heChhLmhlaWdodC1iLDApfSl9fSk7Zi5leHRl bmQoZi51aS5kaWFsb2cse3ZlcnNpb246IjEuNy4yIixkZWZhdWx0czp7YXV0b09wZW46dHJ1ZSxiZ2lm cmFtZTpmYWxzZSxidXR0b25zOnt9LGNsb3NlT25Fc2NhcGU6dHJ1ZSxjbG9zZVRleHQ6ImNsb3NlIixk aWFsb2dDbGFzczoiIixkcmFnZ2FibGU6dHJ1ZSxoaWRlOm51bGwsaGVpZ2h0OiJhdXRvIixtYXhIZWln aHQ6ZmFsc2UsbWF4V2lkdGg6ZmFsc2UsbWluSGVpZ2h0OjE1MCxtaW5XaWR0aDoxNTAsbW9kYWw6ZmFs c2UscG9zaXRpb246ImNlbnRlciIscmVzaXphYmxlOnRydWUsc2hvdzpudWxsLHN0YWNrOnRydWUsdGl0 bGU6IiIsd2lkdGg6MzAwLHpJbmRleDoxMDAwfSxnZXR0ZXI6ImlzT3BlbiIsdXVpZDowLG1heFo6MCxn ZXRUaXRsZUlkOmZ1bmN0aW9uKGEpe3JldHVybiJ1aS1kaWFsb2ctdGl0bGUtIisoYS5hdHRyKCJpZCIp fHwrK3RoaXMudXVpZCl9LG92ZXJsYXk6ZnVuY3Rpb24oYSl7dGhpcy4kZWw9Zi51aS5kaWFsb2cub3Zl cmxheS5jcmVhdGUoYSl9fSk7Zi5leHRlbmQoZi51aS5kaWFsb2cub3ZlcmxheSx7aW5zdGFuY2VzOltd LG1heFo6MCxldmVudHM6Zi5tYXAoImZvY3VzLG1vdXNlZG93bixtb3VzZXVwLGtleWRvd24sa2V5cHJl c3MsY2xpY2siLnNwbGl0KCIsIiksZnVuY3Rpb24oYSl7cmV0dXJuIGErIi5kaWFsb2ctb3ZlcmxheSJ9 KS5qb2luKCIgIiksY3JlYXRlOmZ1bmN0aW9uKGEpe2lmKHRoaXMuaW5zdGFuY2VzLmxlbmd0aD09PTAp e3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihmLnVpLmRpYWxvZy5vdmVybGF5Lmluc3RhbmNlcy5sZW5n dGgpe2YoZG9jdW1lbnQpLmJpbmQoZi51aS5kaWFsb2cub3ZlcmxheS5ldmVudHMsZnVuY3Rpb24oaCl7 dmFyIGM9ZihoLnRhcmdldCkucGFyZW50cygiLnVpLWRpYWxvZyIpLmNzcygiekluZGV4Iil8fDA7cmV0 dXJuKGM+Zi51aS5kaWFsb2cub3ZlcmxheS5tYXhaKX0pfX0sMSk7Zihkb2N1bWVudCkuYmluZCgia2V5 ZG93bi5kaWFsb2ctb3ZlcmxheSIsZnVuY3Rpb24oYyl7KGEub3B0aW9ucy5jbG9zZU9uRXNjYXBlJiZj LmtleUNvZGUmJmMua2V5Q29kZT09Zi51aS5rZXlDb2RlLkVTQ0FQRSYmYS5jbG9zZShjKSl9KTtmKHdp bmRvdykuYmluZCgicmVzaXplLmRpYWxvZy1vdmVybGF5IixmLnVpLmRpYWxvZy5vdmVybGF5LnJlc2l6 ZSl9dmFyIGI9ZigiPGRpdj48L2Rpdj4iKS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KS5hZGRDbGFzcygi dWktd2lkZ2V0LW92ZXJsYXkiKS5jc3Moe3dpZHRoOnRoaXMud2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWln aHQoKX0pOyhhLm9wdGlvbnMuYmdpZnJhbWUmJmYuZm4uYmdpZnJhbWUmJmIuYmdpZnJhbWUoKSk7dGhp cy5pbnN0YW5jZXMucHVzaChiKTtyZXR1cm4gYn0sZGVzdHJveTpmdW5jdGlvbihiKXt0aGlzLmluc3Rh bmNlcy5zcGxpY2UoZi5pbkFycmF5KHRoaXMuaW5zdGFuY2VzLGIpLDEpO2lmKHRoaXMuaW5zdGFuY2Vz Lmxlbmd0aD09PTApe2YoW2RvY3VtZW50LHdpbmRvd10pLnVuYmluZCgiLmRpYWxvZy1vdmVybGF5Iil9 Yi5yZW1vdmUoKTt2YXIgYT0wO2YuZWFjaCh0aGlzLmluc3RhbmNlcyxmdW5jdGlvbigpe2E9TWF0aC5t YXgoYSx0aGlzLmNzcygiei1pbmRleCIpKX0pO3RoaXMubWF4Wj1hfSxoZWlnaHQ6ZnVuY3Rpb24oKXtp ZihmLmJyb3dzZXIubXNpZSYmZi5icm93c2VyLnZlcnNpb248Nyl7dmFyIGE9TWF0aC5tYXgoZG9jdW1l bnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCxkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCk7 dmFyIGI9TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodCxkb2N1bWVu dC5ib2R5Lm9mZnNldEhlaWdodCk7aWYoYTxiKXtyZXR1cm4gZih3aW5kb3cpLmhlaWdodCgpKyJweCJ9 ZWxzZXtyZXR1cm4gYSsicHgifX1lbHNle3JldHVybiBmKGRvY3VtZW50KS5oZWlnaHQoKSsicHgifX0s d2lkdGg6ZnVuY3Rpb24oKXtpZihmLmJyb3dzZXIubXNpZSYmZi5icm93c2VyLnZlcnNpb248Nyl7dmFy IGI9TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoLGRvY3VtZW50LmJv ZHkuc2Nyb2xsV2lkdGgpO3ZhciBhPU1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZz ZXRXaWR0aCxkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTtpZihiPGEpe3JldHVybiBmKHdpbmRvdyku d2lkdGgoKSsicHgifWVsc2V7cmV0dXJuIGIrInB4In19ZWxzZXtyZXR1cm4gZihkb2N1bWVudCkud2lk dGgoKSsicHgifX0scmVzaXplOmZ1bmN0aW9uKCl7dmFyIGE9ZihbXSk7Zi5lYWNoKGYudWkuZGlhbG9n Lm92ZXJsYXkuaW5zdGFuY2VzLGZ1bmN0aW9uKCl7YT1hLmFkZCh0aGlzKX0pO2EuY3NzKHt3aWR0aDow LGhlaWdodDowfSkuY3NzKHt3aWR0aDpmLnVpLmRpYWxvZy5vdmVybGF5LndpZHRoKCksaGVpZ2h0OmYu dWkuZGlhbG9nLm92ZXJsYXkuaGVpZ2h0KCl9KX19KTtmLmV4dGVuZChmLnVpLmRpYWxvZy5vdmVybGF5 LnByb3RvdHlwZSx7ZGVzdHJveTpmdW5jdGlvbigpe2YudWkuZGlhbG9nLm92ZXJsYXkuZGVzdHJveSh0 aGlzLiRlbCl9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihiKXtiLndpZGdldCgidWkucHJvZ3Jlc3NiYXIi LHtfaW5pdDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWkt d2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5hdHRyKHtyb2xlOiJwcm9ncmVz c2JhciIsImFyaWEtdmFsdWVtaW4iOnRoaXMuX3ZhbHVlTWluKCksImFyaWEtdmFsdWVtYXgiOnRoaXMu X3ZhbHVlTWF4KCksImFyaWEtdmFsdWVub3ciOnRoaXMuX3ZhbHVlKCl9KTt0aGlzLnZhbHVlRGl2PWIo JzxkaXYgY2xhc3M9InVpLXByb2dyZXNzYmFyLXZhbHVlIHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVy LWxlZnQiPjwvZGl2PicpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCk7dGhpcy5fcmVmcmVzaFZhbHVlKCl9 LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXByb2dyZXNzYmFy IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIikucmVtb3ZlQXR0cigicm9s ZSIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtaW4iKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbWF4Iiku cmVtb3ZlQXR0cigiYXJpYS12YWx1ZW5vdyIpLnJlbW92ZURhdGEoInByb2dyZXNzYmFyIikudW5iaW5k KCIucHJvZ3Jlc3NiYXIiKTt0aGlzLnZhbHVlRGl2LnJlbW92ZSgpO2Iud2lkZ2V0LnByb3RvdHlwZS5k ZXN0cm95LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdmFsdWU6ZnVuY3Rpb24oYSl7aWYoYT09PXVuZGVm aW5lZCl7cmV0dXJuIHRoaXMuX3ZhbHVlKCl9dGhpcy5fc2V0RGF0YSgidmFsdWUiLGEpO3JldHVybiB0 aGlzfSxfc2V0RGF0YTpmdW5jdGlvbihhLGQpe3N3aXRjaChhKXtjYXNlInZhbHVlIjp0aGlzLm9wdGlv bnMudmFsdWU9ZDt0aGlzLl9yZWZyZXNoVmFsdWUoKTt0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLG51bGws e30pO2JyZWFrfWIud2lkZ2V0LnByb3RvdHlwZS5fc2V0RGF0YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9 LF92YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy52YWx1ZTtpZihhPHRoaXMuX3ZhbHVl TWluKCkpe2E9dGhpcy5fdmFsdWVNaW4oKX1pZihhPnRoaXMuX3ZhbHVlTWF4KCkpe2E9dGhpcy5fdmFs dWVNYXgoKX1yZXR1cm4gYX0sX3ZhbHVlTWluOmZ1bmN0aW9uKCl7dmFyIGE9MDtyZXR1cm4gYX0sX3Zh bHVlTWF4OmZ1bmN0aW9uKCl7dmFyIGE9MTAwO3JldHVybiBhfSxfcmVmcmVzaFZhbHVlOmZ1bmN0aW9u KCl7dmFyIGE9dGhpcy52YWx1ZSgpO3RoaXMudmFsdWVEaXZbYT09dGhpcy5fdmFsdWVNYXgoKT8iYWRk Q2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJ1aS1jb3JuZXItcmlnaHQiKTt0aGlzLnZhbHVlRGl2LndpZHRo KGErIiUiKTt0aGlzLmVsZW1lbnQuYXR0cigiYXJpYS12YWx1ZW5vdyIsYSl9fSk7Yi5leHRlbmQoYi51 aS5wcm9ncmVzc2Jhcix7dmVyc2lvbjoiMS43LjIiLGRlZmF1bHRzOnt2YWx1ZTowfX0pfSkoalF1ZXJ5 KTsoZnVuY3Rpb24oYil7Yi53aWRnZXQoInVpLnNsaWRlciIsYi5leHRlbmQoe30sYi51aS5tb3VzZSx7 X2luaXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGQ9dGhpcy5vcHRpb25zO3RoaXMuX2tleVNsaWRpbmc9 ZmFsc2U7dGhpcy5faGFuZGxlSW5kZXg9bnVsbDt0aGlzLl9kZXRlY3RPcmllbnRhdGlvbigpO3RoaXMu X21vdXNlSW5pdCgpO3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktc2xpZGVyIHVpLXNsaWRlci0iK3Ro aXMub3JpZW50YXRpb24rIiB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIp O3RoaXMucmFuZ2U9YihbXSk7aWYoZC5yYW5nZSl7aWYoZC5yYW5nZT09PXRydWUpe3RoaXMucmFuZ2U9 YigiPGRpdj48L2Rpdj4iKTtpZighZC52YWx1ZXMpe2QudmFsdWVzPVt0aGlzLl92YWx1ZU1pbigpLHRo aXMuX3ZhbHVlTWluKCldfWlmKGQudmFsdWVzLmxlbmd0aCYmZC52YWx1ZXMubGVuZ3RoIT0yKXtkLnZh bHVlcz1bZC52YWx1ZXNbMF0sZC52YWx1ZXNbMF1dfX1lbHNle3RoaXMucmFuZ2U9YigiPGRpdj48L2Rp dj4iKX10aGlzLnJhbmdlLmFwcGVuZFRvKHRoaXMuZWxlbWVudCkuYWRkQ2xhc3MoInVpLXNsaWRlci1y YW5nZSIpO2lmKGQucmFuZ2U9PSJtaW4ifHxkLnJhbmdlPT0ibWF4Iil7dGhpcy5yYW5nZS5hZGRDbGFz cygidWktc2xpZGVyLXJhbmdlLSIrZC5yYW5nZSl9dGhpcy5yYW5nZS5hZGRDbGFzcygidWktd2lkZ2V0 LWhlYWRlciIpfWlmKGIoIi51aS1zbGlkZXItaGFuZGxlIix0aGlzLmVsZW1lbnQpLmxlbmd0aD09MCl7 YignPGEgaHJlZj0iIyI+PC9hPicpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCkuYWRkQ2xhc3MoInVpLXNs aWRlci1oYW5kbGUiKX1pZihkLnZhbHVlcyYmZC52YWx1ZXMubGVuZ3RoKXt3aGlsZShiKCIudWktc2xp ZGVyLWhhbmRsZSIsdGhpcy5lbGVtZW50KS5sZW5ndGg8ZC52YWx1ZXMubGVuZ3RoKXtiKCc8YSBocmVm PSIjIj48L2E+JykuYXBwZW5kVG8odGhpcy5lbGVtZW50KS5hZGRDbGFzcygidWktc2xpZGVyLWhhbmRs ZSIpfX10aGlzLmhhbmRsZXM9YigiLnVpLXNsaWRlci1oYW5kbGUiLHRoaXMuZWxlbWVudCkuYWRkQ2xh c3MoInVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIpO3RoaXMuaGFuZGxlPXRoaXMuaGFuZGxl cy5lcSgwKTt0aGlzLmhhbmRsZXMuYWRkKHRoaXMucmFuZ2UpLmZpbHRlcigiYSIpLmNsaWNrKGZ1bmN0 aW9uKGMpe2MucHJldmVudERlZmF1bHQoKX0pLmhvdmVyKGZ1bmN0aW9uKCl7aWYoIWQuZGlzYWJsZWQp e2IodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9fSxmdW5jdGlvbigpe2IodGhpcykucmVt b3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9KS5mb2N1cyhmdW5jdGlvbigpe2lmKCFkLmRpc2FibGVk KXtiKCIudWktc2xpZGVyIC51aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1 cyIpO2IodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9ZWxzZXtiKHRoaXMpLmJsdXIoKX19 KS5ibHVyKGZ1bmN0aW9uKCl7Yih0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pO3Ro aXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKGMpe2IodGhpcykuZGF0YSgiaW5kZXgudWktc2xpZGVyLWhh bmRsZSIsYyl9KTt0aGlzLmhhbmRsZXMua2V5ZG93bihmdW5jdGlvbihjKXt2YXIgbz10cnVlO3ZhciBw PWIodGhpcykuZGF0YSgiaW5kZXgudWktc2xpZGVyLWhhbmRsZSIpO2lmKGEub3B0aW9ucy5kaXNhYmxl ZCl7cmV0dXJufXN3aXRjaChjLmtleUNvZGUpe2Nhc2UgYi51aS5rZXlDb2RlLkhPTUU6Y2FzZSBiLnVp LmtleUNvZGUuRU5EOmNhc2UgYi51aS5rZXlDb2RlLlVQOmNhc2UgYi51aS5rZXlDb2RlLlJJR0hUOmNh c2UgYi51aS5rZXlDb2RlLkRPV046Y2FzZSBiLnVpLmtleUNvZGUuTEVGVDpvPWZhbHNlO2lmKCFhLl9r ZXlTbGlkaW5nKXthLl9rZXlTbGlkaW5nPXRydWU7Yih0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtYWN0 aXZlIik7YS5fc3RhcnQoYyxwKX1icmVha312YXIgbixxLGw9YS5fc3RlcCgpO2lmKGEub3B0aW9ucy52 YWx1ZXMmJmEub3B0aW9ucy52YWx1ZXMubGVuZ3RoKXtuPXE9YS52YWx1ZXMocCl9ZWxzZXtuPXE9YS52 YWx1ZSgpfXN3aXRjaChjLmtleUNvZGUpe2Nhc2UgYi51aS5rZXlDb2RlLkhPTUU6cT1hLl92YWx1ZU1p bigpO2JyZWFrO2Nhc2UgYi51aS5rZXlDb2RlLkVORDpxPWEuX3ZhbHVlTWF4KCk7YnJlYWs7Y2FzZSBi LnVpLmtleUNvZGUuVVA6Y2FzZSBiLnVpLmtleUNvZGUuUklHSFQ6aWYobj09YS5fdmFsdWVNYXgoKSl7 cmV0dXJufXE9bitsO2JyZWFrO2Nhc2UgYi51aS5rZXlDb2RlLkRPV046Y2FzZSBiLnVpLmtleUNvZGUu TEVGVDppZihuPT1hLl92YWx1ZU1pbigpKXtyZXR1cm59cT1uLWw7YnJlYWt9YS5fc2xpZGUoYyxwLHEp O3JldHVybiBvfSkua2V5dXAoZnVuY3Rpb24oYyl7dmFyIGY9Yih0aGlzKS5kYXRhKCJpbmRleC51aS1z bGlkZXItaGFuZGxlIik7aWYoYS5fa2V5U2xpZGluZyl7YS5fc3RvcChjLGYpO2EuX2NoYW5nZShjLGYp O2EuX2tleVNsaWRpbmc9ZmFsc2U7Yih0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIil9 fSk7dGhpcy5fcmVmcmVzaFZhbHVlKCl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZXMucmVt b3ZlKCk7dGhpcy5yYW5nZS5yZW1vdmUoKTt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNsaWRl ciB1aS1zbGlkZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWwgdWktc2xpZGVyLWRpc2FibGVk IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIikucmVtb3ZlRGF0YSgic2xp ZGVyIikudW5iaW5kKCIuc2xpZGVyIik7dGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZUNhcHR1cmU6 ZnVuY3Rpb24ocyl7dmFyIHI9dGhpcy5vcHRpb25zO2lmKHIuZGlzYWJsZWQpe3JldHVybiBmYWxzZX10 aGlzLmVsZW1lbnRTaXplPXt3aWR0aDp0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlz LmVsZW1lbnQub3V0ZXJIZWlnaHQoKX07dGhpcy5lbGVtZW50T2Zmc2V0PXRoaXMuZWxlbWVudC5vZmZz ZXQoKTt2YXIgbz17eDpzLnBhZ2VYLHk6cy5wYWdlWX07dmFyIGw9dGhpcy5fbm9ybVZhbHVlRnJvbU1v dXNlKG8pO3ZhciB1PXRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSsxLHE7dmFyIGE9dGhp cyxuO3RoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKGQpe3ZhciBjPU1hdGguYWJzKGwtYS52YWx1ZXMo ZCkpO2lmKHU+Yyl7dT1jO3E9Yih0aGlzKTtuPWR9fSk7aWYoci5yYW5nZT09dHJ1ZSYmdGhpcy52YWx1 ZXMoMSk9PXIubWluKXtxPWIodGhpcy5oYW5kbGVzWysrbl0pfXRoaXMuX3N0YXJ0KHMsbik7YS5faGFu ZGxlSW5kZXg9bjtxLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5mb2N1cygpO3ZhciBwPXEub2Zm c2V0KCk7dmFyIHY9IWIocy50YXJnZXQpLnBhcmVudHMoKS5hbmRTZWxmKCkuaXMoIi51aS1zbGlkZXIt aGFuZGxlIik7dGhpcy5fY2xpY2tPZmZzZXQ9dj97bGVmdDowLHRvcDowfTp7bGVmdDpzLnBhZ2VYLXAu bGVmdC0ocS53aWR0aCgpLzIpLHRvcDpzLnBhZ2VZLXAudG9wLShxLmhlaWdodCgpLzIpLShwYXJzZUlu dChxLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLShwYXJzZUludChxLmNzcygiYm9yZGVyQm90 dG9tV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChxLmNzcygibWFyZ2luVG9wIiksMTApfHwwKX07bD10 aGlzLl9ub3JtVmFsdWVGcm9tTW91c2Uobyk7dGhpcy5fc2xpZGUocyxuLGwpO3JldHVybiB0cnVlfSxf bW91c2VTdGFydDpmdW5jdGlvbihhKXtyZXR1cm4gdHJ1ZX0sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt2 YXIgYT17eDplLnBhZ2VYLHk6ZS5wYWdlWX07dmFyIGY9dGhpcy5fbm9ybVZhbHVlRnJvbU1vdXNlKGEp O3RoaXMuX3NsaWRlKGUsdGhpcy5faGFuZGxlSW5kZXgsZik7cmV0dXJuIGZhbHNlfSxfbW91c2VTdG9w OmZ1bmN0aW9uKGEpe3RoaXMuaGFuZGxlcy5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIik7dGhp cy5fc3RvcChhLHRoaXMuX2hhbmRsZUluZGV4KTt0aGlzLl9jaGFuZ2UoYSx0aGlzLl9oYW5kbGVJbmRl eCk7dGhpcy5faGFuZGxlSW5kZXg9bnVsbDt0aGlzLl9jbGlja09mZnNldD1udWxsO3JldHVybiBmYWxz ZX0sX2RldGVjdE9yaWVudGF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5vcmllbnRhdGlvbj10aGlzLm9wdGlv bnMub3JpZW50YXRpb249PSJ2ZXJ0aWNhbCI/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LF9ub3JtVmFs dWVGcm9tTW91c2U6ZnVuY3Rpb24ocil7dmFyIHMsbjtpZigiaG9yaXpvbnRhbCI9PXRoaXMub3JpZW50 YXRpb24pe3M9dGhpcy5lbGVtZW50U2l6ZS53aWR0aDtuPXIueC10aGlzLmVsZW1lbnRPZmZzZXQubGVm dC0odGhpcy5fY2xpY2tPZmZzZXQ/dGhpcy5fY2xpY2tPZmZzZXQubGVmdDowKX1lbHNle3M9dGhpcy5l bGVtZW50U2l6ZS5oZWlnaHQ7bj1yLnktdGhpcy5lbGVtZW50T2Zmc2V0LnRvcC0odGhpcy5fY2xpY2tP ZmZzZXQ/dGhpcy5fY2xpY2tPZmZzZXQudG9wOjApfXZhciBwPShuL3MpO2lmKHA+MSl7cD0xfWlmKHA8 MCl7cD0wfWlmKCJ2ZXJ0aWNhbCI9PXRoaXMub3JpZW50YXRpb24pe3A9MS1wfXZhciBxPXRoaXMuX3Zh bHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSxsPXAqcSxhPWwldGhpcy5vcHRpb25zLnN0ZXAsbz10aGlz Ll92YWx1ZU1pbigpK2wtYTtpZihhPih0aGlzLm9wdGlvbnMuc3RlcC8yKSl7bys9dGhpcy5vcHRpb25z LnN0ZXB9cmV0dXJuIHBhcnNlRmxvYXQoby50b0ZpeGVkKDUpKX0sX3N0YXJ0OmZ1bmN0aW9uKGUsZil7 dmFyIGE9e2hhbmRsZTp0aGlzLmhhbmRsZXNbZl0sdmFsdWU6dGhpcy52YWx1ZSgpfTtpZih0aGlzLm9w dGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCl7YS52YWx1ZT10aGlzLnZhbHVl cyhmKTthLnZhbHVlcz10aGlzLnZhbHVlcygpfXRoaXMuX3RyaWdnZXIoInN0YXJ0IixlLGEpfSxfc2xp ZGU6ZnVuY3Rpb24obyxwLHEpe3ZhciBuPXRoaXMuaGFuZGxlc1twXTtpZih0aGlzLm9wdGlvbnMudmFs dWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCl7dmFyIGE9dGhpcy52YWx1ZXMocD8wOjEpO2lm KCh0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aD09MiYmdGhpcy5vcHRpb25zLnJhbmdlPT09dHJ1ZSkm JigocD09MCYmcT5hKXx8KHA9PTEmJnE8YSkpKXtxPWF9aWYocSE9dGhpcy52YWx1ZXMocCkpe3ZhciBy PXRoaXMudmFsdWVzKCk7cltwXT1xO3ZhciBsPXRoaXMuX3RyaWdnZXIoInNsaWRlIixvLHtoYW5kbGU6 dGhpcy5oYW5kbGVzW3BdLHZhbHVlOnEsdmFsdWVzOnJ9KTt2YXIgYT10aGlzLnZhbHVlcyhwPzA6MSk7 aWYobCE9PWZhbHNlKXt0aGlzLnZhbHVlcyhwLHEsKG8udHlwZT09Im1vdXNlZG93biImJnRoaXMub3B0 aW9ucy5hbmltYXRlKSx0cnVlKX19fWVsc2V7aWYocSE9dGhpcy52YWx1ZSgpKXt2YXIgbD10aGlzLl90 cmlnZ2VyKCJzbGlkZSIsbyx7aGFuZGxlOnRoaXMuaGFuZGxlc1twXSx2YWx1ZTpxfSk7aWYobCE9PWZh bHNlKXt0aGlzLl9zZXREYXRhKCJ2YWx1ZSIscSwoby50eXBlPT0ibW91c2Vkb3duIiYmdGhpcy5vcHRp b25zLmFuaW1hdGUpKX19fX0sX3N0b3A6ZnVuY3Rpb24oZSxmKXt2YXIgYT17aGFuZGxlOnRoaXMuaGFu ZGxlc1tmXSx2YWx1ZTp0aGlzLnZhbHVlKCl9O2lmKHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0 aW9ucy52YWx1ZXMubGVuZ3RoKXthLnZhbHVlPXRoaXMudmFsdWVzKGYpO2EudmFsdWVzPXRoaXMudmFs dWVzKCl9dGhpcy5fdHJpZ2dlcigic3RvcCIsZSxhKX0sX2NoYW5nZTpmdW5jdGlvbihlLGYpe3ZhciBh PXtoYW5kbGU6dGhpcy5oYW5kbGVzW2ZdLHZhbHVlOnRoaXMudmFsdWUoKX07aWYodGhpcy5vcHRpb25z LnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgpe2EudmFsdWU9dGhpcy52YWx1ZXMoZik7 YS52YWx1ZXM9dGhpcy52YWx1ZXMoKX10aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLGUsYSl9LHZhbHVlOmZ1 bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgpe3RoaXMuX3NldERhdGEoInZhbHVlIixhKTt0aGlz Ll9jaGFuZ2UobnVsbCwwKX1yZXR1cm4gdGhpcy5fdmFsdWUoKX0sdmFsdWVzOmZ1bmN0aW9uKGEsZixo LGcpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7dGhpcy5vcHRpb25zLnZhbHVlc1thXT1mO3RoaXMuX3Jl ZnJlc2hWYWx1ZShoKTtpZighZyl7dGhpcy5fY2hhbmdlKG51bGwsYSl9fWlmKGFyZ3VtZW50cy5sZW5n dGgpe2lmKHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKXtyZXR1 cm4gdGhpcy5fdmFsdWVzKGEpfWVsc2V7cmV0dXJuIHRoaXMudmFsdWUoKX19ZWxzZXtyZXR1cm4gdGhp cy5fdmFsdWVzKCl9fSxfc2V0RGF0YTpmdW5jdGlvbihhLGUsZil7Yi53aWRnZXQucHJvdG90eXBlLl9z ZXREYXRhLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtzd2l0Y2goYSl7Y2FzZSJkaXNhYmxlZCI6aWYoZSl7 dGhpcy5oYW5kbGVzLmZpbHRlcigiLnVpLXN0YXRlLWZvY3VzIikuYmx1cigpO3RoaXMuaGFuZGxlcy5y ZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKTt0aGlzLmhhbmRsZXMuYXR0cigiZGlzYWJsZWQiLCJk aXNhYmxlZCIpfWVsc2V7dGhpcy5oYW5kbGVzLnJlbW92ZUF0dHIoImRpc2FibGVkIil9Y2FzZSJvcmll bnRhdGlvbiI6dGhpcy5fZGV0ZWN0T3JpZW50YXRpb24oKTt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3Mo InVpLXNsaWRlci1ob3Jpem9udGFsIHVpLXNsaWRlci12ZXJ0aWNhbCIpLmFkZENsYXNzKCJ1aS1zbGlk ZXItIit0aGlzLm9yaWVudGF0aW9uKTt0aGlzLl9yZWZyZXNoVmFsdWUoZik7YnJlYWs7Y2FzZSJ2YWx1 ZSI6dGhpcy5fcmVmcmVzaFZhbHVlKGYpO2JyZWFrfX0sX3N0ZXA6ZnVuY3Rpb24oKXt2YXIgYT10aGlz Lm9wdGlvbnMuc3RlcDtyZXR1cm4gYX0sX3ZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25z LnZhbHVlO2lmKGE8dGhpcy5fdmFsdWVNaW4oKSl7YT10aGlzLl92YWx1ZU1pbigpfWlmKGE+dGhpcy5f dmFsdWVNYXgoKSl7YT10aGlzLl92YWx1ZU1heCgpfXJldHVybiBhfSxfdmFsdWVzOmZ1bmN0aW9uKGEp e2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBkPXRoaXMub3B0aW9ucy52YWx1ZXNbYV07aWYoZDx0aGlz Ll92YWx1ZU1pbigpKXtkPXRoaXMuX3ZhbHVlTWluKCl9aWYoZD50aGlzLl92YWx1ZU1heCgpKXtkPXRo aXMuX3ZhbHVlTWF4KCl9cmV0dXJuIGR9ZWxzZXtyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlc319LF92 YWx1ZU1pbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5taW47cmV0dXJuIGF9LF92YWx1ZU1h eDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5tYXg7cmV0dXJuIGF9LF9yZWZyZXNoVmFsdWU6 ZnVuY3Rpb24odyl7dmFyIHM9dGhpcy5vcHRpb25zLnJhbmdlLHY9dGhpcy5vcHRpb25zLGE9dGhpcztp Zih0aGlzLm9wdGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCl7dmFyIHAscTt0 aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihkLGYpe3ZhciBlPShhLnZhbHVlcyhkKS1hLl92YWx1ZU1p bigpKS8oYS5fdmFsdWVNYXgoKS1hLl92YWx1ZU1pbigpKSoxMDA7dmFyIGM9e307Y1thLm9yaWVudGF0 aW9uPT0iaG9yaXpvbnRhbCI/ImxlZnQiOiJib3R0b20iXT1lKyIlIjtiKHRoaXMpLnN0b3AoMSwxKVt3 PyJhbmltYXRlIjoiY3NzIl0oYyx2LmFuaW1hdGUpO2lmKGEub3B0aW9ucy5yYW5nZT09PXRydWUpe2lm KGEub3JpZW50YXRpb249PSJob3Jpem9udGFsIil7KGQ9PTApJiZhLnJhbmdlLnN0b3AoMSwxKVt3PyJh bmltYXRlIjoiY3NzIl0oe2xlZnQ6ZSsiJSJ9LHYuYW5pbWF0ZSk7KGQ9PTEpJiZhLnJhbmdlW3c/ImFu aW1hdGUiOiJjc3MiXSh7d2lkdGg6KGUtbGFzdFZhbFBlcmNlbnQpKyIlIn0se3F1ZXVlOmZhbHNlLGR1 cmF0aW9uOnYuYW5pbWF0ZX0pfWVsc2V7KGQ9PTApJiZhLnJhbmdlLnN0b3AoMSwxKVt3PyJhbmltYXRl IjoiY3NzIl0oe2JvdHRvbTooZSkrIiUifSx2LmFuaW1hdGUpOyhkPT0xKSYmYS5yYW5nZVt3PyJhbmlt YXRlIjoiY3NzIl0oe2hlaWdodDooZS1sYXN0VmFsUGVyY2VudCkrIiUifSx7cXVldWU6ZmFsc2UsZHVy YXRpb246di5hbmltYXRlfSl9fWxhc3RWYWxQZXJjZW50PWV9KX1lbHNle3ZhciBvPXRoaXMudmFsdWUo KSxyPXRoaXMuX3ZhbHVlTWluKCksbj10aGlzLl92YWx1ZU1heCgpLHU9biE9cj8oby1yKS8obi1yKSox MDA6MDt2YXIgeD17fTt4W2Eub3JpZW50YXRpb249PSJob3Jpem9udGFsIj8ibGVmdCI6ImJvdHRvbSJd PXUrIiUiO3RoaXMuaGFuZGxlLnN0b3AoMSwxKVt3PyJhbmltYXRlIjoiY3NzIl0oeCx2LmFuaW1hdGUp OyhzPT0ibWluIikmJih0aGlzLm9yaWVudGF0aW9uPT0iaG9yaXpvbnRhbCIpJiZ0aGlzLnJhbmdlLnN0 b3AoMSwxKVt3PyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOnUrIiUifSx2LmFuaW1hdGUpOyhzPT0ibWF4 IikmJih0aGlzLm9yaWVudGF0aW9uPT0iaG9yaXpvbnRhbCIpJiZ0aGlzLnJhbmdlW3c/ImFuaW1hdGUi OiJjc3MiXSh7d2lkdGg6KDEwMC11KSsiJSJ9LHtxdWV1ZTpmYWxzZSxkdXJhdGlvbjp2LmFuaW1hdGV9 KTsocz09Im1pbiIpJiYodGhpcy5vcmllbnRhdGlvbj09InZlcnRpY2FsIikmJnRoaXMucmFuZ2Uuc3Rv cCgxLDEpW3c/ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OnUrIiUifSx2LmFuaW1hdGUpOyhzPT0ibWF4 IikmJih0aGlzLm9yaWVudGF0aW9uPT0idmVydGljYWwiKSYmdGhpcy5yYW5nZVt3PyJhbmltYXRlIjoi Y3NzIl0oe2hlaWdodDooMTAwLXUpKyIlIn0se3F1ZXVlOmZhbHNlLGR1cmF0aW9uOnYuYW5pbWF0ZX0p fX19KSk7Yi5leHRlbmQoYi51aS5zbGlkZXIse2dldHRlcjoidmFsdWUgdmFsdWVzIix2ZXJzaW9uOiIx LjcuMiIsZXZlbnRQcmVmaXg6InNsaWRlIixkZWZhdWx0czp7YW5pbWF0ZTpmYWxzZSxkZWxheTowLGRp c3RhbmNlOjAsbWF4OjEwMCxtaW46MCxvcmllbnRhdGlvbjoiaG9yaXpvbnRhbCIscmFuZ2U6ZmFsc2Us c3RlcDoxLHZhbHVlOjAsdmFsdWVzOm51bGx9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihiKXtiLndpZGdl dCgidWkudGFicyIse19pbml0OmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmRlc2VsZWN0YWJsZSE9 PXVuZGVmaW5lZCl7dGhpcy5vcHRpb25zLmNvbGxhcHNpYmxlPXRoaXMub3B0aW9ucy5kZXNlbGVj