IyBUcmFuc2xhdGlvbiBvZiBSLXN0YXRzNC5wb3QgdG8gRnJlbmNoCiMgQ29weXJpZ2h0IChDKSAyMDA1IFRoZSBSIEZvdW5kYXRpb24KIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgc3RhdHM0IFIgcGFja2FnZS4KIyBQaGlsaXBwZSBHcm9zamVhbiA8cGhncm9zamVhbkBzY2l2aWV3cy5vcmc+LCAyMDA1LgojCm1zZ2lkICIiCm1zZ3N0ciAiIgoiUHJvamVjdC1JZC1WZXJzaW9uOiBSIDIuMTIuMFxuIgoiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGJ1Z3Muci1wcm9qZWN0Lm9yZ1xuIgoiUE9ULUNyZWF0aW9uLURhdGU6IDIwMjAtMDMtMjQgMTA6MTNcbiIKIlBPLVJldmlzaW9uLURhdGU6IDIwMTAtMTAtMDEgMjE6MDErMDEwMFxuIgoiTGFzdC1UcmFuc2xhdG9yOiBQaGlsaXBwZSBHcm9zamVhbiA8cGhncm9zamVhbkBzY2l2aWV3cy5vcmc+XG4iCiJMYW5ndWFnZS1UZWFtOiBGcmVuY2ggPFItY29yZUByLXByb2plY3Qub3JnPlxuIgoiTGFuZ3VhZ2U6IGZyXG4iCiJNSU1FLVZlcnNpb246IDEuMFxuIgoiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuID4gMSk7XG4iCiJYLVBvZWRpdC1MYW5ndWFnZTogRnJlbmNoXG4iCgptc2dpZCAibmFtZWQgbGlzdCBleHBlY3RlZCIKbXNnc3RyICIiCgojLCBmdXp6eQptc2dpZCAic29tZSBuYW1lZCB2YWx1ZXMgYXJlIG5vdCBhcmd1bWVudHMgdG8gdGhlIHN1cHBsaWVkIGxvZy1saWtlbGlob29kIgptc2dzdHIgIiIKInF1ZWxxdWVzIGFyZ3VtZW50cyBub21t6XMgZGFucyAnZml4ZWQnIG5lIHNvbnQgcGFzIGRlcyBhcmd1bWVudHMgIgoiY29ycmVzcG9uZGFudCBhdSBtYXhpbXVtIGRlIHZyYWlzc2VtYmxhbmNlIGZvdXJuaSIKCm1zZ2lkICJNaXNtYXRjaCBpbiBsZW5ndGggb2Ygc3RhcnQgdmFsdWVzIgptc2dzdHIgIiIKCm1zZ2lkICJmaXhlZCB2YWx1ZXMgdmlvbGF0ZSBjb25zdHJhaW50cyIKbXNnc3RyICIiCgptc2dpZCAic3RhcnQgdmFsdWVzIGRvIG5vdCBzYXRpc2Z5IGNvbnN0cmFpbnRzIgptc2dzdHIgIiIKCm1zZ2lkICIiCiJwcm9maWxpbmcgaGFzIGZvdW5kIGEgYmV0dGVyIHNvbHV0aW9uLCBzbyBvcmlnaW5hbCBmaXQgaGFkIG5vdCBjb252ZXJnZWQiCm1zZ3N0ciAiIgoibGUgcHJvZmlsYWdlIGEgdHJvdXbpIHVuZSBtZWlsbGV1cmUgc29sdXRpb24sIGwnYWp1c3RlbWVudCBvcmlnaW5hbCBuJ2EgZG9uYyAiCiJwYXMgY29udmVyZ+kiCgptc2dpZCAibGV2ZWxzIHRydW5jYXRlZCB0byBwb3NpdGl2ZSB2YWx1ZXMgb25seSIKbXNnc3RyICJsZXMgc2V1aWxzIHNvbnQgbml2ZWzpcyDgIGRlcyB2YWxldXJzIHBvc2l0aXZlcyB1bmlxdWVtZW50IgoKbXNnaWQgImV4dHJhIGFyZ3VtZW50cyBkaXNjYXJkZWQiCm1zZ3N0ciAiYXJndW1lbnRzIHN1cHBs6W1lbnRhaXJlcyDpbGltaW7pcyIKCiN+IG1zZ2lkICInc3RhcnQnIG11c3QgYmUgYSBuYW1lZCBsaXN0IgojfiBtc2dzdHIgIidzdGFydCcgZG9pdCDqdHJlIHVuZSBsaXN0ZSBub21t6WUiCgojfiBtc2dpZCAiIgojfiAic29tZSBuYW1lZCBhcmd1bWVudHMgaW4gJ3N0YXJ0JyBhcmUgbm90IGFyZ3VtZW50cyB0byB0aGUgc3VwcGxpZWQgbG9nLSIKI34gImxpa2VsaWhvb2QiCiN+IG1zZ3N0ciAiIgojfiAicXVlbHF1ZXMgYXJndW1lbnRzIG5vbW3pcyBkYW5zICdzdGFydCcgbmUgc29udCBwYXMgbGVzIGFyZ3VtZW50cyAiCiN+ICJjb3JyZXNwb25kYW50cyBhdSBtYXhpbXVtIGRlIHZyYWlzc2VtYmxhbmNlIGZvdXJuaSIK