forked from gesior/open-tibia-library
-
Notifications
You must be signed in to change notification settings - Fork 0
/
outfitImagePhpGeneratorCode.ts
21 lines (20 loc) · 45.7 KB
/
outfitImagePhpGeneratorCode.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
export class OutfitImagePhpGeneratorCode {
public version = '0.1.6';
private files = {
"libs\/gifCreator.php": "PD9waHANCg0KLyoqDQogKiBDcmVhdGUgYW4gYW5pbWF0ZWQgR0lGIGZyb20gbXVsdGlwbGUgaW1hZ2VzDQogKg0KICogQHVwZGF0ZSBieSBnZXNpb3IsIHBocCA4LjAgY29tcGF0aWJpbGl0eQ0KICoNCiAqIEB2ZXJzaW9uIDEuMA0KICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL1N5YmlvL0dpZkNyZWF0b3INCiAqIEBhdXRob3IgU3liaW8gKENsw6ltZW50IEd1aWxsZW1haW4gIC8gQFN5YmlvMDEpDQogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvZ3BsLWxpY2Vuc2UucGhwIEdOVSBQdWJsaWMgTGljZW5zZQ0KICogQGNvcHlyaWdodCBDbMOpbWVudCBHdWlsbGVtYWluDQogKi8NCmNsYXNzIEdpZkNyZWF0b3INCnsNCiAgICAvKioNCiAgICAgKiBAdmFyIHN0cmluZyBUaGUgZ2lmIHN0cmluZyBzb3VyY2UgKG9sZDogdGhpcy0+R0lGKQ0KICAgICAqLw0KICAgIHByaXZhdGUgJGdpZjsNCg0KICAgIC8qKg0KICAgICAqIEB2YXIgc3RyaW5nIEVuY29kZXIgdmVyc2lvbiAob2xkOiB0aGlzLT5WRVIpDQogICAgICovDQogICAgcHJpdmF0ZSAkdmVyc2lvbjsNCg0KICAgIC8qKg0KICAgICAqIEB2YXIgYm9vbGVhbiBDaGVjayB0aGUgaW1hZ2UgaXMgYnVpbGQgb3Igbm90IChvbGQ6IHRoaXMtPklNRykNCiAgICAgKi8NCiAgICBwcml2YXRlICRpbWdCdWlsdDsNCg0KICAgIC8qKg0KICAgICAqIEB2YXIgYXJyYXkgRnJhbWVzIHN0cmluZyBzb3VyY2VzIChvbGQ6IHRoaXMtPkJVRikNCiAgICAgKi8NCiAgICBwcml2YXRlICRmcmFtZVNvdXJjZXM7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXIgR2lmIGxvb3AgKG9sZDogdGhpcy0+TE9QKQ0KICAgICAqLw0KICAgIHByaXZhdGUgJGxvb3A7DQoNCiAgICAvKioNCiAgICAgKiBAdmFyIGludGVnZXIgR2lmIGRpcyAob2xkOiB0aGlzLT5ESVMpDQogICAgICovDQogICAgcHJpdmF0ZSAkZGlzOw0KDQogICAgLyoqDQogICAgICogQHZhciBpbnRlZ2VyIEdpZiBjb2xvciAob2xkOiB0aGlzLT5DT0wpDQogICAgICovDQogICAgcHJpdmF0ZSAkY29sb3VyOw0KDQogICAgLyoqDQogICAgICogQHZhciBhcnJheSAob2xkOiB0aGlzLT5FUlIpDQogICAgICovDQogICAgcHJpdmF0ZSAkZXJyb3JzOw0KDQogICAgLy8gTWV0aG9kcw0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiAgICAvKioNCiAgICAgKiBDb25zdHJ1Y3Rvcg0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpDQogICAgew0KICAgICAgICAkdGhpcy0+cmVzZXQoKTsNCg0KICAgICAgICAvLyBTdGF0aWMgZGF0YQ0KICAgICAgICAkdGhpcy0+dmVyc2lvbiA9ICdHaWZDcmVhdG9yOiBVbmRlciBkZXZlbG9wbWVudCc7DQogICAgICAgICR0aGlzLT5lcnJvcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdFUlIwMCcgPT4gJ0RvZXMgbm90IHN1cHBvcnRlZCBmdW5jdGlvbiBmb3Igb25seSBvbmUgaW1hZ2UuJywNCiAgICAgICAgICAgICdFUlIwMScgPT4gJ1NvdXJjZSBpcyBub3QgYSBHSUYgaW1hZ2UuJywNCiAgICAgICAgICAgICdFUlIwMicgPT4gJ1lvdSBoYXZlIHRvIGdpdmUgcmVzb3VyY2UgaW1hZ2UgdmFyaWFibGVzLCBpbWFnZSBVUkwgb3IgaW1hZ2UgYmluYXJ5IHNvdXJjZXMgaW4gJGZyYW1lcyBhcnJheS4nLA0KICAgICAgICAgICAgJ0VSUjAzJyA9PiAnRG9lcyBub3QgbWFrZSBhbmltYXRpb24gZnJvbSBhbmltYXRlZCBHSUYgc291cmNlLicsDQogICAgICAgICk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ3JlYXRlIHRoZSBHSUYgc3RyaW5nIChvbGQ6IEdJRkVuY29kZXIpDQogICAgICoNCiAgICAgKiBAcGFyYW0gYXJyYXkgJGZyYW1lcyBBbiBhcnJheSBvZiBmcmFtZTogY2FuIGJlIGZpbGUgcGF0aHMsIHJlc291cmNlIGltYWdlIHZhcmlhYmxlcywgYmluYXJ5IHNvdXJjZXMgb3IgaW1hZ2UgVVJMcw0KICAgICAqIEBwYXJhbSBhcnJheSAkZHVyYXRpb25zIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGR1cmF0aW9uIG9mIGVhY2ggZnJhbWUNCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbG9vcCBOdW1iZXIgb2YgR0lGIGxvb3BzIGJlZm9yZSBzdG9wcGluZyBhbmltYXRpb24gKFNldCAwIHRvIGdldCBhbiBpbmZpbml0ZSBsb29wKQ0KICAgICAqDQogICAgICogQHJldHVybiBzdHJpbmcgVGhlIEdJRiBzdHJpbmcgc291cmNlDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZSgkZnJhbWVzID0gYXJyYXkoKSwgJGR1cmF0aW9ucyA9IGFycmF5KCksICRsb29wID0gMCkNCiAgICB7DQogICAgICAgIGlmICghaXNfYXJyYXkoJGZyYW1lcykgJiYgIWlzX2FycmF5KCRkdXJhdGlvbnMpKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+dmVyc2lvbiAuICc6ICcgLiAkdGhpcy0+ZXJyb3JzWydFUlIwMCddKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5sb29wID0gKCRsb29wID4gLTEpID8gJGxvb3AgOiAwOw0KICAgICAgICAkdGhpcy0+ZGlzID0gMjsNCg0KICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkZnJhbWVzKTsgJGkrKykgew0KICAgICAgICAgICAgaWYgKCRmcmFtZXNbJGldIGluc3RhbmNlb2YgR2RJbWFnZSB8fCBpc19yZXNvdXJjZSgkZnJhbWVzWyRpXSkpIHsgLy8gUmVzb3VyY2UgdmFyDQoNCiAgICAgICAgICAgICAgICAkcmVzb3VyY2VJbWcgPSAkZnJhbWVzWyRpXTsNCg0KICAgICAgICAgICAgICAgIG9iX3N0YXJ0KCk7DQogICAgICAgICAgICAgICAgaW1hZ2VnaWYoJGZyYW1lc1skaV0pOw0KICAgICAgICAgICAgICAgICR0aGlzLT5mcmFtZVNvdXJjZXNbXSA9IG9iX2dldF9jb250ZW50cygpOw0KICAgICAgICAgICAgICAgIG9iX2VuZF9jbGVhbigpOw0KICAgICAgICAgICAgfSBlbHNlaWYgKGlzX3N0cmluZygkZnJhbWVzWyRpXSkpIHsgLy8gRmlsZSBwYXRoIG9yIFVSTCBvciBCaW5hcnkgc291cmNlIGNvZGUNCg0KICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZnJhbWVzWyRpXSkgfHwgZmlsdGVyX3ZhcigkZnJhbWVzWyRpXSwgRklMVEVSX1ZBTElEQVRFX1VSTCkpIHsgLy8gRmlsZSBwYXRoDQoNCiAgICAgICAgICAgICAgICAgICAgJGZyYW1lc1skaV0gPSBmaWxlX2dldF9jb250ZW50cygkZnJhbWVzWyRpXSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgJHJlc291cmNlSW1nID0gaW1hZ2VjcmVhdGVmcm9tc3RyaW5nKCRmcmFtZXNbJGldKTsNCg0KICAgICAgICAgICAgICAgIG9iX3N0YXJ0KCk7DQogICAgICAgICAgICAgICAgaW1hZ2VnaWYoJHJlc291cmNlSW1nKTsNCiAgICAgICAgICAgICAgICAkdGhpcy0+ZnJhbWVTb3VyY2VzW10gPSBvYl9nZXRfY29udGVudHMoKTsNCiAgICAgICAgICAgICAgICBvYl9lbmRfY2xlYW4oKTsNCiAgICAgICAgICAgIH0gZWxzZSB7IC8vIEZhaWwNCg0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCR0aGlzLT52ZXJzaW9uIC4gJzogJyAuICR0aGlzLT5lcnJvcnNbJ0VSUjAyJ10pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoJGkgPT0gMCkgew0KICAgICAgICAgICAgICAgICRjb2xvdXIgPSBpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJHJlc291cmNlSW1nKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHN1YnN0cigkdGhpcy0+ZnJhbWVTb3VyY2VzWyRpXSwgMCwgNikgIT0gJ0dJRjg3YScgJiYgc3Vic3RyKA0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZnJhbWVTb3VyY2VzWyRpXSwNCiAgICAgICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAgICAgNg0KICAgICAgICAgICAgICAgICkgIT0gJ0dJRjg5YScpIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbigkdGhpcy0+dmVyc2lvbiAuICc6ICcgLiAkaSAuICcgJyAuICR0aGlzLT5lcnJvcnNbJ0VSUjAxJ10pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBmb3IgKCRqID0gKDEzICsgMyAqICgyIDw8IChvcmQoJHRoaXMtPmZyYW1lU291cmNlc1skaV0gWzEwXSkgJiAweDA3KSkpLCAkayA9IHRydWU7ICRrOyAkaisrKSB7DQogICAgICAgICAgICAgICAgc3dpdGNoICgkdGhpcy0+ZnJhbWVTb3VyY2VzWyRpXSBbJGpdKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJyEnOg0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHN1YnN0cigkdGhpcy0+ZnJhbWVTb3VyY2VzWyRpXSwgKCRqICsgMyksIDgpKSA9PSAnTkVUU0NBUEUnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT52ZXJzaW9uIC4gJzogJyAuICR0aGlzLT5lcnJvcnNbJ0VSUjAzJ10gLiAnICgnIC4gKCRpICsgMSkgLiAnIHNvdXJjZSkuJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJzsnOg0KDQogICAgICAgICAgICAgICAgICAgICAgICAkayA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB1bnNldCgkcmVzb3VyY2VJbWcpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGlzc2V0KCRjb2xvdXIpKSB7DQogICAgICAgICAgICAkdGhpcy0+Y29sb3VyID0gJGNvbG91cjsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICRyZWQgPSAkZ3JlZW4gPSAkYmx1ZSA9IDA7DQogICAgICAgICAgICAkdGhpcy0+Y29sb3VyID0gKCRyZWQgPiAtMSAmJiAkZ3JlZW4gPiAtMSAmJiAkYmx1ZSA+IC0xKSA\/ICgkcmVkIHwgKCRncmVlbiA8PCA4KSB8ICgkYmx1ZSA8PCAxNikpIDogLTE7DQogICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+Z2lmQWRkSGVhZGVyKCk7DQoNCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPmZyYW1lU291cmNlcyk7ICRpKyspIHsNCiAgICAgICAgICAgICR0aGlzLT5hZGRHaWZGcmFtZXMoJGksICRkdXJhdGlvbnNbJGldKTsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5naWZBZGRGb290ZXIoKTsNCg0KICAgICAgICByZXR1cm4gJHRoaXMtPmdpZjsNCiAgICB9DQoNCiAgICAvLyBJbnRlcm5hbHMNCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQogICAgLyoqDQogICAgICogQWRkIHRoZSBoZWFkZXIgZ2lmIHN0cmluZyBpbiBpdHMgc291cmNlIChvbGQ6IEdJRkFkZEhlYWRlcikNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2lmQWRkSGVhZGVyKCkNCiAgICB7DQogICAgICAgICRjbWFwID0gMDsNCg0KICAgICAgICBpZiAob3JkKCR0aGlzLT5mcmFtZVNvdXJjZXNbMF0gWzEwXSkgJiAweDgwKSB7DQogICAgICAgICAgICAkY21hcCA9IDMgKiAoMiA8PCAob3JkKCR0aGlzLT5mcmFtZVNvdXJjZXNbMF0gWzEwXSkgJiAweDA3KSk7DQoNCiAgICAgICAgICAgICR0aGlzLT5naWYgLj0gc3Vic3RyKCR0aGlzLT5mcmFtZVNvdXJjZXNbMF0sIDYsIDcpOw0KICAgICAgICAgICAgJHRoaXMtPmdpZiAuPSBzdWJzdHIoJHRoaXMtPmZyYW1lU291cmNlc1swXSwgMTMsICRjbWFwKTsNCiAgICAgICAgICAgICR0aGlzLT5naWYgLj0gIiFcMzc3XDEzTkVUU0NBUEUyLjBcM1wxIiAuICR0aGlzLT5lbmNvZGVBc2NpaVRvQ2hhcigkdGhpcy0+bG9vcCkgLiAiXDAiOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQWRkIHRoZSBmcmFtZSBzb3VyY2VzIHRvIHRoZSBHSUYgc3RyaW5nIChvbGQ6IEdJRkFkZEZyYW1lcykNCiAgICAgKg0KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRpDQogICAgICogQHBhcmFtIGludGVnZXIgJGQNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkR2lmRnJhbWVzKCRpLCAkZCkNCiAgICB7DQogICAgICAgICRMb2NhbHNfc3RyID0gMTMgKyAzICogKDIgPDwgKG9yZCgkdGhpcy0+ZnJhbWVTb3VyY2VzWyRpXSBbMTBdKSAmIDB4MDcpKTsNCg0KICAgICAgICAkTG9jYWxzX2VuZCA9IHN0cmxlbigkdGhpcy0+ZnJhbWVTb3VyY2VzWyRpXSkgLSAkTG9jYWxzX3N0ciAtIDE7DQogICAgICAgICRMb2NhbHNfdG1wID0gc3Vic3RyKCR0aGlzLT5mcmFtZVNvdXJjZXNbJGldLCAkTG9jYWxzX3N0ciwgJExvY2Fsc19lbmQpOw0KDQogICAgICAgICRHbG9iYWxfbGVuID0gMiA8PCAob3JkKCR0aGlzLT5mcmFtZVNvdXJjZXNbMF0gWzEwXSkgJiAweDA3KTsNCiAgICAgICAgJExvY2Fsc19sZW4gPSAyIDw8IChvcmQoJHRoaXMtPmZyYW1lU291cmNlc1skaV0gWzEwXSkgJiAweDA3KTsNCg0KICAgICAgICAkR2xvYmFsX3JnYiA9IHN1YnN0cigkdGhpcy0+ZnJhbWVTb3VyY2VzWzBdLCAxMywgMyAqICgyIDw8IChvcmQoJHRoaXMtPmZyYW1lU291cmNlc1swXSBbMTBdKSAmIDB4MDcpKSk7DQogICAgICAgICRMb2NhbHNfcmdiID0gc3Vic3RyKCR0aGlzLT5mcmFtZVNvdXJjZXNbJGldLCAxMywgMyAqICgyIDw8IChvcmQoJHRoaXMtPmZyYW1lU291cmNlc1skaV0gWzEwXSkgJiAweDA3KSkpOw0KDQogICAgICAgICRMb2NhbHNfZXh0ID0gIiFceEY5XHgwNCIgLiBjaHIoKCR0aGlzLT5kaXMgPDwgMikgKyAwKSAuIGNocigoJGQgPj4gMCkgJiAweEZGKSAuIGNocigNCiAgICAgICAgICAgICAgICAoJGQgPj4gOCkgJiAweEZGDQogICAgICAgICAgICApIC4gIlx4MFx4MCI7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5jb2xvdXIgPiAtMSAmJiBvcmQoJHRoaXMtPmZyYW1lU291cmNlc1skaV0gWzEwXSkgJiAweDgwKSB7DQogICAgICAgICAgICBmb3IgKCRqID0gMDsgJGogPCAoMiA8PCAob3JkKCR0aGlzLT5mcmFtZVNvdXJjZXNbJGldIFsxMF0pICYgMHgwNykpOyAkaisrKSB7DQogICAgICAgICAgICAgICAgaWYgKG9yZCgkTG9jYWxzX3JnYiBbMyAqICRqICsgMF0pID09ICgoJHRoaXMtPmNvbG91ciA+PiAxNikgJiAweEZGKSAmJg0KICAgICAgICAgICAgICAgICAgICBvcmQoJExvY2Fsc19yZ2IgWzMgKiAkaiArIDFdKSA9PSAoKCR0aGlzLT5jb2xvdXIgPj4gOCkgJiAweEZGKSAmJg0KICAgICAgICAgICAgICAgICAgICBvcmQoJExvY2Fsc19yZ2IgWzMgKiAkaiArIDJdKSA9PSAoKCR0aGlzLT5jb2xvdXIgPj4gMCkgJiAweEZGKQ0KICAgICAgICAgICAgICAgICkgew0KICAgICAgICAgICAgICAgICAgICAkTG9jYWxzX2V4dCA9ICIhXHhGOVx4MDQiIC4gY2hyKCgkdGhpcy0+ZGlzIDw8IDIpICsgMSkgLiBjaHIoKCRkID4+IDApICYgMHhGRikgLiBjaHIoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCRkID4+IDgpICYgMHhGRg0KICAgICAgICAgICAgICAgICAgICAgICAgKSAuIGNocigkaikgLiAiXHgwIjsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgc3dpdGNoICgkTG9jYWxzX3RtcCBbMF0pIHsNCiAgICAgICAgICAgIGNhc2UgJyEnOg0KDQogICAgICAgICAgICAgICAgJExvY2Fsc19pbWcgPSBzdWJzdHIoJExvY2Fsc190bXAsIDgsIDEwKTsNCiAgICAgICAgICAgICAgICAkTG9jYWxzX3RtcCA9IHN1YnN0cigkTG9jYWxzX3RtcCwgMTgsIHN0cmxlbigkTG9jYWxzX3RtcCkgLSAxOCk7DQoNCiAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgY2FzZSAnLCc6DQoNCiAgICAgICAgICAgICAgICAkTG9jYWxzX2ltZyA9IHN1YnN0cigkTG9jYWxzX3RtcCwgMCwgMTApOw0KICAgICAgICAgICAgICAgICRMb2NhbHNfdG1wID0gc3Vic3RyKCRMb2NhbHNfdG1wLCAxMCwgc3RybGVuKCRMb2NhbHNfdG1wKSAtIDEwKTsNCg0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKG9yZCgkdGhpcy0+ZnJhbWVTb3VyY2VzWyRpXSBbMTBdKSAmIDB4ODAgJiYgJHRoaXMtPmltZ0J1aWx0KSB7DQogICAgICAgICAgICBpZiAoJEdsb2JhbF9sZW4gPT0gJExvY2Fsc19sZW4pIHsNCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmdpZkJsb2NrQ29tcGFyZSgkR2xvYmFsX3JnYiwgJExvY2Fsc19yZ2IsICRHbG9iYWxfbGVuKSkgew0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Z2lmIC49ICRMb2NhbHNfZXh0IC4gJExvY2Fsc19pbWcgLiAkTG9jYWxzX3RtcDsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkYnl0ZSA9IG9yZCgkTG9jYWxzX2ltZyBbOV0pOw0KICAgICAgICAgICAgICAgICAgICAkYnl0ZSB8PSAweDgwOw0KICAgICAgICAgICAgICAgICAgICAkYnl0ZSAmPSAweEY4Ow0KICAgICAgICAgICAgICAgICAgICAkYnl0ZSB8PSAob3JkKCR0aGlzLT5mcmFtZVNvdXJjZXNbMF0gWzEwXSkgJiAweDA3KTsNCiAgICAgICAgICAgICAgICAgICAgJExvY2Fsc19pbWcgWzldID0gY2hyKCRieXRlKTsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmdpZiAuPSAkTG9jYWxzX2V4dCAuICRMb2NhbHNfaW1nIC4gJExvY2Fsc19yZ2IgLiAkTG9jYWxzX3RtcDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRieXRlID0gb3JkKCRMb2NhbHNfaW1nIFs5XSk7DQogICAgICAgICAgICAgICAgJGJ5dGUgfD0gMHg4MDsNCiAgICAgICAgICAgICAgICAkYnl0ZSAmPSAweEY4Ow0KICAgICAgICAgICAgICAgICRieXRlIHw9IChvcmQoJHRoaXMtPmZyYW1lU291cmNlc1skaV0gWzEwXSkgJiAweDA3KTsNCiAgICAgICAgICAgICAgICAkTG9jYWxzX2ltZyBbOV0gPSBjaHIoJGJ5dGUpOw0KICAgICAgICAgICAgICAgICR0aGlzLT5naWYgLj0gJExvY2Fsc19leHQgLiAkTG9jYWxzX2ltZyAuICRMb2NhbHNfcmdiIC4gJExvY2Fsc190bXA7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdGhpcy0+Z2lmIC49ICRMb2NhbHNfZXh0IC4gJExvY2Fsc19pbWcgLiAkTG9jYWxzX3RtcDsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5pbWdCdWlsdCA9IHRydWU7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQWRkIHRoZSBnaWYgc3RyaW5nIGZvb3RlciBjaGFyIChvbGQ6IEdJRkFkZEZvb3RlcikNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2lmQWRkRm9vdGVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5naWYgLj0gJzsnOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENvbXBhcmUgdHdvIGJsb2NrIGFuZCByZXR1cm4gdGhlIHZlcnNpb24gKG9sZDogR0lGQmxvY2tDb21wYXJlKQ0KICAgICAqDQogICAgICogQHBhcmFtIHN0cmluZyAkZ2xvYmFsQmxvY2sNCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsb2NhbEJsb2NrDQogICAgICogQHBhcmFtIGludGVnZXIgJGxlbmd0aA0KICAgICAqDQogICAgICogQHJldHVybiBpbnRlZ2VyDQogICAgICovDQogICAgcHVibGljIGZ1bmN0aW9uIGdpZkJsb2NrQ29tcGFyZSgkZ2xvYmFsQmxvY2ssICRsb2NhbEJsb2NrLCAkbGVuZ3RoKQ0KICAgIHsNCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgJGkrKykgew0KICAgICAgICAgICAgaWYgKCRnbG9iYWxCbG9jayBbMyAqICRpICsgMF0gIT0gJGxvY2FsQmxvY2sgWzMgKiAkaSArIDBdIHx8DQogICAgICAgICAgICAgICAgJGdsb2JhbEJsb2NrIFszICogJGkgKyAxXSAhPSAkbG9jYWxCbG9jayBbMyAqICRpICsgMV0gfHwNCiAgICAgICAgICAgICAgICAkZ2xvYmFsQmxvY2sgWzMgKiAkaSArIDJdICE9ICRsb2NhbEJsb2NrIFszICogJGkgKyAyXSkgew0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIDE7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogRW5jb2RlIGFuIEFTQ0lJIGNoYXIgaW50byBhIHN0cmluZyBjaGFyIChvbGQ6IEdJRldvcmQpDQogICAgICoNCiAgICAgKiAkcGFyYW0gaW50ZWdlciAkY2hhciBBU0NJSSBjaGFyDQogICAgICoNCiAgICAgKiBAcmV0dXJuIHN0cmluZw0KICAgICAqLw0KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNvZGVBc2NpaVRvQ2hhcigkY2hhcikNCiAgICB7DQogICAgICAgIHJldHVybiAoY2hyKCRjaGFyICYgMHhGRikgLiBjaHIoKCRjaGFyID4+IDgpICYgMHhGRikpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJlc2V0IGFuZCBjbGVhbiB0aGUgY3VycmVudCBvYmplY3QNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzZXQoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmZyYW1lU291cmNlczsNCiAgICAgICAgJHRoaXMtPmdpZiA9ICdHSUY4OWEnOyAvLyB0aGUgR0lGIGhlYWRlcg0KICAgICAgICAkdGhpcy0+aW1nQnVpbHQgPSBmYWxzZTsNCiAgICAgICAgJHRoaXMtPmxvb3AgPSAwOw0KICAgICAgICAkdGhpcy0+ZGlzID0gMjsNCiAgICAgICAgJHRoaXMtPmNvbG91ciA9IC0xOw0KICAgIH0NCg0KICAgIC8vIEdldHRlciAvIFNldHRlcg0KICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiAgICAvKioNCiAgICAgKiBHZXQgdGhlIGZpbmFsIEdJRiBpbWFnZSBzdHJpbmcgKG9sZDogR2V0QW5pbWF0aW9uKQ0KICAgICAqDQogICAgICogQHJldHVybiBzdHJpbmcNCiAgICAgKi8NCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0R2lmKCkNCiAgICB7DQogICAgICAgIHJldHVybiAkdGhpcy0+Z2lmOw0KICAgIH0NCn0=",
"libs\/outfitter.php": "PD9waHANCi8qKg0KICogQGF1dGhvciBLYW1pbCBLYXJrdXMgPGtha2VyQHdwLmV1Pg0KICogQGF1dGhvciBHZXNpb3IucGwgPHBob293bmVkQHdwLnBsPg0KICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTIsIEthbWlsIEthcmt1cw0KICogQHZlcnNpb24gNCAtIGZpeGVkIHJlbmRlcmluZyB3aXRoIGludmFsaWQgcGFyYW1ldGVycw0KICovDQoNCmNsYXNzIE91dGZpdHRlciB7DQoJcHJvdGVjdGVkIHN0YXRpYyAkaW5zdGFuY2UgPSBudWxsOw0KCXByb3RlY3RlZCBzdGF0aWMgJG91dGZpdENvbG9ycyA9IGFycmF5KA0KCQkweEZGRkZGRiwgMHhGRkQ0QkYsIDB4RkZFOUJGLCAweEZGRkZCRiwgMHhFOUZGQkYsIDB4RDRGRkJGLA0KCQkweEJGRkZCRiwgMHhCRkZGRDQsIDB4QkZGRkU5LCAweEJGRkZGRiwgMHhCRkU5RkYsIDB4QkZENEZGLA0KCQkweEJGQkZGRiwgMHhENEJGRkYsIDB4RTlCRkZGLCAweEZGQkZGRiwgMHhGRkJGRTksIDB4RkZCRkQ0LA0KCQkweEZGQkZCRiwgMHhEQURBREEsIDB4QkY5RjhGLCAweEJGQUY4RiwgMHhCRkJGOEYsIDB4QUZCRjhGLA0KCQkweDlGQkY4RiwgMHg4RkJGOEYsIDB4OEZCRjlGLCAweDhGQkZBRiwgMHg4RkJGQkYsIDB4OEZBRkJGLA0KCQkweDhGOUZCRiwgMHg4RjhGQkYsIDB4OUY4RkJGLCAweEFGOEZCRiwgMHhCRjhGQkYsIDB4QkY4RkFGLA0KCQkweEJGOEY5RiwgMHhCRjhGOEYsIDB4QjZCNkI2LCAweEJGN0Y1RiwgMHhCRkFGOEYsIDB4QkZCRjVGLA0KCQkweDlGQkY1RiwgMHg3RkJGNUYsIDB4NUZCRjVGLCAweDVGQkY3RiwgMHg1RkJGOUYsIDB4NUZCRkJGLA0KCQkweDVGOUZCRiwgMHg1RjdGQkYsIDB4NUY1RkJGLCAweDdGNUZCRiwgMHg5RjVGQkYsIDB4QkY1RkJGLA0KCQkweEJGNUY5RiwgMHhCRjVGN0YsIDB4QkY1RjVGLCAweDkxOTE5MSwgMHhCRjZBM0YsIDB4QkY5NDNGLA0KCQkweEJGQkYzRiwgMHg5NEJGM0YsIDB4NkFCRjNGLCAweDNGQkYzRiwgMHgzRkJGNkEsIDB4M0ZCRjk0LA0KCQkweDNGQkZCRiwgMHgzRjk0QkYsIDB4M0Y2QUJGLCAweDNGM0ZCRiwgMHg2QTNGQkYsIDB4OTQzRkJGLA0KCQkweEJGM0ZCRiwgMHhCRjNGOTQsIDB4QkYzRjZBLCAweEJGM0YzRiwgMHg2RDZENkQsIDB4RkY1NTAwLA0KCQkweEZGQUEwMCwgMHhGRkZGMDAsIDB4QUFGRjAwLCAweDU0RkYwMCwgMHgwMEZGMDAsIDB4MDBGRjU0LA0KCQkweDAwRkZBQSwgMHgwMEZGRkYsIDB4MDBBOUZGLCAweDAwNTVGRiwgMHgwMDAwRkYsIDB4NTUwMEZGLA0KCQkweEE5MDBGRiwgMHhGRTAwRkYsIDB4RkYwMEFBLCAweEZGMDA1NSwgMHhGRjAwMDAsIDB4NDg0ODQ4LA0KCQkweEJGM0YwMCwgMHhCRjdGMDAsIDB4QkZCRjAwLCAweDdGQkYwMCwgMHgzRkJGMDAsIDB4MDBCRjAwLA0KCQkweDAwQkYzRiwgMHgwMEJGN0YsIDB4MDBCRkJGLCAweDAwN0ZCRiwgMHgwMDNGQkYsIDB4MDAwMEJGLA0KCQkweDNGMDBCRiwgMHg3RjAwQkYsIDB4QkYwMEJGLCAweEJGMDA3RiwgMHhCRjAwM0YsIDB4QkYwMDAwLA0KCQkweDI0MjQyNCwgMHg3RjJBMDAsIDB4N0Y1NTAwLCAweDdGN0YwMCwgMHg1NTdGMDAsIDB4MkE3RjAwLA0KCQkweDAwN0YwMCwgMHgwMDdGMkEsIDB4MDA3RjU1LCAweDAwN0Y3RiwgMHgwMDU0N0YsIDB4MDAyQTdGLA0KCQkweDAwMDA3RiwgMHgyQTAwN0YsIDB4NTQwMDdGLCAweDdGMDA3RiwgMHg3RjAwNTUsIDB4N0YwMDJBLA0KCQkweDdGMDAwMCwNCgkpOw0KCXB1YmxpYyBzdGF0aWMgJG1vdW50c1RGUyA9IFsNCgkgICAgMSA9PiAzNjgsIDIgPT4gMzY5LCAzID0+IDM3MCwgNCA9PiAzNzEsIDUgPT4gMzcyLCA2ID0+IDM3MywgNyA9PiAzNzQsIDggPT4gMzc1LA0KICAgICAgICA5ID0+IDM3NiwgMTAgPT4gMzc3LCAxMSA9PiAzNzgsIDEyID0+IDM3OSwgMTMgPT4gMzg3LCAxNCA9PiAzODgsIDE1ID0+IDM4OSwgMTYgPT4gMzkwLCAxNyA9PiAzOTIsDQogICAgICAgIDE4ID0+IDQwMSwgMTkgPT4gNDAyLCAyMCA9PiA0MDUsIDIxID0+IDQwNiwgMjIgPT4gNDIxLCAyMyA9PiA0MjYsIDI0ID0+IDQyNywgMjUgPT4gNDM3LCAyNiA9PiA0MzgsDQogICAgICAgIDI3ID0+IDQ0NywgMjggPT4gNDUwLCAyOSA9PiA1MDIsIDMwID0+IDUwMywgMzEgPT4gNTA2LCAzMiA9PiA1MTUsIDMzID0+IDUyMSwgMzQgPT4gNTIyLCAzNSA9PiA1MjYsDQogICAgICAgIDM2ID0+IDU0NiwgMzcgPT4gNTQ3LCAzOCA9PiA1NDgsIDM5ID0+IDU1OSwgNDAgPT4gNTcxLCA0MSA9PiA1NzIsIDQyID0+IDU4MCwgNDMgPT4gNjA2LCA0NCA9PiA2MjEsDQogICAgICAgIDQ1ID0+IDYyMiwgNDYgPT4gNjI0LCA0NyA9PiA2MjYsIDQ4ID0+IDYyNywgNDkgPT4gNjI4LCA1MCA9PiA2MjksIDUxID0+IDYzMCwgNTIgPT4gNjMxLCA1MyA9PiA2NDQsDQogICAgICAgIDU0ID0+IDY0NywgNTUgPT4gNjQ4LCA1NiA9PiA2NDksIDU3ID0+IDY1MCwgNTggPT4gNjUxLCA1OSA9PiA2NjksIDYwID0+IDY3MCwgNjEgPT4gNjcxLCA2MiA9PiA2NzIsDQogICAgICAgIDYzID0+IDY3MywgNjQgPT4gNjc0LCA2NSA9PiA2ODgsIDY2ID0+IDY4OSwgNjcgPT4gNjkwLCA2OCA9PiA2OTEsIDY5ID0+IDY5MiwgNzAgPT4gNjkzLCA3MSA9PiA2ODIsDQogICAgICAgIDcyID0+IDY4NSwgNzMgPT4gNjg2LCA3NCA9PiA2ODcsIDc1ID0+IDcyNiwgNzYgPT4gNzI3LCA3NyA9PiA3MjgsIDc4ID0+IDczNCwgNzkgPT4gNzM1LCA4MCA9PiA3MzYsDQogICAgICAgIDgxID0+IDczOCwgODIgPT4gNzM5LCA4MyA9PiA3NDAsIDg0ID0+IDc2MSwgODUgPT4gNzYyLCA4NiA9PiA3NjMsIDg3ID0+IDg0OCwgODggPT4gODQ5LCA4OSA9PiA4NTAsDQogICAgICAgIDkwID0+IDg1MSwgOTEgPT4gODY4LCA5MiA9PiA4NjksIDkzID0+IDg3MCwgOTQgPT4gODgzLCA5NSA9PiA4ODYsIDk2ID0+IDg4NywgOTcgPT4gODg4LCA5OCA9PiA4ODksDQogICAgICAgIDk5ID0+IDg5MCwgMTAwID0+IDkwMSwgMTAxID0+IDkwMiwgMTAyID0+IDkwMywgMTAzID0+IDkwNSwgMTA0ID0+IDkwNiwgMTA1ID0+IDkwNywgMTA2ID0+IDkzNywNCiAgICAgICAgMTA3ID0+IDk1MCwgMTA4ID0+IDk1MSwgMTA5ID0+IDk1MiwgMTEwID0+IDk1OSwgMTExID0+IDk2MCwgMTEyID0+IDk2MSwgMTEzID0+IDEwMTcsIDExNCA9PiAxMDE4LA0KICAgICAgICAxMTUgPT4gMTAxOSwgMTE2ID0+IDEwMjUsIDExNyA9PiAxMDI2LCAxMTggPT4gMTAyNywgMTE5ID0+IDEwNDksIDEyMCA9PiAxMDUyLCAxMjEgPT4gMTA1MywNCiAgICAgICAgMTIyID0+IDEwNTQsIDEyMyA9PiAxMDkxLCAxMjQgPT4gMTA5MiwgMTI1ID0+IDEwOTMsIDEyNiA9PiAxMTAxLCAxMjcgPT4gMTEwNCwgMTI4ID0+IDExMDUsDQogICAgICAgIDEyOSA9PiAxMTA2LCAxMzAgPT4gMTE1MCwgMTMxID0+IDExNTEsIDEzMiA9PiAxMTYzLCAxMzMgPT4gMTE2NCwgMTM0ID0+IDExNjUsIDEzNSA9PiAxMTY3LA0KICAgICAgICAxMzYgPT4gMTE2OCwgMTM3ID0+IDExNjksIDEzOCA9PiAxMTc5LCAxMzkgPT4gMTE4MCwgMTQwID0+IDExODEsIDE0MSA9PiAxMTgzLCAxNDIgPT4gMTE4NCwNCiAgICAgICAgMTQzID0+IDExODUsIDE0NCA9PiAxMTkxLCAxNDUgPT4gMTIwOCwgMTQ2ID0+IDEyMDksIDE0NyA9PiAxMjI5LCAxNDggPT4gMTIzMCwgMTQ5ID0+IDEyMzEsDQogICAgICAgIDE1MCA9PiAxMjMyLCAxNTEgPT4gMTIzMywgMTUyID0+IDEyMzQsIDE1MyA9PiAxMjQ3LCAxNTQgPT4gMTI0OCwgMTU1ID0+IDEyNDksIDE1NiA9PiAxMjU3LA0KICAgICAgICAxNTcgPT4gMTI1OCwgMTU4ID0+IDEyNTksIDE1OSA9PiAxMjY0LCAxNjAgPT4gMTI2NSwgMTYxID0+IDEyNjYsIDE2MiA9PiAxMjY5LCAxNjMgPT4gMTI4MSwNCiAgICAgICAgMTY0ID0+IDEyODQsIDE2NSA9PiAxMjg1LCAxNjYgPT4gMTI4NiwgMTY3ID0+IDEzMjEsIDE2OCA9PiAxMzI0LCAxNjkgPT4gMTMyNSwgMTcwID0+IDEzMjYsDQogICAgICAgIDE3MSA9PiAxMzMzLCAxNzIgPT4gMTMzNCwgMTczID0+IDEzMzUsIDE3NCA9PiAxMzM2LCAxNzUgPT4gMTM2MywgMTc2ID0+IDEzNzksIDE3NyA9PiAxMzgwLA0KICAgICAgICAxNzggPT4gMTM4MSwgMTc5ID0+IDEzODksIDE4MCA9PiAxMzkwLCAxODEgPT4gMTM5MSwgMTgyID0+IDE0MTcsIDE4MyA9PiAxNDMwLCAxODQgPT4gMTQzMSwNCiAgICAgICAgMTg1ID0+IDE0MzksIDE4NiA9PiAxNDQwLCAxODcgPT4gMTQ0MQ0KICAgIF07DQoNCglwdWJsaWMgc3RhdGljICRkYXRhID0gW107DQoJcHJpdmF0ZSBzdGF0aWMgJHRyYW5zcGFyZW50QmFja2dyb3VuZENvbG9yID0gYXJyYXkoMjU1LCAyNTUsIDI1NSk7DQoJcHVibGljIHN0YXRpYyAkb3V0Zml0UGF0aDsNCglwdWJsaWMgc3RhdGljICRyZXNpemVBbGxPdXRmaXRzVG82NHB4ID0gZmFsc2U7DQoNCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluc3RhbmNlKCkgew0KCQlpZiAoIWlzc2V0KHNlbGY6OiRpbnN0YW5jZSkpDQoJCQlzZWxmOjokaW5zdGFuY2UgPSBuZXcgc2VsZigpOw0KCQlyZXR1cm4gc2VsZjo6JGluc3RhbmNlOw0KCX0NCg0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2V0UmVzaXplQWxsT3V0Zml0c1RvNjRweCgkdmFsdWUpIHsNCgkJc2VsZjo6JHJlc2l6ZUFsbE91dGZpdHNUbzY0cHggPSAoYm9vbCkkdmFsdWU7DQoJfQ0KDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkRGF0YSgkb3V0Zml0SWQsICRpc01vdW50ID0gZmFsc2UpDQoJew0KCQlpZigkaXNNb3VudCkNCgkJew0KCQkJJG1vdW50ID0gJG91dGZpdElkOw0KCQkJaWYoJG1vdW50ID09IDAgfHwgJG1vdW50ID49IDY1NTM1KQ0KCQkJew0KICAgICAgICAgICAgICAgICRvdXRmaXRJZCA9ICgkbW91bnQgJiAweEZGRkYpOw0KCQkJfQ0KCQkJZWxzZWlmKCRtb3VudCA8IDMwMCkNCgkJCXsNCgkJCQkvLyB0ZnMgMS54IG1vdW50IHN5c3RlbQ0KICAgICAgICAgICAgICAgICRvdXRmaXRJZCA9IHNlbGY6OiRtb3VudHNURlNbJG1vdW50XTsNCgkJCX0NCgkJfQ0KCQlpZihmaWxlX2V4aXN0cyhzZWxmOjokb3V0Zml0UGF0aCAuICRvdXRmaXRJZCAuICcvb3V0Zml0LmRhdGEudHh0JykpDQoJCXsNCgkJCWlmKCRpc01vdW50KQ0KCQkJew0KCQkJCSR0bXAgPSB1bnNlcmlhbGl6ZShmaWxlX2dldF9jb250ZW50cyhzZWxmOjokb3V0Zml0UGF0aCAuICRvdXRmaXRJZCAuICcvb3V0Zml0LmRhdGEudHh0JykpOw0KCQkJCXNlbGY6OiRkYXRhWydmaWxlcyddID0gYXJyYXlfbWVyZ2Uoc2VsZjo6JGRhdGFbJ2ZpbGVzJ10sICR0bXBbJ2ZpbGVzJ10pOw0KCQkJCXNlbGY6OiRkYXRhWydtb3VudEZyYW1lc051bWJlciddID0gJHRtcFsnZnJhbWVzTnVtYmVyJ107DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJc2VsZjo6JGRhdGEgPSB1bnNlcmlhbGl6ZShmaWxlX2dldF9jb250ZW50cyhzZWxmOjokb3V0Zml0UGF0aCAuICRvdXRmaXRJZCAuICcvb3V0Zml0LmRhdGEudHh0JykpOw0KCQkJCXNlbGY6OiRkYXRhWydtb3VudEZyYW1lc051bWJlciddID0gMTsNCgkJCX0NCgkJCXJldHVybiB0cnVlOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldE91dGZpdEZyYW1lc051bWJlcigpDQoJew0KCQlyZXR1cm4gc2VsZjo6JGRhdGFbJ2ZyYW1lc051bWJlciddOw0KCX0NCg0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmlsZV9leGlzdHMoJGZpbGVQYXRoKQ0KCXsNCgkJcmV0dXJuIGluX2FycmF5KHRyaW0odHJpbShzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRmaWxlUGF0aCksICcuJyksICcvJyksIHNlbGY6OiRkYXRhWydmaWxlcyddKTsNCgl9DQoNCglwdWJsaWMgZnVuY3Rpb24gb3V0Zml0KCRvdXRmaXQsICRhZGRvbnMsICRoZWFkLCAkYm9keSwgJGxlZ3MsICRmZWV0LCAkbW91bnQsICRkaXJlY3Rpb24gPSAzLCAkYW5pbWF0aW9uID0gMSkgew0KCQlpZigkbW91bnQgPT0gMCB8fCAkbW91bnQgPj0gNjU1MzUpDQoJCXsNCgkJCS8vIG9sZCBtb3VudCBzeXN0ZW0NCgkJCSRtb3VudElkID0gKCRtb3VudCAmIDB4RkZGRik7DQoJCQkkbW91bnRTdGF0ZSA9ICgoJG1vdW50ICYgMHhGRkZGMDAwMCkgIT0gMCkgPyAyIDogMTsNCgkJfQ0KCQllbHNlaWYoJG1vdW50IDwgMzAwKQ0KCQl7DQoJCQkvLyB0ZnMgMS54IG1vdW50IHN5c3RlbQ0KCQkJJG1vdW50SWQgPSBzZWxmOjokbW91bnRzVEZTWyRtb3VudF07DQoJCQkkbW91bnRTdGF0ZSA9IDI7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkbW91bnRJZCA9ICRtb3VudDsNCgkJCSRtb3VudFN0YXRlID0gMjsNCgkJfQ0KDQogICAgICAgIGlmIChzZWxmOjpmaWxlX2V4aXN0cyhzZWxmOjokb3V0Zml0UGF0aCAuICRvdXRmaXQgLiAnLycuJGFuaW1hdGlvbi4nXycgLiAkbW91bnRTdGF0ZSAuICdfMV8nLiRkaXJlY3Rpb24uJy5wbmcnKSkgew0KICAgICAgICAgICAgJGltYWdlX291dGZpdCA9IGltYWdlY3JlYXRlZnJvbXBuZyhzZWxmOjokb3V0Zml0UGF0aCAuICRvdXRmaXQgLiAnLycgLiAkYW5pbWF0aW9uIC4gJ18nIC4gJG1vdW50U3RhdGUgLiAnXzFfJyAuICRkaXJlY3Rpb24gLiAnLnBuZycpOw0KICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKHNlbGY6OiRvdXRmaXRQYXRoIC4gJG91dGZpdCAuICcvJyAuICRhbmltYXRpb24gLiAnXycgLiAkbW91bnRTdGF0ZSAuICdfMV8nIC4gJGRpcmVjdGlvbiAuICdfdGVtcGxhdGUucG5nJykpIHsNCiAgICAgICAgICAgICAgICAkaW1hZ2VfdGVtcGxhdGUgPSBpbWFnZWNyZWF0ZWZyb21wbmcoc2VsZjo6JG91dGZpdFBhdGggLiAkb3V0Zml0IC4gJy8nIC4gJGFuaW1hdGlvbiAuICdfJyAuICRtb3VudFN0YXRlIC4gJ18xXycgLiAkZGlyZWN0aW9uIC4gJ190ZW1wbGF0ZS5wbmcnKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJGltYWdlX3RlbXBsYXRlID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoaW1hZ2VzeCgkaW1hZ2Vfb3V0Zml0KSwgaW1hZ2VzeSgkaW1hZ2Vfb3V0Zml0KSk7DQogICAgICAgICAgICAgICAgJGJnY29sb3IgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJGltYWdlX3RlbXBsYXRlLCBzZWxmOjokdHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3JbMF0sIHNlbGY6OiR0cmFuc3BhcmVudEJhY2tncm91bmRDb2xvclsxXSwgc2VsZjo6JHRyYW5zcGFyZW50QmFja2dyb3VuZENvbG9yWzJdKTsNCiAgICAgICAgICAgICAgICBpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJGltYWdlX3RlbXBsYXRlLCAkYmdjb2xvcik7DQoNCiAgICAgICAgICAgICAgICBpbWFnZWFscGhhYmxlbmRpbmcoJGltYWdlX3RlbXBsYXRlLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgaW1hZ2VzYXZlYWxwaGEoJGltYWdlX3RlbXBsYXRlLCB0cnVlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCRhZGRvbnMgPT0gMSB8fCAkYWRkb25zID09IDMpIHsNCiAgICAgICAgICAgICAgICBpZiAoc2VsZjo6ZmlsZV9leGlzdHMoc2VsZjo6JG91dGZpdFBhdGggLiAkb3V0Zml0IC4gJy8nIC4gJGFuaW1hdGlvbiAuICdfJyAuICRtb3VudFN0YXRlIC4gJ18yXycgLiAkZGlyZWN0aW9uIC4gJy5wbmcnKSkgew0KICAgICAgICAgICAgICAgICAgICAkaW1hZ2VfZmlyc3QgPSBpbWFnZWNyZWF0ZWZyb21wbmcoc2VsZjo6JG91dGZpdFBhdGggLiAkb3V0Zml0IC4gJy8nIC4gJGFuaW1hdGlvbiAuICdfJyAuICRtb3VudFN0YXRlIC4gJ18yXycgLiAkZGlyZWN0aW9uIC4gJy5wbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFscGhhT3ZlcmxheSgkaW1hZ2Vfb3V0Zml0LCAkaW1hZ2VfZmlyc3QsIDY0LCA2NCk7DQogICAgICAgICAgICAgICAgICAgIGltYWdlZGVzdHJveSgkaW1hZ2VfZmlyc3QpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZjo6ZmlsZV9leGlzdHMoc2VsZjo6JG91dGZpdFBhdGggLiAkb3V0Zml0IC4gJy8nIC4gJGFuaW1hdGlvbiAuICdfJyAuICRtb3VudFN0YXRlIC4gJ18yXycgLiAkZGlyZWN0aW9uIC4gJ190ZW1wbGF0ZS5wbmcnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGltYWdlX2ZpcnN0X3RlbXBsYXRlID0gaW1hZ2VjcmVhdGVmcm9tcG5nKHNlbGY6OiRvdXRmaXRQYXRoIC4gJG91dGZpdCAuICcvJyAuICRhbmltYXRpb24gLiAnXycgLiAkbW91bnRTdGF0ZSAuICdfMl8nIC4gJGRpcmVjdGlvbiAuICdfdGVtcGxhdGUucG5nJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YWxwaGFPdmVybGF5KCRpbWFnZV90ZW1wbGF0ZSwgJGltYWdlX2ZpcnN0X3RlbXBsYXRlLCA2NCwgNjQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VkZXN0cm95KCRpbWFnZV9maXJzdF90ZW1wbGF0ZSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGFkZG9ucyA9PSAyIHx8ICRhZGRvbnMgPT0gMykgew0KICAgICAgICAgICAgICAgIGlmIChzZWxmOjpmaWxlX2V4aXN0cyhzZWxmOjokb3V0Zml0UGF0aCAuICRvdXRmaXQgLiAnLycgLiAkYW5pbWF0aW9uIC4gJ18nIC4gJG1vdW50U3RhdGUgLiAnXzNfJyAuICRkaXJlY3Rpb24gLiAnLnBuZycpKSB7DQogICAgICAgICAgICAgICAgICAgICRpbWFnZV9zZWNvbmQgPSBpbWFnZWNyZWF0ZWZyb21wbmcoc2VsZjo6JG91dGZpdFBhdGggLiAkb3V0Zml0IC4gJy8nIC4gJGFuaW1hdGlvbiAuICdfJyAuICRtb3VudFN0YXRlIC4gJ18zXycgLiAkZGlyZWN0aW9uIC4gJy5wbmcnKTsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFscGhhT3ZlcmxheSgkaW1hZ2Vfb3V0Zml0LCAkaW1hZ2Vfc2Vjb25kLCA2NCwgNjQpOw0KICAgICAgICAgICAgICAgICAgICBpbWFnZWRlc3Ryb3koJGltYWdlX3NlY29uZCk7DQogICAgICAgICAgICAgICAgICAgIGlmIChzZWxmOjpmaWxlX2V4aXN0cyhzZWxmOjokb3V0Zml0UGF0aCAuICRvdXRmaXQgLiAnLycgLiAkYW5pbWF0aW9uIC4gJ18nIC4gJG1vdW50U3RhdGUgLiAnXzNfJyAuICRkaXJlY3Rpb24gLiAnX3RlbXBsYXRlLnBuZycpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkaW1hZ2Vfc2Vjb25kX3RlbXBsYXRlID0gaW1hZ2VjcmVhdGVmcm9tcG5nKHNlbGY6OiRvdXRmaXRQYXRoIC4gJG91dGZpdCAuICcvJyAuICRhbmltYXRpb24gLiAnXycgLiAkbW91bnRTdGF0ZSAuICdfM18nIC4gJGRpcmVjdGlvbiAuICdfdGVtcGxhdGUucG5nJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YWxwaGFPdmVybGF5KCRpbWFnZV90ZW1wbGF0ZSwgJGltYWdlX3NlY29uZF90ZW1wbGF0ZSwgNjQsIDY0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlZGVzdHJveSgkaW1hZ2Vfc2Vjb25kX3RlbXBsYXRlKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJHRoaXMtPmNvbG9yaXplKCRpbWFnZV90ZW1wbGF0ZSwgJGltYWdlX291dGZpdCwgJGhlYWQsICRib2R5LCAkbGVncywgJGZlZXQpOw0KICAgICAgICB9DQoNCgkJJG1vdW50QW5pbWF0aW9uRnJhbWUgPSAkYW5pbWF0aW9uOw0KCQl3aGlsZSAoJG1vdW50QW5pbWF0aW9uRnJhbWUgPiBzZWxmOjokZGF0YVsnbW91bnRGcmFtZXNOdW1iZXInXSkgew0KCQkJJG1vdW50QW5pbWF0aW9uRnJhbWUgLT0gc2VsZjo6JGRhdGFbJ21vdW50RnJhbWVzTnVtYmVyJ107DQoJCX0NCg0KCQlpZiAoJG1vdW50U3RhdGUgPT0gMiAmJiBzZWxmOjpmaWxlX2V4aXN0cyhzZWxmOjokb3V0Zml0UGF0aCAuICRtb3VudElkIC4gJy8nLiRtb3VudEFuaW1hdGlvbkZyYW1lLidfMV8xXycuJGRpcmVjdGlvbi4nLnBuZycpKSB7DQoJCQkkbW91bnQgPSBpbWFnZWNyZWF0ZWZyb21wbmcoc2VsZjo6JG91dGZpdFBhdGggLiAkbW91bnRJZCAuICcvJy4kbW91bnRBbmltYXRpb25GcmFtZS4nXzFfMV8nLiRkaXJlY3Rpb24uJy5wbmcnKTsNCgkJCSR0aGlzLT5hbHBoYU92ZXJsYXkoJG1vdW50LCAkaW1hZ2Vfb3V0Zml0LCA2NCwgNjQpOw0KICAgICAgICAgICAgaWYgKCRpbWFnZV9vdXRmaXQpIHsNCiAgICAgICAgICAgICAgICBpbWFnZWRlc3Ryb3koJGltYWdlX291dGZpdCk7DQogICAgICAgICAgICB9DQoJCQkkaW1hZ2Vfb3V0Zml0ID0gJG1vdW50Ow0KCQl9DQoNCgkJJHdpZHRoID0gaW1hZ2VzeCgkaW1hZ2Vfb3V0Zml0KTsNCgkJJGhlaWdodCA9IGltYWdlc3koJGltYWdlX291dGZpdCk7DQoJCWlmIChzZWxmOjokcmVzaXplQWxsT3V0Zml0c1RvNjRweCkgew0KCQkJJGltYWdlX291dGZpdFQgPSBpbWFnZWNyZWF0ZXRydWVjb2xvcig2NCwgNjQpOw0KCQl9IGVsc2Ugew0KCQkJJGltYWdlX291dGZpdFQgPSBpbWFnZWNyZWF0ZXRydWVjb2xvcigkd2lkdGgsICRoZWlnaHQpOw0KCQl9DQoJCWltYWdlZmlsbCgkaW1hZ2Vfb3V0Zml0VCwgMCwgMCwgJGJnY29sb3IgPSBpbWFnZWNvbG9yYWxsb2NhdGUoJGltYWdlX291dGZpdFQsIHNlbGY6OiR0cmFuc3BhcmVudEJhY2tncm91bmRDb2xvclswXSwgc2VsZjo6JHRyYW5zcGFyZW50QmFja2dyb3VuZENvbG9yWzFdLCBzZWxmOjokdHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3JbMl0pKTsNCg0KCQlpbWFnZWNvcHlyZXNhbXBsZWQoJGltYWdlX291dGZpdFQsICRpbWFnZV9vdXRmaXQsIGltYWdlc3goJGltYWdlX291dGZpdFQpLSR3aWR0aCwgaW1hZ2VzeSgkaW1hZ2Vfb3V0Zml0VCktJGhlaWdodCwgMCwgMCwgJHdpZHRoLCAkaGVpZ2h0LCAkd2lkdGgsICRoZWlnaHQpOw0KDQoJCWltYWdlY29sb3J0cmFuc3BhcmVudCgkaW1hZ2Vfb3V0Zml0VCwgJGJnY29sb3IpOw0KDQoJCWltYWdlYWxwaGFibGVuZGluZygkaW1hZ2Vfb3V0Zml0VCwgZmFsc2UpOw0KCQlpbWFnZXNhdmVhbHBoYSgkaW1hZ2Vfb3V0Zml0VCwgdHJ1ZSk7DQoJCWltYWdlZGVzdHJveSgkaW1hZ2Vfb3V0Zml0KTsNCgkJaWYgKGlzc2V0KCRpbWFnZV90ZW1wbGF0ZSkgJiYgJGltYWdlX3RlbXBsYXRlKSB7DQoJCQlpbWFnZWRlc3Ryb3koJGltYWdlX3RlbXBsYXRlKTsNCgkJfQ0KCQlyZXR1cm4gJGltYWdlX291dGZpdFQ7DQoJfQ0KDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbG9yaXplUGl4ZWwoJF9jb2xvciwgJiRfciwgJiRfZywgJiRfYikgew0KCQlpZiAoJF9jb2xvciA8IGNvdW50KHNlbGY6OiRvdXRmaXRDb2xvcnMpKQ0KCQkJJHZhbHVlID0gc2VsZjo6JG91dGZpdENvbG9yc1skX2NvbG9yXTsNCgkJZWxzZQ0KCQkJJHZhbHVlID0gMDsNCgkJJHJvID0gKCR2YWx1ZSAmIDB4RkYwMDAwKSA+PiAxNjsgLy8gcmdiIG91dGZpdA0KCQkkZ28gPSAoJHZhbHVlICYgMHhGRjAwKSA+PiA4Ow0KCQkkYm8gPSAoJHZhbHVlICYgMHhGRik7DQoJCSRfciA9IChpbnQpICgkX3IgKiAoJHJvIC8gMjU1KSk7DQoJCSRfZyA9IChpbnQpICgkX2cgKiAoJGdvIC8gMjU1KSk7DQoJCSRfYiA9IChpbnQpICgkX2IgKiAoJGJvIC8gMjU1KSk7DQoJfQ0KDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbG9yaXplKCYkX2ltYWdlX3RlbXBsYXRlLCAmJF9pbWFnZV9vdXRmaXQsICRfaGVhZCwgJF9ib2R5LCAkX2xlZ3MsICRfZmVldCkgew0KICAgICAgICBpZiAoISRfaW1hZ2VfdGVtcGxhdGUpIHsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQoJCWZvciAoJGkgPSAwOyAkaSA8IGltYWdlc3koJF9pbWFnZV90ZW1wbGF0ZSk7ICRpKyspIHsNCgkJCWZvciAoJGogPSAwOyAkaiA8IGltYWdlc3goJF9pbWFnZV90ZW1wbGF0ZSk7ICRqKyspIHsNCgkJCQkkdGVtcGxhdGVwaXhlbCA9IGltYWdlY29sb3JhdCgkX2ltYWdlX3RlbXBsYXRlLCAkaiwgJGkpOw0KCQkJCSRvdXRmaXQgPSBpbWFnZWNvbG9yYXQoJF9pbWFnZV9vdXRmaXQsICRqLCAkaSk7DQoNCgkJCQlpZiAoJHRlbXBsYXRlcGl4ZWwgPT0gJG91dGZpdCkNCgkJCQkJY29udGludWU7DQoNCgkJCQkkcnQgPSAoJHRlbXBsYXRlcGl4ZWwgPj4gMTYpICYgMHhGRjsNCgkJCQkkZ3QgPSAoJHRlbXBsYXRlcGl4ZWwgPj4gOCkgJiAweEZGOw0KCQkJCSRidCA9ICR0ZW1wbGF0ZXBpeGVsICYgMHhGRjsNCgkJCQkkcm8gPSAoJG91dGZpdCA+PiAxNikgJiAweEZGOw0KCQkJCSRnbyA9ICgkb3V0Zml0ID4+IDgpICYgMHhGRjsNCgkJCQkkYm8gPSAkb3V0Zml0ICYgMHhGRjsNCg0KCQkJCWlmICgkcnQgJiYgJGd0ICYmICEkYnQpIHsgLy8geWVsbG93ID09IGhlYWQNCgkJCQkJJHRoaXMtPmNvbG9yaXplUGl4ZWwoJF9oZWFkLCAkcm8sICRnbywgJGJvKTsNCgkJCQl9IGVsc2UgaWYgKCRydCAmJiAhJGd0ICYmICEkYnQpIHsgLy8gcmVkID09IGJvZHkNCgkJCQkJJHRoaXMtPmNvbG9yaXplUGl4ZWwoJF9ib2R5LCAkcm8sICRnbywgJGJvKTsNCgkJCQl9IGVsc2UgaWYgKCEkcnQgJiYgJGd0ICYmICEkYnQpIHsgLy8gZ3JlZW4gPT0gbGVncw0KCQkJCQkkdGhpcy0+Y29sb3JpemVQaXhlbCgkX2xlZ3MsICRybywgJGdvLCAkYm8pOw0KCQkJCX0gZWxzZSBpZiAoISRydCAmJiAhJGd0ICYmICRidCkgeyAvLyBibHVlID09IGZlZXQNCgkJCQkJJHRoaXMtPmNvbG9yaXplUGl4ZWwoJF9mZWV0LCAkcm8sICRnbywgJGJvKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQljb250aW51ZTsgLy8gaWYgbm90aGluZyBjaGFuZ2VkLCBza2lwIHRoZSBjaGFuZ2Ugb2YgcGl4ZWwNCgkJCQl9DQoNCgkJCQlpbWFnZXNldHBpeGVsKCRfaW1hZ2Vfb3V0Zml0LCAkaiwgJGksIGltYWdlY29sb3JhbGxvY2F0ZSgkX2ltYWdlX291dGZpdCwgJHJvLCAkZ28sICRibykpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGFscGhhT3ZlcmxheSgmJGRlc3RJbWcsICYkb3ZlcmxheUltZywgJGltZ1csICRpbWdIKSB7DQogICAgICAgIGlmICghJG92ZXJsYXlJbWcpIHsNCiAgICAgICAgICAgIHJldHVybiAkZGVzdEltZzsNCiAgICAgICAgfQ0KDQoJCWZvciAoJHkgPSAwOyAkeSA8ICRpbWdIOyAkeSsrKSB7DQoJCQlmb3IgKCR4ID0gMDsgJHggPCAkaW1nVzsgJHgrKykgew0KCQkJCSRvdnJBUkdCID0gaW1hZ2Vjb2xvcmF0KCRvdmVybGF5SW1nLCAkeCwgJHkpOw0KCQkJCSRvdnJBID0gKCRvdnJBUkdCID4+IDI0KSA8PCAxOw0KCQkJCSRvdnJSID0gJG92ckFSR0IgPj4gMTYgJiAweEZGOw0KCQkJCSRvdnJHID0gJG92ckFSR0IgPj4gOCAmIDB4RkY7DQoJCQkJJG92ckIgPSAkb3ZyQVJHQiAmIDB4RkY7DQoNCgkJCQkkY2hhbmdlID0gZmFsc2U7DQoJCQkJaWYgKCRvdnJBID09IDApIHsNCgkJCQkJJGRzdFIgPSAkb3ZyUjsNCgkJCQkJJGRzdEcgPSAkb3ZyRzsNCgkJCQkJJGRzdEIgPSAkb3ZyQjsNCgkJCQkJJGNoYW5nZSA9IHRydWU7DQoJCQkJfSBlbHNlaWYgKCRvdnJBIDwgMjU0KSB7DQoJCQkJCSRkc3RBUkdCID0gaW1hZ2Vjb2xvcmF0KCRkZXN0SW1nLCAkeCwgJHkpOw0KCQkJCQkkZHN0UiA9ICRkc3RBUkdCID4+IDE2ICYgMHhGRjsNCgkJCQkJJGRzdEcgPSAkZHN0QVJHQiA+PiA4ICYgMHhGRjsNCgkJCQkJJGRzdEIgPSAkZHN0QVJHQiAmIDB4RkY7DQoNCgkJCQkJJGRzdFIgPSAoKCRvdnJSICogKDB4RkYgLSAkb3ZyQSkpID4+IDgpICsgKCgkZHN0UiAqICRvdnJBKSA+PiA4KTsNCgkJCQkJJGRzdEcgPSAoKCRvdnJHICogKDB4RkYgLSAkb3ZyQSkpID4+IDgpICsgKCgkZHN0RyAqICRvdnJBKSA+PiA4KTsNCgkJCQkJJGRzdEIgPSAoKCRvdnJCICogKDB4RkYgLSAkb3ZyQSkpID4+IDgpICsgKCgkZHN0QiAqICRvdnJBKSA+PiA4KTsNCgkJCQkJJGNoYW5nZSA9IHRydWU7DQoJCQkJfQ0KCQkJCWlmICgkY2hhbmdlKSB7DQoJCQkJCSRkc3RSR0IgPSBpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYSgkZGVzdEltZywgJGRzdFIsICRkc3RHLCAkZHN0QiwgMCk7DQoJCQkJCWltYWdlc2V0cGl4ZWwoJGRlc3RJbWcsICR4LCAkeSwgJGRzdFJHQik7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCXJldHVybiAkZGVzdEltZzsNCgl9DQp9",
"abuse_warning.png": "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHNUlEQVR4nO1aa0gUXRh+VlPJtFJTK6y8ddEiyLRar7URlCRURiCWEEFE2YWUkOyKEYT2I6W0+48uGCVGBIWk4nYzLYlUFLppWomUt+6mvd+P9xvGaXbH2f1Wp+\/79oFhds57zpn3PHvmnPc85+iIiPA\/hoPWDmgNOwFaO6A17ARo7YDWUEdATQ2wdi0weTLg4gKMHg2EhwP79wPt7WK+xkZApzN\/VVYCGRnKeYSrsHCImiyFbtBpsKAASE0FgoOBdev4\/uMHUF0NXLoETJvGDQOYgJAQYMMGYOlSeV0GA\/DuHecTUFrK7zhyBAgMFNMXLAD8\/GzQxEFASqisJHJ0JFq1iqi3V27v6iLKyRGfGxqIAKK8PMVqJTh9mstUV6svY0MofwLZ2YCzM3DqFODkJLePGQOkpQ3RXzM8GKFoLS0FoqIALy\/Lav32DejqkqbpdEzYHwbzPeDLF26Ev7\/c9vmz9Pp9GNm1C\/DwkF6+vrb13EYw3wPMjY3fvwPu7tK0lhbpgLVtG7BypTSPw58545onwM0NGDsWaG6Wpru4AHfv8u\/CQuD4cXnZqVOBhQtt5+UQQnkMMBiAW7eAjg7A05PTdDogOpp\/C9PfvxjK\/TI9nef8jRuBnz+HyaXhhXIP0OuBY8eA7duB2bOlgdCLF8CFCxwVjhwpLff0KXDtmry+efM4mvyToCpaqKoiSkoi8vMjcnIicncnmjuXaN8+orY2MZ8QCJm7LlyQ161xIDR4KPwfx585Nw0j7ARo7YDWsBOgtQNaw06AqlwVFUBCAjBuHK8FAgN5wdPWJs03cyYQGysvv3Urh9C5uXLbhAnAihX8e6Ck9vChPG9wMLB6tSqX1WJwAnJzgUWLWPvLygIuXwZSUlgOmzMHaGgQ88bGAlVVHCkOhNEIuLryfSCeP2cSTZG2Z48VzbECimFSZSWRgwNLYn19UturV0QeHkQzZ4q2y5c5qquoEPN1dnId27cT+fhI6zhzhvM\/fszPQiS5ZAnfy8qk+YOCiBITLY72lKBMwOrVRC4uRO3tpu2HDrGj16\/z89u3\/JyVJea5cYPI1ZXo9Wu2NTSItpQUDqsFAgUCzp4lmjWLKDJS+r4hIED5Eygt5aWvt7dp+5o1fC8r4\/vEiUBQkLSrG42s8Pr78\/W7LSoKcHSU1uvgABw8CDx4wMvxIYSyJNbZCQQEmC89ZQo729IipsXG8gDW18fPRiMQE8O\/Y2JEAlpbgaYmIC7OdN2rVgFhYcDevepbYwXME2DtGikujnXCmhomsaZGJCA6WiSgooLvpgZAAVlZwJMnQHGxdb6ogHkCBEns9WvzpZubgV+\/gEmTxDShQUYjd2GAPwGAiWhp4X\/eaGQdITzcfP3x8UBkJLBvH79nCKA8BixeDNy7B3z4YNp+9SrfDQYxLSCACTEa+QoLA0aNYltICMcSgk2v530HJWRlAXV1wJUrKptkGZQJSEtjKWzzZvk\/0NwMHD0KhIYCy5dLbbGxTFxFhdj9BURFAUVFHPQodX8BBgPHIQcOAP39g+e3FIPOE0eP8tQ0fz5RQQFRURHRwYNEXl5Evr5EtbXyMidPchmdTpwiBeTkcLqpeV6YBs+fl6bfvy+qSsMaBwgoKyOKjyfy9CRydiby9ydKTSV69850\/sZGkYAPH6S2R4\/Y5uxM9PWr1GaOACKiZcuGhAC7JKa1A1rDToDWDmgNOwFaO6A17AQoWgsKWJ6qq5Pb2trYduiQ3KZWQgN453nXLmDGDFaNvL15DzE9nc8i3L6t7lTZpk1cX1cXP6tUlJQ3R61Bbi6wYwcQEcFxvI8PUFsL5OXx2qGsjNcEAEtn0dG8NN6yhSW2nh7g2TPeeM3I4DRhzQEwiVu3siyXkCCmBwVZ569imJSfz9GXqXD3\/Xu5+mOphFZczHVcvCiv\/+dPov5+efrz51wmO9u0z52dbM\/MVGyaANuOATk5fJqsoECu8gQE8OKqvh64eZPThINUpv69ESOG5ViNujd8+sTODrx6euT5LJXQ5s3jRu7YAZSXA729VjThn0EdAZGR8lNf06dL81gjoYWGAvn53CsMBj5sERkJHD4MdHdb1yJBXxhMZ\/gb6gbBc+fkDevoABITxWdr11QbNwJJSUBJCYsk5eVAZiYTU1XFGyeWwNWVP7\/Ro1VlV0dARAQwa5Y07fcpzVoJDeBjd4mJIqGXLvHh7MOHefawFH5+PAWrgG1HGWskNFNITubps77eOj+amphAFbAtAZZKaK2tPMD+jtZW4ONHYPx4m7pnCrYNhPR6PmCdlga8eQOsX88zQl0dB0hOTixuClPknTt8Ai05mZVjNzfg5UvgxAkeLFNTLfehu5vPNmdm8ubKILB9JLhzJ0dvOTnA7t28RzBxIg90u3dLB7XFi5mAkhI+ViccyNTreRNWr7f8\/UQsnqoUUO2SmNYOaA07AVo7oDXsBGjtgNawE6C1A1rjL0YmFdDSaDn+AAAAAElFTkSuQmCC",
"animoutfit.php": "PD9waHANCg0KcmVxdWlyZV9vbmNlKCcuL2NvbmZpZy5waHAnKTsNCg0KaWYgKCFmaWxlX2V4aXN0cygnLi9jYWNoZS5nZW5lcmF0ZWQudHh0JykpIHsNCiAgICByZXF1aXJlX29uY2UoJy4vY2FjaGVHZW5lcmF0b3IucGhwJyk7DQogICAgZXhpdDsNCn0NCg0KaGVhZGVyKCdDYWNoZS1jb250cm9sOiBtYXgtYWdlPScgLiAoNjAgKiA2MCAqIDI0ICogMzY1KSk7DQpoZWFkZXIoJ0V4cGlyZXM6ICcgLiBnbWRhdGUoREFURV9SRkMxMTIzLCB0aW1lKCkgKyA2MCAqIDYwICogMjQgKiAzNjUpKTsNCmhlYWRlcignTGFzdC1Nb2RpZmllZDogJyAuIGdtZGF0ZSgnRCwgZCBNIFkgSDppOnMnLCAxMzM3KSAuICcgR01UJyk7DQppZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSUZfTU9ESUZJRURfU0lOQ0UnXSkpIHsNCiAgICBoZWFkZXIoJ0hUVFAvMS4wIDMwNCBOb3QgTW9kaWZpZWQnKTsNCiAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IHB1YmxpYycpOw0KICAgIGhlYWRlcignUHJhZ21hOiBjYWNoZScpOw0KICAgIGV4aXQ7DQp9DQoNCi8vIEJsb2NrIHNpdGVzIHRoYXQgaG90bGluayB5b3VyIGhvc3QgYW5kIG92ZXJsb2FkIGl0DQokYWJ1c2Vyc0xpc3QgPSBhcnJheSgnYXVyZXJhLWdsb2JhbC5jb20nLCAnYmFkLXNlcnZlci5jb20nKTsNCmlmIChpc3NldCgkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pICYmIChpbl9hcnJheShwYXJzZV91cmwoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddLCBQSFBfVVJMX0hPU1QpLCAkYWJ1c2Vyc0xpc3QpIHx8DQogICAgICAgIGluX2FycmF5KHN1YnN0cihwYXJzZV91cmwoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddLCBQSFBfVVJMX0hPU1QpLCA0KSwgJGFidXNlcnNMaXN0KSkNCikgew0KICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBpbWFnZS9wbmcnKTsNCiAgICByZWFkZmlsZSgnYWJ1c2Vfd2FybmluZy5wbmcnKTsNCiAgICBleGl0Ow0KfQ0KDQpyZXF1aXJlKCdsaWJzL291dGZpdHRlci5waHAnKTsNCnJlcXVpcmUoJ2xpYnMvZ2lmQ3JlYXRvci5waHAnKTsNCg0KT3V0Zml0dGVyOjokb3V0Zml0UGF0aCA9ICRvdXRmaXRJbWFnZXNQYXRoOw0KT3V0Zml0dGVyOjpzZXRSZXNpemVBbGxPdXRmaXRzVG82NHB4KCRyZXNpemVBbGxPdXRmaXRzVG82NHB4KTsNCg0KJGlkID0gMDsNCmlmIChpc3NldCgkX0dFVFsnaWQnXSkpIHsNCiAgICAkaWQgPSAoaW50KSRfR0VUWydpZCddOw0KfQ0KaWYgKCFPdXRmaXR0ZXI6OmxvYWREYXRhKCRpZCwgZmFsc2UpKSB7DQogICAgZXhpdCgnT3V0Zml0IGRvZXMgbm90IGV4aXN0IG9yIGZpbGUgY2FjaGUgaXMgbm90IGdlbmVyYXRlZC4nKTsNCn0NCg0KJG1vdW50ID0gMDsNCmlmIChpc3NldCgkX0dFVFsnbW91bnQnXSkpIHsNCiAgICAkbW91bnQgPSAoaW50KSRfR0VUWydtb3VudCddOw0KfQ0KaWYgKCRtb3VudCA+IDAgJiYgIU91dGZpdHRlcjo6bG9hZERhdGEoJG1vdW50LCB0cnVlKSkgew0KICAgIGV4aXQoJ01vdW50IG91dGZpdCBkb2VzIG5vdCBleGlzdCBvciBmaWxlIGNhY2hlIGlzIG5vdCBnZW5lcmF0ZWQuJyk7DQp9DQoNCiRoZWFkID0gMDsNCmlmIChpc3NldCgkX0dFVFsnaGVhZCddKSkgew0KICAgICRoZWFkID0gKGludCkkX0dFVFsnaGVhZCddOw0KfQ0KJGJvZHkgPSAwOw0KaWYgKGlzc2V0KCRfR0VUWydib2R5J10pKSB7DQogICAgJGJvZHkgPSAoaW50KSRfR0VUWydib2R5J107DQp9DQokbGVncyA9IDA7DQppZiAoaXNzZXQoJF9HRVRbJ2xlZ3MnXSkpIHsNCiAgICAkbGVncyA9IChpbnQpJF9HRVRbJ2xlZ3MnXTsNCn0NCiRmZWV0ID0gMDsNCmlmIChpc3NldCgkX0dFVFsnZmVldCddKSkgew0KICAgICRmZWV0ID0gKGludCkkX0dFVFsnZmVldCddOw0KfQ0KJGFkZG9ucyA9IDA7DQppZiAoaXNzZXQoJF9HRVRbJ2FkZG9ucyddKSkgew0KICAgICRhZGRvbnMgPSAoaW50KSRfR0VUWydhZGRvbnMnXTsNCn0NCiRkaXJlY3Rpb24gPSAzOw0KaWYgKGlzc2V0KCRfR0VUWydkaXJlY3Rpb24nXSkpIHsNCiAgICAkZGlyZWN0aW9uID0gKGludCkkX0dFVFsnZGlyZWN0aW9uJ107DQp9DQoNCiRmcmFtZXMgPSBbXTsNCiRkdXJhdGlvbnMgPSBbXTsNCg0KJG1vdmVBbmltRnJhbWVzID0gT3V0Zml0dGVyOjpnZXRPdXRmaXRGcmFtZXNOdW1iZXIoKTsNCg0KLy8gcm90YXRlIHBsYXllciwgQklHIElNQUdFUywgMjAtODAgS0IgcGVyIG91dGZpdCENCi8vZm9yKCRkaXJlY3Rpb24gPSAxOyAkZGlyZWN0aW9uIDw9IDQ7ICRkaXJlY3Rpb24rKykgDQpmb3IgKCRtb3ZlQW5pbUZyYW1lID0gMTsgJG1vdmVBbmltRnJhbWUgPD0gJG1vdmVBbmltRnJhbWVzOyArKyRtb3ZlQW5pbUZyYW1lKSB7DQogICAgJGZyYW1lc1tdID0gT3V0Zml0dGVyOjppbnN0YW5jZSgpLT5vdXRmaXQoDQogICAgICAgICRpZCwNCiAgICAgICAgJGFkZG9ucywNCiAgICAgICAgJGhlYWQsDQogICAgICAgICRib2R5LA0KICAgICAgICAkbGVncywNCiAgICAgICAgJGZlZXQsDQogICAgICAgICRtb3VudCwNCiAgICAgICAgJGRpcmVjdGlvbiwNCiAgICAgICAgJG1vdmVBbmltRnJhbWUNCiAgICApOw0KICAgICRkdXJhdGlvbnNbXSA9ICR3YWxrU3BlZWRzWyRtb3ZlQW5pbUZyYW1lc107DQp9DQokZ2MgPSBuZXcgR2lmQ3JlYXRvcigpOw0KJGdjLT5jcmVhdGUoJGZyYW1lcywgJGR1cmF0aW9ucywgMCk7DQokZ2lmQmluYXJ5ID0gJGdjLT5nZXRHaWYoKTsNCg0KaGVhZGVyKCdDb250ZW50LXR5cGU6IGltYWdlL2dpZicpOw0KZWNobyAkZ2lmQmluYXJ5Ow0K",
"cacheGenerator.php": "PD9waHANCg0KcmVxdWlyZV9vbmNlKCcuL2NvbmZpZy5waHAnKTsNCg0KJGRpckl0ZXJhdG9yID0gbmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCRvdXRmaXRJbWFnZXNQYXRoLCBGaWxlc3lzdGVtSXRlcmF0b3I6OlVOSVhfUEFUSFMpOw0KJGl0ZXJhdG9yID0gbmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IoJGRpckl0ZXJhdG9yLCBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yOjpTRUxGX0ZJUlNUKTsNCg0KJG91dGZpdHMgPSBbXTsNCiRpID0gMDsNCmZvcmVhY2ggKCRpdGVyYXRvciBhcyAkZmlsZSkNCnsNCglpZiAoJGZpbGUtPmlzRmlsZSgpKQ0KCXsNCiAgICAgICAgJGZpbGVQYXRoID0gdHJpbSgkZmlsZS0+Z2V0UGF0aCgpLCAnLicpOw0KICAgICAgICAkZmlsZVBhdGggPSB0cmltKCRmaWxlUGF0aCwgJy8nKTsNCgkJJG91dGZpdElkRGF0YSA9IGV4cGxvZGUoJy8nLCAkZmlsZVBhdGgpOw0KCQkkb3V0Zml0SWQgPSAkb3V0Zml0SWREYXRhWzFdOw0KCQkkb3V0Zml0c1skb3V0Zml0SWRdWydmaWxlcyddW10gPSAkZmlsZVBhdGggLiAnLycgLiAkZmlsZS0+Z2V0RmlsZW5hbWUoKTsNCgkJaWYoaXNzZXQoJG91dGZpdHNbJG91dGZpdElkXVsnZnJhbWVzTnVtYmVyJ10pKQ0KCQkJJG91dGZpdHNbJG91dGZpdElkXVsnZnJhbWVzTnVtYmVyJ10gPSBtYXgoJG91dGZpdHNbJG91dGZpdElkXVsnZnJhbWVzTnVtYmVyJ10sIChpbnQpIHN1YnN0cigkZmlsZS0+Z2V0RmlsZW5hbWUoKSwgMCwgMSkpOw0KCQllbHNlDQoJCQkkb3V0Zml0c1skb3V0Zml0SWRdWydmcmFtZXNOdW1iZXInXSA9IChpbnQpIHN1YnN0cigkZmlsZS0+Z2V0RmlsZW5hbWUoKSwgMCwgMSk7DQogICAgfQ0KfQ0KDQovLyBDT0RFIFRPIENIRUNLIFdIQVQgVkFMVUVTIE9GICdmcmFtZXNOdW1iZXInIEFSRSBQT1NTSUJMRSBGT1IgWU9VUiBPVVRGSVRTDQokZnJhbWVOdW1iZXJzID0gWzAsMCwwLDAsMCwwLDAsMCwwLDBdOw0KZm9yZWFjaCgkb3V0Zml0cyBhcyAkb3V0Zml0SWQgPT4gJG91dGZpdCkNCnsNCglpZiAoIWZpbGVfcHV0X2NvbnRlbnRzKCRvdXRmaXRJbWFnZXNQYXRoIC4gJy8nIC4gJG91dGZpdElkIC4gJy9vdXRmaXQuZGF0YS50eHQnLCBzZXJpYWxpemUoJG91dGZpdCkpKSB7DQoJICAgIGV4aXQoJ1BIUCBjYW5ub3Qgd3JpdGUgdG86ICInIC4gJG91dGZpdEltYWdlc1BhdGggLiAnLycgLiAkb3V0Zml0SWQgLiAnL291dGZpdC5kYXRhLnR4dCIsIGNoZWNrIGRpcmVjdG9yeSBhY2Nlc3MgcmlnaHRzJyk7DQogICAgfQ0KCSRmcmFtZU51bWJlcnNbJG91dGZpdFsnZnJhbWVzTnVtYmVyJ11dKys7DQp9DQoNCmlmICghZmlsZV9wdXRfY29udGVudHMoJy4vY2FjaGUuZ2VuZXJhdGVkLnR4dCcsICdjYWNoZSBnZW5lcmF0ZWQnKSkgew0KICAgIGV4aXQoJ1BIUCBjYW5ub3Qgd3JpdGUgdG86ICIuL2NhY2hlLmdlbmVyYXRlZC50eHQiLCBjaGVjayBkaXJlY3RvcnkgYWNjZXNzIHJpZ2h0cycpOw0KfQ0KZWNobyAnRklMRSBTWVNURU0gQ0FDSEUgR0VORVJBVEVEPGJyIC8+QW5pbWF0aW9uIGZyYW1lcyBjb3VudCBpbiBsb2FkZWQgb3V0Zml0czonOw0KdmFyX2R1bXAoJGZyYW1lTnVtYmVycyk7DQo=",
"config.php": "PD9waHANCg0KJG91dGZpdEltYWdlc1BhdGggPSAnLi9vdXRmaXRzX2FuaW0vJzsNCi8vIHJlc2l6ZSBhbGwgb3V0Zml0cyB0byA2NHg2NCBwaXhlbHMsIHBsYWNlIHNtYWxsZXIgb3V0Zml0cyBpbiBib3R0b20tcmlnaHQgY29ybmVyDQokcmVzaXplQWxsT3V0Zml0c1RvNjRweCA9IGZhbHNlOw0KDQovLyBhbmltYXRpb24gc3BlZWRzOiBudW1iZXIgb2YgYW5pbWF0aW9uIGZyYW1lcyA9PiB0aW1lIGluIDAuMDEgb2Ygc2Vjb25kDQokd2Fsa1NwZWVkcyA9IFsNCiAgICAxID0+IDUwLA0KICAgIDIgPT4gMzUsDQogICAgMyA9PiAzMCwNCiAgICA0ID0+IDE1LA0KICAgIDUgPT4gMTUsDQogICAgNiA9PiAxNSwNCiAgICA3ID0+IDE1LA0KICAgIDggPT4gMTAsDQogICAgOSA9PiA4DQpdOw0KDQovKg0Kc29tZSBzZXJ2ZXIgY29uZmlndXJhdGlvbnMgbWF5IHByaW50IHdhcm5pbmdzIGZyb20gZ3JhcGhpY3MgbGlicmFyeQ0KdGhlc2Ugd2FybmluZ3MgYXJlIGludGVycHJldGVkIGFzIHBhcnQgb2YgaW1hZ2UgYW5kIG1ha2UgaW1hZ2UgdW5yZWFkYWJsZSBmb3Igd2ViIGJyb3dzZXJzDQppZiB5b3UgZ2V0IGJsYWNrL2VtcHR5IGltYWdlLCB5b3UgY2FuIHRyeSB0byB1bmNvbW1lbnQgbGluZSBiZWxvdyB0byBkaXNhYmxlIGFsbCB3YXJuaW5ncw0KKi8NCi8vIGVycm9yX3JlcG9ydGluZygwKTs=",
"index.php": "PGh0bWwgbGFuZz0iZW4iPg0KPGhlYWQ+DQogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KICAgIDx0aXRsZT5UaWJpYSBPdXRmaXQgSW1hZ2VzIEdlbmVyYXRvciAwLjEuMjwvdGl0bGU+DQo8L2hlYWQ+DQo8Ym9keT4NCgk8c3BhbiBzdHlsZT0iZm9udC1zaXplOjIwcHgiPg0KICAgICAgICBUaGlzIGlzIGluZGV4IGZpbGUuPGJyLz4NCiAgICAgICAgT3BlbiA8Yj5hbmltb3V0Zml0LnBocDwvYj4gd2l0aCB2YWxpZCBwYXJhbWV0ZXJzIHRvIGdlbmVyYXRlIGFuaW1hdGVkIG91dGZpdCBpbWFnZS4gRm9yIGV4YW1wbGU6PGJyLz4NCiAgICAgICAgPGEgaHJlZj0iYW5pbW91dGZpdC5waHA\/aWQ9MTI4JmFkZG9ucz0zJmhlYWQ9MTIzJmJvZHk9MTImbGVncz0yMyZmZWV0PTMxJm1vdW50PTAmZGlyZWN0aW9uPTIiPg0KICAgICAgICAgICAgYW5pbW91dGZpdC5waHA\/aWQ9MTI4JmFkZG9ucz0zJmhlYWQ9MTIzJmJvZHk9MTImbGVncz0yMyZmZWV0PTMxJm1vdW50PTAmZGlyZWN0aW9uPTINCiAgICAgICAgPC9hPjxici8+DQogICAgICAgIDxici8+DQogICAgICAgIE9wZW4gPGI+b3V0Zml0LnBocDwvYj4gd2l0aCB2YWxpZCBwYXJhbWV0ZXJzIHRvIGdlbmVyYXRlIHN0YXRpYyBvdXRmaXQgaW1hZ2UuIEZvciBleGFtcGxlOjxici8+DQogICAgICAgIDxhIGhyZWY9Im91dGZpdC5waHA\/aWQ9MTI4JmFkZG9ucz0zJmhlYWQ9MTIzJmJvZHk9MTImbGVncz0yMyZmZWV0PTMxJm1vdW50PTAmZGlyZWN0aW9uPTIiPg0KICAgICAgICAgICAgb3V0Zml0LnBocD9pZD0xMjgmYWRkb25zPTMmaGVhZD0xMjMmYm9keT0xMiZsZWdzPTIzJmZlZXQ9MzEmbW91bnQ9MCZkaXJlY3Rpb249Mg0KICAgICAgICA8L2E+PGJyLz4NCiAgICA8L3NwYW4+DQo8L2JvZHk+DQo8L2hlYWQ+DQo8L2h0bWw+DQo=",
"outfit.php": "PD9waHANCg0KcmVxdWlyZV9vbmNlKCcuL2NvbmZpZy5waHAnKTsNCg0KaWYgKCFmaWxlX2V4aXN0cygnLi9jYWNoZS5nZW5lcmF0ZWQudHh0JykpIHsNCiAgICByZXF1aXJlX29uY2UoJy4vY2FjaGVHZW5lcmF0b3IucGhwJyk7DQogICAgZXhpdDsNCn0NCg0KaGVhZGVyKCdDYWNoZS1jb250cm9sOiBtYXgtYWdlPScgLiAoNjAgKiA2MCAqIDI0ICogMzY1KSk7DQpoZWFkZXIoJ0V4cGlyZXM6ICcgLiBnbWRhdGUoREFURV9SRkMxMTIzLCB0aW1lKCkgKyA2MCAqIDYwICogMjQgKiAzNjUpKTsNCmhlYWRlcignTGFzdC1Nb2RpZmllZDogJyAuIGdtZGF0ZSgnRCwgZCBNIFkgSDppOnMnLCAxMzM3KSAuICcgR01UJyk7DQppZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSUZfTU9ESUZJRURfU0lOQ0UnXSkpIHsNCiAgICBoZWFkZXIoJ0hUVFAvMS4wIDMwNCBOb3QgTW9kaWZpZWQnKTsNCiAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IHB1YmxpYycpOw0KICAgIGhlYWRlcignUHJhZ21hOiBjYWNoZScpOw0KICAgIGV4aXQ7DQp9DQoNCi8vIEJsb2NrIHNpdGVzIHRoYXQgaG90bGluayB5b3VyIGhvc3QgYW5kIG92ZXJsb2FkIGl0DQokYWJ1c2Vyc0xpc3QgPSBhcnJheSgnYXVyZXJhLWdsb2JhbC5jb20nLCAnYmFkLXNlcnZlci5jb20nKTsNCmlmIChpc3NldCgkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pICYmIChpbl9hcnJheShwYXJzZV91cmwoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddLCBQSFBfVVJMX0hPU1QpLCAkYWJ1c2Vyc0xpc3QpIHx8DQogICAgICAgIGluX2FycmF5KHN1YnN0cihwYXJzZV91cmwoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddLCBQSFBfVVJMX0hPU1QpLCA0KSwgJGFidXNlcnNMaXN0KSkNCikgew0KICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBpbWFnZS9wbmcnKTsNCiAgICByZWFkZmlsZSgnYWJ1c2Vfd2FybmluZy5wbmcnKTsNCiAgICBleGl0Ow0KfQ0KDQpyZXF1aXJlKCdsaWJzL291dGZpdHRlci5waHAnKTsNCk91dGZpdHRlcjo6JG91dGZpdFBhdGggPSAkb3V0Zml0SW1hZ2VzUGF0aDsNCk91dGZpdHRlcjo6c2V0UmVzaXplQWxsT3V0Zml0c1RvNjRweCgkcmVzaXplQWxsT3V0Zml0c1RvNjRweCk7DQoNCiRpZCA9IDA7DQppZiAoaXNzZXQoJF9HRVRbJ2lkJ10pKSB7DQogICAgJGlkID0gKGludCkkX0dFVFsnaWQnXTsNCn0NCmlmICghT3V0Zml0dGVyOjpsb2FkRGF0YSgkaWQsIGZhbHNlKSkgew0KICAgIGV4aXQoJ091dGZpdCBkb2VzIG5vdCBleGlzdCBvciBmaWxlIGNhY2hlIGlzIG5vdCBnZW5lcmF0ZWQuJyk7DQp9DQoNCiRtb3VudCA9IDA7DQppZiAoaXNzZXQoJF9HRVRbJ21vdW50J10pKSB7DQogICAgJG1vdW50ID0gKGludCkkX0dFVFsnbW91bnQnXTsNCn0NCmlmICgkbW91bnQgPiAwICYmICFPdXRmaXR0ZXI6OmxvYWREYXRhKCRtb3VudCwgdHJ1ZSkpIHsNCiAgICBleGl0KCdNb3VudCBvdXRmaXQgZG9lcyBub3QgZXhpc3Qgb3IgZmlsZSBjYWNoZSBpcyBub3QgZ2VuZXJhdGVkLicpOw0KfQ0KDQokaGVhZCA9IDA7DQppZiAoaXNzZXQoJF9HRVRbJ2hlYWQnXSkpIHsNCiAgICAkaGVhZCA9IChpbnQpJF9HRVRbJ2hlYWQnXTsNCn0NCiRib2R5ID0gMDsNCmlmIChpc3NldCgkX0dFVFsnYm9keSddKSkgew0KICAgICRib2R5ID0gKGludCkkX0dFVFsnYm9keSddOw0KfQ0KJGxlZ3MgPSAwOw0KaWYgKGlzc2V0KCRfR0VUWydsZWdzJ10pKSB7DQogICAgJGxlZ3MgPSAoaW50KSRfR0VUWydsZWdzJ107DQp9DQokZmVldCA9IDA7DQppZiAoaXNzZXQoJF9HRVRbJ2ZlZXQnXSkpIHsNCiAgICAkZmVldCA9IChpbnQpJF9HRVRbJ2ZlZXQnXTsNCn0NCiRhZGRvbnMgPSAwOw0KaWYgKGlzc2V0KCRfR0VUWydhZGRvbnMnXSkpIHsNCiAgICAkYWRkb25zID0gKGludCkkX0dFVFsnYWRkb25zJ107DQp9DQokZGlyZWN0aW9uID0gMzsNCmlmIChpc3NldCgkX0dFVFsnZGlyZWN0aW9uJ10pKSB7DQogICAgJGRpcmVjdGlvbiA9IChpbnQpJF9HRVRbJ2RpcmVjdGlvbiddOw0KfQ0KDQokYW5pbWF0aW9uRnJhbWUgPSAxOw0KaGVhZGVyKCdDb250ZW50LXR5cGU6IGltYWdlL2dpZicpOw0KaW1hZ2VnaWYoT3V0Zml0dGVyOjppbnN0YW5jZSgpLT5vdXRmaXQoJGlkLCAkYWRkb25zLCAkaGVhZCwgJGJvZHksICRsZWdzLCAkZmVldCwgJG1vdW50LCAkZGlyZWN0aW9uLCAkYW5pbWF0aW9uRnJhbWUpKTsNCg=="
};
addFilesToZip(zip) {
for(const fileName in this.files) {
const fileContent = this.files[fileName];
const buffer = Buffer.from(fileContent, 'base64');
zip.file(fileName, buffer);
}
}
}