IyBUcmFuc2xhdGlvbiBvZiBSLXBhcmFsbGVsLnBvdCB0byBGcmVuY2gKIyBDb3B5cmlnaHQgKEMpIDIwMTEgVGhlIFIgRm91bmRhdGlvbgojIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBwYXJhbGxlbCBSIHBhY2thZ2UuCiMgUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPiwgMjAxMS4KIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogUiAyLjE0LjBcbiIKIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBidWdzLnItcHJvamVjdC5vcmdcbiIKIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDIwLTAzLTI0IDEwOjEzXG4iCiJQTy1SZXZpc2lvbi1EYXRlOiAyMDEzLTAzLTE4IDIyOjA4KzAxMDBcbiIKIkxhc3QtVHJhbnNsYXRvcjogUGhpbGlwcGUgR3Jvc2plYW4gPHBoZ3Jvc2plYW5Ac2Npdmlld3Mub3JnPlxuIgoiTGFuZ3VhZ2UtVGVhbTogRnJlbmNoIDxSLWNvcmVAci1wcm9qZWN0Lm9yZz5cbiIKIkxhbmd1YWdlOiBmclxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7cGx1cmFsPShuID4gMSk7XG4iCiJYLUdlbmVyYXRvcjogUG9lZGl0IDEuNS41XG4iCgojLCBmdXp6eQptc2dpZCAiaW52YWxpZCB2YWx1ZSBvZiAlcyIKbXNnc3RyICJ2YWxldXIgaW5jb3JyZWN0ZSBwb3VyICdzZWVkJyIKCm1zZ2lkICJuZWVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIKbXNnc3RyICJhdSBtb2lucyB1biBhcmd1bWVudCBlc3QgcmVxdWlzIgoKbXNnaWQgInplcm8tbGVuZ3RoIGlucHV0cyBjYW5ub3QgYmUgbWl4ZWQgd2l0aCB0aG9zZSBvZiBub24temVybyBsZW5ndGgiCm1zZ3N0ciAiIgoiTGVzIGVudHLpZXMgZGUgbG9uZ3VldXIgbnVsbGUgbmUgcGV1dmVudCDqdHJlIG3pbGFuZ+llcyDgIGNlbGxlcyBkZSBsb25ndWV1ciAiCiJub24gbnVsbGUiCgptc2dpZCAiZGltKFgpIG11c3QgaGF2ZSBhIHBvc2l0aXZlIGxlbmd0aCIKbXNnc3RyICJkaW0oWCkgZG9pdCBhdm9pciB1bmUgbG9uZ3VldXIgcG9zaXRpdmUiCgptc2dpZCAiJ1gnIG11c3QgaGF2ZSBuYW1lZCBkaW1uYW1lcyIKbXNnc3RyICInWCcgZG9pdCBhdm9pciBkZXMgZGltbmFtZXMgbm9tbelzIgoKbXNnaWQgIm5vdCBhbGwgZWxlbWVudHMgb2YgJ01BUkdJTicgYXJlIG5hbWVzIG9mIGRpbWVuc2lvbnMiCm1zZ3N0ciAibGVzIOls6W1lbnRzIGRlICdNQVJHSU4nIG5lIHNvbnQgcGFzIHRvdXMgZGVzIG5vbXMgZGUgZGltZW5zaW9ucyIKCm1zZ2lkICJubyBjbHVzdGVyICdjbCcgc3VwcGxpZWQgYW5kIG5vbmUgaXMgcmVnaXN0ZXJlZCIKbXNnc3RyICJwYXMgZGUgZ3JhcHBlICdjbCcgZm91cm5pZSBldCBhdWN1bmUgbidlc3QgZW5yZWdpc3Ry6WUiCgptc2dpZCAibm90IGEgdmFsaWQgY2x1c3RlciIKbXNnc3RyICJncm91cGUgZGUgcHJvY2Vzc3VzIGludmFsaWRlIgoKbXNnaWQgInVua25vd24gY2x1c3RlciB0eXBlIgptc2dzdHIgImdyb3VwZSBkZSBwcm9jZXNzdXMgZGUgdHlwZSBpbmNvbm51IgoKIywgZnV6enkKbXNnaWQgIm51bWVyaWMgJ25hbWVzJyBtdXN0IGJlID49IDEiCm1zZ3N0ciAiJ25ub2RlcycgZG9pdCDqdHJlID49IDEiCgptc2dpZCAibm9kZSBvZiBhIHNvY2tldCBjbHVzdGVyIG9uIGhvc3QgJXMgd2l0aCBwaWQgJWQiCm1zZ3N0ciAibm9ldWQgZCd1biBncm91cGUgZGUgcHJvY2Vzc3VzIHNvY2tldCBzdXIgbCdo9HRlICVzIGF2ZWMgbGUgcGlkICVkIgoKbXNnaWQgIkNvbm5lY3Rpb24gc2V0dXAgZmFpbGVkIG9yIHRpbWVkIG91dC4iCm1zZ3N0ciAiIgoKbXNnaWQgIlBPUlQgbXVzdCBiZSBzcGVjaWZpZWQiCm1zZ3N0ciAiUE9SVCBkb2l0IOp0cmUgZm91cm5pIgoKbXNnaWQgIidubm9kZXMnIG11c3QgYmUgPj0gMSIKbXNnc3RyICInbm5vZGVzJyBkb2l0IOp0cmUgPj0gMSIKCm1zZ2lkICJDbHVzdGVyIHNldHVwIGZhaWxlZC4iCm1zZ3N0ciAiIgoKbXNnaWQgImludmFsaWQgJ2NoaWxkJyBhcmd1bWVudCIKbXNnc3RyICJhcmd1bWVudCAnY2hpbGQnIGluY29ycmVjdCIKCm1zZ2lkICInY2hpbGRyZW4nIG11c3QgYmUgYSBsaXN0IG9mIHByb2Nlc3NlcyBvciBhIHNpbmdsZSBwcm9jZXNzIgptc2dzdHIgIidjaGlsZHJlbicgZG9pdCDqdHJlIHVuZSBsaXN0ZSBkZSBwcm9jZXNzdXMgb3UgdW4gc2V1bCBwcm9jZXNzdXMiCgptc2dpZCAiJ3Byb2Nlc3MnIG11c3QgYmUgb2YgY2xhc3MgJXMiCm1zZ3N0ciAiJ3Byb2Nlc3MnIGRvaXQg6nRyZSBkZSBjbGFzc2UgJXMiCgptc2dpZCAiJ2NoaWxkJyBtdXN0IGJlIGEgdmFsaWQgY2hpbGQgcHJvY2VzcyIKbXNnc3RyICInY2hpbGQnIGRvaXQg6nRyZSB1biBwcm9jZXNzdXMgZmlscyB2YWxpZGUiCgptc2dpZCAiJ3doYXQnIG11c3QgYmUgYSBjaGFyYWN0ZXIgb3IgcmF3IHZlY3RvciIKbXNnc3RyICInd2hhdCcgZG9pdCDqdHJlIHVuZSBjaGFpbmUgZGUgY2FyYWN06HJlcyBvdSB1biB2ZWN0ZXVyICdyYXcnIgoKbXNnaWQgIidtYy5jb3JlcycgbXVzdCBiZSA+PSAxIgptc2dzdHIgIidtYy5jb3JlcycgZG9pdCDqdHJlID49IDEiCgptc2dpZCAiYWZmaW5pdHkubGlzdCBhbmQgWCBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIgptc2dzdHIgIiIKCm1zZ2lkICIlZCBmdW5jdGlvbiBjYWxscyByZXN1bHRlZCBpbiBhbiBlcnJvciIKbXNnc3RyICJsZXMgYXBwZWxzIGRlIGZvbmN0aW9uICVkIG9udCBwcm9kdWl0IHVuZSBlcnJldXIiCgptc2dpZCAiJ21jLnByZXNjaGVkdWxlJyBtdXN0IGJlIGZhbHNlIGlmICdhZmZpbml0eS5saXN0JyBpcyB1c2VkIgptc2dzdHIgIiIKCm1zZ2lkICJhbGwgc2NoZWR1bGVkIGNvcmVzIGVuY291bnRlcmVkIGVycm9ycyBpbiB1c2VyIGNvZGUiCm1zZ3N0ciAiIgoidG91cyBsZXMgY29ldXJzIHF1aSBvbnQg6XTpIHByb2dyYW1t6XMgb250IHRyb3V26SBkZXMgZXJyZXVycyBkYW5zIGxlIGNvZGUgIgoidXRpbGlzYXRldXIiCgptc2dpZCAiWmVyby1sZW5ndGggaW5wdXRzIGNhbm5vdCBiZSBtaXhlZCB3aXRoIHRob3NlIG9mIG5vbi16ZXJvIGxlbmd0aCIKbXNnc3RyICIiCiJMZXMgZW50cullcyBkZSBsb25ndWV1ciBudWxsZSBuZSBwZXV2ZW50IOp0cmUgbelsYW5n6WVzIOAgY2VsbGVzIGRlIGxvbmd1ZXVyICIKIm5vbiBudWxsZSIKCm1zZ2lkICJpbnZhbGlkICdqb2JzJyBhcmd1bWVudCIKbXNnc3RyICJhcmd1bWVudCAnam9icycgaW5jb3JyZWN0IgoKbXNnaWQgIid2JyBtdXN0IGJlIGEgdmVjdG9yIgptc2dzdHIgIid2JyBkb2l0IOp0cmUgdW4gdmVjdGV1ciIKCm1zZ2lkICJzb21lIHJlc3VsdHMgbWF5IGJlIG1pc3NpbmcsIGZvbGRlZCBvciBjYXVzZWQgYW4gZXJyb3IiCm1zZ3N0ciAiIgoicXVlbHF1ZXMgculzdWx0YXRzIHBldXZlbnQg6nRyZSBtYW5xdWFudHMsIHJlcGxp6XMgb3Ugb250IHByb2R1aXQgdW5lIGVycm9yIgoKbXNnaWQgImZvcmsgY2x1c3RlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyIKbXNnc3RyICIiCiJsYSBjculhdGlvbiBkZSBub3V2ZWxsZXMgYnJhbmNoZXMgZGUgZ3JvdXBlcyBkZSBwcm9jZXNzdXMgbidlc3QgcGFzIHN1cHBvcnTpICIKInNvdXMgV2luZG93cyIKCm1zZ2lkICInbWMuY29yZXMnID4gMSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MiCm1zZ3N0ciAiJ21jLmNvcmVzJyA+IDEgbidlc3QgcGFzIHN1cHBvcnTpIHNvdXMgV2luZG93cyIKCm1zZ2lkICJDbHVzdGVyIHNldHVwIGZhaWxlZC4gJWQgd29ya2VyIG9mICVkIGZhaWxlZCB0byBjb25uZWN0LiIKbXNnaWRfcGx1cmFsICJDbHVzdGVyIHNldHVwIGZhaWxlZC4gJWQgb2YgJWQgd29ya2VycyBmYWlsZWQgdG8gY29ubmVjdC4iCm1zZ3N0clswXSAiIgptc2dzdHJbMV0gIiIKCm1zZ2lkICJzb2NrZXQgY2x1c3RlciB3aXRoICVkIG5vZGVzIG9uIGhvc3QgJXMiCm1zZ2lkX3BsdXJhbCAic29ja2V0IGNsdXN0ZXIgd2l0aCAlZCBub2RlcyBvbiBob3N0cyAlcyIKbXNnc3RyWzBdICJncm91cGUgZGUgcHJvY2Vzc3VzIHNvY2tldCBhdmVjICVkIG5vZXVkcyBzdXIgbCdo9HRlICVzIgptc2dzdHJbMV0gImdyb3VwZSBkZSBwcm9jZXNzdXMgc29ja2V0IGF2ZWMgJWQgbm9ldWRzIHN1ciBsJ2j0dGUgJXMiCgptc2dpZCAiJWQgcGFyYWxsZWwgZnVuY3Rpb24gY2FsbCBkaWQgbm90IGRlbGl2ZXIgYSByZXN1bHQiCm1zZ2lkX3BsdXJhbCAiJWQgcGFyYWxsZWwgZnVuY3Rpb24gY2FsbHMgZGlkIG5vdCBkZWxpdmVyIHJlc3VsdHMiCm1zZ3N0clswXSAiIgptc2dzdHJbMV0gIiIKCiMsIGZ1enp5Cm1zZ2lkICIiCiJzY2hlZHVsZWQgY29yZSAlcyBkaWQgbm90IGRlbGl2ZXIgYSByZXN1bHQsIGFsbCB2YWx1ZXMgb2YgdGhlIGpvYiB3aWxsIGJlICIKImFmZmVjdGVkIgptc2dpZF9wbHVyYWwgIiIKInNjaGVkdWxlZCBjb3JlcyAlcyBkaWQgbm90IGRlbGl2ZXIgcmVzdWx0cywgYWxsIHZhbHVlcyBvZiB0aGUgam9icyB3aWxsIGJlICIKImFmZmVjdGVkIgptc2dzdHJbMF0gIiIKImxlIGNvZXVyIHByb2dyYW1t6SAlcyBhIHJlbmNvbnRy6SB1bmUgZXJyZXVyIGRhbnMgbGUgY29kZSB1dGlsaXNhdGV1ciwgIgoidG91dGVzIGxlcyB2YWxldXJzIHBvdXIgY2V0dGUgdOJjaGUgc2Vyb250IGFmZmVjdOllcyIKbXNnc3RyWzFdICIiCiJsZXMgY29ldXJzIHByb2dyYW1t6XMgJXMgb250IHJlbmNvbnRy6SBkZXMgZXJyZXVycyBkYW5zIGxlIGNvZGUgdXRpbGlzYXRldXIsICIKInRvdXRlcyBsZXMgdmFsZXVycyBwb3VyIGNlcyB04mNoZXMgc2Vyb250IGFmZmVjdOllcyIKCm1zZ2lkICIiCiJzY2hlZHVsZWQgY29yZSAlcyBlbmNvdW50ZXJlZCBlcnJvciBpbiB1c2VyIGNvZGUsIGFsbCB2YWx1ZXMgb2YgdGhlIGpvYiB3aWxsICIKImJlIGFmZmVjdGVkIgptc2dpZF9wbHVyYWwgIiIKInNjaGVkdWxlZCBjb3JlcyAlcyBlbmNvdW50ZXJlZCBlcnJvcnMgaW4gdXNlciBjb2RlLCBhbGwgdmFsdWVzIG9mIHRoZSBqb2JzICIKIndpbGwgYmUgYWZmZWN0ZWQiCm1zZ3N0clswXSAiIgoibGUgY29ldXIgcHJvZ3JhbW3pICVzIGEgcmVuY29udHLpIHVuZSBlcnJldXIgZGFucyBsZSBjb2RlIHV0aWxpc2F0ZXVyLCAiCiJ0b3V0ZXMgbGVzIHZhbGV1cnMgcG91ciBjZXR0ZSB04mNoZSBzZXJvbnQgYWZmZWN06WVzIgptc2dzdHJbMV0gIiIKImxlcyBjb2V1cnMgcHJvZ3JhbW3pcyAlcyBvbnQgcmVuY29udHLpIGRlcyBlcnJldXJzIGRhbnMgbGUgY29kZSB1dGlsaXNhdGV1ciwgIgoidG91dGVzIGxlcyB2YWxldXJzIHBvdXIgY2VzIHTiY2hlcyBzZXJvbnQgYWZmZWN06WVzIgoKbXNnaWQgIiVkIHBhcmFsbGVsIGpvYiBkaWQgbm90IGRlbGl2ZXIgYSByZXN1bHQiCm1zZ2lkX3BsdXJhbCAiJWQgcGFyYWxsZWwgam9icyBkaWQgbm90IGRlbGl2ZXIgcmVzdWx0cyIKbXNnc3RyWzBdICIiCm1zZ3N0clsxXSAiIgoKI34gbXNnaWQgInNvY2tldCBjbHVzdGVyIHdpdGggJWQgbm9kZXMgb24gaG9zdHMgJXMiCiN+IG1zZ3N0ciAiZ3JvdXBlIGRlIHByb2Nlc3N1cyBzb2NrZXQgYXZlYyAlZCBub2V1ZHMgc3VyIGxlcyBo9HRlcyAlcyIKCiN+IG1zZ2lkICIsIgojfiBtc2dzdHIgIiwiCgojfiBtc2dpZCAiaG9zdCIKI34gbXNnc3RyICJo9HRlIgo=