Resultados

  1. Los dispositivos y aplicaciones desde donde se hacen publicaciones tienen una gran influencia sobre el contenido y los sentimientos de los tweets.

  2. Existe una gran probabilidad de que los tweets de iPhone son escritos directamente por AMLO y los que provienen de otros dispositivos son redactados por su equipo de comunicaciones.

  3. Las publicaciones tienden a ser mayoritariamente positivas. No obstante, las que son hechas desde Iphone tienen un mayor porcentaje de tweets con contenido negativo.

  4. Antes de que AMLO fuera electo presidente había mucha más negatividad en sus publicaciones. Sin embargo, hay 2 peaks de negatividad en 2020, probablemente están relacionados a la situación sanitaria (COVID 19).

  5. Las publicaciones con contenido multimedia son más neutrales. Por su parte, cuando no hay contenido multimedia, las publicaciones tienen más emociones negativas y positivas.

Frecuencia de Palabras

Miremos las palabras mas comunes

Cuando se analizan datos de Twitter es siempre importante revisar los tipos de dispositivos y aplicaciones desde los cuales se hacen publicaciones.

Miremos el comportamiento. Empecemos por las horas en las que se hacen publicaciones. Me voy a centrar en los 4 dispositivos que tienen la mayor cantidad de publicaciones.

Ahora miremos los tweets a lo largo del tiempo

Sospecho que los tweets de iPhone son los tweets de él y el resto deben ser de su equipo. Hay un claro cambio en 2019 cuando AMLO fue electo presidente. Además hay otro cambio significativo en 2021 cuando se anuncia el cierre de Periscope.

Analicemos qué palabras tienen una mayor probabilidad de ser escritas en las publicaciones de iPhone vs Media Studio.

Ocupando los “log odds ratio” puedo encontrar cuales son las palabras que tienen una mayor verosimilitud de aparecer en publicaciones que fueron enviadas desde Iphone y desde Media Studio. Este mismo ejercicio se puede hacer para hacer múltiples comparaciones: Periodos de tiempo, o entre distintas cuentas. Puedo comparar más de 2 grupos si ocupo la metodología TF-IDF.

Analisis de Sentimientos

En general hay más comentarios positivos. Me gustaría saber cómo ha sido el comportamiento a lo largo del tiempo. Voy a centrarme en los comentarios negativos.

Antes de que AMLO fuera electo presidente había mucha más negatividad en sus publicaciones, lo cual coincide con el periodo en el que hay más publicaciones desde iPhone. Otra cosa que es interesante notar son los 2 peaks de negatividad en 2020, sospecho que tiene que ver con la situación sanitaria (COVID 19).

Otra cosa que me gustaría analizar son los sentimientos de los tweets por fuente.

Hay marcadas diferencias. Las publicaciones negativas tienen mayor presencia en las publicaciones que son hechas por iPhone. Por su parte, las publicaciones positivas tienen mayor presencia de sentimientos positivos, mientras que las publicaciones hechas por Twitter Media Studio tienden a tener una mayor cantidad de tweets neutrales.

Quiero saber si es que hay diferencias entre las publicaciones que tienen algún contenido multimedia y las que no.

Cuando hay contenido multimedia las publicaciones suelen ser más neutrales. Cuando no hay fotos ni videos, las publicaciones tienen más emociones negativas y positivas.

Por último quiero saber el porcentaje de publicaciones con contenido multimedia por los distintos tipos de fuentes.

Partidos Políticos

Emociones

Términos de Interés

LS0tDQp0aXRsZTogIkFuw6FsaXNpcyBkZSB0d2VldHMgZGUgQU1MTyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjIFJlc3VsdGFkb3MNCg0KMSkgTG9zIGRpc3Bvc2l0aXZvcyB5IGFwbGljYWNpb25lcyBkZXNkZSBkb25kZSBzZSBoYWNlbiBwdWJsaWNhY2lvbmVzIHRpZW5lbiB1bmEgZ3JhbiBpbmZsdWVuY2lhIHNvYnJlIGVsIGNvbnRlbmlkbyB5IGxvcyBzZW50aW1pZW50b3MgZGUgbG9zIHR3ZWV0cy4NCg0KMikgRXhpc3RlIHVuYSBncmFuIHByb2JhYmlsaWRhZCBkZSBxdWUgbG9zIHR3ZWV0cyBkZSBpUGhvbmUgc29uIGVzY3JpdG9zIGRpcmVjdGFtZW50ZSBwb3IgQU1MTyB5IGxvcyBxdWUgcHJvdmllbmVuIGRlIG90cm9zIGRpc3Bvc2l0aXZvcyBzb24gcmVkYWN0YWRvcyBwb3Igc3UgZXF1aXBvIGRlIGNvbXVuaWNhY2lvbmVzLg0KDQozKSBMYXMgcHVibGljYWNpb25lcyB0aWVuZGVuIGEgc2VyIG1heW9yaXRhcmlhbWVudGUgcG9zaXRpdmFzLiBObyBvYnN0YW50ZSwgbGFzIHF1ZSBzb24gaGVjaGFzIGRlc2RlIElwaG9uZSB0aWVuZW4gdW4gbWF5b3IgcG9yY2VudGFqZSBkZSB0d2VldHMgY29uIGNvbnRlbmlkbyBuZWdhdGl2by4NCg0KNCkgQW50ZXMgZGUgcXVlIEFNTE8gZnVlcmEgZWxlY3RvIHByZXNpZGVudGUgaGFiw61hIG11Y2hhIG3DoXMgbmVnYXRpdmlkYWQgZW4gc3VzIHB1YmxpY2FjaW9uZXMuIFNpbiBlbWJhcmdvLCBoYXkgMiBwZWFrcyBkZSBuZWdhdGl2aWRhZCBlbiAyMDIwLCBwcm9iYWJsZW1lbnRlIGVzdMOhbiByZWxhY2lvbmFkb3MgYSBsYSBzaXR1YWNpw7NuIHNhbml0YXJpYSAoQ09WSUQgMTkpLg0KDQo1KSBMYXMgcHVibGljYWNpb25lcyBjb24gY29udGVuaWRvIG11bHRpbWVkaWEgc29uIG3DoXMgbmV1dHJhbGVzLiBQb3Igc3UgcGFydGUsIGN1YW5kbyBubyBoYXkgY29udGVuaWRvIG11bHRpbWVkaWEsIGxhcyBwdWJsaWNhY2lvbmVzIHRpZW5lbiBtw6FzIGVtb2Npb25lcyBuZWdhdGl2YXMgeSBwb3NpdGl2YXMuDQoNCg0KIyMgRnJlY3VlbmNpYSBkZSBQYWxhYnJhcw0KDQpNaXJlbW9zIGxhcyBwYWxhYnJhcyBtYXMgY29tdW5lcw0KDQpgYGB7cixlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRX0NCg0KdHdlZXRfd29yZHMgJT4lIGNvdW50KHdvcmQsc29ydD1UUlVFKSU+JSANCm11dGF0ZShsZXRyYXM9bmNoYXIod29yZCkpICU+JSBmaWx0ZXIobGV0cmFzPjEpICU+JSANCiAgc2xpY2VfaGVhZChuPTIwKSAlPiUNCiAgZ2dwbG90KGFlcyhuLGZjdF9yZW9yZGVyKHdvcmQsbikpKStnZW9tX2NvbCgpK2dndGl0bGUoIjIwIHBhbGFicmFzIG1hcyB1c2FkYXMgcG9yIEFNTE8gZW4gVHdpdHRlciIpKw0KICBsYWJzKHggPSAiZnJlY3VlbmNpYSIsIHkgPSAicGFsYWJyYXMiLCBmaWxsID0gIiIpKyB0aGVtZV9saWdodCgpDQpgYGANCkN1YW5kbyBzZSBhbmFsaXphbiBkYXRvcyBkZSBUd2l0dGVyIGVzIHNpZW1wcmUgaW1wb3J0YW50ZSByZXZpc2FyIGxvcyB0aXBvcyBkZSBkaXNwb3NpdGl2b3MgeSBhcGxpY2FjaW9uZXMgZGVzZGUgbG9zIGN1YWxlcyBzZSBoYWNlbiBwdWJsaWNhY2lvbmVzLiANCg0KYGBge3IsZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQoNCnR3ZWV0c19hbWxvICU+JSBjb3VudChzb3VyY2UsIHNvcnQ9VFJVRSkgJT4lIGdncGxvdChhZXMoZmN0X3Jlb3JkZXIoc291cmNlLG4pLG4pKStnZW9tX2NvbCgpK2dndGl0bGUoIkRpc3Bvc2l0aXZvcyB5IGFwbGljYWNpb25lcyBkZXNkZSBsb3MgcXVlIGhhY2VuIHB1YmxpY2FjaW9uZXMiKSsNCiAgbGFicyh4ID0gImZ1ZW50ZSIsIHkgPSAicGFsYWJyYXMiLCBmaWxsID0gIiIpKw0KICB0aGVtZV9saWdodCgpK2Nvb3JkX2ZsaXAoKQ0KDQpgYGANCg0KTWlyZW1vcyBlbCBjb21wb3J0YW1pZW50by4gRW1wZWNlbW9zIHBvciBsYXMgaG9yYXMgZW4gbGFzIHF1ZSBzZSBoYWNlbiBwdWJsaWNhY2lvbmVzLiBNZSB2b3kgYSBjZW50cmFyIGVuIGxvcyA0IGRpc3Bvc2l0aXZvcyBxdWUgdGllbmVuIGxhIG1heW9yIGNhbnRpZGFkIGRlIHB1YmxpY2FjaW9uZXMuDQpgYGB7cixlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRX0NCg0KdHdlZXRzX2FtbG8gJT4lIA0KICBmaWx0ZXIoc291cmNlJWluJSBjKCJUd2l0dGVyIE1lZGlhIFN0dWRpbyIsIlBlcmlzY29wZSIsIlR3aXR0ZXIgZm9yIGlQaG9uZSIsIlR3aXR0ZXIgV2ViIEFwcCIpKSAlPiUgDQogIGNvdW50KHNvdXJjZSwgaG91ciA9IGhvdXIod2l0aF90eihjcmVhdGVkX2F0KSkpICU+JQ0KICBtdXRhdGUocGVyY2VudCA9IG4gLyBzdW0obikpICU+JQ0KICBnZ3Bsb3QoYWVzKGhvdXIsIHBlcmNlbnQsIGNvbG9yID0gc291cmNlKSkgKw0KICBnZW9tX2xpbmUoKSArDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBwZXJjZW50X2Zvcm1hdCgpKSArDQogIGxhYnMoeCA9ICJIb3JhIGRlbCBEw61hIiwNCiAgICAgICB5ID0gIiUgZGUgdHdlZXRzIiwNCiAgICAgICBjb2xvciA9ICIiKSt0aGVtZV9saWdodCgpDQpgYGANCg0KQWhvcmEgbWlyZW1vcyBsb3MgdHdlZXRzIGEgbG8gbGFyZ28gZGVsIHRpZW1wbw0KYGBge3IsZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQoNCnR3ZWV0c19hbWxvICU+JSANCiAgICBtdXRhdGUoY3JlYXRlZF9hdD15bWRfaG1zKGNyZWF0ZWRfYXQpKSAlPiUgDQpncm91cF9ieShtb250aD1mbG9vcl9kYXRlKGNyZWF0ZWRfYXQsIm1vbnRoIikpICU+JSBjb3VudChzb3VyY2UpICU+JSANCiAgbXV0YXRlKHByb3AgPSBuIC8gc3VtKG4pKjEwMCkgJT4lICANCiAgZmlsdGVyKHNvdXJjZSVpbiUgYygiVHdpdHRlciBNZWRpYSBTdHVkaW8iLCJQZXJpc2NvcGUiLCJUd2l0dGVyIGZvciBpUGhvbmUiLCJUd2l0dGVyIFdlYiBBcHAiKSkgJT4lIA0KICBnZ3Bsb3QoYWVzKG1vbnRoLCBwcm9wLCBjb2xvciA9IHNvdXJjZSkpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBsYWJzKHggPSAiTWVzIiwNCiAgICAgICB5ID0gIiUgZGUgdHdlZXRzIiwNCiAgICAgICBjb2xvciA9ICIiKSArIHRoZW1lX2xpZ2h0KCkNCg0KYGBgDQoNClNvc3BlY2hvIHF1ZSBsb3MgdHdlZXRzIGRlIGlQaG9uZSBzb24gbG9zIHR3ZWV0cyBkZSDDqWwgeSBlbCByZXN0byBkZWJlbiBzZXIgZGUgc3UgZXF1aXBvLiBIYXkgdW4gY2xhcm8gY2FtYmlvIGVuIDIwMTkgY3VhbmRvIEFNTE8gZnVlIGVsZWN0byBwcmVzaWRlbnRlLiBBZGVtw6FzIGhheSBvdHJvIGNhbWJpbyBzaWduaWZpY2F0aXZvIGVuIDIwMjEgY3VhbmRvIHNlIGFudW5jaWEgZWwgY2llcnJlIGRlIFBlcmlzY29wZS4NCg0KQW5hbGljZW1vcyBxdcOpIHBhbGFicmFzIHRpZW5lbiB1bmEgbWF5b3IgcHJvYmFiaWxpZGFkIGRlIHNlciBlc2NyaXRhcyBlbiBsYXMgcHVibGljYWNpb25lcyBkZSBpUGhvbmUgdnMgTWVkaWEgU3R1ZGlvLg0KDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KcmF0aW9zICU+JSBncm91cF9ieShkaXJlY3Rpb24gPSBsb2dyYXRpbyA+IDApICU+JQ0KICBtdXRhdGUoc291cmNlPWlmZWxzZShkaXJlY3Rpb249PVRSVUUsIk1lZGlhIFN0dWRpbyIsImlQaG9uZSIpKSU+JSANCiAgdG9wX24oMTUsIGFicyhsb2dyYXRpbykpICU+JQ0KICB1bmdyb3VwKCkgJT4lDQogIG11dGF0ZSh3b3JkID0gcmVvcmRlcih3b3JkLCBsb2dyYXRpbykpICU+JQ0KICBnZ3Bsb3QoYWVzKGxvZ3JhdGlvLCB3b3JkLGZpbGw9c291cmNlKSkgKw0KICBnZW9tX2NvbCgpICsNCiAgbGFicyh4ID0gImlQaG9uZS9NZWRpYSBTdHVkaW8gTG9nIFJhdGlvbiIsIHkgPSBOVUxMKSt0aGVtZV9saWdodCgpDQpgYGANCg0KT2N1cGFuZG8gbG9zICJsb2cgb2RkcyByYXRpbyIgcHVlZG8gZW5jb250cmFyIGN1YWxlcyBzb24gbGFzIHBhbGFicmFzIHF1ZSB0aWVuZW4gdW5hIG1heW9yIHZlcm9zaW1pbGl0dWQgZGUgYXBhcmVjZXIgZW4gcHVibGljYWNpb25lcyBxdWUgZnVlcm9uIGVudmlhZGFzIGRlc2RlIElwaG9uZSB5IGRlc2RlIE1lZGlhIFN0dWRpby4gRXN0ZSBtaXNtbyBlamVyY2ljaW8gc2UgcHVlZGUgaGFjZXIgcGFyYSBoYWNlciBtw7psdGlwbGVzIGNvbXBhcmFjaW9uZXM6IFBlcmlvZG9zIGRlIHRpZW1wbywgbyBlbnRyZSBkaXN0aW50YXMgY3VlbnRhcy4gUHVlZG8gY29tcGFyYXIgbcOhcyBkZSAyIGdydXBvcyBzaSBvY3VwbyBsYSBtZXRvZG9sb2fDrWEgVEYtSURGLg0KDQojIyBBbmFsaXNpcyBkZSBTZW50aW1pZW50b3MNCg0KYGBge3IsZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQpzZW50aW1pZW50b3NfQU1MTyAlPiUgY291bnQoc2VudGltZW50bykgJT4lDQogIG11dGF0ZShwcm9wID0gbiAvIHN1bShuKSAqMTAwKSAlPiUgZ2dwbG90KGFlcyh5PXByb3AsIHg9c2VudGltZW50byxmaWxsPXNlbnRpbWVudG8pKSArDQogICAgICBnZW9tX2NvbCgpICsNCiAgICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IlJkWWxCdSIpICsNCiAgICAgIGdndGl0bGUoIkFuw6FsaXNpcyBkZSBzZW50aW1pZW50b3MgZGUgQU1MTyBlbiBUd2l0dGVyIikgICsgeWxhYigiUG9yY2VudGFqZSBkZSBUd2VldHMiKSArIHhsYWIoIlRpcG9zIGRlIHBvbGFyaWRhZCIpK3RoZW1lX2xpZ2h0KCkgKw0KICAgICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJub25lIikNCmBgYA0KRW4gZ2VuZXJhbCBoYXkgbcOhcyBjb21lbnRhcmlvcyBwb3NpdGl2b3MuIE1lIGd1c3RhcsOtYSBzYWJlciBjw7NtbyBoYSBzaWRvIGVsIGNvbXBvcnRhbWllbnRvIGEgbG8gbGFyZ28gZGVsIHRpZW1wby4gVm95IGEgY2VudHJhcm1lIGVuIGxvcyBjb21lbnRhcmlvcyBuZWdhdGl2b3MuDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KDQp0d2VldHNfZnVsbCAlPiUgbXV0YXRlKGNyZWF0ZWRfYXQ9eW1kX2htcyhjcmVhdGVkX2F0KSkgJT4lICBncm91cF9ieShtb250aD1mbG9vcl9kYXRlKGNyZWF0ZWRfYXQsIm1vbnRoIikpICU+JSANCiAgY291bnQoc2VudGltZW50bykgICU+JSANCiAgbXV0YXRlKHByb3AgPSBuIC8gc3VtKG4pICoxMDApICU+JSAgDQogIGZpbHRlcihzZW50aW1lbnRvPT0ibmVnYXRpdm8iKSAlPiUgDQogIGdncGxvdChhZXMoeT1wcm9wLCB4PW1vbnRoKSkgKw0KICAgICAgICBnZW9tX2xpbmUoY29sb3I9KCJyZWQiKSkrDQogIGdndGl0bGUoIkFuw6FsaXNpcyBkZSBzZW50aW1pZW50b3MgZGUgQU1MTyBlbiBUd2l0dGVyIGEgbG8gbGFyZ28gZGVsIHRpZW1wbyIpICArIHlsYWIoIlBvcmNlbnRhamUgZGUgVHdlZXRzIE5lZ2F0aXZvcyIpICsgeGxhYigiTWVzIikrDQogIHRoZW1lX2xpZ2h0KCkNCmBgYA0KQW50ZXMgZGUgcXVlIEFNTE8gZnVlcmEgZWxlY3RvIHByZXNpZGVudGUgaGFiw61hIG11Y2hhIG3DoXMgbmVnYXRpdmlkYWQgZW4gc3VzIHB1YmxpY2FjaW9uZXMsIGxvIGN1YWwgY29pbmNpZGUgY29uIGVsIHBlcmlvZG8gZW4gZWwgcXVlIGhheSBtw6FzIHB1YmxpY2FjaW9uZXMgZGVzZGUgaVBob25lLiBPdHJhIGNvc2EgcXVlIGVzIGludGVyZXNhbnRlIG5vdGFyIHNvbiBsb3MgMiBwZWFrcyBkZSBuZWdhdGl2aWRhZCBlbiAyMDIwLCBzb3NwZWNobyBxdWUgdGllbmUgcXVlIHZlciBjb24gbGEgc2l0dWFjacOzbiBzYW5pdGFyaWEgKENPVklEIDE5KS4NCg0KDQpPdHJhIGNvc2EgcXVlIG1lIGd1c3RhcsOtYSBhbmFsaXphciBzb24gbG9zIHNlbnRpbWllbnRvcyBkZSBsb3MgdHdlZXRzIHBvciBmdWVudGUuDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KDQp0d2VldHNfZnVsbCAlPiUgIGdyb3VwX2J5KHNvdXJjZSkgJT4lIA0KICBjb3VudChzZW50aW1lbnRvKSAgJT4lIA0KICBtdXRhdGUocHJvcCA9IG4gLyBzdW0obikgKjEwMCkgJT4lICANCiAgZmlsdGVyKHNvdXJjZSVpbiUgYygiVHdpdHRlciBNZWRpYSBTdHVkaW8iLCJQZXJpc2NvcGUiLCJUd2l0dGVyIGZvciBpUGhvbmUiLCJUd2l0dGVyIFdlYiBBcHAiKSkgJT4lIA0KICAgICAgICBnZ3Bsb3QoYWVzKHk9cHJvcCwgeD1zb3VyY2UsZmlsbD1zZW50aW1lbnRvKSkgKw0KZ2VvbV9jb2wocG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZTIod2lkdGggPSAwLjksIHByZXNlcnZlID0gInNpbmdsZSIpKSsgICAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJSZFlsQnUiKSArDQogICAgICBnZ3RpdGxlKCJBbsOhbGlzaXMgZGUgc2VudGltaWVudG9zIGRlIEFNTE8gZW4gVHdpdHRlciBwb3IgZnVlbnRlIikgICsgeWxhYigiUG9yY2VudGFqZSBkZSBUd2VldHMiKSArIHhsYWIoIlRpcG9zIGRlIGZ1ZW50ZXMiKSt0aGVtZV9saWdodCgpICsNCiAgICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0iYm90dG9tIikgKw0KICAgdGhlbWUobGVnZW5kLnRpdGxlPWVsZW1lbnRfYmxhbmsoKSkNCg0KYGBgDQpIYXkgbWFyY2FkYXMgZGlmZXJlbmNpYXMuIExhcyBwdWJsaWNhY2lvbmVzIG5lZ2F0aXZhcyB0aWVuZW4gbWF5b3IgcHJlc2VuY2lhIGVuIGxhcyBwdWJsaWNhY2lvbmVzIHF1ZSBzb24gaGVjaGFzIHBvciBpUGhvbmUuIFBvciBzdSBwYXJ0ZSwgbGFzIHB1YmxpY2FjaW9uZXMgcG9zaXRpdmFzIHRpZW5lbiBtYXlvciBwcmVzZW5jaWEgZGUgc2VudGltaWVudG9zIHBvc2l0aXZvcywgbWllbnRyYXMgcXVlIGxhcyBwdWJsaWNhY2lvbmVzIGhlY2hhcyBwb3IgVHdpdHRlciBNZWRpYSBTdHVkaW8gdGllbmRlbiBhIHRlbmVyIHVuYSBtYXlvciBjYW50aWRhZCBkZSB0d2VldHMgbmV1dHJhbGVzLiANCg0KUXVpZXJvIHNhYmVyIHNpIGVzIHF1ZSBoYXkgZGlmZXJlbmNpYXMgZW50cmUgbGFzIHB1YmxpY2FjaW9uZXMgcXVlIHRpZW5lbiBhbGfDum4gY29udGVuaWRvDQptdWx0aW1lZGlhIHkgbGFzIHF1ZSBuby4NCg0KYGBge3IsZWNobz1GQUxTRSxtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQoNCnR3ZWV0c19mdWxsICU+JQ0KICBmaWx0ZXIoIXN0cl9kZXRlY3QodGV4dCwgJ14iJykpICU+JQ0KICBtdXRhdGUoDQogICAgICAgIG1lZGlhID0gaWZlbHNlKHN0cl9kZXRlY3QodGV4dCwgInQuY28iKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAiRm90by9WaWRlbyIsICJObyBGb3RvL1ZpZGVvIikpICU+JSAgZ3JvdXBfYnkobWVkaWEpICU+JSANCiAgY291bnQoc2VudGltZW50bykgICU+JSANCiAgbXV0YXRlKHByb3AgPSBuIC8gc3VtKG4pICoxMDApICU+JSAgDQogICAgICAgIGdncGxvdChhZXMoeT1wcm9wLCB4PW1lZGlhLGZpbGw9c2VudGltZW50bykpICsNCmdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UyKHdpZHRoID0gMC45LCBwcmVzZXJ2ZSA9ICJzaW5nbGUiKSkrICAgICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iUmRZbEJ1IikgKw0KICAgICAgZ2d0aXRsZSgiVHdlZXRzIGNvbiBjb250ZW5pZG8gbXVsdGltZWRpYSB2cyB0d2VldHMgc2luIGNvbnRlbmlkbyBtdWx0aW1lZGlhIikgICsgeWxhYigiUG9yY2VudGFqZSBkZSBUd2VldHMiKSArIHhsYWIoIiIpK3RoZW1lX2xpZ2h0KCkgKw0KICAgICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJib3R0b20iKSArDQogICB0aGVtZShsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpKQ0KDQpgYGANCkN1YW5kbyBoYXkgY29udGVuaWRvIG11bHRpbWVkaWEgbGFzIHB1YmxpY2FjaW9uZXMgc3VlbGVuIHNlciBtw6FzIG5ldXRyYWxlcy4gQ3VhbmRvIG5vIGhheSBmb3RvcyBuaSB2aWRlb3MsIGxhcyBwdWJsaWNhY2lvbmVzIHRpZW5lbiBtw6FzIGVtb2Npb25lcyBuZWdhdGl2YXMgeSBwb3NpdGl2YXMuDQoNClBvciDDumx0aW1vIHF1aWVybyBzYWJlciBlbCBwb3JjZW50YWplIGRlIHB1YmxpY2FjaW9uZXMgY29uIGNvbnRlbmlkbyBtdWx0aW1lZGlhIHBvciBsb3MgZGlzdGludG9zIHRpcG9zIGRlIGZ1ZW50ZXMuDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KDQp0d2VldHNfZnVsbCAlPiUNCiAgZmlsdGVyKCFzdHJfZGV0ZWN0KHRleHQsICdeIicpKSAlPiUNCiAgY291bnQoc291cmNlLA0KICAgICAgICBwaWN0dXJlID0gaWZlbHNlKHN0cl9kZXRlY3QodGV4dCwgInQuY28iKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAiRm90by9WaWRlbyIsICJObyBGb3RvL1ZpZGVvIikpICU+JSANCiAgZ3JvdXBfYnkoc291cmNlKSAlPiUgDQogIG11dGF0ZShwcm9wID0gbiAvIHN1bShuKSAqMTAwKSAlPiUgDQogIGZpbHRlcihzb3VyY2UlaW4lIGMoIlR3aXR0ZXIgTWVkaWEgU3R1ZGlvIiwiUGVyaXNjb3BlIiwiVHdpdHRlciBmb3IgaVBob25lIiwiVHdpdHRlciBXZWIgQXBwIikpICU+JSANCmdncGxvdCggYWVzKHNvdXJjZSwgcHJvcCwgZmlsbCA9IHBpY3R1cmUpKSArDQpnZW9tX2NvbChwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlMih3aWR0aCA9IDAuOSwgcHJlc2VydmUgPSAic2luZ2xlIikpKyAgICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IlJkWWxCdSIpICsNCiAgICAgIGdndGl0bGUoIlBvcmNlbnRhamUgZGUgcHVibGljYWNpb25lcyBxdWUgdGllbmVuIGNvbnRlbmlkbyBtdWx0aW1lZGlhIHBvciBmdWVudGVzIikgICsgeWxhYigiUG9yY2VudGFqZSBkZSBUd2VldHMiKSArIHhsYWIoIlRpcG9zIGRlIGZ1ZW50ZXMiKSt0aGVtZV9saWdodCgpICsNCiAgICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0iYm90dG9tIikgKw0KICAgdGhlbWUobGVnZW5kLnRpdGxlPWVsZW1lbnRfYmxhbmsoKSkNCg0KYGBgDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KDQp0d2VldHNfZnVsbCAlPiUgbXV0YXRlKGNyZWF0ZWRfYXQ9eW1kX2htcyhjcmVhdGVkX2F0KSkgJT4lICBncm91cF9ieShtb250aD1mbG9vcl9kYXRlKGNyZWF0ZWRfYXQsIm1vbnRoIikpICU+JSBzdW1tYXJpemUoYXZnX3NlbnQ9bWVhbihwb2xhcmlkYWQpKSAlPiUgICAgICBnZ3Bsb3QoYWVzKHk9YXZnX3NlbnQsIHg9bW9udGgpKSArDQogICAgICAgIGdlb21fbGluZShjb2xvcj0oImJsdWUiKSkrDQogIGdndGl0bGUoIkFuw6FsaXNpcyBkZSBzZW50aW1pZW50b3MgZGUgQU1MTyBlbiBUd2l0dGVyIGEgbG8gbGFyZ28gZGVsIHRpZW1wbyAoUG9sYXJpZGFkKSIpICArIHlsYWIoIlB1bnRhamUgZGUgUG9sYXJpZGFkIikgKyB4bGFiKCJNZXMiKSsNCiAgdGhlbWVfbGlnaHQoKQ0KDQpgYGANCg0KDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KDQp0d2VldHNfZnVsbCAlPiUgbXV0YXRlKGFjcm9zcyhjKGFuZ2VyOnRydXN0KSwgfmlmZWxzZSgueD49MSwxLDApKSkgJT4lICANCiAgc3VtbWFyaXplKGFjcm9zcyhjKGFuZ2VyOnRydXN0KSwgfnN1bSgueCkpKSAlPiUgDQogIG11dGF0ZShhY3Jvc3MoYyhhbmdlcjp0cnVzdCksIH4oLngpL25yb3codHdlZXRzX2Z1bGwpKjEwMCkpICU+JSANCiAgcGl2b3RfbG9uZ2VyKGNvbHMgPSBldmVyeXRoaW5nKCksbmFtZXNfdG8gPSAiZW1vdGlvbiIsIHZhbHVlc190byA9ICJ2YWx1ZXMiKSAlPiUgDQogIGZpbHRlcighZW1vdGlvbiAlaW4lIGMoInBvc2l0aXZlIiwibmVnYXRpdmUiKSkgJT4lIA0KICAgZ2dwbG90KGFlcyh5PXZhbHVlcywgeD1lbW90aW9uLGZpbGw9ZW1vdGlvbikpICsNCmdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UyKHdpZHRoID0gMC45LCBwcmVzZXJ2ZSA9ICJzaW5nbGUiKSkrICAgICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iUmRZbEJ1IikgKw0KICAgICAgZ2d0aXRsZSgiQW7DoWxpc2lzIGRlIGVtb2Npb25lcyBkZSBBTUxPIGVuIFR3aXR0ZXIiKSAgKyB5bGFiKCJQb3JjZW50YWplIGRlIFR3ZWV0cyIpICsgeGxhYigiRW1vY2lvbmVzIikrdGhlbWVfbGlnaHQoKSArDQogICAgICB0aGVtZShsZWdlbmQucG9zaXRpb249ImJvdHRvbSIpICsNCiAgIHRoZW1lKGxlZ2VuZC50aXRsZT1lbGVtZW50X2JsYW5rKCkpDQoNCmBgYA0KDQpgYGB7cixlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRX0NCg0KdHdlZXRzX2Z1bGwgJT4lICANCiAgbXV0YXRlKGFjcm9zcyhjKGFuZ2VyOnRydXN0KSwgfmlmZWxzZSgueD49MSwxLDApKSkgJT4lIG11dGF0ZShjcmVhdGVkX2F0PXltZF9obXMoY3JlYXRlZF9hdCkpICU+JSANCiAgZ3JvdXBfYnkobW9udGg9Zmxvb3JfZGF0ZShjcmVhdGVkX2F0LCJtb250aCIpKSAlPiUNCiAgc3VtbWFyaXplKGFjcm9zcyhjKGFuZ2VyOnRydXN0KSwgfnN1bSgueCkpLG49bigpKSAlPiUgDQogIG11dGF0ZShhY3Jvc3MoYyhhbmdlcjp0cnVzdCksIH4oLngpL24qMTAwKSkgJT4lIA0KICBwaXZvdF9sb25nZXIoYW5nZXI6dHJ1c3QsbmFtZXNfdG8gPSAiZW1vdGlvbiIsIHZhbHVlc190byA9ICJ2YWx1ZXMiKSAlPiUgDQogIGZpbHRlcighZW1vdGlvbiAlaW4lIGMoInBvc2l0aXZlIiwibmVnYXRpdmUiKSkgJT4lICANCiAgZ2dwbG90KGFlcyh5PXZhbHVlcywgeD1tb250aCxjb2xvcj1lbW90aW9uKSkgKw0KICAgICAgICBnZW9tX2xpbmUoKSsNCiAgZ2d0aXRsZSgiQW7DoWxpc2lzIGRlIGVtb2Npb25lcyBkZSBBTUxPIGVuIFR3aXR0ZXIgYSBsbyBsYXJnbyBkZWwgdGllbXBvIikgICsgeWxhYigiUG9yY2VudGFqZSBkZSBUd2VldHMiKSArIHhsYWIoIk1lcyIpKw0KICB0aGVtZV9saWdodCgpDQoNCmBgYA0KDQoNCg0KIyMgUGFydGlkb3MgUG9sw610aWNvcw0KDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KDQp0d2VldHNfZnVsbCU+JSANCiAgbXV0YXRlKHRleHQgPSBzdHJfcmVwbGFjZV9hbGwodGV4dCwgImh0dHBzOi8vdC5jby9bQS1aYS16XFxkXSt8JmFtcDsiLCAiIikpICU+JSANCiAgICBtdXRhdGUoUEFOID0gaWZlbHNlKHN0cl9kZXRlY3QodGV4dCwgIlBBTnxbUHBdYXJ0aWRvIFtBYV1jY2lbw7NvXW4gW05uXWFjaW9uYWwiKSwgMSwwKSwNCiAgICAgICAgICAgUFJJID0gaWZlbHNlKHN0cl9kZXRlY3QodGV4dCwgIlBSSSx8IFBSSSB8UFJJXFwufFtQcF1hcnRpZG8gW1JyXWV2b2x1Y2lvbmFyaW8gW0lpXW5zdGl0dWNpb25hbCIpLCAxLDApLA0KICAgICAgICAgICBQUkQgPSBpZmVsc2Uoc3RyX2RldGVjdCh0ZXh0LCAiUFJEfA0KW1BwXWFydGlkbyBbZERdZSBbTGxdYSBbUnJdZXZvbHVjaVvDs09dbiBbRGRdZW1vY3JbQcOhXXRpY2EiKSwxLDApLA0KICAgICAgICAgICBNb3JlbmEgPSBpZmVsc2Uoc3RyX2RldGVjdCh0ZXh0LCAiW01tXW9yZW5hIiksIDEsMCksDQogICAgICAgICAgIFBUID0gaWZlbHNlKHN0cl9kZXRlY3QodGV4dCwgIlBUfFtQcF1hcnRpZG8gW2REXWVsIFtUdF1yYWJham8iKSwgMSwwKSwNCiAgICAgICAgICAgTUMgPSBpZmVsc2Uoc3RyX2RldGVjdCh0ZXh0LCAiTUN8W01tXW92aW1pZW50byBbQ2NdaXVkYWRhbm8iKSwgMSwwKSwNCiAgICAgICAgICAgUFYgPSBpZmVsc2Uoc3RyX2RldGVjdCh0ZXh0LCAiW1BwXWFydGlkbyBbVnZdZXJkZSIpLCAxLDApKSU+JQ0KICAgc3VtbWFyaXplKGFjcm9zcyhjKFBBTjpQViksIH5zdW0oLngpKSkgJT4lIA0KICBwaXZvdF9sb25nZXIoY29scyA9IGV2ZXJ5dGhpbmcoKSxuYW1lc190byA9ICJlbW90aW9uIiwgdmFsdWVzX3RvID0gInZhbHVlcyIpICU+JSANCiAgIGdncGxvdChhZXMoeT12YWx1ZXMsIHg9ZW1vdGlvbixmaWxsPWVtb3Rpb24pKSArDQpnZW9tX2NvbChwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlMih3aWR0aCA9IDAuOSwgcHJlc2VydmUgPSAic2luZ2xlIikpKyAgICAgIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IlJkWWxCdSIpICsNCiAgICAgIGdndGl0bGUoIk7Dum1lcm8gZGUgTWVuY2lvbmVzIHBvciBQYXJ0aWRvIFBvbMOtdGljbyIpICArIHlsYWIoIk7Dum1lcm8gZGUgVHdlZXRzIikgKyB4bGFiKCJQYXJ0aWRvcyBQb2zDrXRpY29zIikrdGhlbWVfbGlnaHQoKSArDQogICAgICB0aGVtZShsZWdlbmQucG9zaXRpb249Im5vbmUiKSArDQogICB0aGVtZShsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpKQ0KICANCiAgDQoNCmBgYA0KDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KZGF0YTIgJT4lIA0KZ2dwbG90KGFlcyhwYXJ0aWRvLCBwcm9wLCBmaWxsID0gc2VudGltZW50bykpICsNCmdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UyKHdpZHRoID0gMC45LCBwcmVzZXJ2ZSA9ICJzaW5nbGUiKSkrICAgICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iUmRZbEJ1IikgKw0KICAgICAgZ2d0aXRsZSgiQW7DoWxpc2lzIGRlIHNlbnRpbWllbnRvcyBwb3IgUGFydGlkbyBQb2zDrXRpY28iKSAgKyB5bGFiKCJQb3JjZW50YWplIGRlIFR3ZWV0cyIpICsgeGxhYigiUGFydGlkb3MgUG9sw610aWNvcyIpK3RoZW1lX2xpZ2h0KCkgKw0KICAgICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJib3R0b20iKSArDQogICB0aGVtZShsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpKQ0KYGBgDQoNCkVtb2Npb25lcyANCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KDQpkYXRhMyAlPiUgZmlsdGVyKGlzLm5hKHBhcnRpZG8pPT1GQUxTRSkgJT4lIG11dGF0ZShwcm9wPWlmZWxzZShpcy5uYShwcm9wKSwgMCxwcm9wKSkgJT4lIA0KICBmaWx0ZXIocHJvcCE9MCkgJT4lIA0KZ2dwbG90KGFlcyhwYXJ0aWRvLCBwcm9wLCBmaWxsID0gZW1vdGlvbikpICsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZTIod2lkdGggPSAwLjksIHByZXNlcnZlID0gInNpbmdsZSIpKSsgICAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJSZFlsQnUiKSArDQogICAgICBnZ3RpdGxlKCJBbsOhbGlzaXMgZGUgZW1vY2lvbmVzIHBvciBQYXJ0aWRvIFBvbMOtdGljbyIpICArIHlsYWIoIlBvcmNlbnRhamUgZGUgVHdlZXRzIikgKyB4bGFiKCJQYXJ0aWRvcyBQb2zDrXRpY29zIikrdGhlbWVfbGlnaHQoKSArDQogICAgICB0aGVtZShsZWdlbmQucG9zaXRpb249ImJvdHRvbSIpICsNCiAgIHRoZW1lKGxlZ2VuZC50aXRsZT1lbGVtZW50X2JsYW5rKCkpDQpgYGANCiMjIFTDqXJtaW5vcyBkZSBJbnRlcsOpcw0KDQpgYGB7cixlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0Usd2FybmluZz1GQUxTRX0NCg0KdHdlZXRzX2Z1bGwlPiUgDQogIG11dGF0ZSh0ZXh0ID0gc3RyX3JlcGxhY2VfYWxsKHRleHQsICJodHRwczovL3QuY28vW0EtWmEtelxcZF0rfCZhbXA7IiwgIiIpKSAlPiUgDQogICAgbXV0YXRlKEFNTE8gPSBpZmVsc2Uoc3RyX2RldGVjdCh0ZXh0LCAiQU1MTyIpLCAxLDApLA0KICAgICAgICAgICBCaWVuZXN0YXIgPSBpZmVsc2Uoc3RyX2RldGVjdCh0ZXh0LCAiW0JiXWllbmVzdGFyIiksIDEsMCksDQogICAgICAgICAgIENVQVRST19UID0gaWZlbHNlKHN0cl9kZXRlY3QodGV4dCwgIiM0VCIpLDEsMCksDQogICAgICAgICAgIE1vcmVuYSA9IGlmZWxzZShzdHJfZGV0ZWN0KHRleHQsICJbTW1db3JlbmEiKSwgMSwwKSwNCiAgICAgICAgICAgRmVsaXBlX0NhbGRlcm9uID0gaWZlbHNlKHN0cl9kZXRlY3QodGV4dCwgIltGZl1lbGlwZSBbQ2NdYWxkZXJbb8OzXW4iKSwgMSwwKSwNCiAgICAgICAgICAgU2FtdWVsX0dhcmNpYSA9IGlmZWxzZShzdHJfZGV0ZWN0KHRleHQsICJbU3NdYW11ZWwgW0dnXWFyY1tpw61dYSIpLCAxLDApLA0KICAgICAgICAgICBUcmVuX01heWEgPSBpZmVsc2Uoc3RyX2RldGVjdCh0ZXh0LCAiW1R0XXJlbiBbTW1dYXlhIiksIDEsMCksDQogICAgICAgICAgIFJlZmluZXJpYV9Eb3NfQm9jYXMgPSBpZmVsc2Uoc3RyX2RldGVjdCh0ZXh0LCAiW1JyXWVmaW5lcmlhIFtEZF1vcyBbQmJdb2NhcyIpLCAxLDApLA0KICAgICAgICAgICAgQXlvdHppbmFwYSA9IGlmZWxzZShzdHJfZGV0ZWN0KHRleHQsICJbQWFdeW90emluYXBhIiksIDEsMCkNCiAgICAgICAgICAgKSU+JQ0KICAgc3VtbWFyaXplKGFjcm9zcyhjKEFNTE86QXlvdHppbmFwYSksIH5zdW0oLngpKSkgJT4lIA0KICBwaXZvdF9sb25nZXIoY29scyA9IGV2ZXJ5dGhpbmcoKSxuYW1lc190byA9ICJlbW90aW9uIiwgdmFsdWVzX3RvID0gInZhbHVlcyIpICU+JSANCiAgIGdncGxvdChhZXMoeT12YWx1ZXMsIHg9ZmN0X3Jlb3JkZXIoZW1vdGlvbix2YWx1ZXMpLGZpbGw9ZW1vdGlvbikpICsNCmdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UyKHdpZHRoID0gMC45LCBwcmVzZXJ2ZSA9ICJzaW5nbGUiKSkrICAgICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iUmRZbEJ1IikgKw0KICAgICAgZ2d0aXRsZSgiTsO6bWVybyBkZSBNZW5jaW9uZXMgcG9yIFBhbGFicmEgQ2xhdmUiKSAgKyB5bGFiKCJOw7ptZXJvIGRlIFR3ZWV0cyIpICsgeGxhYigiIikrdGhlbWVfbGlnaHQoKSArDQogICAgICB0aGVtZShsZWdlbmQucG9zaXRpb249Im5vbmUiKSArDQogICB0aGVtZShsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpKStjb29yZF9mbGlwKCkNCmBgYA0KDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KZGF0YTMgJT4lIA0KZ2dwbG90KGFlcyh0ZXJtaW5vLCBwcm9wLCBmaWxsID0gc2VudGltZW50bykpICsNCmdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2UyKHdpZHRoID0gMC45LCBwcmVzZXJ2ZSA9ICJzaW5nbGUiKSkrICAgICAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iUmRZbEJ1IikgKw0KICAgICAgZ2d0aXRsZSgiQW7DoWxpc2lzIGRlIHNlbnRpbWllbnRvcyBwb3IgdMOpcm1pbm9zIGRlIGludGVyw6lzIikgICsgeWxhYigiUG9yY2VudGFqZSBkZSBUd2VldHMiKSArIHhsYWIoIlTDqXJtaW5vcyBkZSBJbnRlcsOpcyIpK3RoZW1lX2xpZ2h0KCkgKw0KICAgICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJib3R0b20iKSArDQogICB0aGVtZShsZWdlbmQudGl0bGU9ZWxlbWVudF9ibGFuaygpKQ0KYGBgDQoNCmBgYHtyLGVjaG89RkFMU0UsbWVzc2FnZT1GQUxTRSx3YXJuaW5nPUZBTFNFfQ0KDQpkYXRhNSAlPiUgZmlsdGVyKGlzLm5hKHBhcnRpZG8pPT1GQUxTRSkgJT4lIG11dGF0ZShwcm9wPWlmZWxzZShpcy5uYShwcm9wKSwgMCxwcm9wKSkgJT4lIA0KICBmaWx0ZXIocHJvcCE9MCkgJT4lIA0KZ2dwbG90KGFlcyhwYXJ0aWRvLCBwcm9wLCBmaWxsID0gZW1vdGlvbikpICsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZTIod2lkdGggPSAwLjksIHByZXNlcnZlID0gInNpbmdsZSIpKSsgICAgICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlPSJSZFlsQnUiKSArDQogICAgICBnZ3RpdGxlKCJBbsOhbGlzaXMgZGUgZW1vY2lvbmVzIHBvciB0w6lybWlub3MgZGUgaW50ZXLDqXMiKSAgKyB5bGFiKCJQb3JjZW50YWplIGRlIFR3ZWV0cyIpICsgeGxhYigiVMOpcm1pbm9zIGRlIEludGVyw6lzIikrdGhlbWVfbGlnaHQoKSArDQogICAgICB0aGVtZShsZWdlbmQucG9zaXRpb249ImJvdHRvbSIpICsNCiAgIHRoZW1lKGxlZ2VuZC50aXRsZT1lbGVtZW50X2JsYW5rKCkpDQpgYGANCg0KDQoNCg==