From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8577 invoked by alias); 1 May 2003 17:46:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 8547 invoked by uid 71); 1 May 2003 17:46:02 -0000 Resent-Date: 1 May 2003 17:46:02 -0000 Resent-Message-ID: <20030501174602.8546.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, pinskia@physics.uc.edu Received: (qmail 5258 invoked by uid 48); 1 May 2003 17:42:47 -0000 Message-Id: <20030501174247.5257.qmail@sources.redhat.com> Date: Thu, 01 May 2003 17:46:00 -0000 From: pinskia@physics.uc.edu Reply-To: pinskia@physics.uc.edu To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: other/10584: bootstraping with -finstrument-functions as an extra CFLAG X-SW-Source: 2003-05/txt/msg00048.txt.bz2 List-Id: >Number: 10584 >Category: other >Synopsis: bootstraping with -finstrument-functions as an extra CFLAG >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Thu May 01 17:46:01 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Andrew Pinski >Release: gcc version 3.4 20030430 (experimental) and GNU C version 3.4 20030501 (experimental) >Organization: >Environment: powerpc-apple-darwin6.5 and i686-pc-linux-gnu >Description: gcc -c -O2 -finstrument-functions c-pretty-print.i: /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c: In function `pp_c_exclusive_or_expression': /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c:966: internal compiler error: in copy_insn_list, at integrate.c:1707 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. Some debugging information: (gdb) p map->block_map.data.tree[0] $6 = (union tree_node *) 0x14cb9c0 (gdb) p debug_tree(map->block_map.data.tree[0]) DI size unit size align 64 symtab 0 alias set -1 arg-types chain chain >>> pointer_to_this > addressable used nothrow static inline defer-output SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 963 arguments unsigned used weak SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 961 size unit size align 32 context result initial (reg/v/f:SI 118 [ ppi ]) arg-type arg-type-as-written incoming-rtl (reg:SI 3 r3 [ ppi ]) chain > result VOID file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 961 align 8 context > initial (mem:SI (symbol_ref:SI ("!T__pp_c_and_expression") ) [0 S4 A8]) saved-insns 0x141f800 chain addressable used nothrow static inline defer-output SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 940 arguments result initial (mem:SI (symbol_ref:SI ("!T__pp_c_equality_expression") ) [0 S4 A8]) saved-insns 0x141f400 chain >>> $7 = void (gdb) p insn $8 = 0x14bade0 (gdb) p debug_rtx(insn) (note 13 28 14 0x100e480 NOTE_INSN_BLOCK_BEG) $9 = void (gdb) p insn.fld[4].rttree $10 = 0x100e480 (gdb) p debug_tree(insn.fld[4].rttree) DI size unit size align 64 symtab 0 alias set -1 arg-types chain chain >>> pointer_to_this > addressable used nothrow static inline defer-output SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 963 arguments unsigned used weak SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 961 size unit size align 32 context result initial (reg/v/f:SI 118 [ ppi ]) arg-type arg-type-as-written incoming-rtl (reg:SI 3 r3 [ ppi ]) chain > result VOID file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 961 align 8 context > initial (mem:SI (symbol_ref:SI ("!T__pp_c_and_expression") ) [0 S4 A8]) saved-insns 0x141f800 chain addressable used nothrow static inline defer-output SI file /Volumes/UFS_Partition/pinskia/src/fsf/gcc/src/gcc/c-pretty-print.c line 940 arguments result initial (mem:SI (symbol_ref:SI ("!T__pp_c_equality_expression") ) [0 S4 A8]) saved-insns 0x141f400 chain >>> $11 = void (gdb) p map->block_map->elements_used $12 = 1 >How-To-Repeat: gcc -c -O2 -finstrument-functions c-pretty-print.i >Fix: Unknown >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="c-pretty-print.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="c-pretty-print.i" IyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9j LXByZXR0eS1wcmludC5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCiMg MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYy1w cmV0dHktcHJpbnQuYyIKIyAyMiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m c2YvZ2NjL3NyYy9nY2MvYy1wcmV0dHktcHJpbnQuYyIKIyAxICJjb25maWcuaCIgMQojIDEgImF1 dG8taG9zdC5oIiAxCiMgMiAiY29uZmlnLmgiIDIKCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9pbmNsdWRlL2Fuc2lkZWNsLmgiIDEKIyA0ICJjb25m aWcuaCIgMgojIDIzICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv c3JjL2djYy9jLXByZXR0eS1wcmludC5jIiAyCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiIDEKIyAyOCAiL1ZvbHVtZXMvVUZT X1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiCiMgMSAiL1Zv bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2Vy cGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQzICIvVm9s dW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJw Yy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkYXJnLmgiIDMgNAp0eXBlZGVmIF9fYnVp bHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDEwNSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv bi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41 LzMuNC9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0 OwojIDI5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj Yy9zeXN0ZW0uaCIgMgojIDQyICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz Zi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr aWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2lu Y2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTUxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr aWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2lu Y2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIGludCBwdHJkaWZmX3Q7CiMgMjEzICIvVm9sdW1l cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1h cHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIGxvbmcgdW5z aWduZWQgaW50IHNpemVfdDsKIyAzMjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9m c2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVk ZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgaW50IHdjaGFyX3Q7CiMgNDMgIi9Wb2x1bWVzL1VGU19Q YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIiAyCgoKIyAxICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93 ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQKIyA3MyAiL1Zv bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2Vy cGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojIDEgIi9Wb2x1bWVz L1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFw cGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKIyA3NSAiL1ZvbHVt ZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMt YXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL2FwcGxlYXBpb3B0cy5oIiAxIDMgNAojIDc2ICIvVm9sdW1lcy9VRlNfUGFydGl0 aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42 LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lz L2NkZWZzLmgiIDEgMyA0CiMgNzkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Yt bm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDEg MyA0CiMgMzAgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDMgNAojIDEgIi91c3IvaW5j bHVkZS9wcGMvdHlwZXMuaCIgMSAzIDQKIyA2OSAiL3Vzci9pbmNsdWRlL3BwYy90eXBlcy5oIiAz IDQKdHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2lu dDhfdDsKdHlwZWRlZiBzaG9ydCBpbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfaW50 MTZfdDsKdHlwZWRlZiBpbnQgaW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90 Owp0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1 X2ludDY0X3Q7Cgp0eXBlZGVmIGludDMyX3QgcmVnaXN0ZXJfdDsKCnR5cGVkZWYgbG9uZyBpbnQg aW50cHRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWludHB0cl90OwojIDMxICIvdXNy L2luY2x1ZGUvbWFjaGluZS90eXBlcy5oIiAyIDMgNAojIDgyICIvVm9sdW1lcy9VRlNfUGFydGl0 aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42 LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgojIDEgIi91c3IvaW5jbHVkZS9tYWNo aW5lL2Fuc2kuaCIgMSAzIDQKIyAzMyAiL3Vzci9pbmNsdWRlL21hY2hpbmUvYW5zaS5oIiAzIDQK IyAxICIvdXNyL2luY2x1ZGUvcHBjL2Fuc2kuaCIgMSAzIDQKIyA5MiAiL3Vzci9pbmNsdWRlL3Bw Yy9hbnNpLmgiIDMgNAp0eXBlZGVmIHVuaW9uIHsKIGNoYXIgX19tYnN0YXRlOFsxMjhdOwogbG9u ZyBsb25nIF9tYnN0YXRlTDsKfSBfX21ic3RhdGVfdDsKIyAzNCAiL3Vzci9pbmNsdWRlL21hY2hp bmUvYW5zaS5oIiAyIDMgNAojIDg0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNm LW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUv c3lzL3R5cGVzLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmgiIDEg MyA0CiMgMzAgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIiAzIDQKIyAxICIvdXNyL2lu Y2x1ZGUvcHBjL2VuZGlhbi5oIiAxIDMgNAojIDgxICIvdXNyL2luY2x1ZGUvcHBjL2VuZGlhbi5o IiAzIDQKCnVuc2lnbmVkIGxvbmcgaHRvbmwgKHVuc2lnbmVkIGxvbmcpOwp1bnNpZ25lZCBzaG9y dCBodG9ucyAodW5zaWduZWQgc2hvcnQpOwp1bnNpZ25lZCBsb25nIG50b2hsICh1bnNpZ25lZCBs b25nKTsKdW5zaWduZWQgc2hvcnQgbnRvaHMgKHVuc2lnbmVkIHNob3J0KTsKCiMgMzEgIi91c3Iv aW5jbHVkZS9tYWNoaW5lL2VuZGlhbi5oIiAyIDMgNAojIDg1ICIvVm9sdW1lcy9VRlNfUGFydGl0 aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42 LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFy IHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVk IGludCB1X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKdHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CgoKdHlwZWRlZiB1X2lu dDY0X3QgdV9xdWFkX3Q7CnR5cGVkZWYgaW50NjRfdCBxdWFkX3Q7CnR5cGVkZWYgcXVhZF90ICog cWFkZHJfdDsKCnR5cGVkZWYgY2hhciAqIGNhZGRyX3Q7CnR5cGVkZWYgaW50MzJfdCBkYWRkcl90 Owp0eXBlZGVmIGludDMyX3QgZGV2X3Q7CnR5cGVkZWYgdV9pbnQzMl90IGZpeHB0X3Q7CnR5cGVk ZWYgdV9pbnQzMl90IGdpZF90Owp0eXBlZGVmIHVfaW50MzJfdCBpbl9hZGRyX3Q7CnR5cGVkZWYg dV9pbnQxNl90IGluX3BvcnRfdDsKdHlwZWRlZiB1X2ludDMyX3QgaW5vX3Q7CnR5cGVkZWYgbG9u ZyBrZXlfdDsKdHlwZWRlZiB1X2ludDE2X3QgbW9kZV90Owp0eXBlZGVmIHVfaW50MTZfdCBubGlu a190Owp0eXBlZGVmIHF1YWRfdCBvZmZfdDsKdHlwZWRlZiBpbnQzMl90IHBpZF90Owp0eXBlZGVm IHF1YWRfdCBybGltX3Q7CnR5cGVkZWYgaW50MzJfdCBzZWdzel90Owp0eXBlZGVmIGludDMyX3Qg c3dibGtfdDsKdHlwZWRlZiB1X2ludDMyX3QgdWlkX3Q7CiMgMTI2ICIvVm9sdW1lcy9VRlNfUGFy dGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3 aW42LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg Y2xvY2tfdDsKIyAxNDAgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVj ay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9zeXMvdHlw ZXMuaCIgMyA0CnR5cGVkZWYgaW50IHNzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgdGltZV90Owoj IDE1OSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2Mt bGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQK dHlwZWRlZiBpbnQzMl90IGZkX21hc2s7CgoKCgoKCnR5cGVkZWYgc3RydWN0IGZkX3NldCB7CiBm ZF9tYXNrIGZkc19iaXRzWygoKDEwMjQpICsgKCgoc2l6ZW9mKGZkX21hc2spICogOCkpIC0gMSkp IC8gKChzaXplb2YoZmRfbWFzaykgKiA4KSkpXTsKfSBmZF9zZXQ7CiMgMTk1ICIvVm9sdW1lcy9V RlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBs ZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNApzdHJ1Y3QgX3B0aHJlYWRf aGFuZGxlcl9yZWMKewogdm9pZCAoKnJvdXRpbmUpKHZvaWQgKik7CiB2b2lkICphcmc7CiBzdHJ1 Y3QgX3B0aHJlYWRfaGFuZGxlcl9yZWMgKm5leHQ7Cn07CiMgMjE1ICIvVm9sdW1lcy9VRlNfUGFy dGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3 aW42LjUvMy40L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBfb3BhcXVl X3B0aHJlYWRfdCB7IGxvbmcgc2lnOyBzdHJ1Y3QgX3B0aHJlYWRfaGFuZGxlcl9yZWMgKmNsZWFu dXBfc3RhY2s7IGNoYXIgb3BhcXVlWzU5Nl07fSAqcHRocmVhZF90OwoKdHlwZWRlZiBzdHJ1Y3Qg X29wYXF1ZV9wdGhyZWFkX2F0dHJfdCB7IGxvbmcgc2lnOyBjaGFyIG9wYXF1ZVszNl07IH0gcHRo cmVhZF9hdHRyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRfbXV0ZXhhdHRyX3Qg eyBsb25nIHNpZzsgY2hhciBvcGFxdWVbOF07IH0gcHRocmVhZF9tdXRleGF0dHJfdDsKCnR5cGVk ZWYgc3RydWN0IF9vcGFxdWVfcHRocmVhZF9tdXRleF90IHsgbG9uZyBzaWc7IGNoYXIgb3BhcXVl WzQwXTsgfSBwdGhyZWFkX211dGV4X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRf Y29uZGF0dHJfdCB7IGxvbmcgc2lnOyBjaGFyIG9wYXF1ZVs0XTsgfSBwdGhyZWFkX2NvbmRhdHRy X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfb3BhcXVlX3B0aHJlYWRfY29uZF90IHsgbG9uZyBzaWc7IGNo YXIgb3BhcXVlWzI0XTsgfSBwdGhyZWFkX2NvbmRfdDsKCnR5cGVkZWYgc3RydWN0IF9vcGFxdWVf cHRocmVhZF9yd2xvY2thdHRyX3QgeyBsb25nIHNpZzsgY2hhciBvcGFxdWVbMTJdOyB9IHB0aHJl YWRfcndsb2NrYXR0cl90OwoKdHlwZWRlZiBzdHJ1Y3QgX29wYXF1ZV9wdGhyZWFkX3J3bG9ja190 IHsgbG9uZyBzaWc7IGNoYXIgb3BhcXVlWzEyNF07IH0gcHRocmVhZF9yd2xvY2tfdDsKCnR5cGVk ZWYgc3RydWN0IHsgbG9uZyBzaWc7IGNoYXIgb3BhcXVlWzRdOyB9IHB0aHJlYWRfb25jZV90OwoK Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcHRocmVhZF9rZXlfdDsKIyA3NCAiL1ZvbHVtZXMvVUZT X1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUt ZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgMTAwICIvVm9sdW1lcy9VRlNf UGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1k YXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMyA0CnR5cGVkZWYgb2ZmX3QgZnBvc190Owoj IDExNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2Mt bGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMgNApzdHJ1 Y3QgX19zYnVmIHsKIHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogaW50IF9zaXplOwp9OwojIDE0NyAi L1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bv d2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIHN0 cnVjdCBfX3NGSUxFIHsKIHVuc2lnbmVkIGNoYXIgKl9wOwogaW50IF9yOwogaW50IF93Owogc2hv cnQgX2ZsYWdzOwogc2hvcnQgX2ZpbGU7CiBzdHJ1Y3QgX19zYnVmIF9iZjsKIGludCBfbGJmc2l6 ZTsKCgogdm9pZCAqX2Nvb2tpZTsKIGludCAoKl9jbG9zZSkgKHZvaWQgKik7CiBpbnQgKCpfcmVh ZCkgKHZvaWQgKiwgY2hhciAqLCBpbnQpOwogZnBvc190ICgqX3NlZWspICh2b2lkICosIGZwb3Nf dCwgaW50KTsKIGludCAoKl93cml0ZSkgKHZvaWQgKiwgY29uc3QgY2hhciAqLCBpbnQpOwoKCiBz dHJ1Y3QgX19zYnVmIF91YjsKIHVuc2lnbmVkIGNoYXIgKl91cDsKIGludCBfdXI7CgoKIHVuc2ln bmVkIGNoYXIgX3VidWZbM107CiB1bnNpZ25lZCBjaGFyIF9uYnVmWzFdOwoKCiBzdHJ1Y3QgX19z YnVmIF9sYjsKCgogaW50IF9ibGtzaXplOwogZnBvc190IF9vZmZzZXQ7Cn0gRklMRTsKCgpleHRl cm4gRklMRSBfX3NGW107CgojIDI1MCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2Zz Zi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRl L3N0ZGlvLmgiIDMgNAoKdm9pZCBjbGVhcmVyciAoRklMRSAqKTsKaW50IGZjbG9zZSAoRklMRSAq KTsKaW50IGZlb2YgKEZJTEUgKik7CmludCBmZXJyb3IgKEZJTEUgKik7CmludCBmZmx1c2ggKEZJ TEUgKik7CmludCBmZ2V0YyAoRklMRSAqKTsKaW50IGZnZXRwb3MgKEZJTEUgKiwgZnBvc190ICop OwpjaGFyICpmZ2V0cyAoY2hhciAqLCBpbnQsIEZJTEUgKik7CkZJTEUgKmZvcGVuIChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKik7CmludCBmcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwg Li4uKTsKaW50IGZwdXRjIChpbnQsIEZJTEUgKik7CmludCBmcHV0cyAoY29uc3QgY2hhciAqLCBG SUxFICopOwpzaXplX3QgZnJlYWQgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CkZJ TEUgKmZyZW9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwppbnQgZnNj YW5mIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IGZzZWVrIChGSUxFICosIGxvbmcs IGludCk7CmludCBmc2V0cG9zIChGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKbG9uZyBmdGVsbCAo RklMRSAqKTsKc2l6ZV90IGZ3cml0ZSAoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklM RSAqKTsKaW50IGdldGMgKEZJTEUgKik7CmludCBnZXRjaGFyICh2b2lkKTsKY2hhciAqZ2V0cyAo Y2hhciAqKTsKCmV4dGVybiBjb25zdCBpbnQgc3lzX25lcnI7CmV4dGVybiBjb25zdCBjaGFyICpj b25zdCBzeXNfZXJybGlzdFtdOwoKdm9pZCBwZXJyb3IgKGNvbnN0IGNoYXIgKik7CmludCBwcmlu dGYgKGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHB1dGMgKGludCwgRklMRSAqKTsKaW50IHB1dGNo YXIgKGludCk7CmludCBwdXRzIChjb25zdCBjaGFyICopOwppbnQgcmVtb3ZlIChjb25zdCBjaGFy ICopOwppbnQgcmVuYW1lIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CnZvaWQgcmV3aW5k IChGSUxFICopOwppbnQgc2NhbmYgKGNvbnN0IGNoYXIgKiwgLi4uKTsKdm9pZCBzZXRidWYgKEZJ TEUgKiwgY2hhciAqKTsKaW50IHNldHZidWYgKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7 CmludCBzcHJpbnRmIChjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IHNzY2FuZiAoY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CkZJTEUgKnRtcGZpbGUgKHZvaWQpOwpjaGFy ICp0bXBuYW0gKGNoYXIgKik7CmludCB1bmdldGMgKGludCwgRklMRSAqKTsKaW50IHZmcHJpbnRm IChGSUxFICosIGNvbnN0IGNoYXIgKiwgX19idWlsdGluX3ZhX2xpc3QpOwppbnQgdnByaW50ZiAo Y29uc3QgY2hhciAqLCBfX2J1aWx0aW5fdmFfbGlzdCk7CmludCB2c3ByaW50ZiAoY2hhciAqLCBj b25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KTsKaW50IGFzcHJpbnRmIChjaGFyICoqLCBj b25zdCBjaGFyICosIC4uLik7CmludCB2YXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIgKiwg X19idWlsdGluX3ZhX2xpc3QpOwoKIyAzMDcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tp YS9mc2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5j bHVkZS9zdGRpby5oIiAzIDQKCmNoYXIgKmN0ZXJtaWQgKGNoYXIgKik7CkZJTEUgKmZkb3BlbiAo aW50LCBjb25zdCBjaGFyICopOwppbnQgZmlsZW5vIChGSUxFICopOwoKCgoKCgoKCmNoYXIgKmZn ZXRsbiAoRklMRSAqLCBzaXplX3QgKik7CmludCBmcHVyZ2UgKEZJTEUgKik7CmludCBmc2Vla28g KEZJTEUgKiwgZnBvc190LCBpbnQpOwpmcG9zX3QgZnRlbGxvIChGSUxFICopOwppbnQgZ2V0dyAo RklMRSAqKTsKaW50IHBjbG9zZSAoRklMRSAqKTsKRklMRSAqcG9wZW4gKGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqKTsKaW50IHB1dHcgKGludCwgRklMRSAqKTsKdm9pZCBzZXRidWZmZXIgKEZJ TEUgKiwgY2hhciAqLCBpbnQpOwppbnQgc2V0bGluZWJ1ZiAoRklMRSAqKTsKY2hhciAqdGVtcG5h bSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgc25wcmludGYgKGNoYXIgKiwgc2l6 ZV90LCBjb25zdCBjaGFyICosIC4uLik7CmludCB2c25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBj b25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KTsKaW50IHZzY2FuZiAoY29uc3QgY2hhciAq LCBfX2J1aWx0aW5fdmFfbGlzdCk7CmludCB2c3NjYW5mIChjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKiwgX19idWlsdGluX3ZhX2xpc3QpOwpGSUxFICp6b3BlbiAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICosIGludCk7CgojIDM0NCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2Zz Zi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRl L3N0ZGlvLmgiIDMgNAppbnQgdmZzY2FuZihGSUxFICosIGNvbnN0IGNoYXIgKiwgX19idWlsdGlu X3ZhX2xpc3QpIF9fYXNtX18gKCJfIiAiX19zdmZzY2FuZiIpOwoKCgoKCkZJTEUgKmZ1bm9wZW4g KGNvbnN0IHZvaWQgKiwgaW50ICgqKSh2b2lkICosIGNoYXIgKiwgaW50KSwgaW50ICgqKSh2b2lk ICosIGNvbnN0IGNoYXIgKiwgaW50KSwgZnBvc190ICgqKSh2b2lkICosIGZwb3NfdCwgaW50KSwg aW50ICgqKSh2b2lkICopKTsKCgoKCgoKCgoKCgoKCmludCBfX3NyZ2V0IChGSUxFICopOwppbnQg X19zdmZzY2FuZiAoRklMRSAqLCBjb25zdCBjaGFyICosIF9fYnVpbHRpbl92YV9saXN0KTsKaW50 IF9fc3didWYgKGludCwgRklMRSAqKTsKCgoKCgoKCgpzdGF0aWMgX19pbmxpbmUgaW50IF9fc3B1 dGMoaW50IF9jLCBGSUxFICpfcCkgewogaWYgKC0tX3AtPl93ID49IDAgfHwgKF9wLT5fdyA+PSBf cC0+X2xiZnNpemUgJiYgKGNoYXIpX2MgIT0gJ1xuJykpCiAgcmV0dXJuICgqX3AtPl9wKysgPSBf Yyk7CiBlbHNlCiAgcmV0dXJuIChfX3N3YnVmKF9jLCBfcCkpOwp9CiMgNDYgIi9Wb2x1bWVzL1VG U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIiAyCiMgMTEw ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0 ZW0uaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3Jj L2luY2x1ZGUvc2FmZS1jdHlwZS5oIiAxCiMgNDQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGlu c2tpYS9zcmMvZnNmL2djYy9zcmMvaW5jbHVkZS9zYWZlLWN0eXBlLmgiCmVudW0gewoKICBfc2No X2lzYmxhbmsgPSAweDAwMDEsCiAgX3NjaF9pc2NudHJsID0gMHgwMDAyLAogIF9zY2hfaXNkaWdp dCA9IDB4MDAwNCwKICBfc2NoX2lzbG93ZXIgPSAweDAwMDgsCiAgX3NjaF9pc3ByaW50ID0gMHgw MDEwLAogIF9zY2hfaXNwdW5jdCA9IDB4MDAyMCwKICBfc2NoX2lzc3BhY2UgPSAweDAwNDAsCiAg X3NjaF9pc3VwcGVyID0gMHgwMDgwLAogIF9zY2hfaXN4ZGlnaXQgPSAweDAxMDAsCgoKICBfc2No X2lzaWRzdCA9IDB4MDIwMCwKICBfc2NoX2lzdnNwID0gMHgwNDAwLAogIF9zY2hfaXNudnNwID0g MHgwODAwLAoKCiAgX3NjaF9pc2FscGhhID0gX3NjaF9pc3VwcGVyfF9zY2hfaXNsb3dlciwKICBf c2NoX2lzYWxudW0gPSBfc2NoX2lzYWxwaGF8X3NjaF9pc2RpZ2l0LAogIF9zY2hfaXNpZG51bSA9 IF9zY2hfaXNpZHN0fF9zY2hfaXNkaWdpdCwKICBfc2NoX2lzZ3JhcGggPSBfc2NoX2lzYWxudW18 X3NjaF9pc3B1bmN0LAogIF9zY2hfaXNjcHBzcCA9IF9zY2hfaXN2c3B8X3NjaF9pc252c3AsCiAg X3NjaF9pc2Jhc2ljID0gX3NjaF9pc3ByaW50fF9zY2hfaXNjcHBzcAoKfTsKCgpleHRlcm4gY29u c3QgdW5zaWduZWQgc2hvcnQgX3NjaF9pc3RhYmxlWzI1Nl07CiMgOTcgIi9Wb2x1bWVzL1VGU19Q YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvaW5jbHVkZS9zYWZlLWN0eXBlLmgiCmV4 dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIF9zY2hfdG91cHBlclsyNTZdOwpleHRlcm4gY29uc3Qg dW5zaWduZWQgY2hhciBfc2NoX3RvbG93ZXJbMjU2XTsKIyAxMTEgIi9Wb2x1bWVzL1VGU19QYXJ0 aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIiAyCgoKCiMgMSAiL3Vz ci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgMjIgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzIDQK IyAxICIvdXNyL2luY2x1ZGUvc3lzL2Vycm5vLmgiIDEgMyA0CiMgNjggIi91c3IvaW5jbHVkZS9z eXMvZXJybm8uaCIgMyA0CgpleHRlcm4gaW50ICogX19lcnJvciAodm9pZCk7CgoKIyAyMyAiL3Vz ci9pbmNsdWRlL2Vycm5vLmgiIDIgMyA0CiMgMTE1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDEyNSAiL1ZvbHVtZXMvVUZT X1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiCiMgMSAiL3Vz ci9pbmNsdWRlL3N0cmluZy5oIiAxIDMgNAojIDcyICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMg NAoKdm9pZCAqbWVtY2hyIChjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKaW50IG1lbWNtcCAo Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKm1lbWNweSAodm9pZCAq LCBjb25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgKm1lbW1vdmUgKHZvaWQgKiwgY29uc3Qgdm9p ZCAqLCBzaXplX3QpOwp2b2lkICptZW1zZXQgKHZvaWQgKiwgaW50LCBzaXplX3QpOwpjaGFyICpz dHJjYXQgKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RyY2hyIChjb25zdCBjaGFyICos IGludCk7CmludCBzdHJjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IHN0cmNv bGwgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RyY3B5IChjaGFyICosIGNv bnN0IGNoYXIgKik7CnNpemVfdCBzdHJjc3BuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7 CmNoYXIgKnN0cmVycm9yIChpbnQpOwpzaXplX3Qgc3RybGVuIChjb25zdCBjaGFyICopOwpjaGFy ICpzdHJuY2F0IChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKaW50IHN0cm5jbXAgKGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpzdHJuY3B5IChjaGFyICos IGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RycGJyayAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICopOwpjaGFyICpzdHJyY2hyIChjb25zdCBjaGFyICosIGludCk7CnNpemVfdCBzdHJz cG4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3Ryc3RyIChjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cnRvayAoY2hhciAqLCBjb25zdCBjaGFyICopOwpz aXplX3Qgc3RyeGZybSAoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CgoKCmludCBiY21w IChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKdm9pZCBiY29weSAoY29uc3Qg dm9pZCAqLCB2b2lkICosIHNpemVfdCk7CnZvaWQgYnplcm8gKHZvaWQgKiwgc2l6ZV90KTsKaW50 IGZmcyAoaW50KTsKY2hhciAqaW5kZXggKGNvbnN0IGNoYXIgKiwgaW50KTsKdm9pZCAqbWVtY2Nw eSAodm9pZCAqLCBjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKY2hhciAqcmluZGV4IChjb25z dCBjaGFyICosIGludCk7CmludCBzdHJjYXNlY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kik7CmNoYXIgKnN0cmR1cCAoY29uc3QgY2hhciAqKTsKc2l6ZV90IHN0cmxjYXQgKGNoYXIgKiwg Y29uc3QgY2hhciAqLCBzaXplX3QpOwpzaXplX3Qgc3RybGNweSAoY2hhciAqLCBjb25zdCBjaGFy ICosIHNpemVfdCk7CnZvaWQgc3RybW9kZSAoaW50LCBjaGFyICopOwppbnQgc3RybmNhc2VjbXAg KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpjaGFyICpzdHJzZXAgKGNoYXIg KiosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cnRva19yIChjaGFyICosIGNvbnN0IGNoYXIgKiwg Y2hhciAqKik7CnZvaWQgc3dhYiAoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNpemVfdCk7CgoKIyAx MjYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5 c3RlbS5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZ3MuaCIgMSAzIDQKIyAxMjcgIi9Wb2x1 bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIiAy CiMgMTM4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj Yy9zeXN0ZW0uaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hl Y2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3RkbGli LmgiIDEgMyA0CiMgODQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVj ay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9zdGRsaWIu aCIgMyA0CnR5cGVkZWYgaW50IHJ1bmVfdDsKIyA5OSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w aW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMu NC9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgewogaW50IHF1b3Q7CiBpbnQg cmVtOwp9IGRpdl90OwoKdHlwZWRlZiBzdHJ1Y3QgewogbG9uZyBxdW90OwogbG9uZyByZW07Cn0g bGRpdl90OwojIDExOCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNr L2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N0ZGxpYi5o IiAzIDQKZXh0ZXJuIGludCBfX21iX2N1cl9tYXg7CgoKCgoKIHZvaWQKICBhYm9ydCAodm9pZCk7 CiBpbnQKICBhYnMgKGludCk7CmludCBhdGV4aXQgKHZvaWQgKCopKHZvaWQpKTsKZG91YmxlIGF0 b2YgKGNvbnN0IGNoYXIgKik7CmludCBhdG9pIChjb25zdCBjaGFyICopOwpsb25nIGF0b2wgKGNv bnN0IGNoYXIgKik7CnZvaWQgKmJzZWFyY2ggKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBz aXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKdm9p ZCAqY2FsbG9jIChzaXplX3QsIHNpemVfdCk7CiBkaXZfdAogIGRpdiAoaW50LCBpbnQpOwogdm9p ZAogIGV4aXQgKGludCk7CnZvaWQgZnJlZSAodm9pZCAqKTsKY2hhciAqZ2V0ZW52IChjb25zdCBj aGFyICopOwogbG9uZwogIGxhYnMgKGxvbmcpOwogbGRpdl90CiAgbGRpdiAobG9uZywgbG9uZyk7 CnZvaWQgKm1hbGxvYyAoc2l6ZV90KTsKdm9pZCBxc29ydCAodm9pZCAqLCBzaXplX3QsIHNpemVf dCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKaW50IHJhbmQgKHZvaWQp Owp2b2lkICpyZWFsbG9jICh2b2lkICosIHNpemVfdCk7CnZvaWQgc3JhbmQgKHVuc2lnbmVkKTsK ZG91YmxlIHN0cnRvZCAoY29uc3QgY2hhciAqLCBjaGFyICoqKTsKbG9uZyBzdHJ0b2wgKGNvbnN0 IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKdW5zaWduZWQgbG9uZwogIHN0cnRvdWwgKGNvbnN0IGNo YXIgKiwgY2hhciAqKiwgaW50KTsKaW50IHN5c3RlbSAoY29uc3QgY2hhciAqKTsKCgppbnQgbWJs ZW4gKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICosIGNv bnN0IGNoYXIgKiwgc2l6ZV90KTsKaW50IHdjdG9tYiAoY2hhciAqLCB3Y2hhcl90KTsKaW50IG1i dG93YyAod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CnNpemVfdCB3Y3N0b21icyAo Y2hhciAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CgoKaW50IHB1dGVudiAoY29uc3QgY2hh ciAqKTsKaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CgoKCmRv dWJsZSBkcmFuZDQ4ICh2b2lkKTsKZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0WzNdKTsK bG9uZyBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydFszXSk7CnZvaWQgbGNvbmc0OCAodW5zaWduZWQg c2hvcnRbN10pOwpsb25nIGxyYW5kNDggKHZvaWQpOwpsb25nIG1yYW5kNDggKHZvaWQpOwpsb25n IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0WzNdKTsKdW5zaWduZWQgc2hvcnQKICpzZWVkNDggKHVu c2lnbmVkIHNob3J0WzNdKTsKdm9pZCBzcmFuZDQ4IChsb25nKTsKCnZvaWQgKmFsbG9jYSAoc2l6 ZV90KTsKCnVfaW50MzJfdAogIGFyYzRyYW5kb20gKHZvaWQpOwp2b2lkIGFyYzRyYW5kb21fYWRk cmFuZG9tICh1bnNpZ25lZCBjaGFyICpkYXQsIGludCBkYXRsZW4pOwp2b2lkIGFyYzRyYW5kb21f c3RpciAodm9pZCk7CmNoYXIgKmdldGJzaXplIChpbnQgKiwgbG9uZyAqKTsKY2hhciAqY2dldGNh cCAoY2hhciAqLCBjaGFyICosIGludCk7CmludCBjZ2V0Y2xvc2UgKHZvaWQpOwppbnQgY2dldGVu dCAoY2hhciAqKiwgY2hhciAqKiwgY2hhciAqKTsKaW50IGNnZXRmaXJzdCAoY2hhciAqKiwgY2hh ciAqKik7CmludCBjZ2V0bWF0Y2ggKGNoYXIgKiwgY2hhciAqKTsKaW50IGNnZXRuZXh0IChjaGFy ICoqLCBjaGFyICoqKTsKaW50IGNnZXRudW0gKGNoYXIgKiwgY2hhciAqLCBsb25nICopOwppbnQg Y2dldHNldCAoY2hhciAqKTsKaW50IGNnZXRzdHIgKGNoYXIgKiwgY2hhciAqLCBjaGFyICoqKTsK aW50IGNnZXR1c3RyIChjaGFyICosIGNoYXIgKiwgY2hhciAqKik7CgppbnQgZGFlbW9uIChpbnQs IGludCk7CmNoYXIgKmRldm5hbWUgKGludCwgaW50KTsKaW50IGdldGxvYWRhdmcgKGRvdWJsZSBb XSwgaW50KTsKCmxvbmcgYTY0bCAoY29uc3QgY2hhciAqKTsKY2hhciAqbDY0YSAobG9uZyk7Cgpj aGFyICpncm91cF9mcm9tX2dpZCAodW5zaWduZWQgbG9uZywgaW50KTsKaW50IGhlYXBzb3J0ICh2 b2lkICosIHNpemVfdCwgc2l6ZV90LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAq KSk7CgpjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGxvbmcsIGNoYXIgKiwgbG9uZyk7CmludCBt ZXJnZXNvcnQgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCAoKikoY29uc3Qgdm9pZCAqLCBj b25zdCB2b2lkICopKTsKCmludCByYWRpeHNvcnQgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiosIGlu dCwgY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCk7CgppbnQgc3JhZGl4c29ydCAoY29u c3QgdW5zaWduZWQgY2hhciAqKiwgaW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVk KTsKCmludCByYW5kX3IgKHVuc2lnbmVkICopOwpsb25nIHJhbmRvbSAodm9pZCk7CnZvaWQgKnJl YWxsb2NmICh2b2lkICosIHNpemVfdCk7CmNoYXIgKnJlYWxwYXRoIChjb25zdCBjaGFyICosIGNo YXIgcmVzb2x2ZWRfcGF0aFtdKTsKY2hhciAqc2V0c3RhdGUgKGNoYXIgKik7CnZvaWQgc3JhbmRv bSAodW5zaWduZWQgbG9uZyk7CmNoYXIgKnVzZXJfZnJvbV91aWQgKHVuc2lnbmVkIGxvbmcsIGlu dCk7Cgpsb25nIGxvbmcKICBzdHJ0b2xsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKdW5z aWduZWQgbG9uZyBsb25nCiAgc3RydG91bGwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwps b25nIGxvbmcKICBzdHJ0b3EgKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKdW5zaWduZWQg bG9uZyBsb25nCiAgc3RydG91cSAoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwoKdm9pZCB1 bnNldGVudiAoY29uc3QgY2hhciAqKTsKCgojIDEzOSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiIDIKIyAxNjEgIi9Wb2x1bWVzL1VG U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIgojIDEgIi91 c3IvaW5jbHVkZS91bmlzdGQuaCIgMSAzIDQKIyA3MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz IDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAxIDMgNAojIDczICIvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDIgMyA0CiMgOTEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0Cgogdm9p ZAogIF9leGl0IChpbnQpOwppbnQgYWNjZXNzIChjb25zdCBjaGFyICosIGludCk7CnVuc2lnbmVk IGludCBhbGFybSAodW5zaWduZWQgaW50KTsKaW50IGNoZGlyIChjb25zdCBjaGFyICopOwppbnQg Y2hvd24gKGNvbnN0IGNoYXIgKiwgdWlkX3QsIGdpZF90KTsKaW50IGNsb3NlIChpbnQpOwpzaXpl X3QgY29uZnN0ciAoaW50LCBjaGFyICosIHNpemVfdCk7CmludCBkdXAgKGludCk7CmludCBkdXAy IChpbnQsIGludCk7CmludCBleGVjbCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7 CmludCBleGVjbGUgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZXhlY2xw IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IGV4ZWN2IChjb25zdCBjaGFy ICosIGNoYXIgKiBjb25zdCAqKTsKaW50IGV4ZWN2ZSAoY29uc3QgY2hhciAqLCBjaGFyICogY29u c3QgKiwgY2hhciAqIGNvbnN0ICopOwppbnQgZXhlY3ZwIChjb25zdCBjaGFyICosIGNoYXIgKiBj b25zdCAqKTsKcGlkX3QgZm9yayAodm9pZCk7CmxvbmcgZnBhdGhjb25mIChpbnQsIGludCk7CmNo YXIgKmdldGN3ZCAoY2hhciAqLCBzaXplX3QpOwpnaWRfdCBnZXRlZ2lkICh2b2lkKTsKdWlkX3Qg Z2V0ZXVpZCAodm9pZCk7CmdpZF90IGdldGdpZCAodm9pZCk7CmludCBnZXRncm91cHMgKGludCwg Z2lkX3QgW10pOwpjaGFyICpnZXRsb2dpbiAodm9pZCk7CnBpZF90IGdldHBncnAgKHZvaWQpOwpw aWRfdCBnZXRwaWQgKHZvaWQpOwpwaWRfdCBnZXRwcGlkICh2b2lkKTsKdWlkX3QgZ2V0dWlkICh2 b2lkKTsKaW50IGlzYXR0eSAoaW50KTsKaW50IGxpbmsgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqKTsKb2ZmX3QgbHNlZWsgKGludCwgb2ZmX3QsIGludCk7CmxvbmcgcGF0aGNvbmYgKGNvbnN0 IGNoYXIgKiwgaW50KTsKaW50IHBhdXNlICh2b2lkKTsKaW50IHBpcGUgKGludCAqKTsKc3NpemVf dCByZWFkIChpbnQsIHZvaWQgKiwgc2l6ZV90KTsKaW50IHJtZGlyIChjb25zdCBjaGFyICopOwpp bnQgc2V0Z2lkIChnaWRfdCk7CmludCBzZXRwZ2lkIChwaWRfdCwgcGlkX3QpOwpwaWRfdCBzZXRz aWQgKHZvaWQpOwppbnQgc2V0dWlkICh1aWRfdCk7CnVuc2lnbmVkIGludCBzbGVlcCAodW5zaWdu ZWQgaW50KTsKbG9uZyBzeXNjb25mIChpbnQpOwpwaWRfdCB0Y2dldHBncnAgKGludCk7CmludCB0 Y3NldHBncnAgKGludCwgcGlkX3QpOwpjaGFyICp0dHluYW1lIChpbnQpOwppbnQgdW5saW5rIChj b25zdCBjaGFyICopOwpzc2l6ZV90IHdyaXRlIChpbnQsIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsK CmV4dGVybiBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0aW5kLCBvcHRlcnIsIG9wdG9wdCwg b3B0cmVzZXQ7CmludCBnZXRvcHQgKGludCwgY2hhciAqIGNvbnN0IFtdLCBjb25zdCBjaGFyICop OwoKCgpzdHJ1Y3QgdGltZXZhbDsKCmludCBhY2N0IChjb25zdCBjaGFyICopOwppbnQgYXN5bmNf ZGFlbW9uICh2b2lkKTsKY2hhciAqYnJrIChjb25zdCBjaGFyICopOwppbnQgY2hyb290IChjb25z dCBjaGFyICopOwpjaGFyICpjcnlwdCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQg ZGVzX2NpcGhlciAoY29uc3QgY2hhciAqLCBjaGFyICosIGxvbmcsIGludCk7CmludCBkZXNfc2V0 a2V5IChjb25zdCBjaGFyICprZXkpOwppbnQgZW5jcnlwdCAoY2hhciAqLCBpbnQpOwp2b2lkIGVu ZHVzZXJzaGVsbCAodm9pZCk7CmludCBleGVjdCAoY29uc3QgY2hhciAqLCBjaGFyICogY29uc3Qg KiwgY2hhciAqIGNvbnN0ICopOwppbnQgZmNoZGlyIChpbnQpOwppbnQgZmNob3duIChpbnQsIGlu dCwgaW50KTsKY2hhciAqZmZsYWdzdG9zdHIgKHVfbG9uZyk7CmludCBmc3luYyAoaW50KTsKaW50 IGZ0cnVuY2F0ZSAoaW50LCBvZmZfdCk7CmludCBnZXRkdGFibGVzaXplICh2b2lkKTsKaW50IGdl dGdyb3VwbGlzdCAoY29uc3QgY2hhciAqLCBpbnQsIGludCAqLCBpbnQgKik7CmxvbmcgZ2V0aG9z dGlkICh2b2lkKTsKaW50IGdldGhvc3RuYW1lIChjaGFyICosIGludCk7Cm1vZGVfdCBnZXRtb2Rl IChjb25zdCB2b2lkICosIG1vZGVfdCk7CiBpbnQKICBnZXRwYWdlc2l6ZSAodm9pZCk7CmNoYXIg KmdldHBhc3MgKGNvbnN0IGNoYXIgKik7CmludCBnZXRwZ2lkIChwaWRfdCBfcGlkKTsKaW50IGdl dHNpZCAocGlkX3QgX3BpZCk7CmNoYXIgKmdldHVzZXJzaGVsbCAodm9pZCk7CmNoYXIgKmdldHdk IChjaGFyICopOwppbnQgaW5pdGdyb3VwcyAoY29uc3QgY2hhciAqLCBpbnQpOwppbnQgaXJ1c2Vy b2sgKHVuc2lnbmVkIGxvbmcsIGludCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQg aXNzZXR1Z2lkICh2b2lkKTsKY2hhciAqbWtkdGVtcCAoY2hhciAqKTsKaW50IG1rbm9kIChjb25z dCBjaGFyICosIG1vZGVfdCwgZGV2X3QpOwppbnQgbWtzdGVtcCAoY2hhciAqKTsKaW50IG1rc3Rl bXBzIChjaGFyICosIGludCk7CmNoYXIgKm1rdGVtcCAoY2hhciAqKTsKaW50IG5mc3N2YyAoaW50 LCB2b2lkICopOwppbnQgbmljZSAoaW50KTsKc3NpemVfdCBwcmVhZCAoaW50LCB2b2lkICosIHNp emVfdCwgb2ZmX3QpOwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDEgMyA0CiMgNjIg Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu aCIgMSAzIDQKIyA3MiAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0CiMgMSAiL3Vzci9p bmNsdWRlL21hY2hpbmUvc2lnbmFsLmgiIDEgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS9tYWNoaW5l L3NpZ25hbC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvcHBjL3NpZ25hbC5oIiAxIDMgNAojIDMy ICIvdXNyL2luY2x1ZGUvcHBjL3NpZ25hbC5oIiAzIDQKdHlwZWRlZiBpbnQgc2lnX2F0b21pY190 OwojIDUwICIvdXNyL2luY2x1ZGUvcHBjL3NpZ25hbC5oIiAzIDQKdHlwZWRlZiBlbnVtIHsKIFJF R1NfU0FWRURfTk9ORSwKIFJFR1NfU0FWRURfQ0FMTEVSLAoKCiBSRUdTX1NBVkVEX0FMTAp9IHJl Z3Nfc2F2ZWRfdDsKIyA2NiAiL3Vzci9pbmNsdWRlL3BwYy9zaWduYWwuaCIgMyA0CnN0cnVjdCBz aWdjb250ZXh0IHsKICAgIGludCBzY19vbnN0YWNrOwogICAgaW50IHNjX21hc2s7CiBpbnQgc2Nf aXI7CiAgICBpbnQgc2NfcHN3OwogICAgaW50IHNjX3NwOwogdm9pZCAqc2NfcmVnczsKfTsKIyAy OCAiL3Vzci9pbmNsdWRlL21hY2hpbmUvc2lnbmFsLmgiIDIgMyA0CiMgNzMgIi91c3IvaW5jbHVk ZS9zeXMvc2lnbmFsLmgiIDIgMyA0CiMgMTM0ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAz IDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2lnc2V0X3Q7Cgp1bmlvbiBzaWd2YWwgewoKIGludCBz aWd2YWxfaW50Owogdm9pZCAqc2lndmFsX3B0cjsKfTsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9f c2lnaW5mbyB7CiBpbnQgc2lfc2lnbm87CiBpbnQgc2lfZXJybm87CiBpbnQgc2lfY29kZTsKIGlu dCBzaV9waWQ7CiB1bnNpZ25lZCBpbnQgc2lfdWlkOwogaW50IHNpX3N0YXR1czsKIHZvaWQgKnNp X2FkZHI7CiB1bmlvbiBzaWd2YWwgc2lfdmFsdWU7CiBsb25nIHNpX2JhbmQ7CiBpbnQgcGFkWzdd Owp9IHNpZ2luZm9fdDsKIyAyMDggIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAp1bmlv biBfX3NpZ2FjdGlvbl91IHsKIHZvaWQgKCpfX3NhX2hhbmRsZXIpKGludCk7CiB2b2lkICgqX19z YV9zaWdhY3Rpb24pKGludCwgc3RydWN0IF9fc2lnaW5mbyAqLAogICAgICAgICB2b2lkICopOwp9 OwoKCnN0cnVjdCBfX3NpZ2FjdGlvbiB7CiB1bmlvbiBfX3NpZ2FjdGlvbl91IF9fc2lnYWN0aW9u X3U7CiB2b2lkICgqc2FfdHJhbXApKHZvaWQgKiwgaW50LCBpbnQsIHNpZ2luZm9fdCAqLCB2b2lk ICopOwogc2lnc2V0X3Qgc2FfbWFzazsKIGludCBzYV9mbGFnczsKfTsKCgoKCnN0cnVjdCBzaWdh Y3Rpb24gewogdW5pb24gX19zaWdhY3Rpb25fdSBfX3NpZ2FjdGlvbl91Owogc2lnc2V0X3Qgc2Ff bWFzazsKIGludCBzYV9mbGFnczsKfTsKIyAyNjMgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgi IDMgNAp0eXBlZGVmIHZvaWQgKCpzaWdfdCkgKGludCk7CgoKCgpzdHJ1Y3Qgc2lnYWx0c3RhY2sg ewogY2hhciAqc3Nfc3A7CiBpbnQgc3Nfc2l6ZTsKIGludCBzc19mbGFnczsKfTsKCnR5cGVkZWYg c3RydWN0IHNpZ2FsdHN0YWNrIHN0YWNrX3Q7CiMgMjg1ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25h bC5oIiAzIDQKc3RydWN0IHNpZ3ZlYyB7CiB2b2lkICgqc3ZfaGFuZGxlcikoaW50KTsKIGludCBz dl9tYXNrOwogaW50IHN2X2ZsYWdzOwp9OwojIDMwMyAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwu aCIgMyA0CnN0cnVjdCBzaWdzdGFjayB7CiBjaGFyICpzc19zcDsKIGludCBzc19vbnN0YWNrOwp9 OwojIDMzNiAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMyA0Cgp2b2lkICgqc2lnbmFsIChp bnQsIHZvaWQgKCopIChpbnQpKSkgKGludCk7CgojIDYzICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgi IDIgMyA0CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHN5c19zaWduYW1lWzMyXTsKZXh0ZXJu IGNvbnN0IGNoYXIgKmNvbnN0IHN5c19zaWdsaXN0WzMyXTsKCgoKaW50IHJhaXNlIChpbnQpOwoK aW50IGtpbGwgKHBpZF90LCBpbnQpOwppbnQgc2lnYWN0aW9uIChpbnQsIGNvbnN0IHN0cnVjdCBz aWdhY3Rpb24gKiwgc3RydWN0IHNpZ2FjdGlvbiAqKTsKaW50IHNpZ2FkZHNldCAoc2lnc2V0X3Qg KiwgaW50KTsKaW50IHNpZ2RlbHNldCAoc2lnc2V0X3QgKiwgaW50KTsKaW50IHNpZ2VtcHR5c2V0 IChzaWdzZXRfdCAqKTsKaW50IHNpZ2ZpbGxzZXQgKHNpZ3NldF90ICopOwppbnQgc2lnaXNtZW1i ZXIgKGNvbnN0IHNpZ3NldF90ICosIGludCk7CmludCBzaWdwZW5kaW5nIChzaWdzZXRfdCAqKTsK aW50IHNpZ3Byb2NtYXNrIChpbnQsIGNvbnN0IHNpZ3NldF90ICosIHNpZ3NldF90ICopOwppbnQg c2lnc3VzcGVuZCAoY29uc3Qgc2lnc2V0X3QgKik7CgppbnQga2lsbHBnIChwaWRfdCwgaW50KTsK aW50IHNpZ2Jsb2NrIChpbnQpOwppbnQgc2lnaW50ZXJydXB0IChpbnQsIGludCk7CmludCBzaWdo b2xkIChpbnQpOwppbnQgc2lncmVsc2UgKGludCk7CmludCBzaWdwYXVzZSAoaW50KTsKaW50IHNp Z3JldHVybiAoc3RydWN0IHNpZ2NvbnRleHQgKik7CmludCBzaWdzZXRtYXNrIChpbnQpOwppbnQg c2lndmVjIChpbnQsIHN0cnVjdCBzaWd2ZWMgKiwgc3RydWN0IHNpZ3ZlYyAqKTsKdm9pZCBwc2ln bmFsICh1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKik7CgoKCiMgMTkxICIvdXNyL2luY2x1ZGUv dW5pc3RkLmgiIDIgMyA0CgppbnQgcHJvZmlsIChjaGFyICosIGludCwgaW50LCBpbnQpOwpzc2l6 ZV90IHB3cml0ZSAoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCwgb2ZmX3QpOwppbnQgcmNtZCAo Y2hhciAqKiwgaW50LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBp bnQgKik7CgpjaGFyICpyZV9jb21wIChjb25zdCBjaGFyICopOwppbnQgcmVfZXhlYyAoY29uc3Qg Y2hhciAqKTsKaW50IHJlYWRsaW5rIChjb25zdCBjaGFyICosIGNoYXIgKiwgaW50KTsKaW50IHJl Ym9vdCAoaW50KTsKaW50IHJldm9rZSAoY29uc3QgY2hhciAqKTsKaW50IHJyZXN2cG9ydCAoaW50 ICopOwppbnQgcnVzZXJvayAoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3Qg Y2hhciAqKTsKY2hhciAqc2JyayAoaW50KTsKaW50IHNlbGVjdCAoaW50LCBmZF9zZXQgKiwgZmRf c2V0ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKaW50IHNldGVnaWQgKGdpZF90KTsK aW50IHNldGV1aWQgKHVpZF90KTsKaW50IHNldGdyb3VwcyAoaW50LCBjb25zdCBnaWRfdCAqKTsK dm9pZCBzZXRob3N0aWQgKGxvbmcpOwppbnQgc2V0aG9zdG5hbWUgKGNvbnN0IGNoYXIgKiwgaW50 KTsKaW50IHNldGtleSAoY29uc3QgY2hhciAqKTsKaW50IHNldGxvZ2luIChjb25zdCBjaGFyICop Owp2b2lkICpzZXRtb2RlIChjb25zdCBjaGFyICopOwppbnQgc2V0cGdycCAocGlkX3QgcGlkLCBw aWRfdCBwZ3JwKTsKaW50IHNldHJlZ2lkIChnaWRfdCwgZ2lkX3QpOwppbnQgc2V0cmV1aWQgKHVp ZF90LCB1aWRfdCk7CmludCBzZXRyZ2lkIChnaWRfdCk7CmludCBzZXRydWlkICh1aWRfdCk7CnZv aWQgc2V0dXNlcnNoZWxsICh2b2lkKTsKaW50IHN0cnRvZmZsYWdzIChjaGFyICoqLCB1X2xvbmcg KiwgdV9sb25nICopOwppbnQgc3dhcG9uIChjb25zdCBjaGFyICopOwppbnQgc3ltbGluayAoY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwp2b2lkIHN5bmMgKHZvaWQpOwppbnQgc3lzY2FsbCAo aW50LCAuLi4pOwppbnQgdHJ1bmNhdGUgKGNvbnN0IGNoYXIgKiwgb2ZmX3QpOwppbnQgdHR5c2xv dCAodm9pZCk7CnVuc2lnbmVkIGludCB1YWxhcm0gKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50 KTsKaW50IHVud2hpdGVvdXQgKGNvbnN0IGNoYXIgKik7CmludCB1c2xlZXAgKHVuc2lnbmVkIGlu dCk7CnZvaWQgKnZhbGxvYyAoc2l6ZV90KTsKcGlkX3QgdmZvcmsgKHZvaWQpOwoKZXh0ZXJuIGNo YXIgKnN1Ym9wdGFyZzsKaW50IGdldHN1Ym9wdCAoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNo YXIgKiopOwoKCmludCBnZXRhdHRybGlzdCAoY29uc3QgY2hhciosdm9pZCosdm9pZCosc2l6ZV90 LHVuc2lnbmVkIGxvbmcpOwppbnQgc2V0YXR0cmxpc3QgKGNvbnN0IGNoYXIqLHZvaWQqLHZvaWQq LHNpemVfdCx1bnNpZ25lZCBsb25nKTsKaW50IGV4Y2hhbmdlZGF0YSAoY29uc3QgY2hhciosY29u c3QgY2hhciosdW5zaWduZWQgbG9uZyk7CmludCBjaGVja3VzZXJhY2Nlc3MgKGNvbnN0IGNoYXIq LHVpZF90LGdpZF90KixpbnQsaW50LHVuc2lnbmVkIGxvbmcpOwppbnQgZ2V0ZGlyZW50cmllc2F0 dHIgKGludCx2b2lkKix2b2lkKixzaXplX3QsdW5zaWduZWQgbG9uZyosdW5zaWduZWQgbG9uZyos dW5zaWduZWQgbG9uZyosdW5zaWduZWQgbG9uZyk7CmludCBzZWFyY2hmcyAoY29uc3QgY2hhcios dm9pZCosdm9pZCosdW5zaWduZWQgbG9uZyx1bnNpZ25lZCBsb25nLHZvaWQqKTsKCmludCBmc2N0 bCAoY29uc3QgY2hhciAqLHVuc2lnbmVkIGxvbmcsdm9pZCosdW5zaWduZWQgbG9uZyk7CgoKCgoj IDE2MiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mv c3lzdGVtLmgiIDIKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMyA0CiMgODgg Ii91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNs aW1pdHMuaCIgMSAzIDQKIyA4OSAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAyIDMgNAojIDEw MiAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGlu ZS9wYXJhbS5oIiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvbWFjaGluZS9wYXJhbS5oIiAzIDQK IyAxICIvdXNyL2luY2x1ZGUvcHBjL3BhcmFtLmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVkZS9t YWNoaW5lL3BhcmFtLmgiIDIgMyA0CiMgMTAzICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDIg MyA0CiMgMSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvbGltaXRzLmgiIDEgMyA0CgoKCgoKIyAxICIv dXNyL2luY2x1ZGUvcHBjL2xpbWl0cy5oIiAxIDMgNAojIDcgIi91c3IvaW5jbHVkZS9tYWNoaW5l L2xpbWl0cy5oIiAyIDMgNAojIDEwNCAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAyIDMgNAoj IDE2NiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mv c3lzdGVtLmgiIDIKCgoKCgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Yt bm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9s aW1pdHMuaCIgMSAzIDQKIyAxMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1u b2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL2xp bWl0cy5oIiAzIDQKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hl Y2svbGliL2djYy1saWIvcG93ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvc3lzbGlt aXRzLmgiIDEgMyA0CgoKCgoKCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2Zz Zi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRl L2xpbWl0cy5oIiAxIDMgNAojIDEyMiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2Zz Zi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2VycGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRl L2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMgMTIzICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93 ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgOCAiL1Zv bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL2ZzZi1ub2NoZWNrL2xpYi9nY2MtbGliL3Bvd2Vy cGMtYXBwbGUtZGFyd2luNi41LzMuNC9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMgNAojIDEyICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvZnNmLW5vY2hlY2svbGliL2djYy1saWIvcG93 ZXJwYy1hcHBsZS1kYXJ3aW42LjUvMy40L2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgMTcyICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0u aCIgMgoKCgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z cmMvZ2NjL2h3aW50LmgiIDEKIyAzMyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny Yy9mc2YvZ2NjL3NyYy9nY2MvaHdpbnQuaCIKaW50IGZmc2wgKGxvbmcpOwoKCgppbnQgZmZzbGwg KGxvbmcgbG9uZyk7CiMgMTc2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz Zi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDIwNCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N5 cy90aW1lLmgiIDEgMyA0CiMgNjggIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKc3RydWN0 IHRpbWV2YWwgewogaW50MzJfdCB0dl9zZWM7CiBpbnQzMl90IHR2X3VzZWM7Cn07CgoKCgoKCnN0 cnVjdCB0aW1lc3BlYyB7CiB0aW1lX3QgdHZfc2VjOwogaW50MzJfdCB0dl9uc2VjOwp9OwojIDkz ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCB0aW1lem9uZSB7CiBpbnQgdHpf bWludXRlc3dlc3Q7CiBpbnQgdHpfZHN0dGltZTsKfTsKIyAxNDEgIi91c3IvaW5jbHVkZS9zeXMv dGltZS5oIiAzIDQKc3RydWN0IGl0aW1lcnZhbCB7CiBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZh bDsKIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwoKCgoKc3RydWN0IGNsb2NraW5mbyB7CiBp bnQgaHo7CiBpbnQgdGljazsKIGludCB0aWNrYWRqOwogaW50IHN0YXRoejsKIGludCBwcm9maHo7 Cn07CiMgMTc0ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRl L3RpbWUuaCIgMSAzIDQKIyA5NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CnN0cnVjdCB0bSB7 CiBpbnQgdG1fc2VjOwogaW50IHRtX21pbjsKIGludCB0bV9ob3VyOwogaW50IHRtX21kYXk7CiBp bnQgdG1fbW9uOwogaW50IHRtX3llYXI7CiBpbnQgdG1fd2RheTsKIGludCB0bV95ZGF5OwogaW50 IHRtX2lzZHN0OwogbG9uZyB0bV9nbXRvZmY7CiBjaGFyICp0bV96b25lOwp9OwojIDExNSAiL3Vz ci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBjaGFyICp0em5hbWVbXTsKCgoKY2hhciAqYXNj dGltZSAoY29uc3Qgc3RydWN0IHRtICopOwpjbG9ja190IGNsb2NrICh2b2lkKTsKY2hhciAqY3Rp bWUgKGNvbnN0IHRpbWVfdCAqKTsKZG91YmxlIGRpZmZ0aW1lICh0aW1lX3QsIHRpbWVfdCk7CnN0 cnVjdCB0bSAqZ210aW1lIChjb25zdCB0aW1lX3QgKik7CnN0cnVjdCB0bSAqbG9jYWx0aW1lIChj b25zdCB0aW1lX3QgKik7CnRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqKTsKc2l6ZV90IHN0cmZ0 aW1lIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0gKik7CnRp bWVfdCB0aW1lICh0aW1lX3QgKik7CgoKdm9pZCB0enNldCAodm9pZCk7CgoKCmNoYXIgKmFzY3Rp bWVfciAoY29uc3Qgc3RydWN0IHRtICosIGNoYXIgKik7CmNoYXIgKmN0aW1lX3IgKGNvbnN0IHRp bWVfdCAqLCBjaGFyICopOwpzdHJ1Y3QgdG0gKmdtdGltZV9yIChjb25zdCB0aW1lX3QgKiwgc3Ry dWN0IHRtICopOwpzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yIChjb25zdCB0aW1lX3QgKiwgc3RydWN0 IHRtICopOwpjaGFyICpzdHJwdGltZSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0cnVj dCB0bSAqKTsKY2hhciAqdGltZXpvbmUgKGludCwgaW50KTsKdm9pZCB0enNldHdhbGwgKHZvaWQp Owp0aW1lX3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKiBjb25zdCk7CnRpbWVfdCB0aW1lZ20gKHN0 cnVjdCB0bSAqIGNvbnN0KTsKCgoKaW50IG5hbm9zbGVlcCAoY29uc3Qgc3RydWN0IHRpbWVzcGVj ICosIHN0cnVjdCB0aW1lc3BlYyAqKTsKCgojIDE3NSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgi IDIgMyA0CgoKCgoKaW50IGFkanRpbWUgKGNvbnN0IHN0cnVjdCB0aW1ldmFsICosIHN0cnVjdCB0 aW1ldmFsICopOwppbnQgZnV0aW1lcyAoaW50LCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKTsKaW50 IGdldGl0aW1lciAoaW50LCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgZ2V0dGltZW9mZGF5IChz dHJ1Y3QgdGltZXZhbCAqLCBzdHJ1Y3QgdGltZXpvbmUgKik7CmludCBzZXRpdGltZXIgKGludCwg Y29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgc2V0dGlt ZW9mZGF5IChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqLCBjb25zdCBzdHJ1Y3QgdGltZXpvbmUgKik7 CmludCB1dGltZXMgKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRpbWV2YWwgKik7CgojIDIw NSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lz dGVtLmgiIDIKIyAyMTcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2dj Yy9zcmMvZ2NjL3N5c3RlbS5oIgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMgNAojIDIy ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5o IiAxIDMgNAojIDIxMiAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzIDQKc3RydWN0IGZsb2Nr IHsKIG9mZl90IGxfc3RhcnQ7CiBvZmZfdCBsX2xlbjsKIHBpZF90IGxfcGlkOwogc2hvcnQgbF90 eXBlOwogc2hvcnQgbF93aGVuY2U7Cn07CgoKCgoKCnN0cnVjdCByYWR2aXNvcnkgewogICAgICAg b2ZmX3QgcmFfb2Zmc2V0OwogICAgICAgaW50IHJhX2NvdW50Owp9OwojIDI0MSAiL3Vzci9pbmNs dWRlL3N5cy9mY250bC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgZnN0b3JlIHsKIHVfaW50MzJfdCBm c3RfZmxhZ3M7CiBpbnQgZnN0X3Bvc21vZGU7CiBvZmZfdCBmc3Rfb2Zmc2V0Owogb2ZmX3QgZnN0 X2xlbmd0aDsKIG9mZl90IGZzdF9ieXRlc2FsbG9jOwp9IGZzdG9yZV90OwoKCgp0eXBlZGVmIHN0 cnVjdCBmYm9vdHN0cmFwdHJhbnNmZXIgewogIG9mZl90IGZidF9vZmZzZXQ7CiAgc2l6ZV90IGZi dF9sZW5ndGg7CiAgdm9pZCAqZmJ0X2J1ZmZlcjsKfSBmYm9vdHN0cmFwdHJhbnNmZXJfdDsKIyAy NzMgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CnN0cnVjdCBsb2cycGh5cyB7CiB1X2lu dDMyX3QgbDJwX2ZsYWdzOwogb2ZmX3QgbDJwX2NvbnRpZ2J5dGVzOwogb2ZmX3QgbDJwX2Rldm9m ZnNldDsKfTsKIyAyODcgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMyA0CgppbnQgb3BlbiAo Y29uc3QgY2hhciAqLCBpbnQsIC4uLik7CmludCBjcmVhdCAoY29uc3QgY2hhciAqLCBtb2RlX3Qp OwppbnQgZmNudGwgKGludCwgaW50LCAuLi4pOwoKaW50IGZsb2NrIChpbnQsIGludCk7CgoKIyAy MyAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIgMyA0CiMgMjE4ICIvVm9sdW1lcy9VRlNfUGFydGl0 aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDI1NSAiL1ZvbHVt ZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVtLmgiCiMg MSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDEgMyA0CiMgMTIyICIvdXNyL2luY2x1ZGUvc3lz L3dhaXQuaCIgMyA0CnVuaW9uIHdhaXQgewogaW50IHdfc3RhdHVzOwoKCgogc3RydWN0IHsKCgoK CgoKCiAgdW5zaWduZWQgaW50IHdfRmlsbGVyOjE2LAogICAgd19SZXRjb2RlOjgsCiAgICB3X0Nv cmVkdW1wOjEsCiAgICB3X1Rlcm1zaWc6NzsKCiB9IHdfVDsKCgoKCgogc3RydWN0IHsKCgoKCgoK ICB1bnNpZ25lZCBpbnQgd19GaWxsZXI6MTYsCiAgICB3X1N0b3BzaWc6OCwKICAgIHdfU3RvcHZh bDo4OwoKIH0gd19TOwp9OwojIDE3MiAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMgNAoKc3Ry dWN0IHJ1c2FnZTsKCnBpZF90IHdhaXQgKGludCAqKTsKcGlkX3Qgd2FpdHBpZCAocGlkX3QsIGlu dCAqLCBpbnQpOwoKcGlkX3Qgd2FpdDMgKGludCAqLCBpbnQsIHN0cnVjdCBydXNhZ2UgKik7CnBp ZF90IHdhaXQ0IChwaWRfdCwgaW50ICosIGludCwgc3RydWN0IHJ1c2FnZSAqKTsKCgojIDI1NiAi L1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lzdGVt LmgiIDIKIyAzNDIgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z cmMvZ2NjL3N5c3RlbS5oIgpleHRlcm4gY29uc3QgY2hhciAqc3Ryc2lnbmFsIChpbnQpOwojIDM5 MiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mvc3lz dGVtLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDEgMyA0CiMgNzAgIi91c3IvaW5j bHVkZS9zeXMvc3RhdC5oIiAzIDQKc3RydWN0IG9zdGF0IHsKIHVfaW50MTZfdCBzdF9kZXY7CiBp bm9fdCBzdF9pbm87CiBtb2RlX3Qgc3RfbW9kZTsKIG5saW5rX3Qgc3Rfbmxpbms7CiB1X2ludDE2 X3Qgc3RfdWlkOwogdV9pbnQxNl90IHN0X2dpZDsKIHVfaW50MTZfdCBzdF9yZGV2OwogaW50MzJf dCBzdF9zaXplOwogc3RydWN0IHRpbWVzcGVjIHN0X2F0aW1lc3BlYzsKIHN0cnVjdCB0aW1lc3Bl YyBzdF9tdGltZXNwZWM7CiBzdHJ1Y3QgdGltZXNwZWMgc3RfY3RpbWVzcGVjOwogaW50MzJfdCBz dF9ibGtzaXplOwogaW50MzJfdCBzdF9ibG9ja3M7CiB1X2ludDMyX3Qgc3RfZmxhZ3M7CiB1X2lu dDMyX3Qgc3RfZ2VuOwp9OwoKCnN0cnVjdCBzdGF0IHsKIGRldl90IHN0X2RldjsKIGlub190IHN0 X2lubzsKIG1vZGVfdCBzdF9tb2RlOwogbmxpbmtfdCBzdF9ubGluazsKIHVpZF90IHN0X3VpZDsK IGdpZF90IHN0X2dpZDsKIGRldl90IHN0X3JkZXY7Cgogc3RydWN0IHRpbWVzcGVjIHN0X2F0aW1l c3BlYzsKIHN0cnVjdCB0aW1lc3BlYyBzdF9tdGltZXNwZWM7CiBzdHJ1Y3QgdGltZXNwZWMgc3Rf Y3RpbWVzcGVjOwojIDEwOSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNAogb2ZmX3Qgc3Rf c2l6ZTsKIGludDY0X3Qgc3RfYmxvY2tzOwogdV9pbnQzMl90IHN0X2Jsa3NpemU7CiB1X2ludDMy X3Qgc3RfZmxhZ3M7CiB1X2ludDMyX3Qgc3RfZ2VuOwogaW50MzJfdCBzdF9sc3BhcmU7CiBpbnQ2 NF90IHN0X3FzcGFyZVsyXTsKfTsKIyAyMTggIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQK CmludCBjaG1vZCAoY29uc3QgY2hhciAqLCBtb2RlX3QpOwppbnQgZnN0YXQgKGludCwgc3RydWN0 IHN0YXQgKik7CmludCBta2RpciAoY29uc3QgY2hhciAqLCBtb2RlX3QpOwppbnQgbWtmaWZvIChj b25zdCBjaGFyICosIG1vZGVfdCk7CmludCBzdGF0IChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0 ICopOwptb2RlX3QgdW1hc2sgKG1vZGVfdCk7CgppbnQgY2hmbGFncyAoY29uc3QgY2hhciAqLCB1 X2xvbmcpOwppbnQgZmNoZmxhZ3MgKGludCwgdV9sb25nKTsKaW50IGZjaG1vZCAoaW50LCBtb2Rl X3QpOwppbnQgbHN0YXQgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7CgoKIyAzOTMgIi9W b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5o IiAyCiMgNTAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3Jj L2djYy9zeXN0ZW0uaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz Zi9nY2Mvc3JjL2luY2x1ZGUvbGliaWJlcnR5LmgiIDEKIyA0NiAiL1ZvbHVtZXMvVUZTX1BhcnRp dGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9pbmNsdWRlL2xpYmliZXJ0eS5oIgojIDEgIi9W b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dl cnBjLWFwcGxlLWRhcndpbjYuNS8zLjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyA0NyAiL1Zv bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9pbmNsdWRlL2xpYmli ZXJ0eS5oIiAyCgoKCgoKCgpleHRlcm4gY2hhciAqKmJ1aWxkYXJndiAoY29uc3QgY2hhciAqKSBf X2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCBmcmVlYXJndiAoY2hh ciAqKik7CgoKCgpleHRlcm4gY2hhciAqKmR1cGFyZ3YgKGNoYXIgKiopIF9fYXR0cmlidXRlX18g KChfX21hbGxvY19fKSk7CiMgNzggIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMv ZnNmL2djYy9zcmMvaW5jbHVkZS9saWJpYmVydHkuaCIKZXh0ZXJuIGNoYXIgKmJhc2VuYW1lIChj b25zdCBjaGFyICopOwoKCgoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKmxiYXNlbmFtZSAoY29uc3Qg Y2hhciAqKTsKCgoKZXh0ZXJuIGNoYXIgKmxyZWFscGF0aCAoY29uc3QgY2hhciAqKTsKCgoKCgpl eHRlcm4gY2hhciAqY29uY2F0IChjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9f bWFsbG9jX18pKTsKIyAxMDUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNm L2djYy9zcmMvaW5jbHVkZS9saWJpYmVydHkuaCIKZXh0ZXJuIGNoYXIgKnJlY29uY2F0IChjaGFy ICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoK CmV4dGVybiB1bnNpZ25lZCBsb25nIGNvbmNhdF9sZW5ndGggKGNvbnN0IGNoYXIgKiwgLi4uKTsK CgoKCgoKZXh0ZXJuIGNoYXIgKmNvbmNhdF9jb3B5IChjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4u KTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNvbmNhdF9jb3B5MiAoY29uc3QgY2hhciAqLCAuLi4pOwoK CgpleHRlcm4gY2hhciAqbGliaWJlcnR5X2NvbmNhdF9wdHI7CiMgMTQxICIvVm9sdW1lcy9VRlNf UGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvbGliaWJlcnR5LmgiCmV4 dGVybiBpbnQgZmRtYXRjaCAoaW50IGZkMSwgaW50IGZkMik7CgoKCgpleHRlcm4gY2hhciAqIGdl dHB3ZCAodm9pZCk7CgoKCmV4dGVybiBsb25nIGdldF9ydW5fdGltZSAodm9pZCk7CgoKCgpleHRl cm4gY2hhciAqbWFrZV9yZWxhdGl2ZV9wcmVmaXggKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICopOwoKCgoKZXh0ZXJuIGNoYXIgKmNob29zZV90ZW1wX2Jhc2UgKHZvaWQp IF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVybiBjaGFyICptYWtlX3RlbXBf ZmlsZSAoY29uc3QgY2hhciAqKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRl cm4gY29uc3QgY2hhciAqc3BhY2VzIChpbnQgY291bnQpOwoKCgoKZXh0ZXJuIGludCBlcnJub19t YXggKHZvaWQpOwoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKnN0cmVycm5vIChpbnQpOwoKCgpleHRl cm4gaW50IHN0cnRvZXJybm8gKGNvbnN0IGNoYXIgKik7CgoKCmV4dGVybiBjaGFyICp4c3RyZXJy b3IgKGludCk7CgoKCgpleHRlcm4gaW50IHNpZ25vX21heCAodm9pZCk7CiMgMjAzICIvVm9sdW1l cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvbGliaWJlcnR5 LmgiCmV4dGVybiBjb25zdCBjaGFyICpzdHJzaWdubyAoaW50KTsKCgoKZXh0ZXJuIGludCBzdHJ0 b3NpZ25vIChjb25zdCBjaGFyICopOwoKCgpleHRlcm4gaW50IHhhdGV4aXQgKHZvaWQgKCpmbikg KHZvaWQpKTsKCgoKZXh0ZXJuIHZvaWQgeGV4aXQgKGludCBzdGF0dXMpIF9fYXR0cmlidXRlX18g KChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIHZvaWQgeG1hbGxvY19zZXRfcHJvZ3JhbV9uYW1l IChjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHhtYWxsb2NfZmFpbGVkIChzaXplX3QpIF9f YXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqIHhtYWxsb2Mg KHNpemVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAq IHhyZWFsbG9jICh2b2lkICosIHNpemVfdCk7CgoKCgpleHRlcm4gdm9pZCAqIHhjYWxsb2MgKHNp emVfdCwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gY2hh ciAqeHN0cmR1cCAoY29uc3QgY2hhciAqKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoK CgpleHRlcm4gdm9pZCAqIHhtZW1kdXAgKGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QpIF9f YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKZXh0ZXJuIGRvdWJsZSBwaHlzbWVtX3RvdGFs ICh2b2lkKTsKZXh0ZXJuIGRvdWJsZSBwaHlzbWVtX2F2YWlsYWJsZSAodm9pZCk7CgoKCgoKZXh0 ZXJuIGNvbnN0IGNoYXIgX2hleF92YWx1ZVsyNTZdOwpleHRlcm4gdm9pZCBoZXhfaW5pdCAodm9p ZCk7CiMgMjc0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3Jj L2luY2x1ZGUvbGliaWJlcnR5LmgiCmV4dGVybiBpbnQgcGV4ZWN1dGUgKGNvbnN0IGNoYXIgKiwg Y2hhciAqIGNvbnN0ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICoqLCBjaGFy ICoqLCBpbnQpOwoKCgoKZXh0ZXJuIGludCBwd2FpdCAoaW50LCBpbnQgKiwgaW50KTsKCgoKCgpl eHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1 dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgyKSkpOwojIDMwNCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny Yy9mc2YvZ2NjL3NyYy9pbmNsdWRlL2xpYmliZXJ0eS5oIgpleHRlcm4gdm9pZCAqIENfYWxsb2Nh IChzaXplX3QpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgNTAyICIvVm9sdW1lcy9V RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDEg Ii9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvaW5jbHVkZS9z eW1jYXQuaCIgMQojIDUwMyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv Z2NjL3NyYy9nY2Mvc3lzdGVtLmgiIDIKIyA1NjEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGlu c2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3N5c3RlbS5oIgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0 aXRpb24vcGluc2tpYS9mc2Ytbm9jaGVjay9saWIvZ2NjLWxpYi9wb3dlcnBjLWFwcGxlLWRhcndp bjYuNS8zLjQvaW5jbHVkZS9zdGRib29sLmgiIDEgMyA0CiMgNTYyICIvVm9sdW1lcy9VRlNfUGFy dGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9zeXN0ZW0uaCIgMgojIDI0ICIvVm9s dW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLXByZXR0eS1w cmludC5jIiAyCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2Nj L3NyYy9nY2MvY29yZXR5cGVzLmgiIDEKIyA0MCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5z a2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvY29yZXR5cGVzLmgiCnN0cnVjdCBydHhfZGVmOwp0eXBl ZGVmIHN0cnVjdCBydHhfZGVmICpydHg7CnN0cnVjdCBydHZlY19kZWY7CnR5cGVkZWYgc3RydWN0 IHJ0dmVjX2RlZiAqcnR2ZWM7CnVuaW9uIHRyZWVfbm9kZTsKdHlwZWRlZiB1bmlvbiB0cmVlX25v ZGUgKnRyZWU7CgoKCgoKc3RydWN0IGNwcF9yZWFkZXI7CiMgMjUgIi9Wb2x1bWVzL1VGU19QYXJ0 aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtcHJldHR5LXByaW50LmMiIDIKIyAx ICJ0bS5oIiAxCgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2dj Yy9zcmMvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiIDEKIyAxMTcgIi9Wb2x1bWVzL1VGU19Q YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAw LmgiCmV4dGVybiBpbnQgdGFyZ2V0X2ZsYWdzOwojIDMzNCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZW51 bSBwcm9jZXNzb3JfdHlwZQogewogICBQUk9DRVNTT1JfUklPUzEsCiAgIFBST0NFU1NPUl9SSU9T MiwKICAgUFJPQ0VTU09SX1JTNjRBLAogICBQUk9DRVNTT1JfTVBDQ09SRSwKICAgUFJPQ0VTU09S X1BQQzQwMywKICAgUFJPQ0VTU09SX1BQQzQwNSwKICAgUFJPQ0VTU09SX1BQQzQ0MCwKICAgUFJP Q0VTU09SX1BQQzYwMSwKICAgUFJPQ0VTU09SX1BQQzYwMywKICAgUFJPQ0VTU09SX1BQQzYwNCwK ICAgUFJPQ0VTU09SX1BQQzYwNGUsCiAgIFBST0NFU1NPUl9QUEM2MjAsCiAgIFBST0NFU1NPUl9Q UEM2MzAsCiAgIFBST0NFU1NPUl9QUEM3NTAsCiAgIFBST0NFU1NPUl9QUEM3NDAwLAogICBQUk9D RVNTT1JfUFBDNzQ1MCwKICAgUFJPQ0VTU09SX1BQQzg1NDAsCiAgIFBST0NFU1NPUl9QT1dFUjQK fTsKCmV4dGVybiBlbnVtIHByb2Nlc3Nvcl90eXBlIHJzNjAwMF9jcHU7CiMgNDA3ICIvVm9sdW1l cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jb25maWcvcnM2MDAw L3JzNjAwMC5oIgpzdHJ1Y3QgcnM2MDAwX2NwdV9zZWxlY3QKewogIGNvbnN0IGNoYXIgKnN0cmlu ZzsKICBjb25zdCBjaGFyICpuYW1lOwogIGludCBzZXRfdHVuZV9wOwogIGludCBzZXRfYXJjaF9w Owp9OwoKZXh0ZXJuIHN0cnVjdCByczYwMDBfY3B1X3NlbGVjdCByczYwMDBfc2VsZWN0W107CgoK ZXh0ZXJuIGNvbnN0IGNoYXIgKnJzNjAwMF9kZWJ1Z19uYW1lOwpleHRlcm4gY29uc3QgY2hhciAq cnM2MDAwX2FiaV9zdHJpbmc7CmV4dGVybiBpbnQgcnM2MDAwX2RlYnVnX3N0YWNrOwpleHRlcm4g aW50IHJzNjAwMF9kZWJ1Z19hcmc7CgoKCgpleHRlcm4gY29uc3QgY2hhciAqcnM2MDAwX3RyYWNl YmFja19uYW1lOwoKCgpleHRlcm4gY29uc3QgY2hhciAqcnM2MDAwX2xvbmdfZG91YmxlX3NpemVf c3RyaW5nOwpleHRlcm4gaW50IHJzNjAwMF9sb25nX2RvdWJsZV90eXBlX3NpemU7CmV4dGVybiBp bnQgcnM2MDAwX2FsdGl2ZWNfYWJpOwpleHRlcm4gaW50IHJzNjAwMF9zcGVfYWJpOwpleHRlcm4g aW50IHJzNjAwMF9pc2VsOwpleHRlcm4gaW50IHJzNjAwMF9zcGU7CmV4dGVybiBpbnQgcnM2MDAw X2Zsb2F0X2dwcnM7CmV4dGVybiBjb25zdCBjaGFyICpyczYwMDBfZmxvYXRfZ3Byc19zdHJpbmc7 CmV4dGVybiBjb25zdCBjaGFyICpyczYwMDBfaXNlbF9zdHJpbmc7CmV4dGVybiBjb25zdCBjaGFy ICpyczYwMDBfc3BlX3N0cmluZzsKZXh0ZXJuIGNvbnN0IGNoYXIgKnJzNjAwMF9hbHRpdmVjX3Zy c2F2ZV9zdHJpbmc7CmV4dGVybiBpbnQgcnM2MDAwX2FsdGl2ZWNfdnJzYXZlOwpleHRlcm4gY29u c3QgY2hhciAqcnM2MDAwX2xvbmdjYWxsX3N3aXRjaDsKZXh0ZXJuIGludCByczYwMDBfZGVmYXVs dF9sb25nX2NhbGxzOwojIDk5OSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m c2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZXh0ZXJuIGludCByczYwMDBf YnJhbmNoX2Nvc3Q7CmV4dGVybiBjb25zdCBjaGFyICpyczYwMDBfYnJhbmNoX2Nvc3Rfc3RyaW5n OwojIDExMzkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMv Z2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiCmVudW0gcmVnX2NsYXNzCnsKICBOT19SRUdTLAog IEJBU0VfUkVHUywKICBHRU5FUkFMX1JFR1MsCiAgRkxPQVRfUkVHUywKICBBTFRJVkVDX1JFR1Ms CiAgVlJTQVZFX1JFR1MsCiAgVlNDUl9SRUdTLAogIFNQRV9BQ0NfUkVHUywKICBTUEVGU0NSX1JF R1MsCiAgTk9OX1NQRUNJQUxfUkVHUywKICBNUV9SRUdTLAogIExJTktfUkVHUywKICBDVFJfUkVH UywKICBMSU5LX09SX0NUUl9SRUdTLAogIFNQRUNJQUxfUkVHUywKICBTUEVDX09SX0dFTl9SRUdT LAogIENSMF9SRUdTLAogIENSX1JFR1MsCiAgTk9OX0ZMT0FUX1JFR1MsCiAgWEVSX1JFR1MsCiAg QUxMX1JFR1MsCiAgTElNX1JFR19DTEFTU0VTCn07CiMgMTM5NyAiL1ZvbHVtZXMvVUZTX1BhcnRp dGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIK ZW51bSByczYwMDBfYWJpIHsKICBBQklfTk9ORSwKICBBQklfQUlYLAogIEFCSV9WNCwKICBBQklf REFSV0lOCn07CgpleHRlcm4gZW51bSByczYwMDBfYWJpIHJzNjAwMF9jdXJyZW50X2FiaTsKCgp0 eXBlZGVmIHN0cnVjdCByczYwMDBfc3RhY2sgewogIGludCBmaXJzdF9ncF9yZWdfc2F2ZTsKICBp bnQgZmlyc3RfZnBfcmVnX3NhdmU7CiAgaW50IGZpcnN0X2FsdGl2ZWNfcmVnX3NhdmU7CiAgaW50 IGxyX3NhdmVfcDsKICBpbnQgY3Jfc2F2ZV9wOwogIHVuc2lnbmVkIGludCB2cnNhdmVfbWFzazsK ICBpbnQgdG9jX3NhdmVfcDsKICBpbnQgcHVzaF9wOwogIGludCBjYWxsc19wOwogIGVudW0gcnM2 MDAwX2FiaSBhYmk7CiAgaW50IGdwX3NhdmVfb2Zmc2V0OwogIGludCBmcF9zYXZlX29mZnNldDsK ICBpbnQgYWx0aXZlY19zYXZlX29mZnNldDsKICBpbnQgbHJfc2F2ZV9vZmZzZXQ7CiAgaW50IGNy X3NhdmVfb2Zmc2V0OwogIGludCB2cnNhdmVfc2F2ZV9vZmZzZXQ7CiAgaW50IHNwZV9ncF9zYXZl X29mZnNldDsKICBpbnQgdG9jX3NhdmVfb2Zmc2V0OwogIGludCB2YXJhcmdzX3NhdmVfb2Zmc2V0 OwogIGludCBlaHJkX29mZnNldDsKICBpbnQgcmVnX3NpemU7CiAgaW50IHZhcmFyZ3Nfc2l6ZTsK ICBpbnQgdmFyc19zaXplOwogIGludCBwYXJtX3NpemU7CiAgaW50IHNhdmVfc2l6ZTsKICBpbnQg Zml4ZWRfc2l6ZTsKICBpbnQgZ3Bfc2l6ZTsKICBpbnQgZnBfc2l6ZTsKICBpbnQgYWx0aXZlY19z aXplOwogIGludCBjcl9zaXplOwogIGludCBscl9zaXplOwogIGludCB2cnNhdmVfc2l6ZTsKICBp bnQgYWx0aXZlY19wYWRkaW5nX3NpemU7CgogIGludCBzcGVfZ3Bfc2l6ZTsKICBpbnQgc3BlX3Bh ZGRpbmdfc2l6ZTsKICBpbnQgdG9jX3NpemU7CiAgaW50IHRvdGFsX3NpemU7CiAgaW50IHNwZV82 NGJpdF9yZWdzX3VzZWQ7Cn0gcnM2MDAwX3N0YWNrX3Q7CiMgMTY3OCAiL1ZvbHVtZXMvVUZTX1Bh cnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAu aCIKdHlwZWRlZiBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbgp7CgogIGludCBzeXN2X3ZhcmFyZ3Nf cDsKCiAgaW50IHJhX25lZWRzX2Z1bGxfZnJhbWU7CgogIGludCBpbnNuX2NoYWluX3NjYW5uZWRf cDsKfSBtYWNoaW5lX2Z1bmN0aW9uOwojIDE3MDYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGlu c2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgiCnR5cGVkZWYg c3RydWN0IHJzNjAwMF9hcmdzCnsKICBpbnQgd29yZHM7CiAgaW50IGZyZWdubzsKICBpbnQgdnJl Z25vOwogIGludCBuYXJnc19wcm90b3R5cGU7CiAgaW50IG9yaWdfbmFyZ3M7CiAgaW50IHByb3Rv dHlwZTsKICBpbnQgY2FsbF9jb29raWU7CiAgaW50IHN5c3ZfZ3JlZ25vOwp9IENVTVVMQVRJVkVf QVJHUzsKIyAyMzg1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv c3JjL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oIgpleHRlcm4gcnR4IHJzNjAwMF9jb21wYXJl X29wMDsKZXh0ZXJuIHJ0eCByczYwMDBfY29tcGFyZV9vcDE7CmV4dGVybiBpbnQgcnM2MDAwX2Nv bXBhcmVfZnBfcDsKIyAyNDAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz Zi9nY2Mvc3JjL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oIgpleHRlcm4gaW50IHRvY19pbml0 aWFsaXplZDsKIyAyNTAzICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n Y2Mvc3JjL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oIgpleHRlcm4gY2hhciByczYwMDBfcmVn X25hbWVzW11bOF07CiMgMjgxNSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m c2YvZ2NjL3NyYy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaCIKZXh0ZXJuIGludCBmbGFnX3Bp YzsKZXh0ZXJuIGludCBvcHRpbWl6ZTsKZXh0ZXJuIGludCBmbGFnX2V4cGVuc2l2ZV9vcHRpbWl6 YXRpb25zOwpleHRlcm4gaW50IGZyYW1lX3BvaW50ZXJfbmVlZGVkOwoKZW51bSByczYwMDBfYnVp bHRpbnMKewoKICBBTFRJVkVDX0JVSUxUSU5fU1RfSU5URVJOQUxfNHNpLAogIEFMVElWRUNfQlVJ TFRJTl9MRF9JTlRFUk5BTF80c2ksCiAgQUxUSVZFQ19CVUlMVElOX1NUX0lOVEVSTkFMXzhoaSwK ICBBTFRJVkVDX0JVSUxUSU5fTERfSU5URVJOQUxfOGhpLAogIEFMVElWRUNfQlVJTFRJTl9TVF9J TlRFUk5BTF8xNnFpLAogIEFMVElWRUNfQlVJTFRJTl9MRF9JTlRFUk5BTF8xNnFpLAogIEFMVElW RUNfQlVJTFRJTl9TVF9JTlRFUk5BTF80c2YsCiAgQUxUSVZFQ19CVUlMVElOX0xEX0lOVEVSTkFM XzRzZiwKICBBTFRJVkVDX0JVSUxUSU5fVkFERFVCTSwKICBBTFRJVkVDX0JVSUxUSU5fVkFERFVI TSwKICBBTFRJVkVDX0JVSUxUSU5fVkFERFVXTSwKICBBTFRJVkVDX0JVSUxUSU5fVkFEREZQLAog IEFMVElWRUNfQlVJTFRJTl9WQUREQ1VXLAogIEFMVElWRUNfQlVJTFRJTl9WQUREVUJTLAogIEFM VElWRUNfQlVJTFRJTl9WQUREU0JTLAogIEFMVElWRUNfQlVJTFRJTl9WQUREVUhTLAogIEFMVElW RUNfQlVJTFRJTl9WQUREU0hTLAogIEFMVElWRUNfQlVJTFRJTl9WQUREVVdTLAogIEFMVElWRUNf QlVJTFRJTl9WQUREU1dTLAogIEFMVElWRUNfQlVJTFRJTl9WQU5ELAogIEFMVElWRUNfQlVJTFRJ Tl9WQU5EQywKICBBTFRJVkVDX0JVSUxUSU5fVkFWR1VCLAogIEFMVElWRUNfQlVJTFRJTl9WQVZH U0IsCiAgQUxUSVZFQ19CVUlMVElOX1ZBVkdVSCwKICBBTFRJVkVDX0JVSUxUSU5fVkFWR1NILAog IEFMVElWRUNfQlVJTFRJTl9WQVZHVVcsCiAgQUxUSVZFQ19CVUlMVElOX1ZBVkdTVywKICBBTFRJ VkVDX0JVSUxUSU5fVkNGVVgsCiAgQUxUSVZFQ19CVUlMVElOX1ZDRlNYLAogIEFMVElWRUNfQlVJ TFRJTl9WQ1RTWFMsCiAgQUxUSVZFQ19CVUlMVElOX1ZDVFVYUywKICBBTFRJVkVDX0JVSUxUSU5f VkNNUEJGUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVUIsCiAgQUxUSVZFQ19CVUlMVElOX1ZD TVBFUVVILAogIEFMVElWRUNfQlVJTFRJTl9WQ01QRVFVVywKICBBTFRJVkVDX0JVSUxUSU5fVkNN UEVRRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBHRUZQLAogIEFMVElWRUNfQlVJTFRJTl9WQ01Q R1RVQiwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU0IsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBH VFVILAogIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RTSCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdU VVcsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBHVFNXLAogIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RG UCwKICBBTFRJVkVDX0JVSUxUSU5fVkVYUFRFRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZMT0dFRlAs CiAgQUxUSVZFQ19CVUlMVElOX1ZNQURERlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZNQVhVQiwKICBB TFRJVkVDX0JVSUxUSU5fVk1BWFNCLAogIEFMVElWRUNfQlVJTFRJTl9WTUFYVUgsCiAgQUxUSVZF Q19CVUlMVElOX1ZNQVhTSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1BWFVXLAogIEFMVElWRUNfQlVJ TFRJTl9WTUFYU1csCiAgQUxUSVZFQ19CVUlMVElOX1ZNQVhGUCwKICBBTFRJVkVDX0JVSUxUSU5f Vk1IQUREU0hTLAogIEFMVElWRUNfQlVJTFRJTl9WTUhSQUREU0hTLAogIEFMVElWRUNfQlVJTFRJ Tl9WTUxBRERVSE0sCiAgQUxUSVZFQ19CVUlMVElOX1ZNUkdIQiwKICBBTFRJVkVDX0JVSUxUSU5f Vk1SR0hILAogIEFMVElWRUNfQlVJTFRJTl9WTVJHSFcsCiAgQUxUSVZFQ19CVUlMVElOX1ZNUkdM QiwKICBBTFRJVkVDX0JVSUxUSU5fVk1SR0xILAogIEFMVElWRUNfQlVJTFRJTl9WTVJHTFcsCiAg QUxUSVZFQ19CVUlMVElOX1ZNU1VNVUJNLAogIEFMVElWRUNfQlVJTFRJTl9WTVNVTU1CTSwKICBB TFRJVkVDX0JVSUxUSU5fVk1TVU1VSE0sCiAgQUxUSVZFQ19CVUlMVElOX1ZNU1VNU0hNLAogIEFM VElWRUNfQlVJTFRJTl9WTVNVTVVIUywKICBBTFRJVkVDX0JVSUxUSU5fVk1TVU1TSFMsCiAgQUxU SVZFQ19CVUlMVElOX1ZNSU5VQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1JTlNCLAogIEFMVElWRUNf QlVJTFRJTl9WTUlOVUgsCiAgQUxUSVZFQ19CVUlMVElOX1ZNSU5TSCwKICBBTFRJVkVDX0JVSUxU SU5fVk1JTlVXLAogIEFMVElWRUNfQlVJTFRJTl9WTUlOU1csCiAgQUxUSVZFQ19CVUlMVElOX1ZN SU5GUCwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVVQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVT QiwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVVSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTEVTSCwK ICBBTFRJVkVDX0JVSUxUSU5fVk1VTE9VQiwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTE9TQiwKICBB TFRJVkVDX0JVSUxUSU5fVk1VTE9VSCwKICBBTFRJVkVDX0JVSUxUSU5fVk1VTE9TSCwKICBBTFRJ VkVDX0JVSUxUSU5fVk5NU1VCRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZOT1IsCiAgQUxUSVZFQ19C VUlMVElOX1ZPUiwKICBBTFRJVkVDX0JVSUxUSU5fVlNFTF80U0ksCiAgQUxUSVZFQ19CVUlMVElO X1ZTRUxfNFNGLAogIEFMVElWRUNfQlVJTFRJTl9WU0VMXzhISSwKICBBTFRJVkVDX0JVSUxUSU5f VlNFTF8xNlFJLAogIEFMVElWRUNfQlVJTFRJTl9WUEVSTV80U0ksCiAgQUxUSVZFQ19CVUlMVElO X1ZQRVJNXzRTRiwKICBBTFRJVkVDX0JVSUxUSU5fVlBFUk1fOEhJLAogIEFMVElWRUNfQlVJTFRJ Tl9WUEVSTV8xNlFJLAogIEFMVElWRUNfQlVJTFRJTl9WUEtVSFVNLAogIEFMVElWRUNfQlVJTFRJ Tl9WUEtVV1VNLAogIEFMVElWRUNfQlVJTFRJTl9WUEtQWCwKICBBTFRJVkVDX0JVSUxUSU5fVlBL VUhTUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLU0hTUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLVVdT UywKICBBTFRJVkVDX0JVSUxUSU5fVlBLU1dTUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLVUhVUywK ICBBTFRJVkVDX0JVSUxUSU5fVlBLU0hVUywKICBBTFRJVkVDX0JVSUxUSU5fVlBLVVdVUywKICBB TFRJVkVDX0JVSUxUSU5fVlBLU1dVUywKICBBTFRJVkVDX0JVSUxUSU5fVlJFRlAsCiAgQUxUSVZF Q19CVUlMVElOX1ZSRklNLAogIEFMVElWRUNfQlVJTFRJTl9WUkZJTiwKICBBTFRJVkVDX0JVSUxU SU5fVlJGSVAsCiAgQUxUSVZFQ19CVUlMVElOX1ZSRklaLAogIEFMVElWRUNfQlVJTFRJTl9WUkxC LAogIEFMVElWRUNfQlVJTFRJTl9WUkxILAogIEFMVElWRUNfQlVJTFRJTl9WUkxXLAogIEFMVElW RUNfQlVJTFRJTl9WUlNRUlRFRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZTTEIsCiAgQUxUSVZFQ19C VUlMVElOX1ZTTEgsCiAgQUxUSVZFQ19CVUlMVElOX1ZTTFcsCiAgQUxUSVZFQ19CVUlMVElOX1ZT TCwKICBBTFRJVkVDX0JVSUxUSU5fVlNMTywKICBBTFRJVkVDX0JVSUxUSU5fVlNQTFRCLAogIEFM VElWRUNfQlVJTFRJTl9WU1BMVEgsCiAgQUxUSVZFQ19CVUlMVElOX1ZTUExUVywKICBBTFRJVkVD X0JVSUxUSU5fVlNQTFRJU0IsCiAgQUxUSVZFQ19CVUlMVElOX1ZTUExUSVNILAogIEFMVElWRUNf QlVJTFRJTl9WU1BMVElTVywKICBBTFRJVkVDX0JVSUxUSU5fVlNSQiwKICBBTFRJVkVDX0JVSUxU SU5fVlNSSCwKICBBTFRJVkVDX0JVSUxUSU5fVlNSVywKICBBTFRJVkVDX0JVSUxUSU5fVlNSQUIs CiAgQUxUSVZFQ19CVUlMVElOX1ZTUkFILAogIEFMVElWRUNfQlVJTFRJTl9WU1JBVywKICBBTFRJ VkVDX0JVSUxUSU5fVlNSLAogIEFMVElWRUNfQlVJTFRJTl9WU1JPLAogIEFMVElWRUNfQlVJTFRJ Tl9WU1VCVUJNLAogIEFMVElWRUNfQlVJTFRJTl9WU1VCVUhNLAogIEFMVElWRUNfQlVJTFRJTl9W U1VCVVdNLAogIEFMVElWRUNfQlVJTFRJTl9WU1VCRlAsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJD VVcsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJVQlMsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJTQlMs CiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJVSFMsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJTSFMsCiAg QUxUSVZFQ19CVUlMVElOX1ZTVUJVV1MsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVUJTV1MsCiAgQUxU SVZFQ19CVUlMVElOX1ZTVU00VUJTLAogIEFMVElWRUNfQlVJTFRJTl9WU1VNNFNCUywKICBBTFRJ VkVDX0JVSUxUSU5fVlNVTTRTSFMsCiAgQUxUSVZFQ19CVUlMVElOX1ZTVU0yU1dTLAogIEFMVElW RUNfQlVJTFRJTl9WU1VNU1dTLAogIEFMVElWRUNfQlVJTFRJTl9WWE9SLAogIEFMVElWRUNfQlVJ TFRJTl9WU0xET0lfMTZRSSwKICBBTFRJVkVDX0JVSUxUSU5fVlNMRE9JXzhISSwKICBBTFRJVkVD X0JVSUxUSU5fVlNMRE9JXzRTSSwKICBBTFRJVkVDX0JVSUxUSU5fVlNMRE9JXzRTRiwKICBBTFRJ VkVDX0JVSUxUSU5fVlVQS0hTQiwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0hQWCwKICBBTFRJVkVD X0JVSUxUSU5fVlVQS0hTSCwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0xTQiwKICBBTFRJVkVDX0JV SUxUSU5fVlVQS0xQWCwKICBBTFRJVkVDX0JVSUxUSU5fVlVQS0xTSCwKICBBTFRJVkVDX0JVSUxU SU5fTVRWU0NSLAogIEFMVElWRUNfQlVJTFRJTl9NRlZTQ1IsCiAgQUxUSVZFQ19CVUlMVElOX0RT U0FMTCwKICBBTFRJVkVDX0JVSUxUSU5fRFNTLAogIEFMVElWRUNfQlVJTFRJTl9MVlNMLAogIEFM VElWRUNfQlVJTFRJTl9MVlNSLAogIEFMVElWRUNfQlVJTFRJTl9EU1RULAogIEFMVElWRUNfQlVJ TFRJTl9EU1RTVCwKICBBTFRJVkVDX0JVSUxUSU5fRFNUU1RULAogIEFMVElWRUNfQlVJTFRJTl9E U1QsCiAgQUxUSVZFQ19CVUlMVElOX0xWRUJYLAogIEFMVElWRUNfQlVJTFRJTl9MVkVIWCwKICBB TFRJVkVDX0JVSUxUSU5fTFZFV1gsCiAgQUxUSVZFQ19CVUlMVElOX0xWWEwsCiAgQUxUSVZFQ19C VUlMVElOX0xWWCwKICBBTFRJVkVDX0JVSUxUSU5fU1RWWCwKICBBTFRJVkVDX0JVSUxUSU5fU1RW RUJYLAogIEFMVElWRUNfQlVJTFRJTl9TVFZFSFgsCiAgQUxUSVZFQ19CVUlMVElOX1NUVkVXWCwK ICBBTFRJVkVDX0JVSUxUSU5fU1RWWEwsCiAgQUxUSVZFQ19CVUlMVElOX1ZDTVBCRlBfUCwKICBB TFRJVkVDX0JVSUxUSU5fVkNNUEVRRlBfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVUJfUCwK ICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVUhfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVVdf UCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdFRlBfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdU RlBfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU0JfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNN UEdUU0hfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU1dfUCwKICBBTFRJVkVDX0JVSUxUSU5f VkNNUEdUVUJfUCwKICBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUVUhfUCwKICBBTFRJVkVDX0JVSUxU SU5fVkNNUEdUVVdfUCwKICBBTFRJVkVDX0JVSUxUSU5fQUJTU19WNFNJLAogIEFMVElWRUNfQlVJ TFRJTl9BQlNTX1Y4SEksCiAgQUxUSVZFQ19CVUlMVElOX0FCU1NfVjE2UUksCiAgQUxUSVZFQ19C VUlMVElOX0FCU19WNFNJLAogIEFMVElWRUNfQlVJTFRJTl9BQlNfVjRTRiwKICBBTFRJVkVDX0JV SUxUSU5fQUJTX1Y4SEksCiAgQUxUSVZFQ19CVUlMVElOX0FCU19WMTZRSQoKICAsIFNQRV9CVUlM VElOX0VWQUREVywKICBTUEVfQlVJTFRJTl9FVkFORCwKICBTUEVfQlVJTFRJTl9FVkFOREMsCiAg U1BFX0JVSUxUSU5fRVZESVZXUywKICBTUEVfQlVJTFRJTl9FVkRJVldVLAogIFNQRV9CVUlMVElO X0VWRVFWLAogIFNQRV9CVUlMVElOX0VWRlNBREQsCiAgU1BFX0JVSUxUSU5fRVZGU0RJViwKICBT UEVfQlVJTFRJTl9FVkZTTVVMLAogIFNQRV9CVUlMVElOX0VWRlNTVUIsCiAgU1BFX0JVSUxUSU5f RVZMRERYLAogIFNQRV9CVUlMVElOX0VWTERIWCwKICBTUEVfQlVJTFRJTl9FVkxEV1gsCiAgU1BF X0JVSUxUSU5fRVZMSEhFU1BMQVRYLAogIFNQRV9CVUlMVElOX0VWTEhIT1NTUExBVFgsCiAgU1BF X0JVSUxUSU5fRVZMSEhPVVNQTEFUWCwKICBTUEVfQlVJTFRJTl9FVkxXSEVYLAogIFNQRV9CVUlM VElOX0VWTFdIT1NYLAogIFNQRV9CVUlMVElOX0VWTFdIT1VYLAogIFNQRV9CVUlMVElOX0VWTFdI U1BMQVRYLAogIFNQRV9CVUlMVElOX0VWTFdXU1BMQVRYLAogIFNQRV9CVUlMVElOX0VWTUVSR0VI SSwKICBTUEVfQlVJTFRJTl9FVk1FUkdFSElMTywKICBTUEVfQlVJTFRJTl9FVk1FUkdFTE8sCiAg U1BFX0JVSUxUSU5fRVZNRVJHRUxPSEksCiAgU1BFX0JVSUxUSU5fRVZNSEVHU01GQUEsCiAgU1BF X0JVSUxUSU5fRVZNSEVHU01GQU4sCiAgU1BFX0JVSUxUSU5fRVZNSEVHU01JQUEsCiAgU1BFX0JV SUxUSU5fRVZNSEVHU01JQU4sCiAgU1BFX0JVSUxUSU5fRVZNSEVHVU1JQUEsCiAgU1BFX0JVSUxU SU5fRVZNSEVHVU1JQU4sCiAgU1BFX0JVSUxUSU5fRVZNSEVTTUYsCiAgU1BFX0JVSUxUSU5fRVZN SEVTTUZBLAogIFNQRV9CVUlMVElOX0VWTUhFU01GQUFXLAogIFNQRV9CVUlMVElOX0VWTUhFU01G QU5XLAogIFNQRV9CVUlMVElOX0VWTUhFU01JLAogIFNQRV9CVUlMVElOX0VWTUhFU01JQSwKICBT UEVfQlVJTFRJTl9FVk1IRVNNSUFBVywKICBTUEVfQlVJTFRJTl9FVk1IRVNNSUFOVywKICBTUEVf QlVJTFRJTl9FVk1IRVNTRiwKICBTUEVfQlVJTFRJTl9FVk1IRVNTRkEsCiAgU1BFX0JVSUxUSU5f RVZNSEVTU0ZBQVcsCiAgU1BFX0JVSUxUSU5fRVZNSEVTU0ZBTlcsCiAgU1BFX0JVSUxUSU5fRVZN SEVTU0lBQVcsCiAgU1BFX0JVSUxUSU5fRVZNSEVTU0lBTlcsCiAgU1BFX0JVSUxUSU5fRVZNSEVV TUksCiAgU1BFX0JVSUxUSU5fRVZNSEVVTUlBLAogIFNQRV9CVUlMVElOX0VWTUhFVU1JQUFXLAog IFNQRV9CVUlMVElOX0VWTUhFVU1JQU5XLAogIFNQRV9CVUlMVElOX0VWTUhFVVNJQUFXLAogIFNQ RV9CVUlMVElOX0VWTUhFVVNJQU5XLAogIFNQRV9CVUlMVElOX0VWTUhPR1NNRkFBLAogIFNQRV9C VUlMVElOX0VWTUhPR1NNRkFOLAogIFNQRV9CVUlMVElOX0VWTUhPR1NNSUFBLAogIFNQRV9CVUlM VElOX0VWTUhPR1NNSUFOLAogIFNQRV9CVUlMVElOX0VWTUhPR1VNSUFBLAogIFNQRV9CVUlMVElO X0VWTUhPR1VNSUFOLAogIFNQRV9CVUlMVElOX0VWTUhPU01GLAogIFNQRV9CVUlMVElOX0VWTUhP U01GQSwKICBTUEVfQlVJTFRJTl9FVk1IT1NNRkFBVywKICBTUEVfQlVJTFRJTl9FVk1IT1NNRkFO VywKICBTUEVfQlVJTFRJTl9FVk1IT1NNSSwKICBTUEVfQlVJTFRJTl9FVk1IT1NNSUEsCiAgU1BF X0JVSUxUSU5fRVZNSE9TTUlBQVcsCiAgU1BFX0JVSUxUSU5fRVZNSE9TTUlBTlcsCiAgU1BFX0JV SUxUSU5fRVZNSE9TU0YsCiAgU1BFX0JVSUxUSU5fRVZNSE9TU0ZBLAogIFNQRV9CVUlMVElOX0VW TUhPU1NGQUFXLAogIFNQRV9CVUlMVElOX0VWTUhPU1NGQU5XLAogIFNQRV9CVUlMVElOX0VWTUhP U1NJQUFXLAogIFNQRV9CVUlMVElOX0VWTUhPU1NJQU5XLAogIFNQRV9CVUlMVElOX0VWTUhPVU1J LAogIFNQRV9CVUlMVElOX0VWTUhPVU1JQSwKICBTUEVfQlVJTFRJTl9FVk1IT1VNSUFBVywKICBT UEVfQlVJTFRJTl9FVk1IT1VNSUFOVywKICBTUEVfQlVJTFRJTl9FVk1IT1VTSUFBVywKICBTUEVf QlVJTFRJTl9FVk1IT1VTSUFOVywKICBTUEVfQlVJTFRJTl9FVk1XSFNNRiwKICBTUEVfQlVJTFRJ Tl9FVk1XSFNNRkEsCiAgU1BFX0JVSUxUSU5fRVZNV0hTTUksCiAgU1BFX0JVSUxUSU5fRVZNV0hT TUlBLAogIFNQRV9CVUlMVElOX0VWTVdIU1NGLAogIFNQRV9CVUlMVElOX0VWTVdIU1NGQSwKICBT UEVfQlVJTFRJTl9FVk1XSFVNSSwKICBTUEVfQlVJTFRJTl9FVk1XSFVNSUEsCiAgU1BFX0JVSUxU SU5fRVZNV0xTTUlBQVcsCiAgU1BFX0JVSUxUSU5fRVZNV0xTTUlBTlcsCiAgU1BFX0JVSUxUSU5f RVZNV0xTU0lBQVcsCiAgU1BFX0JVSUxUSU5fRVZNV0xTU0lBTlcsCiAgU1BFX0JVSUxUSU5fRVZN V0xVTUksCiAgU1BFX0JVSUxUSU5fRVZNV0xVTUlBLAogIFNQRV9CVUlMVElOX0VWTVdMVU1JQUFX LAogIFNQRV9CVUlMVElOX0VWTVdMVU1JQU5XLAogIFNQRV9CVUlMVElOX0VWTVdMVVNJQUFXLAog IFNQRV9CVUlMVElOX0VWTVdMVVNJQU5XLAogIFNQRV9CVUlMVElOX0VWTVdTTUYsCiAgU1BFX0JV SUxUSU5fRVZNV1NNRkEsCiAgU1BFX0JVSUxUSU5fRVZNV1NNRkFBLAogIFNQRV9CVUlMVElOX0VW TVdTTUZBTiwKICBTUEVfQlVJTFRJTl9FVk1XU01JLAogIFNQRV9CVUlMVElOX0VWTVdTTUlBLAog IFNQRV9CVUlMVElOX0VWTVdTTUlBQSwKICBTUEVfQlVJTFRJTl9FVk1XU01JQU4sCiAgU1BFX0JV SUxUSU5fRVZNV0hTU0ZBQSwKICBTUEVfQlVJTFRJTl9FVk1XU1NGLAogIFNQRV9CVUlMVElOX0VW TVdTU0ZBLAogIFNQRV9CVUlMVElOX0VWTVdTU0ZBQSwKICBTUEVfQlVJTFRJTl9FVk1XU1NGQU4s CiAgU1BFX0JVSUxUSU5fRVZNV1VNSSwKICBTUEVfQlVJTFRJTl9FVk1XVU1JQSwKICBTUEVfQlVJ TFRJTl9FVk1XVU1JQUEsCiAgU1BFX0JVSUxUSU5fRVZNV1VNSUFOLAogIFNQRV9CVUlMVElOX0VW TkFORCwKICBTUEVfQlVJTFRJTl9FVk5PUiwKICBTUEVfQlVJTFRJTl9FVk9SLAogIFNQRV9CVUlM VElOX0VWT1JDLAogIFNQRV9CVUlMVElOX0VWUkxXLAogIFNQRV9CVUlMVElOX0VWU0xXLAogIFNQ RV9CVUlMVElOX0VWU1JXUywKICBTUEVfQlVJTFRJTl9FVlNSV1UsCiAgU1BFX0JVSUxUSU5fRVZT VEREWCwKICBTUEVfQlVJTFRJTl9FVlNUREhYLAogIFNQRV9CVUlMVElOX0VWU1REV1gsCiAgU1BF X0JVSUxUSU5fRVZTVFdIRVgsCiAgU1BFX0JVSUxUSU5fRVZTVFdIT1gsCiAgU1BFX0JVSUxUSU5f RVZTVFdXRVgsCiAgU1BFX0JVSUxUSU5fRVZTVFdXT1gsCiAgU1BFX0JVSUxUSU5fRVZTVUJGVywK ICBTUEVfQlVJTFRJTl9FVlhPUiwKICBTUEVfQlVJTFRJTl9FVkFCUywKICBTUEVfQlVJTFRJTl9F VkFERFNNSUFBVywKICBTUEVfQlVJTFRJTl9FVkFERFNTSUFBVywKICBTUEVfQlVJTFRJTl9FVkFE RFVNSUFBVywKICBTUEVfQlVJTFRJTl9FVkFERFVTSUFBVywKICBTUEVfQlVJTFRJTl9FVkNOVExT VywKICBTUEVfQlVJTFRJTl9FVkNOVExaVywKICBTUEVfQlVJTFRJTl9FVkVYVFNCLAogIFNQRV9C VUlMVElOX0VWRVhUU0gsCiAgU1BFX0JVSUxUSU5fRVZGU0FCUywKICBTUEVfQlVJTFRJTl9FVkZT Q0ZTRiwKICBTUEVfQlVJTFRJTl9FVkZTQ0ZTSSwKICBTUEVfQlVJTFRJTl9FVkZTQ0ZVRiwKICBT UEVfQlVJTFRJTl9FVkZTQ0ZVSSwKICBTUEVfQlVJTFRJTl9FVkZTQ1RTRiwKICBTUEVfQlVJTFRJ Tl9FVkZTQ1RTSSwKICBTUEVfQlVJTFRJTl9FVkZTQ1RTSVosCiAgU1BFX0JVSUxUSU5fRVZGU0NU VUYsCiAgU1BFX0JVSUxUSU5fRVZGU0NUVUksCiAgU1BFX0JVSUxUSU5fRVZGU0NUVUlaLAogIFNQ RV9CVUlMVElOX0VWRlNOQUJTLAogIFNQRV9CVUlMVElOX0VWRlNORUcsCiAgU1BFX0JVSUxUSU5f RVZNUkEsCiAgU1BFX0JVSUxUSU5fRVZORUcsCiAgU1BFX0JVSUxUSU5fRVZSTkRXLAogIFNQRV9C VUlMVElOX0VWU1VCRlNNSUFBVywKICBTUEVfQlVJTFRJTl9FVlNVQkZTU0lBQVcsCiAgU1BFX0JV SUxUSU5fRVZTVUJGVU1JQUFXLAogIFNQRV9CVUlMVElOX0VWU1VCRlVTSUFBVywKICBTUEVfQlVJ TFRJTl9FVkFERElXLAogIFNQRV9CVUlMVElOX0VWTERELAogIFNQRV9CVUlMVElOX0VWTERILAog IFNQRV9CVUlMVElOX0VWTERXLAogIFNQRV9CVUlMVElOX0VWTEhIRVNQTEFULAogIFNQRV9CVUlM VElOX0VWTEhIT1NTUExBVCwKICBTUEVfQlVJTFRJTl9FVkxISE9VU1BMQVQsCiAgU1BFX0JVSUxU SU5fRVZMV0hFLAogIFNQRV9CVUlMVElOX0VWTFdIT1MsCiAgU1BFX0JVSUxUSU5fRVZMV0hPVSwK ICBTUEVfQlVJTFRJTl9FVkxXSFNQTEFULAogIFNQRV9CVUlMVElOX0VWTFdXU1BMQVQsCiAgU1BF X0JVSUxUSU5fRVZSTFdJLAogIFNQRV9CVUlMVElOX0VWU0xXSSwKICBTUEVfQlVJTFRJTl9FVlNS V0lTLAogIFNQRV9CVUlMVElOX0VWU1JXSVUsCiAgU1BFX0JVSUxUSU5fRVZTVERELAogIFNQRV9C VUlMVElOX0VWU1RESCwKICBTUEVfQlVJTFRJTl9FVlNURFcsCiAgU1BFX0JVSUxUSU5fRVZTVFdI RSwKICBTUEVfQlVJTFRJTl9FVlNUV0hPLAogIFNQRV9CVUlMVElOX0VWU1RXV0UsCiAgU1BFX0JV SUxUSU5fRVZTVFdXTywKICBTUEVfQlVJTFRJTl9FVlNVQklGVywKCgogIFNQRV9CVUlMVElOX0VW Q01QRVEsCiAgU1BFX0JVSUxUSU5fRVZDTVBHVFMsCiAgU1BFX0JVSUxUSU5fRVZDTVBHVFUsCiAg U1BFX0JVSUxUSU5fRVZDTVBMVFMsCiAgU1BFX0JVSUxUSU5fRVZDTVBMVFUsCiAgU1BFX0JVSUxU SU5fRVZGU0NNUEVRLAogIFNQRV9CVUlMVElOX0VWRlNDTVBHVCwKICBTUEVfQlVJTFRJTl9FVkZT Q01QTFQsCiAgU1BFX0JVSUxUSU5fRVZGU1RTVEVRLAogIFNQRV9CVUlMVElOX0VWRlNUU1RHVCwK ICBTUEVfQlVJTFRJTl9FVkZTVFNUTFQsCgoKICBTUEVfQlVJTFRJTl9FVlNFTF9DTVBFUSwKICBT UEVfQlVJTFRJTl9FVlNFTF9DTVBHVFMsCiAgU1BFX0JVSUxUSU5fRVZTRUxfQ01QR1RVLAogIFNQ RV9CVUlMVElOX0VWU0VMX0NNUExUUywKICBTUEVfQlVJTFRJTl9FVlNFTF9DTVBMVFUsCiAgU1BF X0JVSUxUSU5fRVZTRUxfRlNDTVBFUSwKICBTUEVfQlVJTFRJTl9FVlNFTF9GU0NNUEdULAogIFNQ RV9CVUlMVElOX0VWU0VMX0ZTQ01QTFQsCiAgU1BFX0JVSUxUSU5fRVZTRUxfRlNUU1RFUSwKICBT UEVfQlVJTFRJTl9FVlNFTF9GU1RTVEdULAogIFNQRV9CVUlMVElOX0VWU0VMX0ZTVFNUTFQsCgog IFNQRV9CVUlMVElOX0VWU1BMQVRGSSwKICBTUEVfQlVJTFRJTl9FVlNQTEFUSSwKICBTUEVfQlVJ TFRJTl9FVk1XSFNTTUFBLAogIFNQRV9CVUlMVElOX0VWTVdIU01GQUEsCiAgU1BFX0JVSUxUSU5f RVZNV0hTTUlBQSwKICBTUEVfQlVJTFRJTl9FVk1XSFVTSUFBLAogIFNQRV9CVUlMVElOX0VWTVdI VU1JQUEsCiAgU1BFX0JVSUxUSU5fRVZNV0hTU0ZBTiwKICBTUEVfQlVJTFRJTl9FVk1XSFNTSUFO LAogIFNQRV9CVUlMVElOX0VWTVdIU01GQU4sCiAgU1BFX0JVSUxUSU5fRVZNV0hTTUlBTiwKICBT UEVfQlVJTFRJTl9FVk1XSFVTSUFOLAogIFNQRV9CVUlMVElOX0VWTVdIVU1JQU4sCiAgU1BFX0JV SUxUSU5fRVZNV0hHU1NGQUEsCiAgU1BFX0JVSUxUSU5fRVZNV0hHU01GQUEsCiAgU1BFX0JVSUxU SU5fRVZNV0hHU01JQUEsCiAgU1BFX0JVSUxUSU5fRVZNV0hHVU1JQUEsCiAgU1BFX0JVSUxUSU5f RVZNV0hHU1NGQU4sCiAgU1BFX0JVSUxUSU5fRVZNV0hHU01GQU4sCiAgU1BFX0JVSUxUSU5fRVZN V0hHU01JQU4sCiAgU1BFX0JVSUxUSU5fRVZNV0hHVU1JQU4sCiAgU1BFX0JVSUxUSU5fTVRTUEVG U0NSLAogIFNQRV9CVUlMVElOX01GU1BFRlNDUiwKICBTUEVfQlVJTFRJTl9CUklOQwp9OwojIDMg InRtLmgiIDIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv c3JjL2djYy9jb25maWcvZGFyd2luLmgiIDEKIyA3MTUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24v cGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NvbmZpZy9kYXJ3aW4uaCIKZW51bSBtYWNob3Bp Y19hZGRyX2NsYXNzIHsKICBNQUNIT1BJQ19VTkRFRklORUQsCiAgTUFDSE9QSUNfREVGSU5FRF9E QVRBLAogIE1BQ0hPUElDX1VOREVGSU5FRF9EQVRBLAogIE1BQ0hPUElDX0RFRklORURfRlVOQ1RJ T04sCiAgTUFDSE9QSUNfVU5ERUZJTkVEX0ZVTkNUSU9OCn07CiMgNCAidG0uaCIgMgojIDEgIi9W b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NvbmZpZy9y czYwMDAvZGFyd2luLmgiIDEKIyA1ICJ0bS5oIiAyCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvZGVmYXVsdHMuaCIgMQojIDYgInRtLmgiIDIK CgojIDEgImluc24tY29uc3RhbnRzLmgiIDEKIyA5ICJ0bS5oIiAyCiMgMSAiaW5zbi1mbGFncy5o IiAxCiMgNDU1ICJpbnNuLWZsYWdzLmgiCmV4dGVybiBydHggZ2VuX2V4dGVuZHFpZGkyIChydHgs IHJ0eCk7CmV4dGVybiBydHggZ2VuX2V4dGVuZHFpc2kyX3BwYyAocnR4LCBydHgpOwpleHRlcm4g cnR4IGdlbl9leHRlbmRxaWhpMl9wcGMgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWRkc2kz X2hpZ2ggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9lcXZzaTMgKHJ0eCwgcnR4LCBy dHgpOwpleHRlcm4gcnR4IGdlbl9lcXZkaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdl bl9vbmVfY21wbHNpMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX2Fic3Np Ml9pc2VsIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fYWJzc2kyX2lzZWwo YSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBi IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpleHRlcm4gcnR4 IGdlbl9hYnNzaTJfbm9wb3dlciAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9uZWdzaTIgKHJ0 eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY2x6c2kyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu X211bHNpM19tcSAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX211bHNpM19ub19tcSAo cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3VkaXZzaTNfbXEgKHJ0eCwgcnR4LCBydHgp OwpleHRlcm4gcnR4IGdlbl9kaXZzaTNfbXEgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdl bl9tdWxoX2NhbGwgKHZvaWQpOwpleHRlcm4gcnR4IGdlbl9tdWxsX2NhbGwgKHZvaWQpOwpleHRl cm4gcnR4IGdlbl9kaXZzc19jYWxsICh2b2lkKTsKZXh0ZXJuIHJ0eCBnZW5fZGl2dXNfY2FsbCAo dm9pZCk7CmV4dGVybiBydHggZ2VuX3F1b3NzX2NhbGwgKHZvaWQpOwpleHRlcm4gcnR4IGdlbl9x dW91c19jYWxsICh2b2lkKTsKZXh0ZXJuIHJ0eCBnZW5faW5zdnNpIChydHgsIHJ0eCwgcnR4LCBy dHgpOwpleHRlcm4gcnR4IGdlbl9pbnN2ZGkgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy dHggZ2VuX2V4dHp2c2kgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2V4dHp2 ZGkgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3JvdGxzaTMgKHJ0eCwgcnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hc2hsc2kzX3Bvd2VyIChydHgsIHJ0eCwgcnR4KTsKZXh0 ZXJuIHJ0eCBnZW5fYXNobHNpM19ub19wb3dlciAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX2xzaHJzaTNfcG93ZXIgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9sc2hyc2kz X25vX3Bvd2VyIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYXNocnNpM19wb3dlciAo cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FzaHJzaTNfbm9fcG93ZXIgKHJ0eCwgcnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl9leHRlbmRzZmRmMiAocnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl90cnVuY2Rmc2YyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2F1eF90cnVuY2Rmc2Yy IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5faXNlbF9zaWduZWQgKHJ0eCwg cnR4LCBydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9pc2VsX3NpZ25l ZChhLCBiLCBjLCBkLCBlKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBkIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGUgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5faXNlbF91bnNpZ25lZCAocnR4LCBy dHgsIHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2lzZWxfdW5zaWdu ZWQoYSwgYiwgYywgZCwgZSkKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggZCBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBlIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy ZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9uZWdkZjIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYWJzZGYyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FkZGRmMyAocnR4LCBydHgsIHJ0 eCk7CmV4dGVybiBydHggZ2VuX3N1YmRmMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu X211bGRmMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2RpdmRmMyAocnR4LCBydHgs IHJ0eCk7CmV4dGVybiBydHggZ2VuX3NxcnRkZjIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f ZmN0aXd6IChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Zsb2F0ZGlkZjIgKHJ0eCwgcnR4KTsK ZXh0ZXJuIHJ0eCBnZW5fZmxvYXRzaWRmX3BwYzY0IChydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX2Zsb2F0dW5zc2lkZl9wcGM2NCAocnR4LCBydHgsIHJ0eCwgcnR4LCBy dHgpOwpleHRlcm4gcnR4IGdlbl9maXhfdHJ1bmNkZmRpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl9mbG9hdGRpc2YyX2ludGVybmFsMSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tdWxz aWRpM19tcSAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3VtdWxzaWRpM19tcSAocnR4 LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtdWxzaTNfaGlnaHBhcnRfbXEgKHJ0eCwgcnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl91bXVsc2kzX2hpZ2hwYXJ0X21xIChydHgsIHJ0eCwgcnR4 KTsKZXh0ZXJuIHJ0eCBnZW5fYXNobGRpM19wb3dlciAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy dHggZ2VuX2xzaHJkaTNfcG93ZXIgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hc2hy ZGkzX3Bvd2VyIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYXNocmRpM19ub19wb3dl ciAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX29uZV9jbXBsZGkyIChydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX2Fic2RpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9jbHpkaTIg KHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbXVsZGkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJu IHJ0eCBnZW5fc211bGRpM19oaWdocGFydCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu X3VtdWxkaTNfaGlnaHBhcnQgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl91ZGl2ZGkz IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fcm90bGRpMyAocnR4LCBydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX2FzaGxkaTNfaW50ZXJuYWw1IChydHgsIHJ0eCwgcnR4LCBydHgpOwpl eHRlcm4gcnR4IGdlbl9hc2hsZGkzX2ludGVybmFsOCAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0 ZXJuIHJ0eCBnZW5fYW5kZGkzIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 IGdlbl9lbGZfaGlnaCAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2VsZl9o aWdoKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBy dHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGlj IF9faW5saW5lX18gcnR4IGdlbl9lbGZfbG93IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s aW5lX18gcnR4Cmdlbl9lbGZfbG93KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpl eHRlcm4gcnR4IGdlbl9tYWNob19oaWdoIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21hY2hv X2xvdyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNpX2xvdyAocnR4LCBydHgs IHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNpX2xvd19zdCAocnR4LCBydHgsIHJ0eCk7CmV4dGVy biBydHggZ2VuX21vdmRmX2xvdyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdmRm X2xvd19zdCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNmX2xvdyAocnR4LCBy dHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNmX2xvd19zdCAocnR4LCBydHgsIHJ0eCk7CnN0 YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fZXh0ZW5kZGZ0ZjIgKHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9leHRlbmRkZnRmMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fZXh0ZW5kc2Z0ZjIg KHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9leHRlbmRzZnRmMihhLCBiKQog ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f IHJ0eCBnZW5fdHJ1bmN0ZmRmMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2Vu X3RydW5jdGZkZjIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3RydW5jdGZzZjIgKHJ0eCwgcnR4KTsKc3RhdGlj IF9faW5saW5lX18gcnR4Cmdlbl90cnVuY3Rmc2YyKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1 dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9mbG9hdGRpdGYy IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fZmxvYXRkaXRmMihhLCBiKQog ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f IHJ0eCBnZW5fZmxvYXRzaXRmMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2Vu X2Zsb2F0c2l0ZjIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX2ZpeF90cnVuY3RmZGkyIChydHgsIHJ0eCk7CnN0 YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fZml4X3RydW5jdGZkaTIoYSwgYikKICAgICBydHggYSBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX2Zp eF90cnVuY3Rmc2kyIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fZml4X3Ry dW5jdGZzaTIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog ICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX25lZ3RmMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxp bmVfXyBydHgKZ2VuX25lZ3RmMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fYWJzdGYyIChydHgsIHJ0eCk7CnN0 YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fYWJzdGYyKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1 dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwp7CiAgcmV0dXJuIDA7Cn0KZXh0ZXJuIHJ0eCBnZW5fbW92ZGlfdXBkYXRlIChydHgsIHJ0 eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZzaV91cGRhdGUgKHJ0eCwgcnR4LCBydHgs IHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fbG9hZF90b2NfYWl4X3NpIChydHgpOwpz dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2xvYWRfdG9jX2FpeF9zaShhKQogICAgIHJ0eCBhIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxp bmVfXyBydHggZ2VuX2xvYWRfdG9jX2FpeF9kaSAocnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 Cmdlbl9sb2FkX3RvY19haXhfZGkoYSkKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVz ZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9sb2FkX3Rv Y192NF9waWNfc2kgKHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fbG9hZF90b2NfdjRf cGljX3NpKGEpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fbG9hZF90b2NfdjRfUElDXzEgKHJ0 eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9sb2FkX3RvY192NF9QSUNfMShhLCBi KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eCBnZW5fbG9hZF90b2NfdjRfUElDXzFiIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9sb2FkX3RvY192NF9QSUNfMWIoYSwgYiwgYykKICAgICBydHggYSBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewog IHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fbG9hZF90b2NfdjRfUElDXzIg KHJ0eCwgcnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fbG9hZF90b2Nf djRfUElDXzIoYSwgYiwgYywgZCkKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggZCBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0KZXh0ZXJuIHJ0eCBnZW5fbG9hZF9tYWNob19w aWNiYXNlIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21hY2hvX2NvcnJlY3RfcGljIChydHgs IHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9ibG9ja2FnZSAodm9pZCk7CnN0YXRpYyBf X2lubGluZV9fIHJ0eCBnZW5fbW92ZV9mcm9tX0NSX292X2JpdCAocnR4LCBydHgpOwpzdGF0aWMg X19pbmxpbmVfXyBydHgKZ2VuX21vdmVfZnJvbV9DUl9vdl9iaXQoYSwgYikKICAgICBydHggYSBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9qdW1wIChydHgpOwpl eHRlcm4gcnR4IGdlbl9yZXR1cm4gKHZvaWQpOwpleHRlcm4gcnR4IGdlbl9pbmRpcmVjdF9qdW1w c2kgKHJ0eCk7CmV4dGVybiBydHggZ2VuX2luZGlyZWN0X2p1bXBkaSAocnR4KTsKZXh0ZXJuIHJ0 eCBnZW5fbm9wICh2b2lkKTsKZXh0ZXJuIHJ0eCBnZW5fdHJhcCAodm9pZCk7CmV4dGVybiBydHgg Z2VuX21vdmVzaV9mcm9tX2NyIChydHgpOwpleHRlcm4gcnR4IGdlbl9zdGFja190aWUgKHJ0eCk7 CmV4dGVybiBydHggZ2VuX2VoX3NldF9scl9zaSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZWhfc2V0 X2xyX2RpIChydHgpOwpleHRlcm4gcnR4IGdlbl9wcmVmZXRjaCAocnR4LCBydHgsIHJ0eCk7CmV4 dGVybiBydHggZ2VuX2FsdGl2ZWNfbHZ4XzRzaSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9h bHRpdmVjX2x2eF84aGkgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19sdnhfMTZx aSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2eF80c2YgKHJ0eCwgcnR4KTsK ZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19zdHZ4XzRzaSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdl bl9hbHRpdmVjX3N0dnhfOGhpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfc3R2 eF8xNnFpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfc3R2eF80c2YgKHJ0eCwg cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZ2V0X3Zyc2F2ZV9pbnRlcm5hbCAocnR4KTsKZXh0ZXJuIHJ0 eCBnZW5fYWRkdjE2cWkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWRkdjhoaTMg KHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hZGR2NHNpMyAocnR4LCBydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX2FkZHY0c2YzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f YWx0aXZlY192YWRkY3V3IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192 YWRkdWJzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192YWRkc2JzIChy dHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192YWRkdWhzIChydHgsIHJ0eCwg cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192YWRkc2hzIChydHgsIHJ0eCwgcnR4KTsKZXh0 ZXJuIHJ0eCBnZW5fYWx0aXZlY192YWRkdXdzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYWx0aXZlY192YWRkc3dzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYW5kdjRz aTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZhbmRjIChydHgsIHJ0 eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192YXZndWIgKHJ0eCwgcnR4LCBydHgpOwpl eHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZhdmdzYiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX2FsdGl2ZWNfdmF2Z3VoIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZl Y192YXZnc2ggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Zhdmd1dyAo cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmF2Z3N3IChydHgsIHJ0eCwg cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192Y21wYmZwIChydHgsIHJ0eCwgcnR4KTsKZXh0 ZXJuIHJ0eCBnZW5fYWx0aXZlY192Y21wZXF1YiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX2FsdGl2ZWNfdmNtcGVxdWggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRp dmVjX3ZjbXBlcXV3IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192Y21w ZXFmcCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmNtcGdlZnAgKHJ0 eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZjbXBndHViIChydHgsIHJ0eCwg cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192Y21wZ3RzYiAocnR4LCBydHgsIHJ0eCk7CmV4 dGVybiBydHggZ2VuX2FsdGl2ZWNfdmNtcGd0dWggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl9hbHRpdmVjX3ZjbXBndHNoIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0 aXZlY192Y21wZ3R1dyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmNt cGd0c3cgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZjbXBndGZwIChy dHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192bWFkZGZwIChydHgsIHJ0eCwg cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZubXN1YmZwIChydHgsIHJ0eCwgcnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3VtdWJtIChydHgsIHJ0eCwgcnR4LCBy dHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3VtbWJtIChydHgsIHJ0eCwgcnR4LCBydHgp OwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3VtdWhtIChydHgsIHJ0eCwgcnR4LCBydHgpOwpl eHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3Vtc2htIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRl cm4gcnR4IGdlbl9hbHRpdmVjX3Ztc3VtdWhzIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4g cnR4IGdlbl9hbHRpdmVjX3Ztc3Vtc2hzIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl91bWF4djE2cWkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc21heHYxNnFp MyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3VtYXh2OGhpMyAocnR4LCBydHgsIHJ0 eCk7CmV4dGVybiBydHggZ2VuX3NtYXh2OGhpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX3VtYXh2NHNpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtYXh2NHNpMyAo cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtYXh2NHNmMyAocnR4LCBydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm1oYWRkc2hzIChydHgsIHJ0eCwgcnR4LCBydHgpOwpl eHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZtaHJhZGRzaHMgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4 dGVybiBydHggZ2VuX2FsdGl2ZWNfdm1sYWRkdWhtIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRl cm4gcnR4IGdlbl9hbHRpdmVjX3ZtcmdoYiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu X2FsdGl2ZWNfdm1yZ2hoIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192 bXJnaHcgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZtcmdsYiAocnR4 LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm1yZ2xoIChydHgsIHJ0eCwgcnR4 KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192bXJnbHcgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4g cnR4IGdlbl91bWludjE2cWkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc21pbnYx NnFpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3VtaW52OGhpMyAocnR4LCBydHgs IHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtaW52OGhpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy dHggZ2VuX3VtaW52NHNpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtaW52NHNp MyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3NtaW52NHNmMyAocnR4LCBydHgsIHJ0 eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bGV1YiAocnR4LCBydHgsIHJ0eCk7CmV4dGVy biBydHggZ2VuX2FsdGl2ZWNfdm11bGVzYiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu X2FsdGl2ZWNfdm11bGV1aCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNf dm11bGVzaCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bG91YiAo cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bG9zYiAocnR4LCBydHgs IHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bG91aCAocnR4LCBydHgsIHJ0eCk7CmV4 dGVybiBydHggZ2VuX2FsdGl2ZWNfdm11bG9zaCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX2FsdGl2ZWNfdm5vciAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2lvcnY0c2kz IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cGt1aHVtIChydHgsIHJ0 eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cGt1d3VtIChydHgsIHJ0eCwgcnR4KTsK ZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cGtweCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX2FsdGl2ZWNfdnBrdWhzcyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2 ZWNfdnBrc2hzcyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBrdXdz cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBrc3dzcyAocnR4LCBy dHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBrdWh1cyAocnR4LCBydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBrc2h1cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy dHggZ2VuX2FsdGl2ZWNfdnBrdXd1cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Fs dGl2ZWNfdnBrc3d1cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnJs YiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnJsaCAocnR4LCBydHgs IHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnJsdyAocnR4LCBydHgsIHJ0eCk7CmV4dGVy biBydHggZ2VuX2FsdGl2ZWNfdnNsYiAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Fs dGl2ZWNfdnNsaCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNsdyAo cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNsd192NHNmIChydHgsIHJ0 eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192c2wgKHJ0eCwgcnR4LCBydHgpOwpleHRl cm4gcnR4IGdlbl9hbHRpdmVjX3ZzbG8gKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9h bHRpdmVjX3ZzcmIgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Zzcmgg KHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzcncgKHJ0eCwgcnR4LCBy dHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzcmFiIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJu IHJ0eCBnZW5fYWx0aXZlY192c3JhaCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Fs dGl2ZWNfdnNyYXcgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzciAo cnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNybyAocnR4LCBydHgsIHJ0 eCk7CmV4dGVybiBydHggZ2VuX3N1YnYxNnFpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX3N1YnY4aGkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc3VidjRzaTMgKHJ0 eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zdWJ2NHNmMyAocnR4LCBydHgsIHJ0eCk7CmV4 dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YmN1dyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX2FsdGl2ZWNfdnN1YnVicyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2 ZWNfdnN1YnNicyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YnVo cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YnNocyAocnR4LCBy dHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YnV3cyAocnR4LCBydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1YnN3cyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy dHggZ2VuX2FsdGl2ZWNfdnN1bTR1YnMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9h bHRpdmVjX3ZzdW00c2JzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192 c3VtNHNocyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnN1bTJzd3Mg KHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzdW1zd3MgKHJ0eCwgcnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl94b3J2NHNpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBy dHggZ2VuX3hvcnY4aGkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5feG9ydjE2cWkz IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192c3BsdGIgKHJ0eCwgcnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzcGx0aCAocnR4LCBydHgsIHJ0eCk7CmV4 dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNwbHR3IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYWx0aXZlY192c3BsdGlzYiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Zz cGx0aXNoIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnNwbHRpc3cgKHJ0eCwg cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192c3BsdGlzd192NHNmIChydHgsIHJ0eCk7CmV4 dGVybiBydHggZ2VuX2Z0cnVuY3Y0c2YyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2 ZWNfdnBlcm1fNHNpIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVj X3ZwZXJtXzRzZiAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192 cGVybV84aGkgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnBl cm1fMTZxaSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cmZp cCAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZyZmluIChydHgsIHJ0eCk7CmV4 dGVybiBydHggZ2VuX2FsdGl2ZWNfdnJmaW0gKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0 aXZlY192Y2Z1eCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmNmc3gg KHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZjdHV4cyAocnR4LCBydHgs IHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdmN0c3hzIChydHgsIHJ0eCwgcnR4KTsKZXh0 ZXJuIHJ0eCBnZW5fYWx0aXZlY192bG9nZWZwIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Fs dGl2ZWNfdmV4cHRlZnAgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cnNxcnRl ZnAgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192cmVmcCAocnR4LCBydHgpOwpl eHRlcm4gcnR4IGdlbl9hbHRpdmVjX3ZzZWxfNHNpIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRl cm4gcnR4IGdlbl9hbHRpdmVjX3ZzZWxfNHNmIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4g cnR4IGdlbl9hbHRpdmVjX3ZzZWxfOGhpIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl9hbHRpdmVjX3ZzZWxfMTZxaSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYWx0aXZlY192c2xkb2lfNHNpIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdl bl9hbHRpdmVjX3ZzbGRvaV80c2YgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu X2FsdGl2ZWNfdnNsZG9pXzhoaSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f YWx0aXZlY192c2xkb2lfMTZxaSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f YWx0aXZlY192dXBraHNiIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfdnVwa2hw eCAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Z1cGtoc2ggKHJ0eCwgcnR4KTsK ZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY192dXBrbHNiIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu X2FsdGl2ZWNfdnVwa2xweCAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3Z1cGts c2ggKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19wcmVkaWNhdGVfdjRzaSAocnR4 LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19wcmVkaWNhdGVfdjRzZiAo cnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19wcmVkaWNhdGVfdjho aSAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19wcmVkaWNhdGVf djE2cWkgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfbXR2c2Ny IChydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX21mdnNjciAocnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYWx0aXZlY19kc3NhbGwgKHZvaWQpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2RzcyAocnR4 KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19kc3QgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl9hbHRpdmVjX2RzdHQgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVj X2RzdHN0IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19kc3RzdHQgKHJ0 eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2c2wgKHJ0eCwgcnR4LCBydHgp OwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2c3IgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl9hbHRpdmVjX2x2ZWJ4IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZl Y19sdmVoeCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfbHZld3ggKHJ0 eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2eGwgKHJ0eCwgcnR4LCBydHgp OwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX2x2eCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX2FsdGl2ZWNfc3R2eCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNf c3R2eGwgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hbHRpdmVjX3N0dmVieCAocnR4 LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfc3R2ZWh4IChydHgsIHJ0eCwgcnR4 KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19zdHZld3ggKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4g cnR4IGdlbl9hYnN2MTZxaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWJzdjhoaTIgKHJ0 eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWJzdjRzaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYWJzdjRzZjIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWx0aXZlY19hYnNzX3YxNnFp IChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfYWJzc192OGhpIChydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX2FsdGl2ZWNfYWJzc192NHNpIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eCBnZW5fc3BlX2Vmc2N0dWl6IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f IHJ0eApnZW5fc3BlX2Vmc2N0dWl6KGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAg cmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZml4dW5zc2ZzaTIgKHJ0 eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZml4dW5zc2ZzaTIoYSwgYikK ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf XyBydHggZ2VuX3NwZV9maXhfdHJ1bmNzZnNpMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVf XyBydHgKZ2VuX3NwZV9maXhfdHJ1bmNzZnNpMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2Zsb2F0dW5z c2lzZjIgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZmxvYXR1bnNz aXNmMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2Zsb2F0c2lzZjIgKHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9zcGVfZmxvYXRzaXNmMihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2YWJz IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2YWJzKGEsIGIpCiAg ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18g cnR4IGdlbl9zcGVfZXZhbmRjIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 Cmdlbl9zcGVfZXZhbmRjKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0 eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMg X19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmFuZCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX2V2YW5kKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmNtcGVxIChydHgsIHJ0eCwgcnR4KTsK c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZjbXBlcShhLCBiLCBjKQogICAgIHJ0eCBh IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7 CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZjbXBndHMgKHJ0 eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmNtcGd0cyhhLCBi LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z cGVfZXZjbXBndHUgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw ZV9ldmNtcGd0dShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s aW5lX18gcnR4IGdlbl9zcGVfZXZjbXBsdHMgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxp bmVfXyBydHgKZ2VuX3NwZV9ldmNtcGx0cyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7 Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZjbXBsdHUgKHJ0eCwgcnR4LCBydHgp OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmNtcGx0dShhLCBiLCBjKQogICAgIHJ0 eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp Owp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZmc2NtcGVx IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc2NtcGVx KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBy dHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHgg Z2VuX3NwZV9ldmZzY21wZ3QgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgK Z2VuX3NwZV9ldmZzY21wZ3QoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjbXBsdCAocnR4LCBydHgsIHJ0eCk7CnN0YXRp YyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2ZnNjbXBsdChhLCBiLCBjKQogICAgIHJ0eCBhIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAg cmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZmc3RzdGVxIChydHgs IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc3RzdGVxKGEsIGIs IGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3Nw ZV9ldmZzdHN0Z3QgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw ZV9ldmZzdHN0Z3QoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu bGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnN0c3RsdCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX2V2ZnN0c3RsdChhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJu IDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZjbnRsc3cgKHJ0eCwgcnR4KTsK c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZjbnRsc3coYSwgYikKICAgICBydHggYSBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3Nw ZV9ldmNudGx6dyAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmNu dGx6dyhhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZXF2IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZlcXYoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZXh0c2IgKHJ0eCwgcnR4KTsKc3Rh dGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZleHRzYihhLCBiKQogICAgIHJ0eCBhIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2 ZXh0c2ggKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZleHRzaChh LCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu bGluZV9fIHJ0eCBnZW5fc3BlX2V2bGhoZXNwbGF0IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsaGhlc3BsYXQoYSwgYiwgYykKICAgICBydHggYSBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bGhoZXNwbGF0eCAocnR4 LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bGhoZXNwbGF0eChh LCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4 IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdl bl9zcGVfZXZsaGhvc3NwbGF0IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 Cmdlbl9zcGVfZXZsaGhvc3NwbGF0KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmxoaG9zc3BsYXR4IChydHgsIHJ0eCwgcnR4 KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsaGhvc3NwbGF0eChhLCBiLCBjKQog ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVz ZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZs aGhvdXNwbGF0IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf ZXZsaGhvdXNwbGF0KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p bmxpbmVfXyBydHggZ2VuX3NwZV9ldmxoaG91c3BsYXR4IChydHgsIHJ0eCwgcnR4KTsKc3RhdGlj IF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsaGhvdXNwbGF0eChhLCBiLCBjKQogICAgIHJ0eCBh IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7 CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZsd2hzcGxhdCAo cnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bHdoc3BsYXQo YSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0 eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn ZW5fc3BlX2V2bHdoc3BsYXR4IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 Cmdlbl9zcGVfZXZsd2hzcGxhdHgoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0 YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bHd3c3BsYXQgKHJ0eCwgcnR4LCBydHgpOwpz dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmx3d3NwbGF0KGEsIGIsIGMpCiAgICAgcnR4 IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmx3d3NwbGF0 eCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bHd3c3Bs YXR4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy dHggZ2VuX3NwZV9ldm1lcmdlaGkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy dHgKZ2VuX3NwZV9ldm1lcmdlaGkoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0 YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWVyZ2VoaWxvIChydHgsIHJ0eCwgcnR4KTsK c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtZXJnZWhpbG8oYSwgYiwgYykKICAgICBy dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWVyZ2Vs byAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWVyZ2Vs byhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4 IGdlbl9zcGVfZXZtZXJnZWxvaGkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy dHgKZ2VuX3NwZV9ldm1lcmdlbG9oaShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK ICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0K c3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZuYW5kIChydHgsIHJ0eCwgcnR4KTsKc3Rh dGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZuYW5kKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm5lZyAocnR4LCBydHgp OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm5lZyhhLCBiKQogICAgIHJ0eCBhIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3Bl X2V2bm9yIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZu b3IoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg IHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1 dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0 eCBnZW5fc3BlX2V2b3JjIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl bl9zcGVfZXZvcmMoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu bGluZV9fIHJ0eCBnZW5fc3BlX2V2b3IgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVf XyBydHgKZ2VuX3NwZV9ldm9yKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0 aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnJsd2kgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMg X19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnJsd2koYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2cmx3IChydHgsIHJ0eCwgcnR4 KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZybHcoYSwgYiwgYykKICAgICBydHgg YSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK ewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2cm5kdyAocnR4 LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnJuZHcoYSwgYikKICAgICBy dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHgg Z2VuX3NwZV9ldnNlbCAocnR4LCBydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 Cmdlbl9zcGVfZXZzZWwoYSwgYiwgYywgZCkKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggZCBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4 IGdlbl9zcGVfZXZzZWxfZnMgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f IHJ0eApnZW5fc3BlX2V2c2VsX2ZzKGEsIGIsIGMsIGQpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGQgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eCBnZW5fc3BlX2V2c2x3aSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f IHJ0eApnZW5fc3BlX2V2c2x3aShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg ICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3Rh dGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzbHcgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMg X19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnNsdyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJu IDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzcndpcyAocnR4LCBydHgsIHJ0 eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3J3aXMoYSwgYiwgYykKICAgICBy dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2c3J3aXUg KHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnNyd2l1KGEs IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu X3NwZV9ldnNyd3MgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw ZV9ldnNyd3MoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eCBnZW5fc3BlX2V2c3J3dSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f IHJ0eApnZW5fc3BlX2V2c3J3dShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg ICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3Rh dGljIF9faW5saW5lX18gcnR4IGdlbl94b3J2MnNpMyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf X2lubGluZV9fIHJ0eApnZW5feG9ydjJzaTMoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5feG9ydjRoaTMgKHJ0eCwgcnR4LCBydHgpOwpz dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3hvcnY0aGkzKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3hvcnYxZGkzIChydHgsIHJ0eCwg cnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl94b3J2MWRpMyhhLCBiLCBjKQogICAgIHJ0 eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp Owp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZmc2FicyAo cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmZzYWJzKGEsIGIpCiAg ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18g cnR4IGdlbl9zcGVfZXZmc2FkZCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0 eApnZW5fc3BlX2V2ZnNhZGQoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjZnNmIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX2V2ZnNjZnNmKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp Owp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZmc2Nmc2kg KHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc2Nmc2koYSwgYikK ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf XyBydHggZ2VuX3NwZV9ldmZzY2Z1ZiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgK Z2VuX3NwZV9ldmZzY2Z1ZihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjZnVpIChydHgsIHJ0eCk7 CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2ZnNjZnVpKGEsIGIpCiAgICAgcnR4IGEg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z cGVfZXZmc2N0c2YgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZm c2N0c2YoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg IHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0 aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmZzY3RzaSAocnR4LCBydHgpOwpzdGF0aWMgX19p bmxpbmVfXyBydHgKZ2VuX3NwZV9ldmZzY3RzaShhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjdHNp eiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmZzY3RzaXooYSwg YikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxp bmVfXyBydHggZ2VuX3NwZV9ldmZzY3R1ZiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy dHgKZ2VuX3NwZV9ldmZzY3R1ZihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNjdHVpIChydHgsIHJ0 eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2ZnNjdHVpKGEsIGIpCiAgICAgcnR4 IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdl bl9zcGVfZXZmc2N0dWl6IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl X2V2ZnNjdHVpeihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9 CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2ZnNkaXYgKHJ0eCwgcnR4LCBydHgpOwpz dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmZzZGl2KGEsIGIsIGMpCiAgICAgcnR4IGEg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsK ICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmZzbXVsIChydHgs IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc211bChhLCBiLCBj KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVf ZXZmc25hYnMgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc25h YnMoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0 eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMg X19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmZzbmVnIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eApnZW5fc3BlX2V2ZnNuZWcoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsK ICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmZzc3ViIChydHgs IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZmc3N1YihhLCBiLCBj KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVf ZXZsZGQgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmxk ZChhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4 IGdlbl9zcGVfZXZsZGR4IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl bl9zcGVfZXZsZGR4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p bmxpbmVfXyBydHggZ2VuX3NwZV9ldmxkaCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eApnZW5fc3BlX2V2bGRoKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmxkaHggKHJ0eCwgcnR4LCBydHgpOwpzdGF0 aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmxkaHgoYSwgYiwgYykKICAgICBydHggYSBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bGR3IChydHgsIHJ0eCwg cnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsZHcoYSwgYiwgYykKICAgICBy dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bGR3eCAo cnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bGR3eChhLCBi LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z cGVfZXZsd2hlIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf ZXZsd2hlKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK ICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf XyBydHggZ2VuX3NwZV9ldmx3aGV4IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18g cnR4Cmdlbl9zcGVfZXZsd2hleChhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg ICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3Rh dGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZsd2hvcyAocnR4LCBydHgsIHJ0eCk7CnN0YXRp YyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bHdob3MoYSwgYiwgYykKICAgICBydHggYSBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bHdob3N4IChydHgsIHJ0 eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZsd2hvc3goYSwgYiwgYykK ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2 bHdob3UgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmx3 aG91KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy dHggZ2VuX3NwZV9ldmx3aG91eCAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0 eApnZW5fc3BlX2V2bHdob3V4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0 aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9icmluYyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf X2lubGluZV9fIHJ0eApnZW5fc3BlX2JyaW5jKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1 dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4g MDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZWdzbWZhYSAocnR4LCBydHgs IHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlZ3NtZmFhKGEsIGIsIGMp CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l dm1oZWdzbWZhbiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl X2V2bWhlZ3NtZmFuKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p bmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZWdzbWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf X2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlZ3NtaWFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZWdzbWlhbiAocnR4 LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlZ3NtaWFuKGEs IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu X3NwZV9ldm1oZWd1bWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApn ZW5fc3BlX2V2bWhlZ3VtaWFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0 aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZWd1bWlhbiAocnR4LCBydHgsIHJ0eCk7CnN0 YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlZ3VtaWFuKGEsIGIsIGMpCiAgICAgcnR4 IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXNtZmFh dyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlc21m YWF3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy dHggZ2VuX3NwZV9ldm1oZXNtZmFudyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f IHJ0eApnZW5fc3BlX2V2bWhlc21mYW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXNtZmEgKHJ0eCwgcnR4LCBydHgp OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1oZXNtZmEoYSwgYiwgYykKICAgICBy dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhlc21m IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaGVzbWYo YSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0 eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn ZW5fc3BlX2V2bWhlc21pYWF3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 Cmdlbl9zcGVfZXZtaGVzbWlhYXcoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0 YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhlc21pYW53IChydHgsIHJ0eCwgcnR4KTsK c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaGVzbWlhbncoYSwgYiwgYykKICAgICBy dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhlc21p YSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlc21p YShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4 IGdlbl9zcGVfZXZtaGVzbWkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgK Z2VuX3NwZV9ldm1oZXNtaShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBy dHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGlj IF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaGVzc2ZhYXcgKHJ0eCwgcnR4LCBydHgpOwpzdGF0 aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1oZXNzZmFhdyhhLCBiLCBjKQogICAgIHJ0eCBh IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7 CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaGVzc2Zhbncg KHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1oZXNzZmFu dyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4 IGdlbl9zcGVfZXZtaGVzc2ZhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 Cmdlbl9zcGVfZXZtaGVzc2ZhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0 aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXNzZiAocnR4LCBydHgsIHJ0eCk7CnN0YXRp YyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlc3NmKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXNzaWFhdyAocnR4 LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhlc3NpYWF3KGEs IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu X3NwZV9ldm1oZXNzaWFudyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApn ZW5fc3BlX2V2bWhlc3NpYW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0 aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXVtaWFhdyAocnR4LCBydHgsIHJ0eCk7CnN0 YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhldW1pYWF3KGEsIGIsIGMpCiAgICAgcnR4 IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1oZXVtaWFu dyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhldW1p YW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy dHggZ2VuX3NwZV9ldm1oZXVtaWEgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy dHgKZ2VuX3NwZV9ldm1oZXVtaWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0 YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhldW1pIChydHgsIHJ0eCwgcnR4KTsKc3Rh dGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaGV1bWkoYSwgYiwgYykKICAgICBydHggYSBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewog IHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhldXNpYWF3IChy dHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaGV1c2lhYXco YSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0 eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn ZW5fc3BlX2V2bWhldXNpYW53IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 Cmdlbl9zcGVfZXZtaGV1c2lhbncoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0 YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvZ3NtZmFhIChydHgsIHJ0eCwgcnR4KTsK c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9nc21mYWEoYSwgYiwgYykKICAgICBy dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvZ3Nt ZmFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9n c21mYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog ICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f IHJ0eCBnZW5fc3BlX2V2bWhvZ3NtaWFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5l X18gcnR4Cmdlbl9zcGVfZXZtaG9nc21pYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvZ3NtaWFuIChydHgsIHJ0eCwg cnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9nc21pYW4oYSwgYiwgYykK ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2 bWhvZ3VtaWFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf ZXZtaG9ndW1pYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu bGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvZ3VtaWFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9ndW1pYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvc21mYWF3IChydHgs IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9zbWZhYXcoYSwg YiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBi IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5f c3BlX2V2bWhvc21mYW53IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl bl9zcGVfZXZtaG9zbWZhbncoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAg cnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRp YyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvc21mYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRp YyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhvc21mYShhLCBiLCBjKQogICAgIHJ0eCBhIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAg cmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG9zbWYgKHJ0eCwg cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1ob3NtZihhLCBiLCBj KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVf ZXZtaG9zbWlhYXcgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw ZV9ldm1ob3NtaWFhdyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f aW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG9zbWlhbncgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMg X19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1ob3NtaWFudyhhLCBiLCBjKQogICAgIHJ0eCBhIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAg cmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG9zbWlhIChydHgs IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9zbWlhKGEsIGIs IGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3Nw ZV9ldm1ob3NtaSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl X2V2bWhvc21pKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxp bmVfXyBydHggZ2VuX3NwZV9ldm1ob3NzZmFhdyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX2V2bWhvc3NmYWF3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVz ZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1 cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1ob3NzZmFudyAocnR4LCBy dHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bWhvc3NmYW53KGEsIGIs IGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChf X3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3Nw ZV9ldm1ob3NzZmEgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw ZV9ldm1ob3NzZmEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu bGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvc3NmIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s aW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9zc2YoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvc3NpYWF3IChydHgsIHJ0eCwg cnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG9zc2lhYXcoYSwgYiwgYykK ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2 bWhvc3NpYW53IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf ZXZtaG9zc2lhbncoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu bGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvdW1pYWF3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG91bWlhYXcoYSwgYiwgYykKICAgICBydHggYSBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bWhvdW1pYW53IChydHgs IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtaG91bWlhbncoYSwg YiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBi IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5f c3BlX2V2bWhvdW1pYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5f c3BlX2V2bWhvdW1pYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f aW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG91bWkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19p bmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1ob3VtaShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJu IDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtaG91c2lhYXcgKHJ0eCwgcnR4 LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm1ob3VzaWFhdyhhLCBiLCBj KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVf ZXZtaG91c2lhbncgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw ZV9ldm1ob3VzaWFudyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f aW5saW5lX18gcnR4IGdlbl9zcGVfZXZtbWxzc2ZhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtbWxzc2ZhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVz ZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1 cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm1tbHNzZiAocnR4LCBydHgs IHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bW1sc3NmKGEsIGIsIGMpCiAg ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13 aHNtZmEgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13 aHNtZmEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog ICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f IHJ0eCBnZW5fc3BlX2V2bXdoc21mIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18g cnR4Cmdlbl9zcGVfZXZtd2hzbWYoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0 YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdoc21pYSAocnR4LCBydHgsIHJ0eCk7CnN0 YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc21pYShhLCBiLCBjKQogICAgIHJ0eCBh IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7 CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzbWkgKHJ0 eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHNtaShhLCBi LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z cGVfZXZtd2hzc2ZhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9z cGVfZXZtd2hzc2ZhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p bmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aHVzaWFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd2h1c2lhbihhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0 dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzc2YgKHJ0eCwgcnR4 LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHNzZihhLCBiLCBjKQog ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVz ZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZt d2h1bWlhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZt d2h1bWlhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK ICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf XyBydHggZ2VuX3NwZV9ldm13aHVtaSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f IHJ0eApnZW5fc3BlX2V2bXdodW1pKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHNtaWFhdyAocnR4LCBydHgsIHJ0eCk7 CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdsc21pYWF3KGEsIGIsIGMpCiAgICAg cnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHNt aWFudyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXds c21pYW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK ICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf XyBydHggZ2VuX3NwZV9ldm13bHNzaWFhdyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eApnZW5fc3BlX2V2bXdsc3NpYWF3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1 dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4g MDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHNzaWFudyAocnR4LCBydHgs IHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdsc3NpYW53KGEsIGIsIGMp CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l dm13bHVtaWFhdyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl X2V2bXdsdW1pYWF3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p bmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHVtaWFudyAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf X2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdsdW1pYW53KGEsIGIsIGMpCiAgICAgcnR4IGEgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13bHVtaWEgKHJ0eCwg cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13bHVtaWEoYSwgYiwg YykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3Bl X2V2bXdsdW1pIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf ZXZtd2x1bWkoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eCBnZW5fc3BlX2V2bXdsdXNpYWF3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s aW5lX18gcnR4Cmdlbl9zcGVfZXZtd2x1c2lhYXcoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdsdXNpYW53IChydHgsIHJ0 eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd2x1c2lhbncoYSwgYiwg YykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3Bl X2V2bXdzbWZhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl X2V2bXdzbWZhYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s aW5lX18gcnR4IGdlbl9zcGVfZXZtd3NtZmFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s aW5lX18gcnR4Cmdlbl9zcGVfZXZtd3NtZmFuKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1 dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4g MDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13c21mYSAocnR4LCBydHgsIHJ0 eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdzbWZhKGEsIGIsIGMpCiAgICAg cnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13c21m IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd3NtZihh LCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4 IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdl bl9zcGVfZXZtd3NtaWFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl bl9zcGVfZXZtd3NtaWFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0 eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMg X19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13c21pYW4gKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMg X19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13c21pYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdzbWlhIChydHgsIHJ0 eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd3NtaWEoYSwgYiwgYykK ICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2 bXdzbWkgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13 c21pKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy dHggZ2VuX3NwZV9ldm13c3NmYWEgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy dHgKZ2VuX3NwZV9ldm13c3NmYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg ICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0 YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdzc2ZhbiAocnR4LCBydHgsIHJ0eCk7CnN0 YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdzc2ZhbihhLCBiLCBjKQogICAgIHJ0eCBh IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7 CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtd3NzZmEgKHJ0 eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13c3NmYShhLCBi LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z cGVfZXZtd3NzZiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl X2V2bXdzc2YoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eCBnZW5fc3BlX2V2bXd1bWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eApnZW5fc3BlX2V2bXd1bWlhYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7 Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZtd3VtaWFuIChydHgsIHJ0eCwgcnR4 KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZtd3VtaWFuKGEsIGIsIGMpCiAgICAg cnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13dW1p YSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXd1bWlh KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBy dHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHgg Z2VuX3NwZV9ldm13dW1pIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdl bl9zcGVfZXZtd3VtaShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f aW5saW5lX18gcnR4IGdlbl9zcGVfZXZhZGR3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s aW5lX18gcnR4Cmdlbl9zcGVfZXZhZGR3KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldmFkZHVzaWFhdyAocnR4LCBydHgpOwpz dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmFkZHVzaWFhdyhhLCBiKQogICAgIHJ0eCBh IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5f c3BlX2V2YWRkdW1pYWF3IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl X2V2YWRkdW1pYWF3KGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7 Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZhZGRzc2lhYXcgKHJ0eCwgcnR4KTsK c3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZhZGRzc2lhYXcoYSwgYikKICAgICBydHgg YSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu X3NwZV9ldmFkZHNtaWFhdyAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw ZV9ldmFkZHNtaWFhdyhhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw Owp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2YWRkaXcgKHJ0eCwgcnR4LCBydHgp OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldmFkZGl3KGEsIGIsIGMpCiAgICAgcnR4 IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN1YmlmdyAo cnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3ViaWZ3KGEs IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu X3NwZV9ldnN1YmZ3IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9z cGVfZXZzdWJmdyhhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s aW5lX18gcnR4IGdlbl9zcGVfZXZzdWJmdXNpYWF3IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eApnZW5fc3BlX2V2c3ViZnVzaWFhdyhhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2c3ViZnVt aWFhdyAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN1YmZ1bWlh YXcoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0 eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMg X19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN1YmZzc2lhYXcgKHJ0eCwgcnR4KTsKc3RhdGljIF9f aW5saW5lX18gcnR4Cmdlbl9zcGVfZXZzdWJmc3NpYWF3KGEsIGIpCiAgICAgcnR4IGEgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVz ZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZz dWJmc21pYWF3IChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3Vi ZnNtaWFhdyhhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg ICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0 YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXJhIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX2V2bXJhKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7 CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZkaXZ3cyAocnR4 LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2ZGl2d3MoYSwgYiwg YykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3Bl X2V2ZGl2d3UgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9l dmRpdnd1KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsK ICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0 cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVf XyBydHggZ2VuX3NwZV9ldnNwbGF0ZmkgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4 Cmdlbl9zcGVfZXZzcGxhdGZpKGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0 dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzcGxhdGkgKHJ0eCwgcnR4 KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZzcGxhdGkoYSwgYikKICAgICBydHgg YSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu X3NwZV9ldnN0ZGQgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw ZV9ldnN0ZGQoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eCBnZW5fc3BlX2V2c3RkZHggKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVf XyBydHgKZ2VuX3NwZV9ldnN0ZGR4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog ICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0ZGggKHJ0eCwgcnR4LCBydHgpOwpzdGF0 aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN0ZGgoYSwgYiwgYykKICAgICBydHggYSBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJl dHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2c3RkaHggKHJ0eCwgcnR4 LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN0ZGh4KGEsIGIsIGMpCiAg ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0 ZHcgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN0ZHco YSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0 eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn ZW5fc3BlX2V2c3Rkd3ggKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2Vu X3NwZV9ldnN0ZHd4KGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p bmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0d2hlIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5s aW5lX18gcnR4Cmdlbl9zcGVfZXZzdHdoZShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18p KTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7 Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzdHdoZXggKHJ0eCwgcnR4LCBydHgp OwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldnN0d2hleChhLCBiLCBjKQogICAgIHJ0 eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp Owp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9zcGVfZXZzdHdobyAo cnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3R3aG8oYSwg YiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBi IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5f c3BlX2V2c3R3aG94IChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9z cGVfZXZzdHdob3goYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lu bGluZV9fIHJ0eCBnZW5fc3BlX2V2c3R3d2UgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxp bmVfXyBydHgKZ2VuX3NwZV9ldnN0d3dlKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0d3dleCAocnR4LCBydHgsIHJ0eCk7 CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2c3R3d2V4KGEsIGIsIGMpCiAgICAgcnR4 IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldnN0d3dvIChy dHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVfZXZzdHd3byhhLCBi LCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9z cGVfZXZzdHd3b3ggKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3Nw ZV9ldnN0d3dveChhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s aW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzc2ZhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc3NmYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdoc3NtYWEgKHJ0eCwgcnR4 LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHNzbWFhKGEsIGIsIGMp CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l dm13aHNtZmFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf ZXZtd2hzbWZhYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s aW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzbWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc21pYWEoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdodXNpYWEgKHJ0eCwgcnR4 LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHVzaWFhKGEsIGIsIGMp CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l dm13aHVtaWFhIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf ZXZtd2h1bWlhYShhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s aW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzc2ZhbiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc3NmYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdoc3NpYW4gKHJ0eCwgcnR4 LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHNzaWFuKGEsIGIsIGMp CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l dm13aHNtZmFuIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9zcGVf ZXZtd2hzbWZhbihhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s aW5lX18gcnR4IGdlbl9zcGVfZXZtd2hzbWlhbiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoc21pYW4oYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy biAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fc3BlX2V2bXdodW1pYW4gKHJ0eCwgcnR4 LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX3NwZV9ldm13aHVtaWFuKGEsIGIsIGMp CiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9l dm13aGdzc2ZhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3Bl X2V2bXdoZ3NzZmFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBj IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19p bmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGdzbWZhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBf X2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3NtZmFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBy ZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGdzbWlhYSAocnR4 LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3NtaWFhKGEs IGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu X3NwZV9ldm13aGd1bWlhYSAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApn ZW5fc3BlX2V2bXdoZ3VtaWFhKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0 aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGdzc2ZhbiAocnR4LCBydHgsIHJ0eCk7CnN0 YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3NzZmFuKGEsIGIsIGMpCiAgICAgcnR4 IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGdzbWZh biAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3Nt ZmFuKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAg ICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBy dHggZ2VuX3NwZV9ldm13aGdzbWlhbiAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f IHJ0eApnZW5fc3BlX2V2bXdoZ3NtaWFuKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVf XyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp OwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsK fQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9ldm13aGd1bWlhbiAocnR4LCBydHgsIHJ0 eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX2V2bXdoZ3VtaWFuKGEsIGIsIGMpCiAg ICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJp YnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9tdHNw ZWZzY3IgKHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fc3BlX210c3BlZnNjcihhKQog ICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpz dGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3NwZV9tZnNwZWZzY3IgKHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eApnZW5fc3BlX21mc3BlZnNjcihhKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18g KChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2Vu X2NtcHNmZXFfZ3ByIChydHgsIHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9j bXBzZmVxX2dwcihhLCBiLCBjKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBf X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5s aW5lX18gcnR4IGdlbl90c3RzZmVxX2dwciAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGlu ZV9fIHJ0eApnZW5fdHN0c2ZlcV9ncHIoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CiAgICAgcnR4IGMgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9 CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fY21wc2ZndF9ncHIgKHJ0eCwgcnR4LCBydHgpOwpz dGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2NtcHNmZ3RfZ3ByKGEsIGIsIGMpCiAgICAgcnR4IGEg X19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsK ICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX3RzdHNmZ3RfZ3ByIChydHgs IHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl90c3RzZmd0X2dwcihhLCBiLCBj KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0dHJpYnV0ZV9fICgoX191 bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9jbXBz Zmx0X2dwciAocnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fY21wc2Zs dF9ncHIoYSwgYiwgYykKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwog ICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGMgX19hdHRy aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9f IHJ0eCBnZW5fdHN0c2ZsdF9ncHIgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy dHgKZ2VuX3RzdHNmbHRfZ3ByKGEsIGIsIGMpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9f dW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAg IHJ0eCBjIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpleHRl cm4gcnR4IGdlbl96ZXJvX2V4dGVuZHFpZGkyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3pl cm9fZXh0ZW5kaGlkaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZXh0ZW5kaGlkaTIgKHJ0 eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5femVyb19leHRlbmRzaWRpMiAocnR4LCBydHgpOwpleHRl cm4gcnR4IGdlbl9leHRlbmRzaWRpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl96ZXJvX2V4 dGVuZHFpc2kyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2V4dGVuZHFpc2kyIChydHgsIHJ0 eCk7CmV4dGVybiBydHggZ2VuX2V4dGVuZHFpc2kyX3Bvd2VyIChydHgsIHJ0eCk7CmV4dGVybiBy dHggZ2VuX2V4dGVuZHFpc2kyX25vX3Bvd2VyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3pl cm9fZXh0ZW5kcWloaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZXh0ZW5kcWloaTIgKHJ0 eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZXh0ZW5kcWloaTJfcG93ZXIgKHJ0eCwgcnR4KTsKZXh0 ZXJuIHJ0eCBnZW5fZXh0ZW5kcWloaTJfbm9fcG93ZXIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5femVyb19leHRlbmRoaXNpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9leHRlbmRoaXNp MiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hZGRzaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRl cm4gcnR4IGdlbl9zdWJzaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zbWluc2kz IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc21heHNpMyAocnR4LCBydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX3VtaW5zaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl91 bWF4c2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYWJzc2kyIChydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX2N0enNpMiAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9mZnNzaTIg KHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbXVsc2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJu IHJ0eCBnZW5fZGl2bW9kc2k0IChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl91 ZGl2c2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fZGl2c2kzIChydHgsIHJ0eCwg cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbW9kc2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fdWRpdm1vZHNpNF9ub3JtYWwgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu X3VkaXZtb2RzaTRfdGVzdHMgKHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fdWRpdm1vZHNpNCAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5faW9yc2kz IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5feG9yc2kzIChydHgsIHJ0eCwgcnR4KTsK ZXh0ZXJuIHJ0eCBnZW5faW5zdiAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5f ZXh0enYgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2FzaGxzaTMgKHJ0eCwg cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9sc2hyc2kzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJu IHJ0eCBnZW5fYXNocnNpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX25lZ3NmMiAo cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hYnNzZjIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYWRkc2YzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc3Vic2YzIChydHgsIHJ0 eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbXVsc2YzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0 eCBnZW5fZGl2c2YzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc3FydHNmMiAocnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tYXhzZjMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl9taW5zZjMgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX21v dnNpY2MgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fbW92 c2ljYyhhLCBiLCBjLCBkKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7 CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYyBfX2F0 dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBkIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9tb3ZzZmNjIChydHgsIHJ0 eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tYXhkZjMgKHJ0eCwgcnR4LCBydHgpOwpleHRl cm4gcnR4IGdlbl9taW5kZjMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZkZmNj IChydHgsIHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHggZ2VuX2ZpeHVuc3Nm c2kyIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fZml4dW5zc2ZzaTIoYSwg YikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxp bmVfXyBydHggZ2VuX2ZpeF90cnVuY3Nmc2kyIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9f IHJ0eApnZW5fZml4X3RydW5jc2ZzaTIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsK ICByZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9mbG9hdHNpZGYyIChydHgsIHJ0eCk7CnN0YXRp YyBfX2lubGluZV9fIHJ0eCBnZW5fZmxvYXR1bnNzaXNmMiAocnR4LCBydHgpOwpzdGF0aWMgX19p bmxpbmVfXyBydHgKZ2VuX2Zsb2F0dW5zc2lzZjIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CnsKICByZXR1cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9mbG9hdHVuc3NpZGYyIChydHgsIHJ0 eCk7CmV4dGVybiBydHggZ2VuX2ZpeF90cnVuY2Rmc2kyIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lu bGluZV9fIHJ0eCBnZW5fZmxvYXRzaXNmMiAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy dHgKZ2VuX2Zsb2F0c2lzZjIoYSwgYikKICAgICBydHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVz ZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1 cm4gMDsKfQpleHRlcm4gcnR4IGdlbl9mbG9hdGRpc2YyIChydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX2Zsb2F0ZGlzZjJfaW50ZXJuYWwyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX211bHNp ZGkzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fdW11bHNpZGkzIChydHgsIHJ0eCwg cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc211bHNpM19oaWdocGFydCAocnR4LCBydHgsIHJ0eCk7CmV4 dGVybiBydHggZ2VuX3VtdWxzaTNfaGlnaHBhcnQgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl9hZGRkaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zdWJkaTMgKHJ0eCwg cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9uZWdkaTIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fY3R6ZGkyIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2Zmc2RpMiAocnR4LCBydHgpOwpl eHRlcm4gcnR4IGdlbl9kaXZkaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb2Rk aTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9hc2hsZGkzIChydHgsIHJ0eCwgcnR4 KTsKZXh0ZXJuIHJ0eCBnZW5fbHNocmRpMyAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2Vu X2FzaHJkaTMgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9pb3JkaTMgKHJ0eCwgcnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl94b3JkaTMgKHJ0eCwgcnR4LCBydHgpOwpzdGF0aWMgX19p bmxpbmVfXyBydHggZ2VuX21vdnNpX2dvdCAocnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBy dHgKZ2VuX21vdnNpX2dvdChhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNl ZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVy biAwOwp9CmV4dGVybiBydHggZ2VuX21vdnNpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21v dmhpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnFpIChydHgsIHJ0eCk7CmV4dGVybiBy dHggZ2VuX21vdmNjIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnNmIChydHgsIHJ0eCk7 CmV4dGVybiBydHggZ2VuX21vdmRmIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBn ZW5fbW92dGYgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9tb3Z0ZihhLCBi KQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19h dHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAwOwp9CmV4dGVybiBydHggZ2Vu X21vdmRpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnRpIChydHgsIHJ0eCk7CmV4dGVy biBydHggZ2VuX2xvYWRfbXVsdGlwbGUgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9z dG9yZV9tdWx0aXBsZSAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnN0cnNpIChy dHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZzdHJzaV84cmVnIChydHgsIHJ0 eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZzdHJzaV82cmVnIChydHgsIHJ0eCwgcnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3ZzdHJzaV80cmVnIChydHgsIHJ0eCwgcnR4LCBydHgp OwpleHRlcm4gcnR4IGdlbl9tb3ZzdHJzaV8ycmVnIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRl cm4gcnR4IGdlbl9tb3ZzdHJzaV8xcmVnIChydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4 IGdlbl9hbGxvY2F0ZV9zdGFjayAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zYXZlX3N0YWNr X2Z1bmN0aW9uIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX3Jlc3RvcmVfc3RhY2tfZnVuY3Rp b24gKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fcmVzdG9yZV9zdGFja19ibG9jayAocnR4LCBy dHgpOwpleHRlcm4gcnR4IGdlbl9zYXZlX3N0YWNrX25vbmxvY2FsIChydHgsIHJ0eCk7CmV4dGVy biBydHggZ2VuX3Jlc3RvcmVfc3RhY2tfbm9ubG9jYWwgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIgKHJ0eCk7CmV4dGVybiBydHggZ2VuX2NhbGxfaW5k aXJlY3RfYWl4MzIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY2FsbF9pbmRpcmVjdF9haXg2 NCAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9jYWxsX3ZhbHVlX2luZGlyZWN0X2FpeDMyIChy dHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY2FsbF92YWx1ZV9pbmRpcmVjdF9haXg2NCAo cnR4LCBydHgsIHJ0eCk7CgpleHRlcm4gcnR4IGdlbl9jYWxsIChydHgsIHJ0eCwgcnR4KTsKCmV4 dGVybiBydHggZ2VuX2NhbGxfdmFsdWUgKHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX3VudHlwZWRfY2FsbCAocnR4LCBydHgsIHJ0eCk7CgpleHRlcm4gcnR4IGdlbl9zaWJjYWxs IChydHgsIHJ0eCwgcnR4LCBydHgpOwoKZXh0ZXJuIHJ0eCBnZW5fc2liY2FsbF92YWx1ZSAocnR4 LCBydHgsIHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9zaWJjYWxsX2VwaWxvZ3VlICh2 b2lkKTsKZXh0ZXJuIHJ0eCBnZW5fY21wc2kgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY21w ZGkgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY21wc2YgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0 eCBnZW5fY21wZGYgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9jbXB0ZiAo cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX2NtcHRmKGEsIGIpCiAgICAgcnR4 IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHggYiBfX2F0dHJpYnV0ZV9f ICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0KZXh0ZXJuIHJ0eCBnZW5fYmVxIChydHgp OwpleHRlcm4gcnR4IGdlbl9ibmUgKHJ0eCk7CmV4dGVybiBydHggZ2VuX2JnZSAocnR4KTsKZXh0 ZXJuIHJ0eCBnZW5fYmd0IChydHgpOwpleHRlcm4gcnR4IGdlbl9ibGUgKHJ0eCk7CmV4dGVybiBy dHggZ2VuX2JsdCAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYmdldSAocnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYmd0dSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYmxldSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5f Ymx0dSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYnVub3JkZXJlZCAocnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYm9yZGVyZWQgKHJ0eCk7CmV4dGVybiBydHggZ2VuX2J1bmVxIChydHgpOwpleHRlcm4gcnR4 IGdlbl9idW5nZSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fYnVuZ3QgKHJ0eCk7CmV4dGVybiBydHgg Z2VuX2J1bmxlIChydHgpOwpleHRlcm4gcnR4IGdlbl9idW5sdCAocnR4KTsKZXh0ZXJuIHJ0eCBn ZW5fYmx0Z3QgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3NlcSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5f c25lIChydHgpOwpleHRlcm4gcnR4IGdlbl9zZ3QgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3NsdCAo cnR4KTsKZXh0ZXJuIHJ0eCBnZW5fc2dlIChydHgpOwpleHRlcm4gcnR4IGdlbl9zbGUgKHJ0eCk7 CmV4dGVybiBydHggZ2VuX3NndHUgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3NsdHUgKHJ0eCk7CmV4 dGVybiBydHggZ2VuX3NnZXUgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3NsZXUgKHJ0eCk7CmV4dGVy biBydHggZ2VuX2luZGlyZWN0X2p1bXAgKHJ0eCk7CmV4dGVybiBydHggZ2VuX3RhYmxlanVtcCAo cnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl90YWJsZWp1bXBzaSAocnR4LCBydHgpOwpleHRlcm4g cnR4IGdlbl90YWJsZWp1bXBkaSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9kb2xvb3BfZW5k IChydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2N0cnNpIChydHgsIHJ0 eCk7CmV4dGVybiBydHggZ2VuX2N0cmRpIChydHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2NvbmRp dGlvbmFsX3RyYXAgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fcHJvbG9ndWUgKHZvaWQpOwpl eHRlcm4gcnR4IGdlbl9lcGlsb2d1ZSAodm9pZCk7CmV4dGVybiBydHggZ2VuX21vdnNpX3RvX2Ny X29uZSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9laF9yZXR1cm4gKHJ0eCwgcnR4KTsKZXh0 ZXJuIHJ0eCBnZW5fbW92djRzaSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGdlbl9tb3Z2OGhpIChy dHgsIHJ0eCk7CmV4dGVybiBydHggZ2VuX21vdnYxNnFpIChydHgsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX21vdnY0c2YgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBnZW5fbXVsdjRzZjMgKHJ0eCwgcnR4 LCBydHgpOwpleHRlcm4gcnR4IGdlbl9jcjZfdGVzdF9mb3JfemVybyAocnR4KTsKZXh0ZXJuIHJ0 eCBnZW5fY3I2X3Rlc3RfZm9yX3plcm9fcmV2ZXJzZSAocnR4KTsKZXh0ZXJuIHJ0eCBnZW5fY3I2 X3Rlc3RfZm9yX2x0IChydHgpOwpleHRlcm4gcnR4IGdlbl9jcjZfdGVzdF9mb3JfbHRfcmV2ZXJz ZSAocnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4IGdlbl9tb3Z2MnNpIChydHgsIHJ0eCk7CnN0 YXRpYyBfX2lubGluZV9fIHJ0eApnZW5fbW92djJzaShhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmli dXRlX18gKChfX3VudXNlZF9fKSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2Vk X18pKTsKewogIHJldHVybiAwOwp9CnN0YXRpYyBfX2lubGluZV9fIHJ0eCBnZW5fbW92djFkaSAo cnR4LCBydHgpOwpzdGF0aWMgX19pbmxpbmVfXyBydHgKZ2VuX21vdnYxZGkoYSwgYikKICAgICBy dHggYSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwogICAgIHJ0eCBiIF9fYXR0cmlidXRl X18gKChfX3VudXNlZF9fKSk7CnsKICByZXR1cm4gMDsKfQpzdGF0aWMgX19pbmxpbmVfXyBydHgg Z2VuX21vdnY0aGkgKHJ0eCwgcnR4KTsKc3RhdGljIF9faW5saW5lX18gcnR4Cmdlbl9tb3Z2NGhp KGEsIGIpCiAgICAgcnR4IGEgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICBydHgg YiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcmV0dXJuIDA7Cn0Kc3RhdGljIF9f aW5saW5lX18gcnR4IGdlbl9tb3Z2MnNmIChydHgsIHJ0eCk7CnN0YXRpYyBfX2lubGluZV9fIHJ0 eApnZW5fbW92djJzZihhLCBiKQogICAgIHJ0eCBhIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f KSk7CiAgICAgcnR4IGIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIHJldHVybiAw Owp9CiMgMTAgInRtLmgiIDIKIyAyNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny Yy9mc2YvZ2NjL3NyYy9nY2MvYy1wcmV0dHktcHJpbnQuYyIgMgojIDEgIi9Wb2x1bWVzL1VGU19Q YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3JlYWwuaCIgMQojIDI1ICIvVm9s dW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9yZWFsLmgiCiMg MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvbWFj aG1vZGUuaCIgMQojIDI5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n Y2Mvc3JjL2djYy9tYWNobW9kZS5oIgplbnVtIG1hY2hpbmVfbW9kZSB7CiMgMSAiL1ZvbHVtZXMv VUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvbWFjaG1vZGUuZGVmIiAx CiMgNzQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj L21hY2htb2RlLmRlZiIKVk9JRG1vZGUsCgpCSW1vZGUsClFJbW9kZSwKSEltb2RlLApTSW1vZGUs CkRJbW9kZSwKVEltb2RlLApPSW1vZGUsCgoKCgpQUUltb2RlLApQSEltb2RlLApQU0ltb2RlLApQ REltb2RlLAoKUUZtb2RlLApIRm1vZGUsClRRRm1vZGUsClNGbW9kZSwKREZtb2RlLApYRm1vZGUs ClRGbW9kZSwKCgpRQ21vZGUsCkhDbW9kZSwKU0Ntb2RlLApEQ21vZGUsClhDbW9kZSwKVENtb2Rl LAoKQ1FJbW9kZSwKQ0hJbW9kZSwKQ1NJbW9kZSwKQ0RJbW9kZSwKQ1RJbW9kZSwKQ09JbW9kZSwK CgoKCgpWMURJbW9kZSwKVjJRSW1vZGUsClYySEltb2RlLApWMlNJbW9kZSwKVjJESW1vZGUsCgpW NFFJbW9kZSwKVjRISW1vZGUsClY0U0ltb2RlLApWNERJbW9kZSwKClY4UUltb2RlLApWOEhJbW9k ZSwKVjhTSW1vZGUsClY4REltb2RlLAoKVjE2UUltb2RlLAoKVjJIRm1vZGUsClYyU0Ztb2RlLApW MkRGbW9kZSwKClY0SEZtb2RlLApWNFNGbW9kZSwKVjRERm1vZGUsCgpWOEhGbW9kZSwKVjhTRm1v ZGUsClY4REZtb2RlLApWMTZTRm1vZGUsCgoKCkJMS21vZGUsCiMgMTYxICIvVm9sdW1lcy9VRlNf UGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9tYWNobW9kZS5kZWYiCkNDbW9k ZSwKCgoKCgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z cmMvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLW1vZGVzLmRlZiIgMQojIDI5ICIvVm9sdW1lcy9V RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jb25maWcvcnM2MDAwL3Jz NjAwMC1tb2Rlcy5kZWYiCkNDVU5TbW9kZSwKQ0NGUG1vZGUsCkNDRVFtb2RlLAojIDE2OCAiL1Zv bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvbWFjaG1vZGUu ZGVmIiAyCiMgMzEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z cmMvZ2NjL21hY2htb2RlLmgiIDIKTUFYX01BQ0hJTkVfTU9ERSB9OwojIDQxICIvVm9sdW1lcy9V RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9tYWNobW9kZS5oIgpleHRl cm4gY29uc3QgY2hhciAqIGNvbnN0IG1vZGVfbmFtZVsoaW50KSBNQVhfTUFDSElORV9NT0RFXTsK CgplbnVtIG1vZGVfY2xhc3MgeyBNT0RFX1JBTkRPTSwgTU9ERV9JTlQsIE1PREVfRkxPQVQsIE1P REVfUEFSVElBTF9JTlQsIE1PREVfQ0MsCiAgICBNT0RFX0NPTVBMRVhfSU5ULCBNT0RFX0NPTVBM RVhfRkxPQVQsCiAgICBNT0RFX1ZFQ1RPUl9JTlQsIE1PREVfVkVDVE9SX0ZMT0FULAogICAgTUFY X01PREVfQ0xBU1N9OwoKCgoKZXh0ZXJuIGNvbnN0IGVudW0gbW9kZV9jbGFzcyBtb2RlX2NsYXNz WyhpbnQpIE1BWF9NQUNISU5FX01PREVdOwojIDg5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9tYWNobW9kZS5oIgpleHRlcm4gY29uc3QgdW5zaWdu ZWQgY2hhciBtb2RlX3NpemVbKGludCkgTUFYX01BQ0hJTkVfTU9ERV07CgoKCgpleHRlcm4gY29u c3QgdW5zaWduZWQgY2hhciBtb2RlX3VuaXRfc2l6ZVsoaW50KSBNQVhfTUFDSElORV9NT0RFXTsK IyAxMDUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj L21hY2htb2RlLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBtb2RlX2JpdHNpemVbKGlu dCkgTUFYX01BQ0hJTkVfTU9ERV07CiMgMTE1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9tYWNobW9kZS5oIgpleHRlcm4gY29uc3QgdW5zaWduZWQg bG9uZyBtb2RlX21hc2tfYXJyYXlbKGludCkgTUFYX01BQ0hJTkVfTU9ERV07CgoKCmV4dGVybiBj b25zdCBlbnVtIG1hY2hpbmVfbW9kZSBpbm5lcl9tb2RlX2FycmF5WyhpbnQpIE1BWF9NQUNISU5F X01PREVdOwojIDEzMiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2Nj L3NyYy9nY2MvbWFjaG1vZGUuaCIKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgbW9kZV93aWRl cl9tb2RlWyhpbnQpIE1BWF9NQUNISU5FX01PREVdOwoKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5l X21vZGUgbW9kZV9mb3Jfc2l6ZSAodW5zaWduZWQgaW50LCBlbnVtIG1vZGVfY2xhc3MsIGludCk7 CgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgc21hbGxlc3RfbW9kZV9mb3Jfc2l6ZQogICAg KHVuc2lnbmVkIGludCwgZW51bSBtb2RlX2NsYXNzKTsKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5l X21vZGUgaW50X21vZGVfZm9yX21vZGUgKGVudW0gbWFjaGluZV9tb2RlKTsKCgoKZXh0ZXJuIGVu dW0gbWFjaGluZV9tb2RlIGdldF9iZXN0X21vZGUgKGludCwgaW50LCB1bnNpZ25lZCBpbnQsIGVu dW0gbWFjaGluZV9tb2RlLCBpbnQpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIGdldF9tb2RlX2FsaWdu bWVudCAoZW51bSBtYWNoaW5lX21vZGUpOwoKCgoKCmV4dGVybiBjb25zdCBlbnVtIG1hY2hpbmVf bW9kZSBjbGFzc19uYXJyb3dlc3RfbW9kZVsoaW50KSBNQVhfTU9ERV9DTEFTU107CgoKCgoKZXh0 ZXJuIGVudW0gbWFjaGluZV9tb2RlIGJ5dGVfbW9kZTsKZXh0ZXJuIGVudW0gbWFjaGluZV9tb2Rl IHdvcmRfbW9kZTsKZXh0ZXJuIGVudW0gbWFjaGluZV9tb2RlIHB0cl9tb2RlOwojIDI2ICIvVm9s dW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9yZWFsLmgiIDIK CgoKCmVudW0gcmVhbF92YWx1ZV9jbGFzcyB7CiAgcnZjX3plcm8sCiAgcnZjX25vcm1hbCwKICBy dmNfaW5mLAogIHJ2Y19uYW4KfTsKCgoKCgoKCnN0cnVjdCByZWFsX3ZhbHVlCnsKICBlbnVtIHJl YWxfdmFsdWVfY2xhc3MgY2xhc3MgOiAyOwogIHVuc2lnbmVkIGludCBzaWduIDogMTsKICB1bnNp Z25lZCBpbnQgc2lnbmFsbGluZyA6IDE7CiAgdW5zaWduZWQgaW50IGNhbm9uaWNhbCA6IDE7CiAg c2lnbmVkIGludCBleHAgOiAoMzIgLSA1KTsKICB1bnNpZ25lZCBsb25nIHNpZ1soKDEyOCArICg4 ICogNCkpIC8gKDggKiA0KSldOwp9OwojIDY4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9yZWFsLmgiCmV4dGVybiBjaGFyIHRlc3RfcmVhbF93aWR0 aAogIFtzaXplb2Yoc3RydWN0IHJlYWxfdmFsdWUpIDw9ICgoKDEyOCArICg4ICogNCkpICsgMzIp Lyg4ICogNCkgKyAoKCgxMjggKyAoOCAqIDQpKSArIDMyKSUoOCAqIDQpID8gMSA6IDApKSpzaXpl b2YobG9uZykgPyAxIDogLTFdOwojIDEwNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lh L3NyYy9mc2YvZ2NjL3NyYy9nY2MvcmVhbC5oIgpzdHJ1Y3QgcmVhbF9mb3JtYXQKewoKICB2b2lk ICgqZW5jb2RlKSAoY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0ICosIGxvbmcgKiwgY29uc3Qgc3Ry dWN0IHJlYWxfdmFsdWUgKik7CgogIHZvaWQgKCpkZWNvZGUpIChjb25zdCBzdHJ1Y3QgcmVhbF9m b3JtYXQgKiwgc3RydWN0IHJlYWxfdmFsdWUgKiwgY29uc3QgbG9uZyAqKTsKCgoKICBpbnQgYjsK CgogIGludCBsb2cyX2I7CgoKICBpbnQgcDsKCgogIGludCBwbmFuOwoKCiAgaW50IGVtaW47CgoK ICBpbnQgZW1heDsKCgogIGludCBzaWduYml0OwoKCiAgX0Jvb2wgaGFzX25hbnM7CiAgX0Jvb2wg aGFzX2luZjsKICBfQm9vbCBoYXNfZGVub3JtOwogIF9Cb29sIGhhc19zaWduZWRfemVybzsKICBf Qm9vbCBxbmFuX21zYl9zZXQ7Cn07CgoKCgpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0 ICpyZWFsX2Zvcm1hdF9mb3JfbW9kZVtURm1vZGUgLSBRRm1vZGUgKyAxXTsKCgoKCgpleHRlcm4g dm9pZCByZWFsX2FyaXRobWV0aWMgKHN0cnVjdCByZWFsX3ZhbHVlICosIGludCwgY29uc3Qgc3Ry dWN0IHJlYWxfdmFsdWUgKiwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUgKik7CgoKCgpleHRlcm4g X0Jvb2wgcmVhbF9jb21wYXJlIChpbnQsIGNvbnN0IHN0cnVjdCByZWFsX3ZhbHVlICosIGNvbnN0 IHN0cnVjdCByZWFsX3ZhbHVlICopOwoKCgpleHRlcm4gX0Jvb2wgcmVhbF9pc2luZiAoY29uc3Qg c3RydWN0IHJlYWxfdmFsdWUgKik7CgoKZXh0ZXJuIF9Cb29sIHJlYWxfaXNuYW4gKGNvbnN0IHN0 cnVjdCByZWFsX3ZhbHVlICopOwoKCmV4dGVybiBfQm9vbCByZWFsX2lzbmVnIChjb25zdCBzdHJ1 Y3QgcmVhbF92YWx1ZSAqKTsKCgpleHRlcm4gX0Jvb2wgcmVhbF9pc25lZ3plcm8gKGNvbnN0IHN0 cnVjdCByZWFsX3ZhbHVlICopOwoKCmV4dGVybiBfQm9vbCByZWFsX2lkZW50aWNhbCAoY29uc3Qg c3RydWN0IHJlYWxfdmFsdWUgKiwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUgKik7CgoKCmV4dGVy biB2b2lkIHJlYWxfY29udmVydCAoc3RydWN0IHJlYWxfdmFsdWUgKiwgZW51bSBtYWNoaW5lX21v ZGUsIGNvbnN0IHN0cnVjdCByZWFsX3ZhbHVlICopOwoKCgoKZXh0ZXJuIF9Cb29sIGV4YWN0X3Jl YWxfdHJ1bmNhdGUgKGVudW0gbWFjaGluZV9tb2RlLCBjb25zdCBzdHJ1Y3QgcmVhbF92YWx1ZSAq KTsKCgoKZXh0ZXJuIHZvaWQgcmVhbF90b19kZWNpbWFsIChjaGFyICosIGNvbnN0IHN0cnVjdCBy ZWFsX3ZhbHVlICosIHNpemVfdCwgc2l6ZV90LCBpbnQpOwoKCgpleHRlcm4gdm9pZCByZWFsX3Rv X2hleGFkZWNpbWFsIChjaGFyICosIGNvbnN0IHN0cnVjdCByZWFsX3ZhbHVlICosIHNpemVfdCwg c2l6ZV90LCBpbnQpOwoKCgpleHRlcm4gbG9uZyByZWFsX3RvX2ludGVnZXIgKGNvbnN0IHN0cnVj dCByZWFsX3ZhbHVlICopOwpleHRlcm4gdm9pZCByZWFsX3RvX2ludGVnZXIyIChsb25nICosIGxv bmcgKiwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUgKik7CgoKCmV4dGVybiB2b2lkIHJlYWxfZnJv bV9zdHJpbmcgKHN0cnVjdCByZWFsX3ZhbHVlICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIHZv aWQgcmVhbF9mcm9tX2ludGVnZXIgKHN0cnVjdCByZWFsX3ZhbHVlICosIGVudW0gbWFjaGluZV9t b2RlLCB1bnNpZ25lZCBsb25nLCBsb25nLCBpbnQpOwoKCgoKZXh0ZXJuIGxvbmcgcmVhbF90b190 YXJnZXRfZm10IChsb25nICosIGNvbnN0IHN0cnVjdCByZWFsX3ZhbHVlICosIGNvbnN0IHN0cnVj dCByZWFsX2Zvcm1hdCAqKTsKCmV4dGVybiBsb25nIHJlYWxfdG9fdGFyZ2V0IChsb25nICosIGNv bnN0IHN0cnVjdCByZWFsX3ZhbHVlICosIGVudW0gbWFjaGluZV9tb2RlKTsKCgpleHRlcm4gdm9p ZCByZWFsX2Zyb21fdGFyZ2V0X2ZtdCAoc3RydWN0IHJlYWxfdmFsdWUgKiwgY29uc3QgbG9uZyAq LCBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgKik7CgpleHRlcm4gdm9pZCByZWFsX2Zyb21fdGFy Z2V0IChzdHJ1Y3QgcmVhbF92YWx1ZSAqLCBjb25zdCBsb25nICosIGVudW0gbWFjaGluZV9tb2Rl KTsKCgpleHRlcm4gdm9pZCByZWFsX2luZiAoc3RydWN0IHJlYWxfdmFsdWUgKik7CgpleHRlcm4g X0Jvb2wgcmVhbF9uYW4gKHN0cnVjdCByZWFsX3ZhbHVlICosIGNvbnN0IGNoYXIgKiwgaW50LCBl bnVtIG1hY2hpbmVfbW9kZSk7CgoKZXh0ZXJuIHZvaWQgcmVhbF8yZXhwTiAoc3RydWN0IHJlYWxf dmFsdWUgKiwgaW50KTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgcmVhbF9oYXNoIChjb25zdCBzdHJ1 Y3QgcmVhbF92YWx1ZSAqKTsKCgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBpZWVl X3NpbmdsZV9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgbWlwc19zaW5n bGVfZm9ybWF0OwpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IGllZWVfZG91YmxlX2Zv cm1hdDsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBtaXBzX2RvdWJsZV9mb3JtYXQ7 CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9leHRlbmRlZF9tb3Rvcm9sYV9m b3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9leHRlbmRlZF9pbnRl bF85Nl9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9leHRlbmRl ZF9pbnRlbF8xMjhfZm9ybWF0OwpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IGlibV9l eHRlbmRlZF9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgbWlwc19leHRl bmRlZF9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgaWVlZV9xdWFkX2Zv cm1hdDsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBtaXBzX3F1YWRfZm9ybWF0Owpl eHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IHZheF9mX2Zvcm1hdDsKZXh0ZXJuIGNvbnN0 IHN0cnVjdCByZWFsX2Zvcm1hdCB2YXhfZF9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVh bF9mb3JtYXQgdmF4X2dfZm9ybWF0OwpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWxfZm9ybWF0IGkz NzBfc2luZ2xlX2Zvcm1hdDsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCBpMzcwX2Rv dWJsZV9mb3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgYzR4X3NpbmdsZV9m b3JtYXQ7CmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbF9mb3JtYXQgYzR4X2V4dGVuZGVkX2Zvcm1h dDsKZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsX2Zvcm1hdCByZWFsX2ludGVybmFsX2Zvcm1hdDsK IyAyODkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj L3JlYWwuaCIKZXh0ZXJuIHN0cnVjdCByZWFsX3ZhbHVlIHJlYWxfdmFsdWVfdHJ1bmNhdGUgKGVu dW0gbWFjaGluZV9tb2RlLCBzdHJ1Y3QgcmVhbF92YWx1ZSk7CgoKCgoKZXh0ZXJuIHN0cnVjdCBy ZWFsX3ZhbHVlIHJlYWxfYXJpdGhtZXRpYzIgKGludCwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUg KiwgY29uc3Qgc3RydWN0IHJlYWxfdmFsdWUgKik7CiMgMzA0ICIvVm9sdW1lcy9VRlNfUGFydGl0 aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9yZWFsLmgiCmV4dGVybiBpbnQgc2lnbmlm aWNhbmRfc2l6ZSAoZW51bSBtYWNoaW5lX21vZGUpOwoKZXh0ZXJuIHN0cnVjdCByZWFsX3ZhbHVl IHJlYWxfZnJvbV9zdHJpbmcyIChjb25zdCBjaGFyICosIGVudW0gbWFjaGluZV9tb2RlKTsKIyAz MjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3Jl YWwuaCIKZXh0ZXJuIGludCByZWFsX2V4cG9uZW50IChjb25zdCBzdHJ1Y3QgcmVhbF92YWx1ZSAq KTsKCgpleHRlcm4gdm9pZCByZWFsX2xkZXhwIChzdHJ1Y3QgcmVhbF92YWx1ZSAqLCBjb25zdCBz dHJ1Y3QgcmVhbF92YWx1ZSAqLCBpbnQpOwoKCgoKCgpleHRlcm4gc3RydWN0IHJlYWxfdmFsdWUg ZGNvbnN0MDsKZXh0ZXJuIHN0cnVjdCByZWFsX3ZhbHVlIGRjb25zdDE7CmV4dGVybiBzdHJ1Y3Qg cmVhbF92YWx1ZSBkY29uc3QyOwpleHRlcm4gc3RydWN0IHJlYWxfdmFsdWUgZGNvbnN0bTE7CmV4 dGVybiBzdHJ1Y3QgcmVhbF92YWx1ZSBkY29uc3RtMjsKZXh0ZXJuIHN0cnVjdCByZWFsX3ZhbHVl IGRjb25zdGhhbGY7CgoKCnN0cnVjdCByZWFsX3ZhbHVlIHJlYWxfdmFsdWVfZnJvbV9pbnRfY3N0 ICh1bmlvbiB0cmVlX25vZGUgKiwgdW5pb24gdHJlZV9ub2RlICopOwojIDM1NCAiL1ZvbHVtZXMv VUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvcmVhbC5oIgpleHRlcm4g cnR4IGNvbnN0X2RvdWJsZV9mcm9tX3JlYWxfdmFsdWUgKHN0cnVjdCByZWFsX3ZhbHVlLCBlbnVt IG1hY2hpbmVfbW9kZSk7CgoKCmV4dGVybiBfQm9vbCBleGFjdF9yZWFsX2ludmVyc2UgKGVudW0g bWFjaGluZV9tb2RlLCBzdHJ1Y3QgcmVhbF92YWx1ZSAqKTsKCgpleHRlcm4gdHJlZSBidWlsZF9y ZWFsICh0cmVlLCBzdHJ1Y3QgcmVhbF92YWx1ZSk7CgoKZXh0ZXJuIF9Cb29sIHJlYWxfc3FydCAo c3RydWN0IHJlYWxfdmFsdWUgKiwgZW51bSBtYWNoaW5lX21vZGUsIGNvbnN0IHN0cnVjdCByZWFs X3ZhbHVlICopOwojIDI3ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n Y2Mvc3JjL2djYy9jLXByZXR0eS1wcmludC5jIiAyCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYy1wcmV0dHktcHJpbnQuaCIgMQojIDI1ICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLXByZXR0 eS1wcmludC5oIgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2dj Yy9zcmMvZ2NjL3RyZWUuaCIgMQojIDI1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv c3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvbWFjaG1vZGUuaCIgMQojIDI2ICIvVm9sdW1lcy9V RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiIDIKIyAxICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy92ZXJzaW9u LmgiIDEKCgpleHRlcm4gY29uc3QgY2hhciB2ZXJzaW9uX3N0cmluZ1tdOwpleHRlcm4gY29uc3Qg Y2hhciBidWdfcmVwb3J0X3VybFtdOwojIDI3ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiIDIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0 aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9sb2NhdGlvbi5oIiAxCiMgMjcgIi9Wb2x1 bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2xvY2F0aW9uLmgi CnN0cnVjdCBsb2NhdGlvbl9zCnsKCiAgY29uc3QgY2hhciAqZmlsZTsKCgogIGludCBsaW5lOwp9 Owp0eXBlZGVmIHN0cnVjdCBsb2NhdGlvbl9zIGxvY2F0aW9uX3Q7CiMgMjggIi9Wb2x1bWVzL1VG U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIgMgoKCgoKCmVu dW0gdHJlZV9jb2RlIHsKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz Zi9nY2Mvc3JjL2djYy90cmVlLmRlZiIgMQojIDUwICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmRlZiIKRVJST1JfTUFSSywKCgoKCgpJREVO VElGSUVSX05PREUsCgoKCgoKClRSRUVfTElTVCwKCgpUUkVFX1ZFQywKIyA4OCAiL1ZvbHVtZXMv VUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiCkJMT0NL LAojIDEzMyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n Y2MvdHJlZS5kZWYiClZPSURfVFlQRSwKIyAxNDMgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGlu c2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpJTlRFR0VSX1RZUEUsCgoKClJFQUxf VFlQRSwKCgoKQ09NUExFWF9UWVBFLAoKCgpWRUNUT1JfVFlQRSwKIyAxNjggIi9Wb2x1bWVzL1VG U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpFTlVNRVJB TF9UWVBFLAoKCgpCT09MRUFOX1RZUEUsCgoKCkNIQVJfVFlQRSwKCgoKUE9JTlRFUl9UWVBFLAoK CgoKCk9GRlNFVF9UWVBFLAoKCgpSRUZFUkVOQ0VfVFlQRSwKCgoKCgoKTUVUSE9EX1RZUEUsCgoK RklMRV9UWVBFLAojIDIxMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv Z2NjL3NyYy9nY2MvdHJlZS5kZWYiCkFSUkFZX1RZUEUsCgoKCgoKU0VUX1RZUEUsCiMgMjI3ICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmRl ZiIKUkVDT1JEX1RZUEUsCgoKCgoKVU5JT05fVFlQRSwKCgoKCgpRVUFMX1VOSU9OX1RZUEUsCgoK CgoKCgpGVU5DVElPTl9UWVBFLAoKCgoKCkxBTkdfVFlQRSwKIyAyNjQgIi9Wb2x1bWVzL1VGU19Q YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpJTlRFR0VSX0NT VCwKCgpSRUFMX0NTVCwKCgoKQ09NUExFWF9DU1QsCgoKVkVDVE9SX0NTVCwKCgpTVFJJTkdfQ1NU LAojIDMzNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n Y2MvdHJlZS5kZWYiCkZVTkNUSU9OX0RFQ0wsCkxBQkVMX0RFQ0wsCkNPTlNUX0RFQ0wsClRZUEVf REVDTCwKVkFSX0RFQ0wsClBBUk1fREVDTCwKUkVTVUxUX0RFQ0wsCkZJRUxEX0RFQ0wsCgoKCk5B TUVTUEFDRV9ERUNMLAoKCgoKCgpDT01QT05FTlRfUkVGLAojIDM2MyAiL1ZvbHVtZXMvVUZTX1Bh cnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiCkJJVF9GSUVMRF9S RUYsCgoKSU5ESVJFQ1RfUkVGLAoKCkJVRkZFUl9SRUYsCgoKCkFSUkFZX1JFRiwKCgoKCkFSUkFZ X1JBTkdFX1JFRiwKCgoKCgoKVlRBQkxFX1JFRiwKIyA0MDcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpDT05TVFJVQ1RPUiwKIyA0 MTcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3Ry ZWUuZGVmIgpDT01QT1VORF9FWFBSLAoKCk1PRElGWV9FWFBSLAoKCgpJTklUX0VYUFIsCgoKCgoK ClRBUkdFVF9FWFBSLAojIDQ0MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m c2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiCkNPTkRfRVhQUiwKIyA0NjQgIi9Wb2x1bWVzL1VGU19Q YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpCSU5EX0VYUFIs CgoKCgpDQUxMX0VYUFIsCgoKCgpNRVRIT0RfQ0FMTF9FWFBSLAojIDQ4OCAiL1ZvbHVtZXMvVUZT X1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiCldJVEhfQ0xF QU5VUF9FWFBSLAojIDUwNSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv Z2NjL3NyYy9nY2MvdHJlZS5kZWYiCkNMRUFOVVBfUE9JTlRfRVhQUiwKIyA1NTQgIi9Wb2x1bWVz L1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpQTEFD RUhPTERFUl9FWFBSLAoKCgoKCldJVEhfUkVDT1JEX0VYUFIsCgoKUExVU19FWFBSLApNSU5VU19F WFBSLApNVUxUX0VYUFIsCgoKVFJVTkNfRElWX0VYUFIsCgoKQ0VJTF9ESVZfRVhQUiwKCgpGTE9P Ul9ESVZfRVhQUiwKCgpST1VORF9ESVZfRVhQUiwKCgpUUlVOQ19NT0RfRVhQUiwKQ0VJTF9NT0Rf RVhQUiwKRkxPT1JfTU9EX0VYUFIsClJPVU5EX01PRF9FWFBSLAoKClJESVZfRVhQUiwKCgoKRVhB Q1RfRElWX0VYUFIsCgoKCgoKCkZJWF9UUlVOQ19FWFBSLApGSVhfQ0VJTF9FWFBSLApGSVhfRkxP T1JfRVhQUiwKRklYX1JPVU5EX0VYUFIsCgoKRkxPQVRfRVhQUiwKCgpORUdBVEVfRVhQUiwKCk1J Tl9FWFBSLApNQVhfRVhQUiwKCgoKCgpBQlNfRVhQUiwKCgpGRlNfRVhQUiwKQ0xaX0VYUFIsCkNU Wl9FWFBSLApQT1BDT1VOVF9FWFBSLApQQVJJVFlfRVhQUiwKIyA2MzEgIi9Wb2x1bWVzL1VGU19Q YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpMU0hJRlRfRVhQ UiwKUlNISUZUX0VYUFIsCkxST1RBVEVfRVhQUiwKUlJPVEFURV9FWFBSLAoKCkJJVF9JT1JfRVhQ UiwKQklUX1hPUl9FWFBSLApCSVRfQU5EX0VYUFIsCkJJVF9BTkRUQ19FWFBSLApCSVRfTk9UX0VY UFIsCiMgNjUyICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3Jj L2djYy90cmVlLmRlZiIKVFJVVEhfQU5ESUZfRVhQUiwKVFJVVEhfT1JJRl9FWFBSLApUUlVUSF9B TkRfRVhQUiwKVFJVVEhfT1JfRVhQUiwKVFJVVEhfWE9SX0VYUFIsClRSVVRIX05PVF9FWFBSLAoK CgoKCgoKTFRfRVhQUiwKTEVfRVhQUiwKR1RfRVhQUiwKR0VfRVhQUiwKRVFfRVhQUiwKTkVfRVhQ UiwKCgpVTk9SREVSRURfRVhQUiwKT1JERVJFRF9FWFBSLAoKClVOTFRfRVhQUiwKVU5MRV9FWFBS LApVTkdUX0VYUFIsClVOR0VfRVhQUiwKVU5FUV9FWFBSLAoKCklOX0VYUFIsClNFVF9MRV9FWFBS LApDQVJEX0VYUFIsClJBTkdFX0VYUFIsCgoKCgpDT05WRVJUX0VYUFIsCgoKTk9QX0VYUFIsCgoK Tk9OX0xWQUxVRV9FWFBSLAojIDcxMCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny Yy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5kZWYiClZJRVdfQ09OVkVSVF9FWFBSLAoKCgoKClNBVkVf RVhQUiwKIyA3MjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z cmMvZ2NjL3RyZWUuZGVmIgpVTlNBVkVfRVhQUiwKIyA3MzQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuZGVmIgpSVExfRVhQUiwKCgoKQURE Ul9FWFBSLAoKClJFRkVSRU5DRV9FWFBSLAoKCgpFTlRSWV9WQUxVRV9FWFBSLAoKCgpGREVTQ19F WFBSLAoKCgpDT01QTEVYX0VYUFIsCgoKQ09OSl9FWFBSLAoKCgpSRUFMUEFSVF9FWFBSLApJTUFH UEFSVF9FWFBSLAoKCgoKUFJFREVDUkVNRU5UX0VYUFIsClBSRUlOQ1JFTUVOVF9FWFBSLApQT1NU REVDUkVNRU5UX0VYUFIsClBPU1RJTkNSRU1FTlRfRVhQUiwKCgpWQV9BUkdfRVhQUiwKCgoKCgoK VFJZX0NBVENIX0VYUFIsCiMgNzkzICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj L2ZzZi9nY2Mvc3JjL2djYy90cmVlLmRlZiIKVFJZX0ZJTkFMTFlfRVhQUiwKCgoKCgoKR09UT19T VUJST1VUSU5FX0VYUFIsCgoKCgoKCgpMQUJFTF9FWFBSLAoKCgpHT1RPX0VYUFIsCgoKCgoKClJF VFVSTl9FWFBSLAoKCgpFWElUX0VYUFIsCgoKCgpMT09QX0VYUFIsCgoKCgpMQUJFTEVEX0JMT0NL X0VYUFIsCgoKCgpFWElUX0JMT0NLX0VYUFIsCiMgODQ3ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9u L3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmRlZiIKRVhQUl9XSVRIX0ZJTEVfTE9D QVRJT04sCgoKCgoKU1dJVENIX0VYUFIsCgoKRVhDX1BUUl9FWFBSLAojIDM1ICIvVm9sdW1lcy9V RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiIDIKCiAgTEFT VF9BTkRfVU5VU0VEX1RSRUVfQ09ERQoKfTsKIyA1MyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgpleHRlcm4gY29uc3QgY2hhciB0cmVl X2NvZGVfdHlwZVtdOwojIDY0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz Zi9nY2Mvc3JjL2djYy90cmVlLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIHRyZWVfY29k ZV9sZW5ndGhbXTsKCgoKCmV4dGVybiBjb25zdCBjaGFyICpjb25zdCB0cmVlX2NvZGVfbmFtZVtd OwoKCgplbnVtIGJ1aWx0X2luX2NsYXNzCnsKICBOT1RfQlVJTFRfSU4gPSAwLAogIEJVSUxUX0lO X0ZST05URU5ELAogIEJVSUxUX0lOX01ELAogIEJVSUxUX0lOX05PUk1BTAp9OwoKCmV4dGVybiBj b25zdCBjaGFyICpjb25zdCBidWlsdF9pbl9jbGFzc19uYW1lc1s0XTsKCgoKCgplbnVtIGJ1aWx0 X2luX2Z1bmN0aW9uCnsKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2Zz Zi9nY2Mvc3JjL2djYy9idWlsdGlucy5kZWYiIDEKIyAxNTEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2J1aWx0aW5zLmRlZiIKQlVJTFRfSU5fQUxM T0NBLAoKCgoKCkJVSUxUX0lOX0FCUywKCgoKQlVJTFRfSU5fTEFCUywKCgoKCkJVSUxUX0lOX0ZB QlMsCgoKCkJVSUxUX0lOX0ZBQlNGLAoKCgpCVUlMVF9JTl9GQUJTTCwKCgoKCkJVSUxUX0lOX0ZM T09SLAoKCgpCVUlMVF9JTl9GTE9PUkYsCgoKCkJVSUxUX0lOX0ZMT09STCwKCgoKCkJVSUxUX0lO X0NFSUwsCgoKCkJVSUxUX0lOX0NFSUxGLAoKCgpCVUlMVF9JTl9DRUlMTCwKCgoKCkJVSUxUX0lO X1JPVU5ELAoKCgpCVUlMVF9JTl9ST1VOREYsCgoKCkJVSUxUX0lOX1JPVU5ETCwKCgoKCkJVSUxU X0lOX1RSVU5DLAoKCgpCVUlMVF9JTl9UUlVOQ0YsCgoKCkJVSUxUX0lOX1RSVU5DTCwKCgoKCkJV SUxUX0lOX05FQVJCWUlOVCwKCgoKQlVJTFRfSU5fTkVBUkJZSU5URiwKCgoKQlVJTFRfSU5fTkVB UkJZSU5UTCwKCgoKCkJVSUxUX0lOX0xMQUJTLAoKCgpCVUlMVF9JTl9JTUFYQUJTLAoKCgpCVUlM VF9JTl9DT05KLAoKCgpCVUlMVF9JTl9DT05KRiwKCgoKQlVJTFRfSU5fQ09OSkwsCgoKCkJVSUxU X0lOX0NSRUFMLAoKCgpCVUlMVF9JTl9DUkVBTEYsCgoKCkJVSUxUX0lOX0NSRUFMTCwKCgoKQlVJ TFRfSU5fQ0lNQUcsCgoKCkJVSUxUX0lOX0NJTUFHRiwKCgoKQlVJTFRfSU5fQ0lNQUdMLAoKCgoK CgoKQlVJTFRfSU5fQlpFUk8sCgoKCgoKCkJVSUxUX0lOX0JDT1BZLAoKCgoKCgpCVUlMVF9JTl9C Q01QLAoKCgoKCgoKQlVJTFRfSU5fRkZTLAoKCgpCVUlMVF9JTl9DTFosCgoKCkJVSUxUX0lOX0NU WiwKCgoKQlVJTFRfSU5fUE9QQ09VTlQsCgoKCkJVSUxUX0lOX1BBUklUWSwKCgoKCkJVSUxUX0lO X0ZGU0wsCgoKCkJVSUxUX0lOX0NMWkwsCgoKCkJVSUxUX0lOX0NUWkwsCgoKCkJVSUxUX0lOX1BP UENPVU5UTCwKCgoKQlVJTFRfSU5fUEFSSVRZTCwKCgoKCkJVSUxUX0lOX0ZGU0xMLAoKCgpCVUlM VF9JTl9DTFpMTCwKCgoKQlVJTFRfSU5fQ1RaTEwsCgoKCkJVSUxUX0lOX1BPUENPVU5UTEwsCgoK CkJVSUxUX0lOX1BBUklUWUxMLAoKCgoKQlVJTFRfSU5fSU5ERVgsCgoKCkJVSUxUX0lOX1JJTkRF WCwKCgoKCkJVSUxUX0lOX01FTUNQWSwKCgoKQlVJTFRfSU5fTUVNTU9WRSwKCgoKQlVJTFRfSU5f TUVNQ01QLAoKCgpCVUlMVF9JTl9NRU1TRVQsCgoKCkJVSUxUX0lOX01FTVBDUFksCgoKCgpCVUlM VF9JTl9TVFJDQVQsCgoKCkJVSUxUX0lOX1NUUk5DQVQsCgoKCkJVSUxUX0lOX1NUUENQWSwKCgoK QlVJTFRfSU5fU1RSQ1BZLAoKCgpCVUlMVF9JTl9TVFJOQ1BZLAoKCgpCVUlMVF9JTl9TVFJDTVAs CgoKCkJVSUxUX0lOX1NUUk5DTVAsCgoKCkJVSUxUX0lOX1NUUkxFTiwKCgoKQlVJTFRfSU5fU1RS U1RSLAoKCgpCVUlMVF9JTl9TVFJQQlJLLAoKCgpCVUlMVF9JTl9TVFJTUE4sCgoKCkJVSUxUX0lO X1NUUkNTUE4sCgoKCkJVSUxUX0lOX1NUUkNIUiwKCgoKQlVJTFRfSU5fU1RSUkNIUiwKCgoKCkJV SUxUX0lOX1NRUlQsCgoKCgoKCkJVSUxUX0lOX1NJTiwKCgoKCkJVSUxUX0lOX0NPUywKCgoKCkJV SUxUX0lOX0VYUCwKCgoKCgoKQlVJTFRfSU5fTE9HLAoKCgoKCgpCVUlMVF9JTl9QT1csCgoKCgoK CkJVSUxUX0lOX0FUQU4yLAoKCgoKCgpCVUlMVF9JTl9GTU9ELAoKCgoKCgpCVUlMVF9JTl9TUVJU RiwKCgoKCgoKQlVJTFRfSU5fU0lORiwKCgoKCkJVSUxUX0lOX0NPU0YsCgoKCgpCVUlMVF9JTl9F WFBGLAoKCgoKCgpCVUlMVF9JTl9MT0dGLAoKCgoKCgpCVUlMVF9JTl9QT1dGLAoKCgoKCgpCVUlM VF9JTl9BVEFOMkYsCgoKCgoKCkJVSUxUX0lOX0ZNT0RGLAoKCgoKCgpCVUlMVF9JTl9TUVJUTCwK CgoKCgoKQlVJTFRfSU5fU0lOTCwKCgoKCkJVSUxUX0lOX0NPU0wsCgoKCgpCVUlMVF9JTl9FWFBM LAoKCgoKCgpCVUlMVF9JTl9MT0dMLAoKCgoKCgpCVUlMVF9JTl9QT1dMLAoKCgoKCgpCVUlMVF9J Tl9BVEFOMkwsCgoKCgoKCkJVSUxUX0lOX0ZNT0RMLAoKCgoKCgoKQlVJTFRfSU5fSU5GLAoKCgpC VUlMVF9JTl9JTkZGLAoKCgpCVUlMVF9JTl9JTkZMLAoKCgoKQlVJTFRfSU5fSFVHRV9WQUwsCgoK CkJVSUxUX0lOX0hVR0VfVkFMRiwKCgoKQlVJTFRfSU5fSFVHRV9WQUxMLAoKCgoKQlVJTFRfSU5f TkFOLAoKCgpCVUlMVF9JTl9OQU5GLAoKCgpCVUlMVF9JTl9OQU5MLAoKCgoKQlVJTFRfSU5fTkFO UywKCgoKQlVJTFRfSU5fTkFOU0YsCgoKCkJVSUxUX0lOX05BTlNMLAoKCgoKQlVJTFRfSU5fU0FW RVJFR1MsCgoKCkJVSUxUX0lOX0NMQVNTSUZZX1RZUEUsCgoKCkJVSUxUX0lOX05FWFRfQVJHLAoK CgpCVUlMVF9JTl9BUkdTX0lORk8sCgoKCkJVSUxUX0lOX0NPTlNUQU5UX1AsCgoKCkJVSUxUX0lO X0ZSQU1FX0FERFJFU1MsCgoKCkJVSUxUX0lOX1JFVFVSTl9BRERSRVNTLAoKCgpCVUlMVF9JTl9B R0dSRUdBVEVfSU5DT01JTkdfQUREUkVTUywKCgoKQlVJTFRfSU5fQVBQTFlfQVJHUywKCgoKQlVJ TFRfSU5fQVBQTFksCgoKCkJVSUxUX0lOX1JFVFVSTiwKCgoKQlVJTFRfSU5fU0VUSk1QLAoKCgpC VUlMVF9JTl9MT05HSk1QLAoKCgpCVUlMVF9JTl9UUkFQLAoKCgpCVUlMVF9JTl9QUkVGRVRDSCwK CgoKCgoKQlVJTFRfSU5fUFJJTlRGLAoKCgpCVUlMVF9JTl9QVVRDSEFSLAoKCgpCVUlMVF9JTl9Q VVRTLAoKCgpCVUlMVF9JTl9TTlBSSU5URiwKCgoKQlVJTFRfSU5fU1BSSU5URiwKCgoKQlVJTFRf SU5fU0NBTkYsCgoKCkJVSUxUX0lOX1NTQ0FORiwKCgoKQlVJTFRfSU5fVlBSSU5URiwKCgoKQlVJ TFRfSU5fVlNDQU5GLAoKCgpCVUlMVF9JTl9WU1NDQU5GLAoKCgpCVUlMVF9JTl9WU05QUklOVEYs CgoKCkJVSUxUX0lOX1ZTUFJJTlRGLAojIDc5MyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5z a2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYnVpbHRpbnMuZGVmIgpCVUlMVF9JTl9GUFVUQywKCgoK QlVJTFRfSU5fRlBVVFMsCgoKCgoKQlVJTFRfSU5fRldSSVRFLAoKCgpCVUlMVF9JTl9GUFJJTlRG LAoKCgoKCgpCVUlMVF9JTl9QVVRDSEFSX1VOTE9DS0VELAoKCkJVSUxUX0lOX1BVVFNfVU5MT0NL RUQsCgoKQlVJTFRfSU5fUFJJTlRGX1VOTE9DS0VELAojIDgzMiAiL1ZvbHVtZXMvVUZTX1BhcnRp dGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYnVpbHRpbnMuZGVmIgpCVUlMVF9JTl9G UFVUQ19VTkxPQ0tFRCwKCgpCVUlMVF9JTl9GUFVUU19VTkxPQ0tFRCwKCgoKCgpCVUlMVF9JTl9G V1JJVEVfVU5MT0NLRUQsCgoKQlVJTFRfSU5fRlBSSU5URl9VTkxPQ0tFRCwKCgoKCgpCVUlMVF9J Tl9JU0dSRUFURVIsCgoKCkJVSUxUX0lOX0lTR1JFQVRFUkVRVUFMLAoKCgpCVUlMVF9JTl9JU0xF U1MsCgoKCkJVSUxUX0lOX0lTTEVTU0VRVUFMLAoKCgpCVUlMVF9JTl9JU0xFU1NHUkVBVEVSLAoK CgpCVUlMVF9JTl9JU1VOT1JERVJFRCwKCgoKCgpCVUlMVF9JTl9VTldJTkRfSU5JVCwKCgoKQlVJ TFRfSU5fRFdBUkZfQ0ZBLAoKCgpCVUlMVF9JTl9EV0FSRl9GUF9SRUdOVU0sCgoKCkJVSUxUX0lO X0lOSVRfRFdBUkZfUkVHX1NJWkVTLAoKCgpCVUlMVF9JTl9GUk9CX1JFVFVSTl9BRERSLAoKCgpC VUlMVF9JTl9FWFRSQUNUX1JFVFVSTl9BRERSLAoKCgpCVUlMVF9JTl9FSF9SRVRVUk4sCgoKCkJV SUxUX0lOX0VIX1JFVFVSTl9EQVRBX1JFR05PLAoKCgoKCkJVSUxUX0lOX1ZBX1NUQVJULAoKCgpC VUlMVF9JTl9TVERBUkdfU1RBUlQsCgoKCkJVSUxUX0lOX1ZBX0VORCwKCgoKQlVJTFRfSU5fVkFf Q09QWSwKCgoKCkJVSUxUX0lOX0VYUEVDVCwKCgoKCgpCVUlMVF9JTl9BQk9SVCwKCgoKQlVJTFRf SU5fRVhJVCwKCgoKQlVJTFRfSU5fX0VYSVQsCgoKCkJVSUxUX0lOX19FWElUMiwKCgoKCgpCVUlM VF9JTl9NQUxMT0MsCgoKCgpCVUlMVF9JTl9DQUxMT0MsCgoKCgpCVUlMVF9JTl9TVFJEVVAsCiMg OTEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3Ry ZWUuaCIgMgoKCiAgRU5EX0JVSUxUSU5TCn07CgoKCmV4dGVybiBjb25zdCBjaGFyICpjb25zdCBi dWlsdF9pbl9uYW1lc1soaW50KSBFTkRfQlVJTFRJTlNdOwoKCmV4dGVybiB0cmVlIGJ1aWx0X2lu X2RlY2xzWyhpbnQpIEVORF9CVUlMVElOU107CmV4dGVybiB0cmVlIGltcGxpY2l0X2J1aWx0X2lu X2RlY2xzWyhpbnQpIEVORF9CVUlMVElOU107CiMgMTI2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9u L3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCnN0cnVjdCB0cmVlX2NvbW1vbgp7 CiAgdHJlZSBjaGFpbjsKICB0cmVlIHR5cGU7CgogIGVudW0gdHJlZV9jb2RlIGNvZGUgOiA4OwoK ICB1bnNpZ25lZCBzaWRlX2VmZmVjdHNfZmxhZyA6IDE7CiAgdW5zaWduZWQgY29uc3RhbnRfZmxh ZyA6IDE7CiAgdW5zaWduZWQgYWRkcmVzc2FibGVfZmxhZyA6IDE7CiAgdW5zaWduZWQgdm9sYXRp bGVfZmxhZyA6IDE7CiAgdW5zaWduZWQgcmVhZG9ubHlfZmxhZyA6IDE7CiAgdW5zaWduZWQgdW5z aWduZWRfZmxhZyA6IDE7CiAgdW5zaWduZWQgYXNtX3dyaXR0ZW5fZmxhZzogMTsKICB1bnNpZ25l ZCB1bnVzZWRfMCA6IDE7CgogIHVuc2lnbmVkIHVzZWRfZmxhZyA6IDE7CiAgdW5zaWduZWQgbm90 aHJvd19mbGFnIDogMTsKICB1bnNpZ25lZCBzdGF0aWNfZmxhZyA6IDE7CiAgdW5zaWduZWQgcHVi bGljX2ZsYWcgOiAxOwogIHVuc2lnbmVkIHByaXZhdGVfZmxhZyA6IDE7CiAgdW5zaWduZWQgcHJv dGVjdGVkX2ZsYWcgOiAxOwogIHVuc2lnbmVkIGJvdW5kZWRfZmxhZyA6IDE7CiAgdW5zaWduZWQg ZGVwcmVjYXRlZF9mbGFnIDogMTsKCiAgdW5zaWduZWQgbGFuZ19mbGFnXzAgOiAxOwogIHVuc2ln bmVkIGxhbmdfZmxhZ18xIDogMTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfMiA6IDE7CiAgdW5zaWdu ZWQgbGFuZ19mbGFnXzMgOiAxOwogIHVuc2lnbmVkIGxhbmdfZmxhZ180IDogMTsKICB1bnNpZ25l ZCBsYW5nX2ZsYWdfNSA6IDE7CiAgdW5zaWduZWQgbGFuZ19mbGFnXzYgOiAxOwogIHVuc2lnbmVk IHVudXNlZF8xIDogMTsKfTsKIyAzNzggIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9z cmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIKIyAxICJ0cmVlLWNoZWNrLmgiIDEKIyAzNzkgIi9W b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIg MgojIDc0MCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n Y2MvdHJlZS5oIgpzdHJ1Y3QgdHJlZV9pbnRfY3N0CnsKICBzdHJ1Y3QgdHJlZV9jb21tb24gY29t bW9uOwoKCgogIHN0cnVjdCB0cmVlX2ludF9jc3RfbG93aGkgewogICAgdW5zaWduZWQgbG9uZyBs b3c7CiAgICBsb25nIGhpZ2g7CiAgfSBpbnRfY3N0Owp9OwoKCgoKc3RydWN0IHJlYWxfdmFsdWU7 CgoKCgpzdHJ1Y3QgdHJlZV9yZWFsX2NzdAp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsK ICBzdHJ1Y3QgcmVhbF92YWx1ZSAqIHJlYWxfY3N0X3B0cjsKfTsKCgoKCgpzdHJ1Y3QgdHJlZV9z dHJpbmcKewogIHN0cnVjdCB0cmVlX2NvbW1vbiBjb21tb247CiAgaW50IGxlbmd0aDsKICBjb25z dCBjaGFyICpwb2ludGVyOwp9OwoKCgoKCnN0cnVjdCB0cmVlX2NvbXBsZXgKewogIHN0cnVjdCB0 cmVlX2NvbW1vbiBjb21tb247CiAgdHJlZSByZWFsOwogIHRyZWUgaW1hZzsKfTsKCgoKCnN0cnVj dCB0cmVlX3ZlY3Rvcgp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICB0cmVlIGVsZW1l bnRzOwp9OwoKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv c3JjL2djYy9oYXNodGFibGUuaCIgMQojIDIxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9oYXNodGFibGUuaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFy dGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvb2JzdGFjay5oIiAxCiMgMTYx ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUv b2JzdGFjay5oIgpzdHJ1Y3QgX29ic3RhY2tfY2h1bmsKewogIGNoYXIgKmxpbWl0OwogIHN0cnVj dCBfb2JzdGFja19jaHVuayAqcHJldjsKICBjaGFyIGNvbnRlbnRzWzRdOwp9OwoKc3RydWN0IG9i c3RhY2sKewogIGxvbmcgY2h1bmtfc2l6ZTsKICBzdHJ1Y3QgX29ic3RhY2tfY2h1bmsgKmNodW5r OwogIGNoYXIgKm9iamVjdF9iYXNlOwogIGNoYXIgKm5leHRfZnJlZTsKICBjaGFyICpjaHVua19s aW1pdDsKICBpbnQgdGVtcDsKICBpbnQgYWxpZ25tZW50X21hc2s7CgoKCgogIHN0cnVjdCBfb2Jz dGFja19jaHVuayAqKCpjaHVua2Z1bikgKHZvaWQgKiwgbG9uZyk7CiAgdm9pZCAoKmZyZWVmdW4p ICh2b2lkICosIHN0cnVjdCBfb2JzdGFja19jaHVuayAqKTsKICB2b2lkICpleHRyYV9hcmc7CgoK CgoKICB1bnNpZ25lZCB1c2VfZXh0cmFfYXJnOjE7CiAgdW5zaWduZWQgbWF5YmVfZW1wdHlfb2Jq ZWN0OjE7CgoKCiAgdW5zaWduZWQgYWxsb2NfZmFpbGVkOjE7CgoKfTsKCgoKCmV4dGVybiB2b2lk IF9vYnN0YWNrX25ld2NodW5rIChzdHJ1Y3Qgb2JzdGFjayAqLCBpbnQpOwpleHRlcm4gdm9pZCBf b2JzdGFja19mcmVlIChzdHJ1Y3Qgb2JzdGFjayAqLCB2b2lkICopOwpleHRlcm4gaW50IF9vYnN0 YWNrX2JlZ2luIChzdHJ1Y3Qgb2JzdGFjayAqLCBpbnQsIGludCwKICAgICAgIHZvaWQgKigqKSAo bG9uZyksIHZvaWQgKCopICh2b2lkICopKTsKZXh0ZXJuIGludCBfb2JzdGFja19iZWdpbl8xIChz dHJ1Y3Qgb2JzdGFjayAqLCBpbnQsIGludCwKICAgICAgICB2b2lkICooKikgKHZvaWQgKiwgbG9u ZyksCiAgICAgICAgdm9pZCAoKikgKHZvaWQgKiwgdm9pZCAqKSwgdm9pZCAqKTsKZXh0ZXJuIGlu dCBfb2JzdGFja19tZW1vcnlfdXNlZCAoc3RydWN0IG9ic3RhY2sgKik7CiMgMjIzICIvVm9sdW1l cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvb2JzdGFjay5o Igp2b2lkIG9ic3RhY2tfaW5pdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwoKdm9pZCAqIG9i c3RhY2tfYWxsb2MgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBpbnQgc2l6ZSk7Cgp2b2lkICog b2JzdGFja19jb3B5IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgdm9pZCAqYWRkcmVzcywgaW50 IHNpemUpOwp2b2lkICogb2JzdGFja19jb3B5MCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZv aWQgKmFkZHJlc3MsIGludCBzaXplKTsKCnZvaWQgb2JzdGFja19mcmVlIChzdHJ1Y3Qgb2JzdGFj ayAqb2JzdGFjaywgdm9pZCAqYmxvY2spOwoKdm9pZCBvYnN0YWNrX2JsYW5rIChzdHJ1Y3Qgb2Jz dGFjayAqb2JzdGFjaywgaW50IHNpemUpOwoKdm9pZCBvYnN0YWNrX2dyb3cgKHN0cnVjdCBvYnN0 YWNrICpvYnN0YWNrLCB2b2lkICpkYXRhLCBpbnQgc2l6ZSk7CnZvaWQgb2JzdGFja19ncm93MCAo c3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZvaWQgKmRhdGEsIGludCBzaXplKTsKCnZvaWQgb2Jz dGFja18xZ3JvdyAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBkYXRhX2NoYXIpOwp2b2lk IG9ic3RhY2tfcHRyX2dyb3cgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCB2b2lkICpkYXRhKTsK dm9pZCBvYnN0YWNrX2ludF9ncm93IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgaW50IGRhdGEp OwoKdm9pZCAqIG9ic3RhY2tfZmluaXNoIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CgppbnQg b2JzdGFja19vYmplY3Rfc2l6ZSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwoKaW50IG9ic3Rh Y2tfcm9vbSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwp2b2lkIG9ic3RhY2tfbWFrZV9yb29t IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgaW50IHNpemUpOwp2b2lkIG9ic3RhY2tfMWdyb3df ZmFzdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBkYXRhX2NoYXIpOwp2b2lkIG9ic3Rh Y2tfcHRyX2dyb3dfZmFzdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZvaWQgKmRhdGEpOwp2 b2lkIG9ic3RhY2tfaW50X2dyb3dfZmFzdCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBk YXRhKTsKdm9pZCBvYnN0YWNrX2JsYW5rX2Zhc3QgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBp bnQgc2l6ZSk7Cgp2b2lkICogb2JzdGFja19iYXNlIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7 CnZvaWQgKiBvYnN0YWNrX25leHRfZnJlZSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwppbnQg b2JzdGFja19hbGlnbm1lbnRfbWFzayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwppbnQgb2Jz dGFja19jaHVua19zaXplIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CmludCBvYnN0YWNrX21l bW9yeV91c2VkIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayk7CiMgMjY3ICIvVm9sdW1lcy9VRlNf UGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvb2JzdGFjay5oIgpleHRl cm4gdm9pZCAoKm9ic3RhY2tfYWxsb2NfZmFpbGVkX2hhbmRsZXIpICh2b2lkKTsKCgoKCgpleHRl cm4gaW50IG9ic3RhY2tfZXhpdF9mYWlsdXJlOwojIDIyICIvVm9sdW1lcy9VRlNfUGFydGl0aW9u L3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9oYXNodGFibGUuaCIgMgoKCgp0eXBlZGVmIHN0 cnVjdCBodF9pZGVudGlmaWVyIGh0X2lkZW50aWZpZXI7CnN0cnVjdCBodF9pZGVudGlmaWVyCnsK ICBjb25zdCB1bnNpZ25lZCBjaGFyICpzdHI7CiAgdW5zaWduZWQgaW50IGxlbjsKfTsKCgoKCnR5 cGVkZWYgc3RydWN0IGh0IGhhc2hfdGFibGU7CnR5cGVkZWYgc3RydWN0IGh0X2lkZW50aWZpZXIg Kmhhc2hub2RlOwoKZW51bSBodF9sb29rdXBfb3B0aW9uIHtIVF9OT19JTlNFUlQgPSAwLCBIVF9B TExPQywgSFRfQUxMT0NFRH07CgoKc3RydWN0IGh0CnsKCiAgc3RydWN0IG9ic3RhY2sgc3RhY2s7 CgogIGhhc2hub2RlICplbnRyaWVzOwoKICBoYXNobm9kZSAoKmFsbG9jX25vZGUpIChoYXNoX3Rh YmxlICopOwoKICB1bnNpZ25lZCBpbnQgbnNsb3RzOwogIHVuc2lnbmVkIGludCBuZWxlbWVudHM7 CgoKICBzdHJ1Y3QgY3BwX3JlYWRlciAqcGZpbGU7CgoKICB1bnNpZ25lZCBpbnQgc2VhcmNoZXM7 CiAgdW5zaWduZWQgaW50IGNvbGxpc2lvbnM7Cn07CgoKZXh0ZXJuIGhhc2hfdGFibGUgKmh0X2Ny ZWF0ZSAodW5zaWduZWQgaW50IG9yZGVyKTsKCgpleHRlcm4gdm9pZCBodF9kZXN0cm95IChoYXNo X3RhYmxlICopOwoKZXh0ZXJuIGhhc2hub2RlIGh0X2xvb2t1cCAoaGFzaF90YWJsZSAqLCBjb25z dCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGludCwgZW51bSBodF9sb29rdXBfb3B0aW9uKTsK CgoKCgp0eXBlZGVmIGludCAoKmh0X2NiKSAoc3RydWN0IGNwcF9yZWFkZXIgKiwgaGFzaG5vZGUs IGNvbnN0IHZvaWQgKik7CmV4dGVybiB2b2lkIGh0X2ZvcmFsbCAoaGFzaF90YWJsZSAqLCBodF9j YiwgY29uc3Qgdm9pZCAqKTsKCgpleHRlcm4gdm9pZCBodF9kdW1wX3N0YXRpc3RpY3MgKGhhc2hf dGFibGUgKik7CgoKCmV4dGVybiBkb3VibGUgYXBwcm94X3NxcnQgKGRvdWJsZSk7CiMgNzk4ICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgi IDIKIyA4MTMgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMv Z2NjL3RyZWUuaCIKc3RydWN0IHRyZWVfaWRlbnRpZmllcgp7CiAgc3RydWN0IHRyZWVfY29tbW9u IGNvbW1vbjsKICBzdHJ1Y3QgaHRfaWRlbnRpZmllciBpZDsKfTsKCgoKCgpzdHJ1Y3QgdHJlZV9s aXN0CnsKICBzdHJ1Y3QgdHJlZV9jb21tb24gY29tbW9uOwogIHRyZWUgcHVycG9zZTsKICB0cmVl IHZhbHVlOwp9OwojIDgzNyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv Z2NjL3NyYy9nY2MvdHJlZS5oIgpzdHJ1Y3QgdHJlZV92ZWMKewogIHN0cnVjdCB0cmVlX2NvbW1v biBjb21tb247CiAgaW50IGxlbmd0aDsKICB0cmVlIGFbMV07Cn07CiMgOTA3ICIvVm9sdW1lcy9V RlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCnN0cnVjdCB0 cmVlX2V4cAp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICBpbnQgY29tcGxleGl0eTsK ICB0cmVlCgogICAgb3BlcmFuZHNbMV07Cn07CiMgOTYxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9u L3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCnN0cnVjdCB0cmVlX2Jsb2NrCnsK ICBzdHJ1Y3QgdHJlZV9jb21tb24gY29tbW9uOwoKICB1bnNpZ25lZCBoYW5kbGVyX2Jsb2NrX2Zs YWcgOiAxOwogIHVuc2lnbmVkIGFic3RyYWN0X2ZsYWcgOiAxOwogIHVuc2lnbmVkIGJsb2NrX251 bSA6IDMwOwoKICB0cmVlIHZhcnM7CiAgdHJlZSBzdWJibG9ja3M7CiAgdHJlZSBzdXBlcmNvbnRl eHQ7CiAgdHJlZSBhYnN0cmFjdF9vcmlnaW47CiAgdHJlZSBmcmFnbWVudF9vcmlnaW47CiAgdHJl ZSBmcmFnbWVudF9jaGFpbjsKfTsKIyAxMjM5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCnN0cnVjdCBkaWVfc3RydWN0OwoKc3RydWN0 IHRyZWVfdHlwZQp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICB0cmVlIHZhbHVlczsK ICB0cmVlIHNpemU7CiAgdHJlZSBzaXplX3VuaXQ7CiAgdHJlZSBhdHRyaWJ1dGVzOwogIHVuc2ln bmVkIGludCB1aWQ7CgogIHVuc2lnbmVkIGludCBwcmVjaXNpb24gOiA5OwogIGVudW0gbWFjaGlu ZV9tb2RlIG1vZGUgOiA3OwoKICB1bnNpZ25lZCBzdHJpbmdfZmxhZyA6IDE7CiAgdW5zaWduZWQg bm9fZm9yY2VfYmxrX2ZsYWcgOiAxOwogIHVuc2lnbmVkIG5lZWRzX2NvbnN0cnVjdGluZ19mbGFn IDogMTsKICB1bnNpZ25lZCB0cmFuc3BhcmVudF91bmlvbl9mbGFnIDogMTsKICB1bnNpZ25lZCBw YWNrZWRfZmxhZyA6IDE7CiAgdW5zaWduZWQgcmVzdHJpY3RfZmxhZyA6IDE7CiAgdW5zaWduZWQg cG9pbnRlcl9kZXB0aCA6IDI7CgogIHVuc2lnbmVkIGxhbmdfZmxhZ18wIDogMTsKICB1bnNpZ25l ZCBsYW5nX2ZsYWdfMSA6IDE7CiAgdW5zaWduZWQgbGFuZ19mbGFnXzIgOiAxOwogIHVuc2lnbmVk IGxhbmdfZmxhZ18zIDogMTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfNCA6IDE7CiAgdW5zaWduZWQg bGFuZ19mbGFnXzUgOiAxOwogIHVuc2lnbmVkIGxhbmdfZmxhZ182IDogMTsKICB1bnNpZ25lZCB1 c2VyX2FsaWduIDogMTsKCiAgdW5zaWduZWQgaW50IGFsaWduOwogIHRyZWUgcG9pbnRlcl90bzsK ICB0cmVlIHJlZmVyZW5jZV90bzsKICB1bmlvbiB0cmVlX3R5cGVfc3ltdGFiIHsKICAgIGludCBh ZGRyZXNzOwogICAgY2hhciAqIHBvaW50ZXI7CiAgICBzdHJ1Y3QgZGllX3N0cnVjdCAqIGRpZTsK ICB9IHN5bXRhYjsKCiAgdHJlZSBuYW1lOwogIHRyZWUgbWludmFsOwogIHRyZWUgbWF4dmFsOwog IHRyZWUgbmV4dF92YXJpYW50OwogIHRyZWUgbWFpbl92YXJpYW50OwogIHRyZWUgYmluZm87CiAg dHJlZSBjb250ZXh0OwogIGxvbmcgYWxpYXNfc2V0OwoKICBzdHJ1Y3QgbGFuZ190eXBlICpsYW5n X3NwZWNpZmljOwp9OwojIDE3ODAgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMv ZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIKc3RydWN0IGZ1bmN0aW9uOwoKc3RydWN0IHRyZWVfZGVj bAp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICBsb2NhdGlvbl90IGxvY3VzOwogIHVu c2lnbmVkIGludCB1aWQ7CiAgdHJlZSBzaXplOwogIGVudW0gbWFjaGluZV9tb2RlIG1vZGUgOiA4 OwoKICB1bnNpZ25lZCBleHRlcm5hbF9mbGFnIDogMTsKICB1bnNpZ25lZCBub25sb2NhbF9mbGFn IDogMTsKICB1bnNpZ25lZCByZWdkZWNsX2ZsYWcgOiAxOwogIHVuc2lnbmVkIGlubGluZV9mbGFn IDogMTsKICB1bnNpZ25lZCBiaXRfZmllbGRfZmxhZyA6IDE7CiAgdW5zaWduZWQgdmlydHVhbF9m bGFnIDogMTsKICB1bnNpZ25lZCBpZ25vcmVkX2ZsYWcgOiAxOwogIHVuc2lnbmVkIGFic3RyYWN0 X2ZsYWcgOiAxOwoKICB1bnNpZ25lZCBpbl9zeXN0ZW1faGVhZGVyX2ZsYWcgOiAxOwogIHVuc2ln bmVkIGNvbW1vbl9mbGFnIDogMTsKICB1bnNpZ25lZCBkZWZlcl9vdXRwdXQgOiAxOwogIHVuc2ln bmVkIHRyYW5zcGFyZW50X3VuaW9uIDogMTsKICB1bnNpZ25lZCBzdGF0aWNfY3Rvcl9mbGFnIDog MTsKICB1bnNpZ25lZCBzdGF0aWNfZHRvcl9mbGFnIDogMTsKICB1bnNpZ25lZCBhcnRpZmljaWFs X2ZsYWcgOiAxOwogIHVuc2lnbmVkIHdlYWtfZmxhZyA6IDE7CgogIHVuc2lnbmVkIG5vbl9hZGRy X2NvbnN0X3AgOiAxOwogIHVuc2lnbmVkIG5vX2luc3RydW1lbnRfZnVuY3Rpb25fZW50cnlfZXhp dCA6IDE7CiAgdW5zaWduZWQgY29tZGF0X2ZsYWcgOiAxOwogIHVuc2lnbmVkIG1hbGxvY19mbGFn IDogMTsKICB1bnNpZ25lZCBub19saW1pdF9zdGFjayA6IDE7CiAgZW51bSBidWlsdF9pbl9jbGFz cyBidWlsdF9pbl9jbGFzcyA6IDI7CiAgdW5zaWduZWQgcHVyZV9mbGFnIDogMTsKCiAgdW5zaWdu ZWQgbm9uX2FkZHJlc3NhYmxlIDogMTsKICB1bnNpZ25lZCB1c2VyX2FsaWduIDogMTsKICB1bnNp Z25lZCB1bmlubGluYWJsZSA6IDE7CiAgdW5zaWduZWQgdGhyZWFkX2xvY2FsX2ZsYWcgOiAxOwog IHVuc2lnbmVkIGlubGluZWRfZnVuY3Rpb25fZmxhZyA6IDE7CiAgdW5zaWduZWQgdW51c2VkIDog MzsKCgogIHVuc2lnbmVkIGxhbmdfZmxhZ18wIDogMTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfMSA6 IDE7CiAgdW5zaWduZWQgbGFuZ19mbGFnXzIgOiAxOwogIHVuc2lnbmVkIGxhbmdfZmxhZ18zIDog MTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfNCA6IDE7CiAgdW5zaWduZWQgbGFuZ19mbGFnXzUgOiAx OwogIHVuc2lnbmVkIGxhbmdfZmxhZ182IDogMTsKICB1bnNpZ25lZCBsYW5nX2ZsYWdfNyA6IDE7 CgogIHVuaW9uIHRyZWVfZGVjbF91MSB7CgoKICAgIGVudW0gYnVpbHRfaW5fZnVuY3Rpb24gZjsK CgogICAgbG9uZyBpOwoKCiAgICBzdHJ1Y3QgdHJlZV9kZWNsX3UxX2EgewogICAgICB1bnNpZ25l ZCBpbnQgYWxpZ24gOiAyNDsKICAgICAgdW5zaWduZWQgaW50IG9mZl9hbGlnbiA6IDg7CiAgICB9 IGE7CiAgfSB1MTsKCiAgdHJlZSBzaXplX3VuaXQ7CiAgdHJlZSBuYW1lOwogIHRyZWUgY29udGV4 dDsKICB0cmVlIGFyZ3VtZW50czsKICB0cmVlIHJlc3VsdDsKICB0cmVlIGluaXRpYWw7CiAgdHJl ZSBhYnN0cmFjdF9vcmlnaW47CiAgdHJlZSBhc3NlbWJsZXJfbmFtZTsKICB0cmVlIHNlY3Rpb25f bmFtZTsKICB0cmVlIGF0dHJpYnV0ZXM7CiAgcnR4IHJ0bDsKCgoKCgoKICB1bmlvbiB0cmVlX2Rl Y2xfdTIgewogICAgc3RydWN0IGZ1bmN0aW9uICogZjsKICAgIHJ0eCByOwogICAgdHJlZSB0Owog ICAgaW50IGk7CiAgfSB1MjsKCgogIHRyZWUgc2F2ZWRfdHJlZTsKCgoKICB0cmVlIGlubGluZWRf Zm5zOwoKICB0cmVlIHZpbmRleDsKICBsb25nIHBvaW50ZXJfYWxpYXNfc2V0OwoKICBzdHJ1Y3Qg bGFuZ19kZWNsICpsYW5nX3NwZWNpZmljOwp9OwoKZW51bSB0cmVlX25vZGVfc3RydWN0dXJlX2Vu dW0gewogIFRTX0NPTU1PTiwKICBUU19JTlRfQ1NULAogIFRTX1JFQUxfQ1NULAogIFRTX1ZFQ1RP UiwKICBUU19TVFJJTkcsCiAgVFNfQ09NUExFWCwKICBUU19JREVOVElGSUVSLAogIFRTX0RFQ0ws CiAgVFNfVFlQRSwKICBUU19MSVNULAogIFRTX1ZFQywKICBUU19FWFAsCiAgVFNfQkxPQ0ssCiAg TEFTVF9UU19FTlVNCn07CgoKCgoKdW5pb24gdHJlZV9ub2RlCgp7CiAgc3RydWN0IHRyZWVfY29t bW9uIGNvbW1vbjsKICBzdHJ1Y3QgdHJlZV9pbnRfY3N0IGludF9jc3Q7CiAgc3RydWN0IHRyZWVf cmVhbF9jc3QgcmVhbF9jc3Q7CiAgc3RydWN0IHRyZWVfdmVjdG9yIHZlY3RvcjsKICBzdHJ1Y3Qg dHJlZV9zdHJpbmcgc3RyaW5nOwogIHN0cnVjdCB0cmVlX2NvbXBsZXggY29tcGxleDsKICBzdHJ1 Y3QgdHJlZV9pZGVudGlmaWVyIGlkZW50aWZpZXI7CiAgc3RydWN0IHRyZWVfZGVjbCBkZWNsOwog IHN0cnVjdCB0cmVlX3R5cGUgdHlwZTsKICBzdHJ1Y3QgdHJlZV9saXN0IGxpc3Q7CiAgc3RydWN0 IHRyZWVfdmVjIHZlYzsKICBzdHJ1Y3QgdHJlZV9leHAgZXhwOwogIHN0cnVjdCB0cmVlX2Jsb2Nr IGJsb2NrOwogfTsKCgoKZW51bSB0cmVlX2luZGV4CnsKICBUSV9FUlJPUl9NQVJLLAogIFRJX0lO VFFJX1RZUEUsCiAgVElfSU5USElfVFlQRSwKICBUSV9JTlRTSV9UWVBFLAogIFRJX0lOVERJX1RZ UEUsCiAgVElfSU5UVElfVFlQRSwKCiAgVElfVUlOVFFJX1RZUEUsCiAgVElfVUlOVEhJX1RZUEUs CiAgVElfVUlOVFNJX1RZUEUsCiAgVElfVUlOVERJX1RZUEUsCiAgVElfVUlOVFRJX1RZUEUsCgog IFRJX0lOVEVHRVJfWkVSTywKICBUSV9JTlRFR0VSX09ORSwKICBUSV9JTlRFR0VSX01JTlVTX09O RSwKICBUSV9OVUxMX1BPSU5URVIsCgogIFRJX1NJWkVfWkVSTywKICBUSV9TSVpFX09ORSwKCiAg VElfQklUU0laRV9aRVJPLAogIFRJX0JJVFNJWkVfT05FLAogIFRJX0JJVFNJWkVfVU5JVCwKCiAg VElfQ09NUExFWF9JTlRFR0VSX1RZUEUsCiAgVElfQ09NUExFWF9GTE9BVF9UWVBFLAogIFRJX0NP TVBMRVhfRE9VQkxFX1RZUEUsCiAgVElfQ09NUExFWF9MT05HX0RPVUJMRV9UWVBFLAoKICBUSV9G TE9BVF9UWVBFLAogIFRJX0RPVUJMRV9UWVBFLAogIFRJX0xPTkdfRE9VQkxFX1RZUEUsCgogIFRJ X1ZPSURfVFlQRSwKICBUSV9QVFJfVFlQRSwKICBUSV9DT05TVF9QVFJfVFlQRSwKICBUSV9TSVpF X1RZUEUsCiAgVElfUFRSRElGRl9UWVBFLAogIFRJX1ZBX0xJU1RfVFlQRSwKCiAgVElfVk9JRF9M SVNUX05PREUsCgogIFRJX1VWNFNGX1RZUEUsCiAgVElfVVY0U0lfVFlQRSwKICBUSV9VVjhISV9U WVBFLAogIFRJX1VWOFFJX1RZUEUsCiAgVElfVVY0SElfVFlQRSwKICBUSV9VVjJISV9UWVBFLAog IFRJX1VWMlNJX1RZUEUsCiAgVElfVVYyU0ZfVFlQRSwKICBUSV9VVjJESV9UWVBFLAogIFRJX1VW MURJX1RZUEUsCiAgVElfVVYxNlFJX1RZUEUsCgogIFRJX1Y0U0ZfVFlQRSwKICBUSV9WMTZTRl9U WVBFLAogIFRJX1Y0U0lfVFlQRSwKICBUSV9WOEhJX1RZUEUsCiAgVElfVjhRSV9UWVBFLAogIFRJ X1Y0SElfVFlQRSwKICBUSV9WMkhJX1RZUEUsCiAgVElfVjJTSV9UWVBFLAogIFRJX1YyU0ZfVFlQ RSwKICBUSV9WMkRGX1RZUEUsCiAgVElfVjJESV9UWVBFLAogIFRJX1YxRElfVFlQRSwKICBUSV9W MTZRSV9UWVBFLAoKICBUSV9NQUlOX0lERU5USUZJRVIsCgogIFRJX01BWAp9OwoKZXh0ZXJuIHRy ZWUgZ2xvYmFsX3RyZWVzW1RJX01BWF07CiMgMjA5MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9w aW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgplbnVtIGludGVnZXJfdHlwZV9raW5k CnsKICBpdGtfY2hhciwKICBpdGtfc2lnbmVkX2NoYXIsCiAgaXRrX3Vuc2lnbmVkX2NoYXIsCiAg aXRrX3Nob3J0LAogIGl0a191bnNpZ25lZF9zaG9ydCwKICBpdGtfaW50LAogIGl0a191bnNpZ25l ZF9pbnQsCiAgaXRrX2xvbmcsCiAgaXRrX3Vuc2lnbmVkX2xvbmcsCiAgaXRrX2xvbmdfbG9uZywK ICBpdGtfdW5zaWduZWRfbG9uZ19sb25nLAogIGl0a19ub25lCn07Cgp0eXBlZGVmIGVudW0gaW50 ZWdlcl90eXBlX2tpbmQgaW50ZWdlcl90eXBlX2tpbmQ7CgoKCmV4dGVybiB0cmVlIGludGVnZXJf dHlwZXNbaXRrX25vbmVdOwojIDIxMjcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9z cmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIKZW51bSB0bHNfbW9kZWwgewogIFRMU19NT0RFTF9H TE9CQUxfRFlOQU1JQyA9IDEsCiAgVExTX01PREVMX0xPQ0FMX0RZTkFNSUMsCiAgVExTX01PREVM X0lOSVRJQUxfRVhFQywKICBUTFNfTU9ERUxfTE9DQUxfRVhFQwp9OwoKZXh0ZXJuIGVudW0gdGxz X21vZGVsIGZsYWdfdGxzX2RlZmF1bHQ7CgoKCmVudW0gc3ltYm9sX3Zpc2liaWxpdHkKewogIFZJ U0lCSUxJVFlfREVGQVVMVCwKICBWSVNJQklMSVRZX0lOVEVSTkFMLAogIFZJU0lCSUxJVFlfSElE REVOLAogIFZJU0lCSUxJVFlfUFJPVEVDVEVECn07CiMgMjE2NyAiL1ZvbHVtZXMvVUZTX1BhcnRp dGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgplbnVtIHB0cm1lbWZ1bmNf dmJpdF93aGVyZV90CnsKICBwdHJtZW1mdW5jX3ZiaXRfaW5fcGZuLAogIHB0cm1lbWZ1bmNfdmJp dF9pbl9kZWx0YQp9OwoKCgoKCmV4dGVybiBkb3VibGUgYXBwcm94X3NxcnQgKGRvdWJsZSk7Cgpl eHRlcm4gdHJlZSBkZWNsX2Fzc2VtYmxlcl9uYW1lICh0cmVlKTsKCgoKCmV4dGVybiBzaXplX3Qg dHJlZV9zaXplICh0cmVlKTsKCgoKCgpleHRlcm4gdHJlZSBtYWtlX25vZGUgKGVudW0gdHJlZV9j b2RlKTsKCgoKZXh0ZXJuIHRyZWUgY29weV9ub2RlICh0cmVlKTsKCgoKZXh0ZXJuIHRyZWUgY29w eV9saXN0ICh0cmVlKTsKCgoKZXh0ZXJuIHRyZWUgbWFrZV90cmVlX3ZlYyAoaW50KTsKCgoKCmV4 dGVybiB0cmVlIGdldF9pZGVudGlmaWVyIChjb25zdCBjaGFyICopOwoKCgoKZXh0ZXJuIHRyZWUg Z2V0X2lkZW50aWZpZXJfd2l0aF9sZW5ndGggKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTsK CgoKCgpleHRlcm4gdHJlZSBtYXliZV9nZXRfaWRlbnRpZmllciAoY29uc3QgY2hhciAqKTsKCgoK CgoKZXh0ZXJuIHRyZWUgYnVpbGQgKGVudW0gdHJlZV9jb2RlLCB0cmVlLCAuLi4pOwpleHRlcm4g dHJlZSBidWlsZF9udCAoZW51bSB0cmVlX2NvZGUsIC4uLik7CgpleHRlcm4gdHJlZSBidWlsZF9p bnRfMl93aWRlICh1bnNpZ25lZCBsb25nLCBsb25nKTsKZXh0ZXJuIHRyZWUgYnVpbGRfdmVjdG9y ICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfY29uc3RydWN0b3IgKHRyZWUsIHRyZWUp OwpleHRlcm4gdHJlZSBidWlsZF9yZWFsX2Zyb21faW50X2NzdCAodHJlZSwgdHJlZSk7CmV4dGVy biB0cmVlIGJ1aWxkX2NvbXBsZXggKHRyZWUsIHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWls ZF9zdHJpbmcgKGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHRyZWUgYnVpbGQxIChlbnVtIHRy ZWVfY29kZSwgdHJlZSwgdHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3RyZWVfbGlzdCAodHJlZSwg dHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX2RlY2wgKGVudW0gdHJlZV9jb2RlLCB0cmVlLCB0cmVl KTsKZXh0ZXJuIHRyZWUgYnVpbGRfYmxvY2sgKHRyZWUsIHRyZWUsIHRyZWUsIHRyZWUsIHRyZWUp OwpleHRlcm4gdHJlZSBidWlsZF9leHByX3dmbCAodHJlZSwgY29uc3QgY2hhciAqLCBpbnQsIGlu dCk7CgoKCmV4dGVybiB0cmVlIG1ha2Vfc2lnbmVkX3R5cGUgKGludCk7CmV4dGVybiB0cmVlIG1h a2VfdW5zaWduZWRfdHlwZSAoaW50KTsKZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9zaXpldHlwZXMg KHZvaWQpOwpleHRlcm4gdm9pZCBzZXRfc2l6ZXR5cGUgKHRyZWUpOwpleHRlcm4gdm9pZCBmaXh1 cF91bnNpZ25lZF90eXBlICh0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfcG9pbnRlcl90eXBlX2Zv cl9tb2RlICh0cmVlLCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3BvaW50 ZXJfdHlwZSAodHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3JlZmVyZW5jZV90eXBlX2Zvcl9tb2Rl ICh0cmVlLCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3JlZmVyZW5jZV90 eXBlICh0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfdHlwZV9ub19xdWFscyAodHJlZSk7CmV4dGVy biB0cmVlIGJ1aWxkX2luZGV4X3R5cGUgKHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9pbmRleF8y X3R5cGUgKHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9hcnJheV90eXBlICh0cmVlLCB0 cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfZnVuY3Rpb25fdHlwZSAodHJlZSwgdHJlZSk7CmV4dGVy biB0cmVlIGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAodHJlZSwgLi4uKTsKZXh0ZXJuIHRyZWUg YnVpbGRfbWV0aG9kX3R5cGUgKHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9vZmZzZXRf dHlwZSAodHJlZSwgdHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX2NvbXBsZXhfdHlwZSAodHJlZSk7 CmV4dGVybiB0cmVlIGFycmF5X3R5cGVfbmVsdHMgKHRyZWUpOwoKZXh0ZXJuIHRyZWUgdmFsdWVf bWVtYmVyICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgcHVycG9zZV9tZW1iZXIgKHRyZWUsIHRy ZWUpOwpleHRlcm4gdHJlZSBiaW5mb19tZW1iZXIgKHRyZWUsIHRyZWUpOwpleHRlcm4gdW5zaWdu ZWQgaW50IGF0dHJpYnV0ZV9oYXNoX2xpc3QgKHRyZWUpOwpleHRlcm4gaW50IGF0dHJpYnV0ZV9s aXN0X2VxdWFsICh0cmVlLCB0cmVlKTsKZXh0ZXJuIGludCBhdHRyaWJ1dGVfbGlzdF9jb250YWlu ZWQgKHRyZWUsIHRyZWUpOwpleHRlcm4gaW50IHRyZWVfaW50X2NzdF9lcXVhbCAodHJlZSwgdHJl ZSk7CmV4dGVybiBpbnQgdHJlZV9pbnRfY3N0X2x0ICh0cmVlLCB0cmVlKTsKZXh0ZXJuIGludCB0 cmVlX2ludF9jc3RfY29tcGFyZSAodHJlZSwgdHJlZSk7CmV4dGVybiBpbnQgaG9zdF9pbnRlZ2Vy cCAodHJlZSwgaW50KTsKZXh0ZXJuIGxvbmcgdHJlZV9sb3dfY3N0ICh0cmVlLCBpbnQpOwpleHRl cm4gaW50IHRyZWVfaW50X2NzdF9tc2IgKHRyZWUpOwpleHRlcm4gaW50IHRyZWVfaW50X2NzdF9z Z24gKHRyZWUpOwpleHRlcm4gaW50IHRyZWVfZXhwcl9ub25uZWdhdGl2ZV9wICh0cmVlKTsKZXh0 ZXJuIGludCBydGxfZXhwcl9ub25uZWdhdGl2ZV9wIChydHgpOwpleHRlcm4gdHJlZSBnZXRfaW5u ZXJfYXJyYXlfdHlwZSAodHJlZSk7CgoKCgoKZXh0ZXJuIHRyZWUgbWFrZV90cmVlICh0cmVlLCBy dHgpOwoKCgoKCgoKZXh0ZXJuIHRyZWUgYnVpbGRfdHlwZV9hdHRyaWJ1dGVfdmFyaWFudCAodHJl ZSwgdHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX2RlY2xfYXR0cmlidXRlX3ZhcmlhbnQgKHRyZWUs IHRyZWUpOwoKCnN0cnVjdCBhdHRyaWJ1dGVfc3BlYwp7CgoKICBjb25zdCBjaGFyICpjb25zdCBu YW1lOwoKICBjb25zdCBpbnQgbWluX2xlbmd0aDsKCgogIGNvbnN0IGludCBtYXhfbGVuZ3RoOwoK CgoKCgoKICBjb25zdCBfQm9vbCBkZWNsX3JlcXVpcmVkOwoKCiAgY29uc3QgX0Jvb2wgdHlwZV9y ZXF1aXJlZDsKCgoKCiAgY29uc3QgX0Jvb2wgZnVuY3Rpb25fdHlwZV9yZXF1aXJlZDsKIyAyMzM1 ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVl LmgiCiAgdHJlZSAoKmNvbnN0IGhhbmRsZXIpICh0cmVlICpub2RlLCB0cmVlIG5hbWUsIHRyZWUg YXJncywgaW50IGZsYWdzLCBfQm9vbCAqbm9fYWRkX2F0dHJzKTsKCn07CgoKCmVudW0gYXR0cmli dXRlX2ZsYWdzCnsKCgoKICBBVFRSX0ZMQUdfREVDTF9ORVhUID0gMSwKCgoKICBBVFRSX0ZMQUdf RlVOQ1RJT05fTkVYVCA9IDIsCgoKCiAgQVRUUl9GTEFHX0FSUkFZX05FWFQgPSA0LAoKCiAgQVRU Ul9GTEFHX1RZUEVfSU5fUExBQ0UgPSA4LAoKCgogIEFUVFJfRkxBR19CVUlMVF9JTiA9IDE2Cn07 CgoKCmV4dGVybiB0cmVlIG1lcmdlX2RlY2xfYXR0cmlidXRlcyAodHJlZSwgdHJlZSk7CmV4dGVy biB0cmVlIG1lcmdlX3R5cGVfYXR0cmlidXRlcyAodHJlZSwgdHJlZSk7CmV4dGVybiB2b2lkIGRl ZmF1bHRfcmVnaXN0ZXJfY3BwX2J1aWx0aW5zIChzdHJ1Y3QgY3BwX3JlYWRlciAqKTsKCgoKZXh0 ZXJuIHZvaWQgc3BsaXRfc3BlY3NfYXR0cnMgKHRyZWUsIHRyZWUgKiwgdHJlZSAqKTsKCgoKZXh0 ZXJuIHRyZWUgc3RyaXBfYXR0cnMgKHRyZWUpOwoKCgpleHRlcm4gaW50IHZhbGlkX21hY2hpbmVf YXR0cmlidXRlICh0cmVlLCB0cmVlLCB0cmVlLCB0cmVlKTsKCgoKCmV4dGVybiBpbnQgaXNfYXR0 cmlidXRlX3AgKGNvbnN0IGNoYXIgKiwgdHJlZSk7CgoKCgpleHRlcm4gdHJlZSBsb29rdXBfYXR0 cmlidXRlIChjb25zdCBjaGFyICosIHRyZWUpOwoKCgpleHRlcm4gdHJlZSBtZXJnZV9hdHRyaWJ1 dGVzICh0cmVlLCB0cmVlKTsKIyAyNDA2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv c3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCmV4dGVybiB0cmVlIGdldF9xdWFsaWZpZWRfdHlw ZSAodHJlZSwgaW50KTsKCgoKCmV4dGVybiB0cmVlIGJ1aWxkX3F1YWxpZmllZF90eXBlICh0cmVl LCBpbnQpOwojIDI0MjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2dj Yy9zcmMvZ2NjL3RyZWUuaCIKZXh0ZXJuIHRyZWUgYnVpbGRfdHlwZV9jb3B5ICh0cmVlKTsKCgoK CmV4dGVybiB2b2lkIGZpbmlzaF9idWlsdGluX3N0cnVjdCAodHJlZSwgY29uc3QgY2hhciAqLCB0 cmVlLCB0cmVlKTsKCgoKCgoKZXh0ZXJuIHZvaWQgbGF5b3V0X3R5cGUgKHRyZWUpOwojIDI0NDYg Ii9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUu aCIKdHlwZWRlZiBzdHJ1Y3QgcmVjb3JkX2xheW91dF9pbmZvX3MKewoKICB0cmVlIHQ7CgoKICB0 cmVlIG9mZnNldDsKCiAgdW5zaWduZWQgaW50IG9mZnNldF9hbGlnbjsKCiAgdHJlZSBiaXRwb3M7 CgogIHVuc2lnbmVkIGludCByZWNvcmRfYWxpZ247CgoKICB1bnNpZ25lZCBpbnQgdW5wYWNrZWRf YWxpZ247CgogIHRyZWUgcHJldl9maWVsZDsKCgogIHRyZWUgcGVuZGluZ19zdGF0aWNzOwoKICBp bnQgcmVtYWluaW5nX2luX2FsaWdubWVudDsKCgogIGludCBwYWNrZWRfbWF5YmVfbmVjZXNzYXJ5 Owp9ICpyZWNvcmRfbGF5b3V0X2luZm87CgpleHRlcm4gdm9pZCBzZXRfbGFuZ19hZGp1c3Rfcmxp ICh2b2lkICgqKSAocmVjb3JkX2xheW91dF9pbmZvKSk7CgpleHRlcm4gcmVjb3JkX2xheW91dF9p bmZvIHN0YXJ0X3JlY29yZF9sYXlvdXQgKHRyZWUpOwpleHRlcm4gdHJlZSBiaXRfZnJvbV9wb3Mg KHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBieXRlX2Zyb21fcG9zICh0cmVlLCB0cmVlKTsKZXh0 ZXJuIHZvaWQgcG9zX2Zyb21fYml0ICh0cmVlICosIHRyZWUgKiwgdW5zaWduZWQgaW50LCB0cmVl KTsKCmV4dGVybiB2b2lkIG5vcm1hbGl6ZV9vZmZzZXQgKHRyZWUgKiwgdHJlZSAqLCB1bnNpZ25l ZCBpbnQpOwoKZXh0ZXJuIHRyZWUgcmxpX3NpemVfdW5pdF9zb19mYXIgKHJlY29yZF9sYXlvdXRf aW5mbyk7CmV4dGVybiB0cmVlIHJsaV9zaXplX3NvX2ZhciAocmVjb3JkX2xheW91dF9pbmZvKTsK ZXh0ZXJuIHZvaWQgbm9ybWFsaXplX3JsaSAocmVjb3JkX2xheW91dF9pbmZvKTsKZXh0ZXJuIHZv aWQgcGxhY2VfZmllbGQgKHJlY29yZF9sYXlvdXRfaW5mbywgdHJlZSk7CmV4dGVybiB2b2lkIGNv bXB1dGVfcmVjb3JkX21vZGUgKHRyZWUpOwpleHRlcm4gdm9pZCBmaW5pc2hfcmVjb3JkX2xheW91 dCAocmVjb3JkX2xheW91dF9pbmZvLCBpbnQpOwoKCgoKCgpleHRlcm4gdHJlZSB0eXBlX2hhc2hf Y2Fub24gKHVuc2lnbmVkIGludCwgdHJlZSk7CiMgMjUwNSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlv bi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgpleHRlcm4gdm9pZCBsYXlvdXRf ZGVjbCAodHJlZSwgdW5zaWduZWQpOwoKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgbW9k ZV9mb3Jfc2l6ZV90cmVlICh0cmVlLCBlbnVtIG1vZGVfY2xhc3MsIGludCk7CgoKCgpleHRlcm4g dHJlZSBub25fbHZhbHVlICh0cmVlKTsKZXh0ZXJuIHRyZWUgcGVkYW50aWNfbm9uX2x2YWx1ZSAo dHJlZSk7CgpleHRlcm4gdHJlZSBjb252ZXJ0ICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHVuc2lnbmVk IGludCBleHByX2FsaWduICh0cmVlKTsKZXh0ZXJuIHRyZWUgc2l6ZV9pbl9ieXRlcyAodHJlZSk7 CmV4dGVybiBsb25nIGludF9zaXplX2luX2J5dGVzICh0cmVlKTsKZXh0ZXJuIHRyZWUgYml0X3Bv c2l0aW9uICh0cmVlKTsKZXh0ZXJuIGxvbmcgaW50X2JpdF9wb3NpdGlvbiAodHJlZSk7CmV4dGVy biB0cmVlIGJ5dGVfcG9zaXRpb24gKHRyZWUpOwpleHRlcm4gbG9uZyBpbnRfYnl0ZV9wb3NpdGlv biAodHJlZSk7CgoKCgplbnVtIHNpemVfdHlwZV9raW5kCnsKICBTSVpFVFlQRSwKICBTU0laRVRZ UEUsCiAgVVNJWkVUWVBFLAogIEJJVFNJWkVUWVBFLAogIFNCSVRTSVpFVFlQRSwKICBVQklUU0la RVRZUEUsCiAgVFlQRV9LSU5EX0xBU1R9OwoKZXh0ZXJuIHRyZWUgc2l6ZXR5cGVfdGFiWyhpbnQp IFRZUEVfS0lORF9MQVNUXTsKIyAyNTUxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv c3JjL2ZzZi9nY2Mvc3JjL2djYy90cmVlLmgiCmV4dGVybiB0cmVlIHNpemVfYmlub3AgKGVudW0g dHJlZV9jb2RlLCB0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgc2l6ZV9kaWZmb3AgKHRyZWUsIHRy ZWUpOwpleHRlcm4gdHJlZSBzaXplX2ludF93aWRlIChsb25nLCBlbnVtIHNpemVfdHlwZV9raW5k KTsKCmV4dGVybiB0cmVlIHNpemVfaW50X3R5cGVfd2lkZSAobG9uZywgdHJlZSk7CgoKCgoKCgpl eHRlcm4gdHJlZSByb3VuZF91cCAodHJlZSwgaW50KTsKZXh0ZXJuIHRyZWUgcm91bmRfZG93biAo dHJlZSwgaW50KTsKZXh0ZXJuIHRyZWUgZ2V0X3BlbmRpbmdfc2l6ZXMgKHZvaWQpOwpleHRlcm4g aW50IGlzX3BlbmRpbmdfc2l6ZSAodHJlZSk7CmV4dGVybiB2b2lkIHB1dF9wZW5kaW5nX3NpemUg KHRyZWUpOwpleHRlcm4gdm9pZCBwdXRfcGVuZGluZ19zaXplcyAodHJlZSk7CiMgMjU3OCAiL1Zv bHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgpl eHRlcm4gdW5zaWduZWQgaW50IG1heGltdW1fZmllbGRfYWxpZ25tZW50OwoKCmV4dGVybiB1bnNp Z25lZCBpbnQgc2V0X2FsaWdubWVudDsKCgoKCgpleHRlcm4gdHJlZSBjaGFpbm9uICh0cmVlLCB0 cmVlKTsKCgoKZXh0ZXJuIHRyZWUgdHJlZV9jb25zICh0cmVlLCB0cmVlLCB0cmVlKTsKCgoKZXh0 ZXJuIHRyZWUgdHJlZV9sYXN0ICh0cmVlKTsKCgoKZXh0ZXJuIHRyZWUgbnJldmVyc2UgKHRyZWUp OwoKCgoKZXh0ZXJuIGludCBsaXN0X2xlbmd0aCAodHJlZSk7CgoKCmV4dGVybiBpbnQgZmllbGRz X2xlbmd0aCAodHJlZSk7CgoKCgpleHRlcm4gX0Jvb2wgaW5pdGlhbGl6ZXJfemVyb3AgKHRyZWUp OwoKCgpleHRlcm4gaW50IGludGVnZXJfemVyb3AgKHRyZWUpOwoKCgpleHRlcm4gaW50IGludGVn ZXJfb25lcCAodHJlZSk7CgoKCgpleHRlcm4gaW50IGludGVnZXJfYWxsX29uZXNwICh0cmVlKTsK CgoKCmV4dGVybiBpbnQgaW50ZWdlcl9wb3cycCAodHJlZSk7CgoKCgpleHRlcm4gaW50IGludGVn ZXJfbm9uemVyb3AgKHRyZWUpOwoKCgoKZXh0ZXJuIGludCBzdGF0aWNwICh0cmVlKTsKCgoKCmV4 dGVybiBpbnQgbHZhbHVlX29yX2Vsc2UgKHRyZWUsIGNvbnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJu IHRyZWUgc2F2ZV9leHByICh0cmVlKTsKCgoKCmV4dGVybiB0cmVlIHNraXBfc2ltcGxlX2FyaXRo bWV0aWMgKHRyZWUpOwoKCgoKZXh0ZXJuIF9Cb29sIHNhdmVkX2V4cHJfcCAodHJlZSk7CgoKCgpl eHRlcm4gaW50IGZpcnN0X3J0bF9vcCAoZW51bSB0cmVlX2NvZGUpOwoKCgplbnVtIHRyZWVfbm9k ZV9zdHJ1Y3R1cmVfZW51bSB0cmVlX25vZGVfc3RydWN0dXJlICh0cmVlKTsKCgoKCgpleHRlcm4g dHJlZSB1bnNhdmVfZXhwciAodHJlZSk7CgoKCgpleHRlcm4gdm9pZCB1bnNhdmVfZXhwcl8xICh0 cmVlKTsKCgoKCmV4dGVybiBpbnQgdW5zYWZlX2Zvcl9yZWV2YWwgKHRyZWUpOwoKCgoKCgoKZXh0 ZXJuIGludCBjb250YWluc19wbGFjZWhvbGRlcl9wICh0cmVlKTsKCgoKCmV4dGVybiBpbnQgaGFz X2NsZWFudXBzICh0cmVlKTsKCgoKCgoKZXh0ZXJuIHRyZWUgc3Vic3RpdHV0ZV9pbl9leHByICh0 cmVlLCB0cmVlLCB0cmVlKTsKCgoKCgoKCmV4dGVybiB0cmVlIHZhcmlhYmxlX3NpemUgKHRyZWUp OwoKCgoKCmV4dGVybiB0cmVlIHN0YWJpbGl6ZV9yZWZlcmVuY2UgKHRyZWUpOwoKCgoKCmV4dGVy biB0cmVlIHN0YWJpbGl6ZV9yZWZlcmVuY2VfMSAodHJlZSk7CgoKCgoKCmV4dGVybiB0cmVlIGdl dF91bndpZGVuZWQgKHRyZWUsIHRyZWUpOwoKCgoKCgpleHRlcm4gdHJlZSBnZXRfbmFycm93ZXIg KHRyZWUsIGludCAqKTsKCgoKCgpleHRlcm4gdHJlZSBnZXRfaW5uZXJfcmVmZXJlbmNlICh0cmVl LCBsb25nICosIGxvbmcgKiwgdHJlZSAqLCBlbnVtIG1hY2hpbmVfbW9kZSAqLCBpbnQgKiwgaW50 ICopOwoKCgoKCgpleHRlcm4gaW50IGhhbmRsZWRfY29tcG9uZW50X3AgKHRyZWUpOwoKCgoKZXh0 ZXJuIHRyZWUgZ2V0X2NvbnRhaW5pbmdfc2NvcGUgKHRyZWUpOwoKCgpleHRlcm4gdHJlZSBkZWNs X2Z1bmN0aW9uX2NvbnRleHQgKHRyZWUpOwoKCgpleHRlcm4gdHJlZSBkZWNsX3R5cGVfY29udGV4 dCAodHJlZSk7CgoKCgoKCmV4dGVybiBjb25zdCBjaGFyICpmdW5jdGlvbl9jYW5ub3RfaW5saW5l X3AgKHRyZWUpOwoKCmV4dGVybiBpbnQgcmVhbF96ZXJvcCAodHJlZSk7CgoKCgoKZXh0ZXJuIGNv bnN0IGNoYXIgKmlucHV0X2ZpbGVuYW1lOwoKCmV4dGVybiBpbnQgbGluZW5vOwoKCgoKZXh0ZXJu IGludCBwZWRhbnRpY19sdmFsdWVzOwoKCgoKZXh0ZXJuIGludCBpbW1lZGlhdGVfc2l6ZV9leHBh bmQ7CgoKCmV4dGVybiB0cmVlIGN1cnJlbnRfZnVuY3Rpb25fZGVjbDsKCgpleHRlcm4gdHJlZSBj dXJyZW50X2Z1bmN0aW9uX2Z1bmNfYmVnaW5fbGFiZWw7CgoKCmV4dGVybiBpbnQgYWxsX3R5cGVz X3Blcm1hbmVudDsKCgoKZXh0ZXJuIHRyZWUgYnVpbHRpbl9mdW5jdGlvbiAoY29uc3QgY2hhciAq LCB0cmVlLCBpbnQsIGVudW0gYnVpbHRfaW5fY2xhc3MsIGNvbnN0IGNoYXIgKiwgdHJlZSk7CgoK CgpleHRlcm4gdm9pZCBjbGVhbl9zeW1ib2xfbmFtZSAoY2hhciAqKTsKZXh0ZXJuIHRyZWUgZ2V0 X2ZpbGVfZnVuY3Rpb25fbmFtZV9sb25nIChjb25zdCBjaGFyICopOwpleHRlcm4gdHJlZSBnZXRf c2V0X2NvbnN0cnVjdG9yX2JpdHMgKHRyZWUsIGNoYXIgKiwgaW50KTsKZXh0ZXJuIHRyZWUgZ2V0 X3NldF9jb25zdHJ1Y3Rvcl9ieXRlcyAodHJlZSwgdW5zaWduZWQgY2hhciAqLCBpbnQpOwoKZXh0 ZXJuIHRyZWUgZ2V0X2NhbGxlZV9mbmRlY2wgKHRyZWUpOwpleHRlcm4gdm9pZCBzZXRfZGVjbF9h c3NlbWJsZXJfbmFtZSAodHJlZSk7CmV4dGVybiBpbnQgdHlwZV9udW1fYXJndW1lbnRzICh0cmVl KTsKZXh0ZXJuIHRyZWUgbGhkX3Vuc2F2ZV9leHByX25vdyAodHJlZSk7CgoKCgpleHRlcm4gdm9p ZCBleHBhbmRfZml4dXBzIChydHgpOwpleHRlcm4gdHJlZSBleHBhbmRfc3RhcnRfc3RtdF9leHBy IChpbnQpOwpleHRlcm4gdHJlZSBleHBhbmRfZW5kX3N0bXRfZXhwciAodHJlZSk7CmV4dGVybiB2 b2lkIGV4cGFuZF9leHByX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBleHBhbmRfZXhwcl9zdG10 X3ZhbHVlICh0cmVlLCBpbnQsIGludCk7CmV4dGVybiBpbnQgd2Fybl9pZl91bnVzZWRfdmFsdWUg KHRyZWUpOwpleHRlcm4gdm9pZCBleHBhbmRfZGVjbF9pbml0ICh0cmVlKTsKZXh0ZXJuIHZvaWQg Y2xlYXJfbGFzdF9leHByICh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhwYW5kX2xhYmVsICh0cmVlKTsK ZXh0ZXJuIHZvaWQgZXhwYW5kX2dvdG8gKHRyZWUpOwpleHRlcm4gdm9pZCBleHBhbmRfYXNtICh0 cmVlLCBpbnQpOwpleHRlcm4gdm9pZCBleHBhbmRfc3RhcnRfY29uZCAodHJlZSwgaW50KTsKZXh0 ZXJuIHZvaWQgZXhwYW5kX2VuZF9jb25kICh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhwYW5kX3N0YXJ0 X2Vsc2UgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBhbmRfc3RhcnRfZWxzZWlmICh0cmVlKTsKZXh0 ZXJuIHN0cnVjdCBuZXN0aW5nICpleHBhbmRfc3RhcnRfbG9vcCAoaW50KTsKZXh0ZXJuIHN0cnVj dCBuZXN0aW5nICpleHBhbmRfc3RhcnRfbG9vcF9jb250aW51ZV9lbHNld2hlcmUgKGludCk7CmV4 dGVybiBzdHJ1Y3QgbmVzdGluZyAqZXhwYW5kX3N0YXJ0X251bGxfbG9vcCAodm9pZCk7CmV4dGVy biB2b2lkIGV4cGFuZF9sb29wX2NvbnRpbnVlX2hlcmUgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBh bmRfZW5kX2xvb3AgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBhbmRfZW5kX251bGxfbG9vcCAodm9p ZCk7CmV4dGVybiBpbnQgZXhwYW5kX2NvbnRpbnVlX2xvb3AgKHN0cnVjdCBuZXN0aW5nICopOwpl eHRlcm4gaW50IGV4cGFuZF9leGl0X2xvb3AgKHN0cnVjdCBuZXN0aW5nICopOwpleHRlcm4gaW50 IGV4cGFuZF9leGl0X2xvb3BfaWZfZmFsc2UgKHN0cnVjdCBuZXN0aW5nICosIHRyZWUpOwoKZXh0 ZXJuIGludCBleHBhbmRfZXhpdF9sb29wX3RvcF9jb25kIChzdHJ1Y3QgbmVzdGluZyAqLCB0cmVl KTsKCmV4dGVybiBpbnQgZXhwYW5kX2V4aXRfc29tZXRoaW5nICh2b2lkKTsKCmV4dGVybiB2b2lk IGV4cGFuZF9yZXR1cm4gKHRyZWUpOwpleHRlcm4gaW50IG9wdGltaXplX3RhaWxfcmVjdXJzaW9u ICh0cmVlLCBydHgpOwpleHRlcm4gdm9pZCBleHBhbmRfc3RhcnRfYmluZGluZ3NfYW5kX2Jsb2Nr IChpbnQsIHRyZWUpOwoKCmV4dGVybiB2b2lkIGV4cGFuZF9lbmRfYmluZGluZ3MgKHRyZWUsIGlu dCwgaW50KTsKZXh0ZXJuIHZvaWQgd2Fybl9hYm91dF91bnVzZWRfdmFyaWFibGVzICh0cmVlKTsK ZXh0ZXJuIHZvaWQgc3RhcnRfY2xlYW51cF9kZWZlcnJhbCAodm9pZCk7CmV4dGVybiB2b2lkIGVu ZF9jbGVhbnVwX2RlZmVycmFsICh2b2lkKTsKZXh0ZXJuIGludCBpc19ib2R5X2Jsb2NrICh0cmVl KTsKCmV4dGVybiBpbnQgY29uZGl0aW9uYWxfY29udGV4dCAodm9pZCk7CmV4dGVybiBzdHJ1Y3Qg bmVzdGluZyAqIGN1cnJlbnRfbmVzdGluZ19sZXZlbCAodm9pZCk7CmV4dGVybiB0cmVlIGxhc3Rf Y2xlYW51cF90aGlzX2NvbnRvdXIgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBhbmRfc3RhcnRfY2Fz ZSAoaW50LCB0cmVlLCB0cmVlLCBjb25zdCBjaGFyICopOwoKZXh0ZXJuIHZvaWQgZXhwYW5kX2Vu ZF9jYXNlX3R5cGUgKHRyZWUsIHRyZWUpOwoKZXh0ZXJuIGludCBhZGRfY2FzZV9ub2RlICh0cmVl LCB0cmVlLCB0cmVlLCB0cmVlICopOwoKZXh0ZXJuIGludCBwdXNoY2FzZSAodHJlZSwgdHJlZSAo KikgKHRyZWUsIHRyZWUpLCB0cmVlLCB0cmVlICopOwoKCmV4dGVybiBpbnQgcHVzaGNhc2VfcmFu Z2UgKHRyZWUsIHRyZWUsIHRyZWUgKCopICh0cmVlLCB0cmVlKSwgdHJlZSwgdHJlZSAqKTsKCgpl eHRlcm4gdm9pZCB1c2luZ19laF9mb3JfY2xlYW51cHMgKHZvaWQpOwojIDI4OTQgIi9Wb2x1bWVz L1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL3RyZWUuaCIKZXh0ZXJu IHRyZWUgZm9sZCAodHJlZSk7CgpleHRlcm4gaW50IGZvcmNlX2ZpdF90eXBlICh0cmVlLCBpbnQp OwpleHRlcm4gaW50IGFkZF9kb3VibGUgKHVuc2lnbmVkIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxv bmcsIGxvbmcsIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAqKTsKCgoKZXh0ZXJuIGludCBuZWdfZG91 YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nICosIGxvbmcgKik7CgoKZXh0 ZXJuIGludCBtdWxfZG91YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nLCBs b25nLCB1bnNpZ25lZCBsb25nICosIGxvbmcgKik7CgoKCgpleHRlcm4gdm9pZCBsc2hpZnRfZG91 YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxv bmcgKiwgbG9uZyAqLCBpbnQpOwoKCgpleHRlcm4gdm9pZCByc2hpZnRfZG91YmxlICh1bnNpZ25l ZCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAq LCBpbnQpOwoKCgpleHRlcm4gdm9pZCBscm90YXRlX2RvdWJsZSAodW5zaWduZWQgbG9uZywgbG9u ZywgbG9uZywgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBsb25nICosIGxvbmcgKik7CgoKCmV4dGVy biB2b2lkIHJyb3RhdGVfZG91YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25l ZCBpbnQsIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAqKTsKCgoKCmV4dGVybiBpbnQgZGl2X2FuZF9y b3VuZF9kb3VibGUgKGVudW0gdHJlZV9jb2RlLCBpbnQsIHVuc2lnbmVkIGxvbmcsIGxvbmcsIHVu c2lnbmVkIGxvbmcsIGxvbmcsIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAqLCB1bnNpZ25lZCBsb25n ICosIGxvbmcgKik7CiMgMjkzNiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9m c2YvZ2NjL3NyYy9nY2MvdHJlZS5oIgpleHRlcm4gaW50IG9wZXJhbmRfZXF1YWxfcCAodHJlZSwg dHJlZSwgaW50KTsKZXh0ZXJuIHRyZWUgb21pdF9vbmVfb3BlcmFuZCAodHJlZSwgdHJlZSwgdHJl ZSk7CmV4dGVybiB0cmVlIGludmVydF90cnV0aHZhbHVlICh0cmVlKTsKCgpleHRlcm4gdHJlZSBm b2xkX2J1aWx0aW4gKHRyZWUpOwpleHRlcm4gZW51bSBidWlsdF9pbl9mdW5jdGlvbiBidWlsdGlu X21hdGhmbl9jb2RlICh0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfZnVuY3Rpb25fY2FsbF9leHBy ICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgbWF0aGZuX2J1aWx0X2luICh0cmVlLCBlbnVtIGJ1 aWx0X2luX2Z1bmN0aW9uIGZuKTsKZXh0ZXJuIHRyZWUgc3RyaXBfZmxvYXRfZXh0ZW5zaW9ucyAo dHJlZSk7CgoKZXh0ZXJuIHRyZWUgc3RyaXBfZmxvYXRfZXh0ZW5zaW9ucyAodHJlZSk7CgoKZXh0 ZXJuIHZvaWQgcmVjb3JkX2NvbXBvbmVudF9hbGlhc2VzICh0cmVlKTsKZXh0ZXJuIGxvbmcgZ2V0 X2FsaWFzX3NldCAodHJlZSk7CmV4dGVybiBpbnQgYWxpYXNfc2V0c19jb25mbGljdF9wIChsb25n LCBsb25nKTsKCmV4dGVybiBpbnQgcmVhZG9ubHlfZmllbGRzX3AgKHRyZWUpOwpleHRlcm4gaW50 IG9iamVjdHNfbXVzdF9jb25mbGljdF9wICh0cmVlLCB0cmVlKTsKCgpleHRlcm4gaW50IHJlYWxs eV9jb25zdGFudF9wICh0cmVlKTsKZXh0ZXJuIGludCBpbnRfZml0c190eXBlX3AgKHRyZWUsIHRy ZWUpOwpleHRlcm4gX0Jvb2wgdmFyaWFibHlfbW9kaWZpZWRfdHlwZV9wICh0cmVlKTsKZXh0ZXJu IGludCB0cmVlX2xvZzIgKHRyZWUpOwpleHRlcm4gaW50IHRyZWVfZmxvb3JfbG9nMiAodHJlZSk7 CmV4dGVybiBpbnQgc2ltcGxlX2NzdF9lcXVhbCAodHJlZSwgdHJlZSk7CmV4dGVybiBpbnQgY29t cGFyZV90cmVlX2ludCAodHJlZSwgdW5zaWduZWQgbG9uZyk7CgpleHRlcm4gaW50IHR5cGVfbGlz dF9lcXVhbCAodHJlZSwgdHJlZSk7CmV4dGVybiBpbnQgY2hhaW5fbWVtYmVyICh0cmVlLCB0cmVl KTsKZXh0ZXJuIHRyZWUgdHlwZV9oYXNoX2xvb2t1cCAodW5zaWduZWQgaW50LCB0cmVlKTsKZXh0 ZXJuIHZvaWQgdHlwZV9oYXNoX2FkZCAodW5zaWduZWQgaW50LCB0cmVlKTsKZXh0ZXJuIHVuc2ln bmVkIGludCB0eXBlX2hhc2hfbGlzdCAodHJlZSk7CmV4dGVybiBpbnQgc2ltcGxlX2NzdF9saXN0 X2VxdWFsICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHZvaWQgZHVtcF90cmVlX3N0YXRpc3RpY3MgKHZv aWQpOwpleHRlcm4gdm9pZCBleHBhbmRfZnVuY3Rpb25fZW5kIChjb25zdCBjaGFyICosIGludCwg aW50KTsKZXh0ZXJuIHZvaWQgZXhwYW5kX2Z1bmN0aW9uX3N0YXJ0ICh0cmVlLCBpbnQpOwpleHRl cm4gdm9pZCBleHBhbmRfcGVuZGluZ19zaXplcyAodHJlZSk7CgpleHRlcm4gaW50IHJlYWxfb25l cCAodHJlZSk7CmV4dGVybiBpbnQgcmVhbF90d29wICh0cmVlKTsKZXh0ZXJuIGludCByZWFsX21p bnVzX29uZXAgKHRyZWUpOwpleHRlcm4gdm9pZCBpbml0X3R0cmVlICh2b2lkKTsKZXh0ZXJuIHZv aWQgYnVpbGRfY29tbW9uX3RyZWVfbm9kZXMgKGludCk7CmV4dGVybiB2b2lkIGJ1aWxkX2NvbW1v bl90cmVlX25vZGVzXzIgKGludCk7CmV4dGVybiB0cmVlIGJ1aWxkX3JhbmdlX3R5cGUgKHRyZWUs IHRyZWUsIHRyZWUpOwoKCmV4dGVybiB2b2lkIHNldGptcF9wcm90ZWN0X2FyZ3MgKHZvaWQpOwpl eHRlcm4gdm9pZCBzZXRqbXBfcHJvdGVjdCAodHJlZSk7CmV4dGVybiB2b2lkIGV4cGFuZF9tYWlu X2Z1bmN0aW9uICh2b2lkKTsKZXh0ZXJuIHZvaWQgaW5pdF9kdW1teV9mdW5jdGlvbl9zdGFydCAo dm9pZCk7CmV4dGVybiB2b2lkIGV4cGFuZF9kdW1teV9mdW5jdGlvbl9lbmQgKHZvaWQpOwpleHRl cm4gdm9pZCBpbml0X2Z1bmN0aW9uX2Zvcl9jb21waWxhdGlvbiAodm9pZCk7CmV4dGVybiB2b2lk IGluaXRfZnVuY3Rpb25fc3RhcnQgKHRyZWUsIGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0ZXJuIHZv aWQgYXNzaWduX3Bhcm1zICh0cmVlKTsKZXh0ZXJuIHZvaWQgcHV0X3Zhcl9pbnRvX3N0YWNrICh0 cmVlLCBpbnQpOwpleHRlcm4gdm9pZCBmbHVzaF9hZGRyZXNzb2YgKHRyZWUpOwpleHRlcm4gdm9p ZCB1bmluaXRpYWxpemVkX3ZhcnNfd2FybmluZyAodHJlZSk7CmV4dGVybiB2b2lkIHNldGptcF9h cmdzX3dhcm5pbmcgKHZvaWQpOwpleHRlcm4gdm9pZCBtYXJrX2FsbF90ZW1wc191c2VkICh2b2lk KTsKZXh0ZXJuIHZvaWQgaW5pdF90ZW1wX3Nsb3RzICh2b2lkKTsKZXh0ZXJuIHZvaWQgY29tYmlu ZV90ZW1wX3Nsb3RzICh2b2lkKTsKZXh0ZXJuIHZvaWQgZnJlZV90ZW1wX3Nsb3RzICh2b2lkKTsK ZXh0ZXJuIHZvaWQgcG9wX3RlbXBfc2xvdHMgKHZvaWQpOwpleHRlcm4gdm9pZCBwdXNoX3RlbXBf c2xvdHMgKHZvaWQpOwpleHRlcm4gdm9pZCBwcmVzZXJ2ZV90ZW1wX3Nsb3RzIChydHgpOwpleHRl cm4gdm9pZCBwcmVzZXJ2ZV9ydGxfZXhwcl90ZW1wcyAodHJlZSk7CmV4dGVybiBpbnQgYWdncmVn YXRlX3ZhbHVlX3AgKHRyZWUpOwpleHRlcm4gdm9pZCBmcmVlX3RlbXBzX2Zvcl9ydGxfZXhwciAo dHJlZSk7CmV4dGVybiB2b2lkIGluc3RhbnRpYXRlX3ZpcnR1YWxfcmVncyAodHJlZSwgcnR4KTsK ZXh0ZXJuIHZvaWQgdW5zaGFyZV9hbGxfcnRsICh0cmVlLCBydHgpOwpleHRlcm4gdm9pZCBwdXNo X2Z1bmN0aW9uX2NvbnRleHQgKHZvaWQpOwpleHRlcm4gdm9pZCBwb3BfZnVuY3Rpb25fY29udGV4 dCAodm9pZCk7CmV4dGVybiB2b2lkIHB1c2hfZnVuY3Rpb25fY29udGV4dF90byAodHJlZSk7CmV4 dGVybiB2b2lkIHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20gKHRyZWUpOwoKCgpleHRlcm4gdm9p ZCBwcmludF9ydGwgKEZJTEUgKiwgcnR4KTsKCgoKZXh0ZXJuIHZvaWQgZGVidWdfdHJlZSAodHJl ZSk7CgpleHRlcm4gdm9pZCBwcmludF9ub2RlIChGSUxFICosIGNvbnN0IGNoYXIgKiwgdHJlZSwg aW50KTsKCmV4dGVybiB2b2lkIHByaW50X25vZGVfYnJpZWYgKEZJTEUgKiwgY29uc3QgY2hhciAq LCB0cmVlLCBpbnQpOwoKZXh0ZXJuIHZvaWQgaW5kZW50X3RvIChGSUxFICosIGludCk7CgoKCmV4 dGVybiBpbnQgYXBwbHlfYXJnc19yZWdpc3Rlcl9vZmZzZXQgKGludCk7CmV4dGVybiBydHggZXhw YW5kX2J1aWx0aW5fcmV0dXJuX2FkZHIKIChlbnVtIGJ1aWx0X2luX2Z1bmN0aW9uLCBpbnQsIHJ0 eCk7CmV4dGVybiB2b2lkIGNoZWNrX21heF9pbnRlZ2VyX2NvbXB1dGF0aW9uX21vZGUgKHRyZWUp OwoKCmV4dGVybiB2b2lkIHN0YXJ0X3NlcXVlbmNlX2Zvcl9ydGxfZXhwciAodHJlZSk7CmV4dGVy biBydHggZW1pdF9saW5lX25vdGUgKGNvbnN0IGNoYXIgKiwgaW50KTsKCgoKZXh0ZXJuIGludCBz ZXRqbXBfY2FsbF9wICh0cmVlKTsKZXh0ZXJuIF9Cb29sIGFsbG9jYV9jYWxsX3AgKHRyZWUpOwoj IDMwNTYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj L3RyZWUuaCIKZXh0ZXJuIHRyZWUgZGVjbF9hdHRyaWJ1dGVzICh0cmVlICosIHRyZWUsIGludCk7 CgoKZXh0ZXJuIHZvaWQgc2F2ZV9mb3JfaW5saW5lICh0cmVlKTsKZXh0ZXJuIHZvaWQgc2V0X2Rl Y2xfYWJzdHJhY3RfZmxhZ3MgKHRyZWUsIGludCk7CmV4dGVybiB2b2lkIG91dHB1dF9pbmxpbmVf ZnVuY3Rpb24gKHRyZWUpOwpleHRlcm4gdm9pZCBzZXRfZGVjbF9vcmlnaW5fc2VsZiAodHJlZSk7 CgoKZXh0ZXJuIHZvaWQgZml4dXBfc2lnbmVkX3R5cGUgKHRyZWUpOwpleHRlcm4gdm9pZCBpbnRl cm5hbF9yZWZlcmVuY2VfdHlwZXMgKHZvaWQpOwoKCmV4dGVybiB2b2lkIG1ha2VfZGVjbF9ydGwg KHRyZWUsIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIG1ha2VfZGVjbF9vbmVfb25seSAodHJl ZSk7CmV4dGVybiBpbnQgc3VwcG9ydHNfb25lX29ubHkgKHZvaWQpOwpleHRlcm4gdm9pZCB2YXJp YWJsZV9zZWN0aW9uICh0cmVlLCBpbnQpOwplbnVtIHRsc19tb2RlbCBkZWNsX3Rsc19tb2RlbCAo dHJlZSk7CmVudW0gc3ltYm9sX3Zpc2liaWxpdHkgZGVjbF92aXNpYmlsaXR5ICh0cmVlKTsKCgpl eHRlcm4gdm9pZCBlbWl0X25vcCAodm9pZCk7CmV4dGVybiB2b2lkIGV4cGFuZF9jb21wdXRlZF9n b3RvICh0cmVlKTsKZXh0ZXJuIF9Cb29sIHBhcnNlX291dHB1dF9jb25zdHJhaW50IChjb25zdCBj aGFyICoqLCBpbnQsIGludCwgaW50LCBfQm9vbCAqLCBfQm9vbCAqLCBfQm9vbCAqKTsKCgpleHRl cm4gdm9pZCBleHBhbmRfYXNtX29wZXJhbmRzICh0cmVlLCB0cmVlLCB0cmVlLCB0cmVlLCBpbnQs IGNvbnN0IGNoYXIgKiwgaW50KTsKCmV4dGVybiBpbnQgYW55X3BlbmRpbmdfY2xlYW51cHMgKGlu dCk7CmV4dGVybiB2b2lkIGluaXRfc3RtdF9mb3JfZnVuY3Rpb24gKHZvaWQpOwpleHRlcm4gdm9p ZCBleHBhbmRfc3RhcnRfdGFyZ2V0X3RlbXBzICh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhwYW5kX2Vu ZF90YXJnZXRfdGVtcHMgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBhbmRfZWxzZWlmICh0cmVlKTsK ZXh0ZXJuIHZvaWQgc2F2ZV9zdGFja19wb2ludGVyICh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhwYW5k X2RlY2wgKHRyZWUpOwpleHRlcm4gaW50IGV4cGFuZF9kZWNsX2NsZWFudXAgKHRyZWUsIHRyZWUp OwpleHRlcm4gaW50IGV4cGFuZF9kZWNsX2NsZWFudXBfZWggKHRyZWUsIHRyZWUsIGludCk7CmV4 dGVybiB2b2lkIGV4cGFuZF9hbm9uX3VuaW9uX2RlY2wgKHRyZWUsIHRyZWUsIHRyZWUpOwpleHRl cm4gdm9pZCBleHBhbmRfc3RhcnRfY2FzZV9kdW1teSAodm9pZCk7CmV4dGVybiBsb25nIGFsbF9j YXNlc19jb3VudCAodHJlZSwgaW50ICopOwpleHRlcm4gdm9pZCBjaGVja19mb3JfZnVsbF9lbnVt ZXJhdGlvbl9oYW5kbGluZyAodHJlZSk7CmV4dGVybiB2b2lkIGRlY2xhcmVfbm9ubG9jYWxfbGFi ZWwgKHRyZWUpOwpleHRlcm4gdm9pZCBkZWZhdWx0X2ZsYWdfcmFuZG9tX3NlZWQgKHZvaWQpOwoK CgpleHRlcm4gdHJlZSBnZXRfZmlsZV9mdW5jdGlvbl9uYW1lIChpbnQpOwoKCgoKCmV4dGVybiBj aGFyICpkd2FyZjJvdXRfY2ZpX2xhYmVsICh2b2lkKTsKCgoKZXh0ZXJuIHZvaWQgZHdhcmYyb3V0 X2RlZl9jZmEgKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIGxvbmcpOwoKCgpleHRlcm4gdm9pZCBk d2FyZjJvdXRfd2luZG93X3NhdmUgKGNvbnN0IGNoYXIgKik7CgoKCgpleHRlcm4gdm9pZCBkd2Fy ZjJvdXRfYXJnc19zaXplIChjb25zdCBjaGFyICosIGxvbmcpOwoKCgpleHRlcm4gdm9pZCBkd2Fy ZjJvdXRfcmVnX3NhdmUgKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIGxvbmcpOwoKCgpleHRlcm4g dm9pZCBkd2FyZjJvdXRfcmV0dXJuX3NhdmUgKGNvbnN0IGNoYXIgKiwgbG9uZyk7CgoKCmV4dGVy biB2b2lkIGR3YXJmMm91dF9yZXR1cm5fcmVnIChjb25zdCBjaGFyICosIHVuc2lnbmVkKTsKCgoK dHlwZWRlZiB0cmVlICgqd2Fsa190cmVlX2ZuKSAodHJlZSAqLCBpbnQgKiwgdm9pZCAqKTsKCgoK CgplbnVtIHRyZWVfZHVtcF9pbmRleAp7CiAgVERJX2FsbCwKICBURElfY2xhc3MsCiAgVERJX29y aWdpbmFsLAogIFRESV9vcHRpbWl6ZWQsCiAgVERJX2lubGluZWQsCgogIFRESV9lbmQKfTsKCgoK CgoKCnR5cGVkZWYgc3RydWN0IGR1bXBfaW5mbyAqZHVtcF9pbmZvX3A7CgpleHRlcm4gaW50IGR1 bXBfZmxhZyAoZHVtcF9pbmZvX3AsIGludCwgdHJlZSk7CmV4dGVybiBpbnQgZHVtcF9lbmFibGVk X3AgKGVudW0gdHJlZV9kdW1wX2luZGV4KTsKZXh0ZXJuIEZJTEUgKmR1bXBfYmVnaW4gKGVudW0g dHJlZV9kdW1wX2luZGV4LCBpbnQgKik7CmV4dGVybiB2b2lkIGR1bXBfZW5kIChlbnVtIHRyZWVf ZHVtcF9pbmRleCwgRklMRSAqKTsKZXh0ZXJuIHZvaWQgZHVtcF9ub2RlICh0cmVlLCBpbnQsIEZJ TEUgKik7CmV4dGVybiBpbnQgZHVtcF9zd2l0Y2hfcCAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNv bnN0IGNoYXIgKmR1bXBfZmxhZ19uYW1lIChlbnVtIHRyZWVfZHVtcF9pbmRleCk7CgoKZXh0ZXJu IHZvaWQgc2V0X2RlY2xfcnRsICh0cmVlLCBydHgpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZmFuY3lf YWJvcnQgKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopCiAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3JldHVybl9fKSk7CiMgMjYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9z cmMvZnNmL2djYy9zcmMvZ2NjL2MtcHJldHR5LXByaW50LmgiIDIKIyAxICIvVm9sdW1lcy9VRlNf UGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1vbi5oIiAxCiMgMjUg Ii9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29t bW9uLmgiCiMgMSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3Ny Yy9pbmNsdWRlL3NwbGF5LXRyZWUuaCIgMQojIDQ3ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2luY2x1ZGUvc3BsYXktdHJlZS5oIgp0eXBlZGVmIHVuc2ln bmVkIGxvbmcgaW50IHNwbGF5X3RyZWVfa2V5Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHNw bGF5X3RyZWVfdmFsdWU7CgoKdHlwZWRlZiBzdHJ1Y3Qgc3BsYXlfdHJlZV9ub2RlX3MgKnNwbGF5 X3RyZWVfbm9kZTsKCgoKdHlwZWRlZiBpbnQgKCpzcGxheV90cmVlX2NvbXBhcmVfZm4pIChzcGxh eV90cmVlX2tleSwgc3BsYXlfdHJlZV9rZXkpOwoKCgp0eXBlZGVmIHZvaWQgKCpzcGxheV90cmVl X2RlbGV0ZV9rZXlfZm4pIChzcGxheV90cmVlX2tleSk7CgoKCnR5cGVkZWYgdm9pZCAoKnNwbGF5 X3RyZWVfZGVsZXRlX3ZhbHVlX2ZuKSAoc3BsYXlfdHJlZV92YWx1ZSk7CgoKdHlwZWRlZiBpbnQg KCpzcGxheV90cmVlX2ZvcmVhY2hfZm4pIChzcGxheV90cmVlX25vZGUsIHZvaWQqKTsKCgoKCgp0 eXBlZGVmIHZvaWQgKiAoKnNwbGF5X3RyZWVfYWxsb2NhdGVfZm4pIChpbnQsIHZvaWQgKik7CgoK CgoKdHlwZWRlZiB2b2lkICgqc3BsYXlfdHJlZV9kZWFsbG9jYXRlX2ZuKSAodm9pZCAqLCB2b2lk ICopOwoKCnN0cnVjdCBzcGxheV90cmVlX25vZGVfcwp7CgogIHNwbGF5X3RyZWVfa2V5IGtleTsK CgogIHNwbGF5X3RyZWVfdmFsdWUgdmFsdWU7CgoKICBzcGxheV90cmVlX25vZGUgbGVmdDsKICBz cGxheV90cmVlX25vZGUgcmlnaHQ7Cn07CgoKc3RydWN0IHNwbGF5X3RyZWVfcwp7CgogIHNwbGF5 X3RyZWVfbm9kZSByb290OwoKCiAgc3BsYXlfdHJlZV9jb21wYXJlX2ZuIGNvbXA7CgoKICBzcGxh eV90cmVlX2RlbGV0ZV9rZXlfZm4gZGVsZXRlX2tleTsKCgogIHNwbGF5X3RyZWVfZGVsZXRlX3Zh bHVlX2ZuIGRlbGV0ZV92YWx1ZTsKCgogIHNwbGF5X3RyZWVfYWxsb2NhdGVfZm4gYWxsb2NhdGU7 CiAgc3BsYXlfdHJlZV9kZWFsbG9jYXRlX2ZuIGRlYWxsb2NhdGU7CiAgdm9pZCAqIGFsbG9jYXRl X2RhdGE7Cgp9Owp0eXBlZGVmIHN0cnVjdCBzcGxheV90cmVlX3MgKnNwbGF5X3RyZWU7CgpleHRl cm4gc3BsYXlfdHJlZSBzcGxheV90cmVlX25ldyAoc3BsYXlfdHJlZV9jb21wYXJlX2ZuLCBzcGxh eV90cmVlX2RlbGV0ZV9rZXlfZm4sIHNwbGF5X3RyZWVfZGVsZXRlX3ZhbHVlX2ZuKTsKCgpleHRl cm4gc3BsYXlfdHJlZSBzcGxheV90cmVlX25ld193aXRoX2FsbG9jYXRvcgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwbGF5X3RyZWVfY29tcGFyZV9mbiwgc3BsYXlf dHJlZV9kZWxldGVfa2V5X2ZuLCBzcGxheV90cmVlX2RlbGV0ZV92YWx1ZV9mbiwgc3BsYXlfdHJl ZV9hbGxvY2F0ZV9mbiwgc3BsYXlfdHJlZV9kZWFsbG9jYXRlX2ZuLCB2b2lkICopOwoKCgoKCmV4 dGVybiB2b2lkIHNwbGF5X3RyZWVfZGVsZXRlIChzcGxheV90cmVlKTsKZXh0ZXJuIHNwbGF5X3Ry ZWVfbm9kZSBzcGxheV90cmVlX2luc2VydAogICAgICAgICAgICAgICAgICAgICAgICAgIChzcGxh eV90cmVlLCBzcGxheV90cmVlX2tleSwgc3BsYXlfdHJlZV92YWx1ZSk7CgoKZXh0ZXJuIHZvaWQg c3BsYXlfdHJlZV9yZW1vdmUgKHNwbGF5X3RyZWUsIHNwbGF5X3RyZWVfa2V5KTsKCmV4dGVybiBz cGxheV90cmVlX25vZGUgc3BsYXlfdHJlZV9sb29rdXAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzcGxheV90cmVlLCBzcGxheV90cmVlX2tleSk7CgpleHRlcm4gc3Bs YXlfdHJlZV9ub2RlIHNwbGF5X3RyZWVfcHJlZGVjZXNzb3IKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzcGxheV90cmVlLCBzcGxheV90cmVlX2tleSk7CgpleHRlcm4g c3BsYXlfdHJlZV9ub2RlIHNwbGF5X3RyZWVfc3VjY2Vzc29yCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3BsYXlfdHJlZSwgc3BsYXlfdHJlZV9rZXkpOwoKZXh0ZXJu IHNwbGF5X3RyZWVfbm9kZSBzcGxheV90cmVlX21heAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNwbGF5X3RyZWUpOwpleHRlcm4gc3BsYXlfdHJlZV9ub2RlIHNwbGF5 X3RyZWVfbWluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BsYXlf dHJlZSk7CmV4dGVybiBpbnQgc3BsYXlfdHJlZV9mb3JlYWNoIChzcGxheV90cmVlLCBzcGxheV90 cmVlX2ZvcmVhY2hfZm4sIHZvaWQqKTsKCgpleHRlcm4gaW50IHNwbGF5X3RyZWVfY29tcGFyZV9p bnRzIChzcGxheV90cmVlX2tleSwgc3BsYXlfdHJlZV9rZXkpOwoKZXh0ZXJuIGludCBzcGxheV90 cmVlX2NvbXBhcmVfcG9pbnRlcnMgKHNwbGF5X3RyZWVfa2V5LCBzcGxheV90cmVlX2tleSk7CiMg MjYgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2Mt Y29tbW9uLmgiIDIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n Y2Mvc3JjL2djYy9jcHBsaWIuaCIgMQojIDI4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNr aWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jcHBsaWIuaCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0 aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9saW5lLW1hcC5oIiAxCiMgMzEgIi9Wb2x1 bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2xpbmUtbWFwLmgi CmVudW0gbGNfcmVhc29uIHtMQ19FTlRFUiA9IDAsIExDX0xFQVZFLCBMQ19SRU5BTUV9OwojIDQx ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9saW5l LW1hcC5oIgpzdHJ1Y3QgbGluZV9tYXAKewogIGNvbnN0IGNoYXIgKnRvX2ZpbGU7CiAgdW5zaWdu ZWQgaW50IHRvX2xpbmU7CiAgdW5zaWduZWQgaW50IGZyb21fbGluZTsKICBpbnQgaW5jbHVkZWRf ZnJvbTsKICBlbnVtIGxjX3JlYXNvbiByZWFzb24gOiA4OwogIHVuc2lnbmVkIGNoYXIgc3lzcDsK fTsKCgpzdHJ1Y3QgbGluZV9tYXBzCnsKICBzdHJ1Y3QgbGluZV9tYXAgKm1hcHM7CiAgdW5zaWdu ZWQgaW50IGFsbG9jYXRlZDsKICB1bnNpZ25lZCBpbnQgdXNlZDsKCgoKCiAgaW50IGxhc3RfbGlz dGVkOwoKCiAgdW5zaWduZWQgaW50IGRlcHRoOwoKCiAgX0Jvb2wgdHJhY2VfaW5jbHVkZXM7Cn07 CgoKZXh0ZXJuIHZvaWQgaW5pdF9saW5lX21hcHMKICAoc3RydWN0IGxpbmVfbWFwcyAqKTsKCgpl eHRlcm4gdm9pZCBmcmVlX2xpbmVfbWFwcwogIChzdHJ1Y3QgbGluZV9tYXBzICopOwojIDg3ICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9saW5lLW1h cC5oIgpleHRlcm4gY29uc3Qgc3RydWN0IGxpbmVfbWFwICphZGRfbGluZV9tYXAKICAoc3RydWN0 IGxpbmVfbWFwcyAqLCBlbnVtIGxjX3JlYXNvbiwgdW5zaWduZWQgaW50IHN5c3AsIHVuc2lnbmVk IGludCBmcm9tX2xpbmUsIGNvbnN0IGNoYXIgKnRvX2ZpbGUsIHVuc2lnbmVkIGludCB0b19saW5l KTsKCgoKCmV4dGVybiBjb25zdCBzdHJ1Y3QgbGluZV9tYXAgKmxvb2t1cF9saW5lCiAgKHN0cnVj dCBsaW5lX21hcHMgKiwgdW5zaWduZWQgaW50KTsKCgoKCmV4dGVybiB2b2lkIHByaW50X2NvbnRh aW5pbmdfZmlsZXMKICAoc3RydWN0IGxpbmVfbWFwcyAqLCBjb25zdCBzdHJ1Y3QgbGluZV9tYXAg Kik7CiMgMjkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMv Z2NjL2NwcGxpYi5oIiAyCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgY3BwX3JlYWRlciBjcHBfcmVhZGVy Owp0eXBlZGVmIHN0cnVjdCBjcHBfYnVmZmVyIGNwcF9idWZmZXI7CnR5cGVkZWYgc3RydWN0IGNw cF9vcHRpb25zIGNwcF9vcHRpb25zOwp0eXBlZGVmIHN0cnVjdCBjcHBfdG9rZW4gY3BwX3Rva2Vu Owp0eXBlZGVmIHN0cnVjdCBjcHBfc3RyaW5nIGNwcF9zdHJpbmc7CnR5cGVkZWYgc3RydWN0IGNw cF9oYXNobm9kZSBjcHBfaGFzaG5vZGU7CnR5cGVkZWYgc3RydWN0IGNwcF9tYWNybyBjcHBfbWFj cm87CnR5cGVkZWYgc3RydWN0IGNwcF9jYWxsYmFja3MgY3BwX2NhbGxiYWNrczsKdHlwZWRlZiBz dHJ1Y3QgY3BwX3BhdGggY3BwX3BhdGg7CgpzdHJ1Y3QgYW5zd2VyOwpzdHJ1Y3QgZmlsZV9uYW1l X21hcF9saXN0OwojIDE0NCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv Z2NjL3NyYy9nY2MvY3BwbGliLmgiCmVudW0gY3BwX3R0eXBlCnsKICBDUFBfRVEgPSAwLCBDUFBf Tk9ULCBDUFBfR1JFQVRFUiwgQ1BQX0xFU1MsIENQUF9QTFVTLCBDUFBfTUlOVVMsIENQUF9NVUxU LCBDUFBfRElWLCBDUFBfTU9ELCBDUFBfQU5ELCBDUFBfT1IsIENQUF9YT1IsIENQUF9SU0hJRlQs IENQUF9MU0hJRlQsIENQUF9NSU4sIENQUF9NQVgsIENQUF9DT01QTCwgQ1BQX0FORF9BTkQsIENQ UF9PUl9PUiwgQ1BQX1FVRVJZLCBDUFBfQ09MT04sIENQUF9DT01NQSwgQ1BQX09QRU5fUEFSRU4s IENQUF9DTE9TRV9QQVJFTiwgQ1BQX0VPRiwgQ1BQX0VRX0VRLCBDUFBfTk9UX0VRLCBDUFBfR1JF QVRFUl9FUSwgQ1BQX0xFU1NfRVEsIENQUF9QTFVTX0VRLCBDUFBfTUlOVVNfRVEsIENQUF9NVUxU X0VRLCBDUFBfRElWX0VRLCBDUFBfTU9EX0VRLCBDUFBfQU5EX0VRLCBDUFBfT1JfRVEsIENQUF9Y T1JfRVEsIENQUF9SU0hJRlRfRVEsIENQUF9MU0hJRlRfRVEsIENQUF9NSU5fRVEsIENQUF9NQVhf RVEsIENQUF9IQVNILCBDUFBfUEFTVEUsIENQUF9PUEVOX1NRVUFSRSwgQ1BQX0NMT1NFX1NRVUFS RSwgQ1BQX09QRU5fQlJBQ0UsIENQUF9DTE9TRV9CUkFDRSwgQ1BQX1NFTUlDT0xPTiwgQ1BQX0VM TElQU0lTLCBDUFBfUExVU19QTFVTLCBDUFBfTUlOVVNfTUlOVVMsIENQUF9ERVJFRiwgQ1BQX0RP VCwgQ1BQX1NDT1BFLCBDUFBfREVSRUZfU1RBUiwgQ1BQX0RPVF9TVEFSLCBDUFBfQVRTSUdOLCBD UFBfTkFNRSwgQ1BQX05VTUJFUiwgQ1BQX0NIQVIsIENQUF9XQ0hBUiwgQ1BQX09USEVSLCBDUFBf U1RSSU5HLCBDUFBfV1NUUklORywgQ1BQX0hFQURFUl9OQU1FLCBDUFBfQ09NTUVOVCwgQ1BQX01B Q1JPX0FSRywgQ1BQX1BBRERJTkcsCiAgTl9UVFlQRVMKfTsKCgoKCmVudW0gY19sYW5nIHtDTEtf R05VQzg5ID0gMCwgQ0xLX0dOVUM5OSwgQ0xLX1NUREM4OSwgQ0xLX1NUREM5NCwgQ0xLX1NUREM5 OSwKICAgICAgQ0xLX0dOVUNYWCwgQ0xLX0NYWDk4LCBDTEtfQVNNfTsKCgpzdHJ1Y3QgY3BwX3N0 cmluZwp7CiAgdW5zaWduZWQgaW50IGxlbjsKICBjb25zdCB1bnNpZ25lZCBjaGFyICp0ZXh0Owp9 OwojIDE3NCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n Y2MvY3BwbGliLmgiCnN0cnVjdCBjcHBfdG9rZW4KewogIHVuc2lnbmVkIGludCBsaW5lOwogIHVu c2lnbmVkIHNob3J0IGNvbDsKICBlbnVtIGNwcF90dHlwZSB0eXBlIDogODsKICB1bnNpZ25lZCBj aGFyIGZsYWdzOwoKICB1bmlvbgogIHsKICAgIGNwcF9oYXNobm9kZSAqbm9kZTsKICAgIGNvbnN0 IGNwcF90b2tlbiAqc291cmNlOwogICAgc3RydWN0IGNwcF9zdHJpbmcgc3RyOwogICAgdW5zaWdu ZWQgaW50IGFyZ19ubzsKICB9IHZhbDsKfTsKIyAyMDUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24v cGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2NwcGxpYi5oIgp0eXBlZGVmIHVuc2lnbmVkIGlu dCBjcHBjaGFyX3Q7CnR5cGVkZWYgaW50IGNwcGNoYXJfc2lnbmVkX3Q7CgoKCnN0cnVjdCBjcHBf b3B0aW9ucwp7CgogIHVuc2lnbmVkIGludCB0YWJzdG9wOwoKCgogIHN0cnVjdCBmaWxlX25hbWVf bWFwX2xpc3QgKm1hcF9saXN0OwoKCiAgZW51bSBjX2xhbmcgbGFuZzsKCgogIHVuc2lnbmVkIGNo YXIgY3BsdXNwbHVzOwoKCiAgdW5zaWduZWQgY2hhciBjcGx1c3BsdXNfY29tbWVudHM7CgoKCiAg dW5zaWduZWQgY2hhciBvYmpjOwoKCiAgdW5zaWduZWQgY2hhciBkaXNjYXJkX2NvbW1lbnRzOwoK CgogIHVuc2lnbmVkIGNoYXIgZGlzY2FyZF9jb21tZW50c19pbl9tYWNyb19leHA7CgoKICB1bnNp Z25lZCBjaGFyIHRyaWdyYXBoczsKCgogIHVuc2lnbmVkIGNoYXIgZGlncmFwaHM7CgoKICB1bnNp Z25lZCBjaGFyIGV4dGVuZGVkX251bWJlcnM7CgoKICB1bnNpZ25lZCBjaGFyIHByaW50X2luY2x1 ZGVfbmFtZXM7CgoKICB1bnNpZ25lZCBjaGFyIHBlZGFudGljX2Vycm9yczsKCgogIHVuc2lnbmVk IGNoYXIgaW5oaWJpdF93YXJuaW5nczsKCgogIHVuc2lnbmVkIGNoYXIgd2Fybl9kZXByZWNhdGVk OwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX3N5c3RlbV9oZWFkZXJzOwoKCgogIHVuc2lnbmVkIGNo YXIgaW5oaWJpdF9lcnJvcnM7CgoKICB1bnNpZ25lZCBjaGFyIHdhcm5fY29tbWVudHM7CgoKICB1 bnNpZ25lZCBjaGFyIHdhcm5fdHJpZ3JhcGhzOwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX2ltcG9y dDsKCgogIHVuc2lnbmVkIGNoYXIgd2Fybl9tdWx0aWNoYXI7CgoKCiAgdW5zaWduZWQgY2hhciB3 YXJuX3RyYWRpdGlvbmFsOwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX2xvbmdfbG9uZzsKCgogIHVu c2lnbmVkIGNoYXIgd2Fybl9lbmRpZl9sYWJlbHM7CgoKCiAgdW5zaWduZWQgY2hhciB3YXJuX251 bV9zaWduX2NoYW5nZTsKCgogIHVuc2lnbmVkIGNoYXIgd2FybmluZ3NfYXJlX2Vycm9yczsKCgoK ICB1bnNpZ25lZCBjaGFyIHJlbWFwOwoKCiAgdW5zaWduZWQgY2hhciBkb2xsYXJzX2luX2lkZW50 OwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX3VuZGVmOwoKCiAgdW5zaWduZWQgY2hhciB3YXJuX3Vu dXNlZF9tYWNyb3M7CgoKICB1bnNpZ25lZCBjaGFyIGM5OTsKCgogIHVuc2lnbmVkIGNoYXIgc3Rk OwoKCiAgdW5zaWduZWQgY2hhciBwZWRhbnRpYzsKCgoKICB1bnNpZ25lZCBjaGFyIHByZXByb2Nl c3NlZDsKCgogIHVuc2lnbmVkIGNoYXIgc2hvd19jb2x1bW47CgoKICB1bnNpZ25lZCBjaGFyIG9w ZXJhdG9yX25hbWVzOwoKCiAgdW5zaWduZWQgY2hhciB0cmFkaXRpb25hbDsKCgogIF9Cb29sIHdh cm5faW52YWxpZF9wY2g7CgoKICBfQm9vbCByZXN0b3JlX3BjaF9kZXBzOwoKCiAgc3RydWN0CiAg ewoKICAgIGVudW0ge0RFUFNfTk9ORSA9IDAsIERFUFNfVVNFUiwgREVQU19TWVNURU0gfSBzdHls ZTsKCgogICAgX0Jvb2wgbWlzc2luZ19maWxlczsKCgoKICAgIF9Cb29sIHBob255X3RhcmdldHM7 CgoKICAgIF9Cb29sIGlnbm9yZV9tYWluX2ZpbGU7CiAgfSBkZXBzOwoKCgoKCiAgc2l6ZV90IHBy ZWNpc2lvbiwgY2hhcl9wcmVjaXNpb24sIGludF9wcmVjaXNpb24sIHdjaGFyX3ByZWNpc2lvbjsK CgogIF9Cb29sIHVuc2lnbmVkX2NoYXIsIHVuc2lnbmVkX3djaGFyOwoKCiAgX0Jvb2wgRUJDRElD OwoKCiAgdW5zaWduZWQgY2hhciBzdGRjXzBfaW5fc3lzdGVtX2hlYWRlcnM7Cn07CgoKc3RydWN0 IGNwcF9jYWxsYmFja3MKewoKICB2b2lkICgqbGluZV9jaGFuZ2UpIChjcHBfcmVhZGVyICosIGNv bnN0IGNwcF90b2tlbiAqLCBpbnQpOwogIHZvaWQgKCpmaWxlX2NoYW5nZSkgKGNwcF9yZWFkZXIg KiwgY29uc3Qgc3RydWN0IGxpbmVfbWFwICopOwogIHZvaWQgKCppbmNsdWRlKSAoY3BwX3JlYWRl ciAqLCB1bnNpZ25lZCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgY29uc3QgY2hhciAqLCBp bnQpOwoKICB2b2lkICgqZGVmaW5lKSAoY3BwX3JlYWRlciAqLCB1bnNpZ25lZCBpbnQsIGNwcF9o YXNobm9kZSAqKTsKICB2b2lkICgqdW5kZWYpIChjcHBfcmVhZGVyICosIHVuc2lnbmVkIGludCwg Y3BwX2hhc2hub2RlICopOwogIHZvaWQgKCppZGVudCkgKGNwcF9yZWFkZXIgKiwgdW5zaWduZWQg aW50LCBjb25zdCBjcHBfc3RyaW5nICopOwogIHZvaWQgKCpkZWZfcHJhZ21hKSAoY3BwX3JlYWRl ciAqLCB1bnNpZ25lZCBpbnQpOwogIGludCAoKnZhbGlkX3BjaCkgKGNwcF9yZWFkZXIgKiwgY29u c3QgY2hhciAqLCBpbnQpOwogIHZvaWQgKCpyZWFkX3BjaCkgKGNwcF9yZWFkZXIgKiwgY29uc3Qg Y2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7Cn07CgoKc3RydWN0IGNwcF9wYXRoCnsKCiAgc3Ry dWN0IGNwcF9wYXRoICpuZXh0OwoKCiAgY2hhciAqbmFtZTsKICB1bnNpZ25lZCBpbnQgbGVuOwoK CgogIHVuc2lnbmVkIGNoYXIgc3lzcDsKCgoKICBzdHJ1Y3QgZmlsZV9uYW1lX21hcCAqbmFtZV9t YXA7CgoKCiAgaW5vX3QgaW5vOwogIGRldl90IGRldjsKfTsKCgpleHRlcm4gY29uc3QgY2hhciAq cHJvZ25hbWU7CiMgNDM0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n Y2Mvc3JjL2djYy9jcHBsaWIuaCIKZW51bSBub2RlX3R5cGUKewogIE5UX1ZPSUQgPSAwLAogIE5U X01BQ1JPLAogIE5UX0FTU0VSVElPTgp9OwoKCgplbnVtIGJ1aWx0aW5fdHlwZQp7CiAgQlRfU1BF Q0xJTkUgPSAwLAogIEJUX0RBVEUsCiAgQlRfRklMRSwKICBCVF9CQVNFX0ZJTEUsCiAgQlRfSU5D TFVERV9MRVZFTCwKICBCVF9USU1FLAogIEJUX1NUREMsCiAgQlRfUFJBR01BCn07CiMgNDYzICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jcHBsaWIu aCIKc3RydWN0IGNwcF9oYXNobm9kZQp7CiAgc3RydWN0IGh0X2lkZW50aWZpZXIgaWRlbnQ7CiAg dW5zaWduZWQgaW50IGlzX2RpcmVjdGl2ZSA6IDE7CiAgdW5zaWduZWQgaW50IGRpcmVjdGl2ZV9p bmRleCA6IDc7CgoKICB1bnNpZ25lZCBjaGFyIHJpZF9jb2RlOwogIGVudW0gbm9kZV90eXBlIHR5 cGUgOiA4OwogIHVuc2lnbmVkIGNoYXIgZmxhZ3M7CgogIHVuaW9uIF9jcHBfaGFzaG5vZGVfdmFs dWUKICB7CgogICAgY3BwX21hY3JvICogbWFjcm87CgogICAgc3RydWN0IGFuc3dlciAqIGFuc3dl cnM7CgogICAgZW51bSBidWlsdGluX3R5cGUgYnVpbHRpbjsKCiAgICB1bnNpZ25lZCBzaG9ydCBh cmdfaW5kZXg7CiAgfSB2YWx1ZTsKfTsKCgoKCgoKCmV4dGVybiBjcHBfcmVhZGVyICpjcHBfY3Jl YXRlX3JlYWRlciAoZW51bSBjX2xhbmcsIHN0cnVjdCBodCAqKTsKCgoKZXh0ZXJuIHZvaWQgY3Bw X3NldF9sYW5nIChjcHBfcmVhZGVyICosIGVudW0gY19sYW5nKTsKCgoKCgpleHRlcm4gdm9pZCBj cHBfYWRkX2RlcGVuZGVuY3lfdGFyZ2V0IChjcHBfcmVhZGVyICosIGNvbnN0IGNoYXIgKiB0YXJn ZXQsIGludCBxdW90ZSk7CgoKCgpleHRlcm4gdm9pZCBjcHBfc2V0X2luY2x1ZGVfY2hhaW5zIChj cHBfcmVhZGVyICosIGNwcF9wYXRoICosIGNwcF9wYXRoICosIGludCk7CgoKCgoKCgpleHRlcm4g Y3BwX29wdGlvbnMgKmNwcF9nZXRfb3B0aW9ucyAoY3BwX3JlYWRlciAqKTsKZXh0ZXJuIGNvbnN0 IHN0cnVjdCBsaW5lX21hcHMgKmNwcF9nZXRfbGluZV9tYXBzIChjcHBfcmVhZGVyICopOwpleHRl cm4gY3BwX2NhbGxiYWNrcyAqY3BwX2dldF9jYWxsYmFja3MgKGNwcF9yZWFkZXIgKik7CmV4dGVy biB2b2lkIGNwcF9zZXRfY2FsbGJhY2tzIChjcHBfcmVhZGVyICosIGNwcF9jYWxsYmFja3MgKik7 CgoKCgoKCmV4dGVybiBjb25zdCBjaGFyICpjcHBfcmVhZF9tYWluX2ZpbGUgKGNwcF9yZWFkZXIg KiwgY29uc3QgY2hhciAqKTsKCgpleHRlcm4gdm9pZCBjcHBfaW5pdF9idWlsdGlucyAoY3BwX3Jl YWRlciAqKTsKCgoKCgoKZXh0ZXJuIGludCBjcHBfZmluaXNoIChjcHBfcmVhZGVyICosIEZJTEUg KmRlcHNfc3RyZWFtKTsKCgoKCmV4dGVybiB2b2lkIGNwcF9kZXN0cm95IChjcHBfcmVhZGVyICop OwoKCmV4dGVybiB1bnNpZ25lZCBpbnQgY3BwX2Vycm9ycyAoY3BwX3JlYWRlciAqKTsKCmV4dGVy biB1bnNpZ25lZCBpbnQgY3BwX3Rva2VuX2xlbiAoY29uc3QgY3BwX3Rva2VuICopOwpleHRlcm4g dW5zaWduZWQgY2hhciAqY3BwX3Rva2VuX2FzX3RleHQgKGNwcF9yZWFkZXIgKiwgY29uc3QgY3Bw X3Rva2VuICopOwoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKmNwcF9zcGVsbF90b2tlbiAoY3BwX3Jl YWRlciAqLCBjb25zdCBjcHBfdG9rZW4gKiwgdW5zaWduZWQgY2hhciAqKTsKCmV4dGVybiB2b2lk IGNwcF9yZWdpc3Rlcl9wcmFnbWEgKGNwcF9yZWFkZXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICosIHZvaWQgKCopIChjcHBfcmVhZGVyICopKTsKCgoKZXh0ZXJuIGludCBjcHBfYXZvaWRf cGFzdGUgKGNwcF9yZWFkZXIgKiwgY29uc3QgY3BwX3Rva2VuICosIGNvbnN0IGNwcF90b2tlbiAq KTsKCmV4dGVybiBjb25zdCBjcHBfdG9rZW4gKmNwcF9nZXRfdG9rZW4gKGNwcF9yZWFkZXIgKik7 CmV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyICpjcHBfbWFjcm9fZGVmaW5pdGlvbiAoY3BwX3Jl YWRlciAqLCBjb25zdCBjcHBfaGFzaG5vZGUgKik7CgpleHRlcm4gdm9pZCBfY3BwX2JhY2t1cF90 b2tlbnMgKGNwcF9yZWFkZXIgKiwgdW5zaWduZWQgaW50KTsKCgpleHRlcm4gY3BwY2hhcl90CmNw cF9pbnRlcnByZXRfY2hhcmNvbnN0IChjcHBfcmVhZGVyICosIGNvbnN0IGNwcF90b2tlbiAqLCB1 bnNpZ25lZCBpbnQgKiwgaW50ICopOwoKCgoKZXh0ZXJuIHZvaWQgY3BwX2RlZmluZSAoY3BwX3Jl YWRlciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBjcHBfYXNzZXJ0IChjcHBfcmVhZGVy ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGNwcF91bmRlZiAoY3BwX3JlYWRlciAqLCBj b25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBjcHBfdW5hc3NlcnQgKGNwcF9yZWFkZXIgKiwgY29u c3QgY2hhciAqKTsKCmV4dGVybiBjcHBfYnVmZmVyICpjcHBfcHVzaF9idWZmZXIgKGNwcF9yZWFk ZXIgKiwgY29uc3QgdW5zaWduZWQgY2hhciAqLCBzaXplX3QsIGludCwgaW50KTsKCgpleHRlcm4g aW50IGNwcF9kZWZpbmVkIChjcHBfcmVhZGVyICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgaW50 KTsKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGNwcF9udW1fcGFydDsKdHlwZWRlZiBzdHJ1Y3Qg Y3BwX251bSBjcHBfbnVtOwpzdHJ1Y3QgY3BwX251bQp7CiAgY3BwX251bV9wYXJ0IGhpZ2g7CiAg Y3BwX251bV9wYXJ0IGxvdzsKICBfQm9vbCB1bnNpZ25lZHA7CiAgX0Jvb2wgb3ZlcmZsb3c7Cn07 CiMgNjE4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj Yy9jcHBsaWIuaCIKZXh0ZXJuIHVuc2lnbmVkIGNwcF9jbGFzc2lmeV9udW1iZXIgKGNwcF9yZWFk ZXIgKiwgY29uc3QgY3BwX3Rva2VuICopOwoKCmV4dGVybiBjcHBfbnVtIGNwcF9pbnRlcnByZXRf aW50ZWdlciAoY3BwX3JlYWRlciAqLCBjb25zdCBjcHBfdG9rZW4gKiwgdW5zaWduZWQgaW50IHR5 cGUpOwoKCgoKY3BwX251bSBjcHBfbnVtX3NpZ25fZXh0ZW5kIChjcHBfbnVtLCBzaXplX3QpOwoj IDY1NiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2Mv Y3BwbGliLmgiCmV4dGVybiB2b2lkIGNwcF9lcnJvciAoY3BwX3JlYWRlciAqLCBpbnQsIGNvbnN0 IGNoYXIgKm1zZ2lkLCAuLi4pCiAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm X18sIDMsIDQpKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoKCgpleHRlcm4g dm9pZCBjcHBfZXJybm8gKGNwcF9yZWFkZXIgKiwgaW50IGxldmVsLCBjb25zdCBjaGFyICptc2cp OwoKCgoKZXh0ZXJuIHZvaWQgY3BwX2Vycm9yX3dpdGhfbGluZSAoY3BwX3JlYWRlciAqLCBpbnQs IHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgY2hhciAqbXNnaWQsIC4uLikKICBfX2F0dHJpYnV0 ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgNSwgNikpKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDUpKSk7CgoKZXh0ZXJuIGludCBjcHBfaWRlcSAoY29uc3QgY3BwX3Rva2VuICos IGNvbnN0IGNoYXIgKik7CgpleHRlcm4gdm9pZCBjcHBfb3V0cHV0X2xpbmUgKGNwcF9yZWFkZXIg KiwgRklMRSAqKTsKZXh0ZXJuIHZvaWQgY3BwX291dHB1dF90b2tlbiAoY29uc3QgY3BwX3Rva2Vu ICosIEZJTEUgKik7CmV4dGVybiBjb25zdCBjaGFyICpjcHBfdHlwZTJuYW1lIChlbnVtIGNwcF90 dHlwZSk7CgoKCgoKZXh0ZXJuIGNwcGNoYXJfdCBjcHBfcGFyc2VfZXNjYXBlIChjcHBfcmVhZGVy ICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiogcHN0ciwgY29uc3QgdW5zaWduZWQgY2hhciAqbGlt aXQsIGludCB3aWRlKTsKIyA2ODkgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMv ZnNmL2djYy9zcmMvZ2NjL2NwcGxpYi5oIgpleHRlcm4gY3BwX2hhc2hub2RlICpjcHBfbG9va3Vw IChjcHBfcmVhZGVyICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgaW50KTsKCgoK dHlwZWRlZiBpbnQgKCpjcHBfY2IpIChjcHBfcmVhZGVyICosIGNwcF9oYXNobm9kZSAqLCB2b2lk ICopOwpleHRlcm4gdm9pZCBjcHBfZm9yYWxsX2lkZW50aWZpZXJzIChjcHBfcmVhZGVyICosIGNw cF9jYiwgdm9pZCAqKTsKCgoKZXh0ZXJuIHZvaWQgY3BwX3NjYW5fbm9vdXRwdXQgKGNwcF9yZWFk ZXIgKik7CmV4dGVybiBpbnQgY3BwX3N5c19tYWNyb19wIChjcHBfcmVhZGVyICopOwpleHRlcm4g dW5zaWduZWQgY2hhciAqY3BwX3F1b3RlX3N0cmluZyAodW5zaWduZWQgY2hhciAqLCBjb25zdCB1 bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGludCk7CgoKCgpleHRlcm4gaW50IGNwcF9pbmNsdWRl ZCAoY3BwX3JlYWRlciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBjcHBfbWFrZV9zeXN0 ZW1faGVhZGVyIChjcHBfcmVhZGVyICosIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgY3BwX3NpbXBs aWZ5X3BhdGggKGNoYXIgKik7CmV4dGVybiBfQm9vbCBjcHBfcHVzaF9pbmNsdWRlIChjcHBfcmVh ZGVyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGNwcF9jaGFuZ2VfZmlsZSAoY3BwX3Jl YWRlciAqLCBlbnVtIGxjX3JlYXNvbiwgY29uc3QgY2hhciAqKTsKCgoKc3RydWN0IHNhdmVfbWFj cm9fZGF0YTsKZXh0ZXJuIGludCBjcHBfc2F2ZV9zdGF0ZSAoY3BwX3JlYWRlciAqLCBGSUxFICop OwpleHRlcm4gaW50IGNwcF93cml0ZV9wY2hfZGVwcyAoY3BwX3JlYWRlciAqLCBGSUxFICopOwpl eHRlcm4gaW50IGNwcF93cml0ZV9wY2hfc3RhdGUgKGNwcF9yZWFkZXIgKiwgRklMRSAqKTsKZXh0 ZXJuIGludCBjcHBfdmFsaWRfc3RhdGUgKGNwcF9yZWFkZXIgKiwgY29uc3QgY2hhciAqLCBpbnQp OwpleHRlcm4gdm9pZCBjcHBfcHJlcGFyZV9zdGF0ZSAoY3BwX3JlYWRlciAqLCBzdHJ1Y3Qgc2F2 ZV9tYWNyb19kYXRhICoqKTsKCmV4dGVybiBpbnQgY3BwX3JlYWRfc3RhdGUgKGNwcF9yZWFkZXIg KiwgY29uc3QgY2hhciAqLCBGSUxFICosIHN0cnVjdCBzYXZlX21hY3JvX2RhdGEgKik7CiMgMjcg Ii9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29t bW9uLmgiIDIKIyA1MSAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2Nj L3NyYy9nY2MvYy1jb21tb24uaCIKZW51bSByaWQKewoKCiAgUklEX1NUQVRJQyA9IDAsCiAgUklE X1VOU0lHTkVELCBSSURfTE9ORywgUklEX0NPTlNULCBSSURfRVhURVJOLAogIFJJRF9SRUdJU1RF UiwgUklEX1RZUEVERUYsIFJJRF9TSE9SVCwgUklEX0lOTElORSwKICBSSURfVk9MQVRJTEUsIFJJ RF9TSUdORUQsIFJJRF9BVVRPLCBSSURfUkVTVFJJQ1QsCgoKICBSSURfQk9VTkRFRCwgUklEX1VO Qk9VTkRFRCwgUklEX0NPTVBMRVgsIFJJRF9USFJFQUQsCgoKICBSSURfRlJJRU5ELCBSSURfVklS VFVBTCwgUklEX0VYUExJQ0lULCBSSURfRVhQT1JULCBSSURfTVVUQUJMRSwKCgogIFJJRF9JTiwg UklEX09VVCwgUklEX0lOT1VULCBSSURfQllDT1BZLCBSSURfQllSRUYsIFJJRF9PTkVXQVksCgoK ICBSSURfSU5ULCBSSURfQ0hBUiwgUklEX0ZMT0FULCBSSURfRE9VQkxFLCBSSURfVk9JRCwKICBS SURfRU5VTSwgUklEX1NUUlVDVCwgUklEX1VOSU9OLCBSSURfSUYsIFJJRF9FTFNFLAogIFJJRF9X SElMRSwgUklEX0RPLCBSSURfRk9SLCBSSURfU1dJVENILCBSSURfQ0FTRSwKICBSSURfREVGQVVM VCwgUklEX0JSRUFLLCBSSURfQ09OVElOVUUsIFJJRF9SRVRVUk4sIFJJRF9HT1RPLAogIFJJRF9T SVpFT0YsCgoKICBSSURfQVNNLCBSSURfVFlQRU9GLCBSSURfQUxJR05PRiwgUklEX0FUVFJJQlVU RSwgUklEX1ZBX0FSRywKICBSSURfRVhURU5TSU9OLCBSSURfSU1BR1BBUlQsIFJJRF9SRUFMUEFS VCwgUklEX0xBQkVMLCBSSURfUFRSQkFTRSwKICBSSURfUFRSRVhURU5ULCBSSURfUFRSVkFMVUUs IFJJRF9DSE9PU0VfRVhQUiwgUklEX1RZUEVTX0NPTVBBVElCTEVfUCwKCgogIFJJRF9GVU5DVElP Tl9OQU1FLCBSSURfUFJFVFRZX0ZVTkNUSU9OX05BTUUsIFJJRF9DOTlfRlVOQ1RJT05fTkFNRSwK CgogIFJJRF9CT09MLCBSSURfV0NIQVIsIFJJRF9DTEFTUywKICBSSURfUFVCTElDLCBSSURfUFJJ VkFURSwgUklEX1BST1RFQ1RFRCwKICBSSURfVEVNUExBVEUsIFJJRF9OVUxMLCBSSURfQ0FUQ0gs CiAgUklEX0RFTEVURSwgUklEX0ZBTFNFLCBSSURfTkFNRVNQQUNFLAogIFJJRF9ORVcsIFJJRF9P UEVSQVRPUiwgUklEX1RISVMsCiAgUklEX1RIUk9XLCBSSURfVFJVRSwgUklEX1RSWSwKICBSSURf VFlQRU5BTUUsIFJJRF9UWVBFSUQsIFJJRF9VU0lORywKCgogIFJJRF9DT05TVENBU1QsIFJJRF9E WU5DQVNULCBSSURfUkVJTlRDQVNULCBSSURfU1RBVENBU1QsCgoKICBSSURfSUQsIFJJRF9BVF9F TkNPREUsIFJJRF9BVF9FTkQsCiAgUklEX0FUX0NMQVNTLCBSSURfQVRfQUxJQVMsIFJJRF9BVF9E RUZTLAogIFJJRF9BVF9QUklWQVRFLCBSSURfQVRfUFJPVEVDVEVELCBSSURfQVRfUFVCTElDLAog IFJJRF9BVF9QUk9UT0NPTCwgUklEX0FUX1NFTEVDVE9SLCBSSURfQVRfSU5URVJGQUNFLAogIFJJ RF9BVF9JTVBMRU1FTlRBVElPTiwKCiAgUklEX01BWCwKCiAgUklEX0ZJUlNUX01PRElGSUVSID0g UklEX1NUQVRJQywKICBSSURfTEFTVF9NT0RJRklFUiA9IFJJRF9PTkVXQVksCgogIFJJRF9GSVJT VF9BVCA9IFJJRF9BVF9FTkNPREUsCiAgUklEX0xBU1RfQVQgPSBSSURfQVRfSU1QTEVNRU5UQVRJ T04sCiAgUklEX0ZJUlNUX1BRID0gUklEX0lOLAogIFJJRF9MQVNUX1BRID0gUklEX09ORVdBWQp9 OwojIDEyNCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2YvZ2NjL3NyYy9n Y2MvYy1jb21tb24uaCIKZXh0ZXJuIHRyZWUgKnJpZHBvaW50ZXJzOwoKCgplbnVtIGNfdHJlZV9p bmRleAp7CiAgICBDVElfV0NIQVJfVFlQRSwKICAgIENUSV9TSUdORURfV0NIQVJfVFlQRSwKICAg IENUSV9VTlNJR05FRF9XQ0hBUl9UWVBFLAogICAgQ1RJX1dJTlRfVFlQRSwKICAgIENUSV9TSUdO RURfU0laRV9UWVBFLAogICAgQ1RJX1VOU0lHTkVEX1BUUkRJRkZfVFlQRSwKICAgIENUSV9JTlRN QVhfVFlQRSwKICAgIENUSV9VSU5UTUFYX1RZUEUsCiAgICBDVElfV0lERVNUX0lOVF9MSVRfVFlQ RSwKICAgIENUSV9XSURFU1RfVUlOVF9MSVRfVFlQRSwKCiAgICBDVElfQ0hBUl9BUlJBWV9UWVBF LAogICAgQ1RJX1dDSEFSX0FSUkFZX1RZUEUsCiAgICBDVElfSU5UX0FSUkFZX1RZUEUsCiAgICBD VElfU1RSSU5HX1RZUEUsCiAgICBDVElfQ09OU1RfU1RSSU5HX1RZUEUsCgoKICAgIENUSV9CT09M RUFOX1RZUEUsCiAgICBDVElfQk9PTEVBTl9UUlVFLAogICAgQ1RJX0JPT0xFQU5fRkFMU0UsCgog ICAgQ1RJX0NfQk9PTF9UWVBFLAogICAgQ1RJX0NfQk9PTF9UUlVFLAogICAgQ1RJX0NfQk9PTF9G QUxTRSwKICAgIENUSV9ERUZBVUxUX0ZVTkNUSU9OX1RZUEUsCgogICAgQ1RJX0c3N19JTlRFR0VS X1RZUEUsCiAgICBDVElfRzc3X1VJTlRFR0VSX1RZUEUsCiAgICBDVElfRzc3X0xPTkdJTlRfVFlQ RSwKICAgIENUSV9HNzdfVUxPTkdJTlRfVFlQRSwKCgogICAgQ1RJX0ZVTkNUSU9OX05BTUVfREVD TCwKICAgIENUSV9QUkVUVFlfRlVOQ1RJT05fTkFNRV9ERUNMLAogICAgQ1RJX0M5OV9GVU5DVElP Tl9OQU1FX0RFQ0wsCiAgICBDVElfU0FWRURfRlVOQ1RJT05fTkFNRV9ERUNMUywKCiAgICBDVElf Vk9JRF9aRVJPLAoKICAgIENUSV9NQVgKfTsKCgoKCgpzdHJ1Y3QgY19jb21tb25faWRlbnRpZmll cgp7CiAgc3RydWN0IHRyZWVfY29tbW9uIGNvbW1vbjsKICBzdHJ1Y3QgY3BwX2hhc2hub2RlIG5v ZGU7Cn07CiMgMjI0ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mv c3JjL2djYy9jLWNvbW1vbi5oIgpleHRlcm4gdHJlZSBjX2dsb2JhbF90cmVlc1tDVElfTUFYXTsK IyAyMzQgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2Nj L2MtY29tbW9uLmgiCnR5cGVkZWYgZW51bSBjX2xhbmd1YWdlX2tpbmQKewogIGNsa19jID0gMCwK ICBjbGtfY3BsdXNwbHVzCn0KY19sYW5ndWFnZV9raW5kOwoKCgpzdHJ1Y3Qgc3RtdF90cmVlX3Mg ewoKICB0cmVlIHhfbGFzdF9zdG10OwoKCiAgdHJlZSB4X2xhc3RfZXhwcl90eXBlOwoKICBjb25z dCBjaGFyICp4X2xhc3RfZXhwcl9maWxlbmFtZTsKIyAyNjUgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiCiAgaW50IHN0bXRzX2Fy ZV9mdWxsX2V4cHJzX3A7Cn07Cgp0eXBlZGVmIHN0cnVjdCBzdG10X3RyZWVfcyAqc3RtdF90cmVl OwoKCgoKc3RydWN0IGNfbGFuZ3VhZ2VfZnVuY3Rpb24gewoKCiAgc3RydWN0IHN0bXRfdHJlZV9z IHhfc3RtdF90cmVlOwoKICB0cmVlIHhfc2NvcGVfc3RtdF9zdGFjazsKfTsKIyAzMDggIi9Wb2x1 bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgi CmV4dGVybiB2b2lkICgqbGFuZ19leHBhbmRfc3RtdCkgKHRyZWUpOwpleHRlcm4gdm9pZCAoKmxh bmdfZXhwYW5kX2RlY2xfc3RtdCkgKHRyZWUpOwpleHRlcm4gdm9pZCAoKmxhbmdfZXhwYW5kX2Z1 bmN0aW9uX2VuZCkgKHZvaWQpOwpleHRlcm4gdHJlZSBnZXR0YWdzICh2b2lkKTsKCgoKZXh0ZXJu IGludCAoKmxhbmdfbWlzc2luZ19ub3JldHVybl9va19wKSAodHJlZSk7CgpleHRlcm4gaW50IHl5 cGFyc2UgKHZvaWQpOwpleHRlcm4gdm9pZCBmcmVlX3BhcnNlcl9zdGFja3MgKHZvaWQpOwoKZXh0 ZXJuIHN0bXRfdHJlZSBjdXJyZW50X3N0bXRfdHJlZSAodm9pZCk7CmV4dGVybiB0cmVlICpjdXJy ZW50X3Njb3BlX3N0bXRfc3RhY2sgKHZvaWQpOwpleHRlcm4gdm9pZCBiZWdpbl9zdG10X3RyZWUg KHRyZWUgKik7CmV4dGVybiB0cmVlIGFkZF9zdG10ICh0cmVlKTsKZXh0ZXJuIHZvaWQgYWRkX2Rl Y2xfc3RtdCAodHJlZSk7CmV4dGVybiB0cmVlIGFkZF9zY29wZV9zdG10IChpbnQsIGludCk7CmV4 dGVybiB2b2lkIGZpbmlzaF9zdG10X3RyZWUgKHRyZWUgKik7CgpleHRlcm4gdHJlZSB3YWxrX3N0 bXRfdHJlZSAodHJlZSAqLCB3YWxrX3RyZWVfZm4sIHZvaWQgKik7CgoKZXh0ZXJuIHZvaWQgcHJl cF9zdG10ICh0cmVlKTsKZXh0ZXJuIHZvaWQgZXhwYW5kX3N0bXQgKHRyZWUpOwpleHRlcm4gdHJl ZSBjX2JlZ2luX2lmX3N0bXQgKHZvaWQpOwpleHRlcm4gdHJlZSBjX2JlZ2luX3doaWxlX3N0bXQg KHZvaWQpOwpleHRlcm4gdm9pZCBjX2ZpbmlzaF93aGlsZV9zdG10X2NvbmQgKHRyZWUsIHRyZWUp OwoKZW51bSBzd19raW5kIHsgU1dfUEFSQU0gPSAwLCBTV19MT0NBTCwgU1dfR0xPQkFMIH07CmV4 dGVybiB2b2lkIHNoYWRvd193YXJuaW5nIChlbnVtIHN3X2tpbmQsIGNvbnN0IGNoYXIgKiwgdHJl ZSk7CgoKCgoKCgpzdHJ1Y3QgY19sYW5nX2RlY2wgewogIHVuc2lnbmVkIGRlY2xhcmVkX2lubGlu ZSA6IDE7Cn07CiMgMzYwICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n Y2Mvc3JjL2djYy9jLWNvbW1vbi5oIgpleHRlcm4gY19sYW5ndWFnZV9raW5kIGNfbGFuZ3VhZ2U7 CgoKCmV4dGVybiBpbnQgYWxsb3dfcGNoOwoKCgoKCmV4dGVybiBpbnQgZmxhZ19wcmVwcm9jZXNz X29ubHk7CgoKCmV4dGVybiBjaGFyIGZsYWdfbm9fbGluZV9jb21tYW5kczsKCgoKCmV4dGVybiBj aGFyIGZsYWdfbm9fb3V0cHV0OwoKCgoKZXh0ZXJuIGNoYXIgZmxhZ19kdW1wX21hY3JvczsKCgoK ZXh0ZXJuIGNoYXIgZmxhZ19kdW1wX2luY2x1ZGVzOwoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKnBj aF9maWxlOwoKCgoKZXh0ZXJuIGludCBmbGFnX2lzbzsKCgpleHRlcm4gaW50IGZsYWdfb2JqYzsK CgoKCmV4dGVybiBpbnQgZmxhZ191bmRlZjsKCgoKZXh0ZXJuIGludCBmbGFnX25vX2J1aWx0aW47 CgoKCgpleHRlcm4gaW50IGZsYWdfbm9fbm9uYW5zaV9idWlsdGluOwoKCgpleHRlcm4gaW50IGZs YWdfc2hvcnRfZG91YmxlOwoKCgpleHRlcm4gaW50IGZsYWdfc2hvcnRfd2NoYXI7CgoKZXh0ZXJu IGludCBmbGFnX21zX2V4dGVuc2lvbnM7CgoKCmV4dGVybiBpbnQgZmxhZ19ub19hc207CgoKCgpl eHRlcm4gaW50IGZsYWdfY29uc3Rfc3RyaW5nczsKCgoKZXh0ZXJuIGludCBkb2xsYXJzX2luX2lk ZW50OwoKCgpleHRlcm4gaW50IGZsYWdfc2lnbmVkX2JpdGZpZWxkczsKZXh0ZXJuIGludCBleHBs aWNpdF9mbGFnX3NpZ25lZF9iaXRmaWVsZHM7CgoKCgpleHRlcm4gaW50IHdhcm5fY2FzdF9xdWFs OwoKCgpleHRlcm4gaW50IHdhcm5fbWlzc2luZ19mb3JtYXRfYXR0cmlidXRlOwoKCgoKZXh0ZXJu IGludCB3YXJuX3BvaW50ZXJfYXJpdGg7CgoKCgpleHRlcm4gaW50IHdhcm5fbWlzc2luZ19wcm90 b3R5cGVzOwoKCgpleHRlcm4gaW50IHdhcm5fcGFyZW50aGVzZXM7CgoKCmV4dGVybiBpbnQgd2Fy bl9taXNzaW5nX2JyYWNlczsKCgoKCmV4dGVybiBpbnQgd2Fybl9zaWduX2NvbXBhcmU7CgoKCmV4 dGVybiBpbnQgd2Fybl9sb25nX2xvbmc7CgoKCgpleHRlcm4gaW50IHdhcm5fd3JpdGVfc3RyaW5n czsKCgoKCmV4dGVybiBpbnQgd2Fybl9yZWR1bmRhbnRfZGVjbHM7CgoKCmV4dGVybiBpbnQgd2Fy bl9mbG9hdF9lcXVhbDsKCgoKZXh0ZXJuIGludCB3YXJuX2NoYXJfc3Vic2NyaXB0czsKCgoKZXh0 ZXJuIGludCB3YXJuX2NvbnZlcnNpb247CgoKCmV4dGVybiBpbnQgd2Fybl91bmtub3duX3ByYWdt YXM7CgoKCgpleHRlcm4gaW50IHdhcm5fZm9ybWF0OwoKCgpleHRlcm4gaW50IHdhcm5fZm9ybWF0 X3kyazsKCgoKZXh0ZXJuIGludCB3YXJuX2Zvcm1hdF9leHRyYV9hcmdzOwoKCgpleHRlcm4gaW50 IHdhcm5fZm9ybWF0X3plcm9fbGVuZ3RoOwoKCgpleHRlcm4gaW50IHdhcm5fZm9ybWF0X25vbmxp dGVyYWw7CgoKCmV4dGVybiBpbnQgd2Fybl9mb3JtYXRfc2VjdXJpdHk7CiMgNTQwICIvVm9sdW1l cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1vbi5oIgpl eHRlcm4gaW50IG1lc2dfaW1wbGljaXRfZnVuY3Rpb25fZGVjbGFyYXRpb247CgoKCgpleHRlcm4g aW50IGZsYWdfY29uZF9taXNtYXRjaDsKCgoKZXh0ZXJuIGludCBmbGFnX2lzb2M5NDsKCgoKZXh0 ZXJuIGludCBmbGFnX2lzb2M5OTsKCgoKZXh0ZXJuIGludCBmbGFnX2hvc3RlZDsKCgoKCmV4dGVy biBpbnQgZmxhZ19ub25pc29fZGVmYXVsdF9mb3JtYXRfYXR0cmlidXRlczsKCgoKCgpleHRlcm4g aW50IHdhcm5fYmFkX2Z1bmN0aW9uX2Nhc3Q7CgoKCmV4dGVybiBpbnQgd2Fybl90cmFkaXRpb25h bDsKCgoKCmV4dGVybiBpbnQgd2Fybl9zdHJpY3RfcHJvdG90eXBlczsKCgoKCmV4dGVybiBpbnQg d2Fybl9taXNzaW5nX2RlY2xhcmF0aW9uczsKCgoKCgoKCmV4dGVybiBpbnQgd2Fybl9uZXN0ZWRf ZXh0ZXJuczsKCgoKZXh0ZXJuIGludCB3YXJuX21haW47CgoKCmV4dGVybiBpbnQgd2Fybl9zZXF1 ZW5jZV9wb2ludDsKCgpleHRlcm4gaW50IHdhcm5fZGl2X2J5X3plcm87CgoKCmV4dGVybiBpbnQg d2Fybl9pbXBsaWNpdF9pbnQ7CgoKCgpleHRlcm4gaW50IHdhcm5fbm9ubnVsbDsKIyA2MTkgIi9W b2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9u LmgiCmV4dGVybiBpbnQgZmxhZ19nZW5fZGVjbGFyYXRpb247CgoKCmV4dGVybiBpbnQgZmxhZ19u ZXh0X3J1bnRpbWU7CgoKCgoKZXh0ZXJuIGludCBwcmludF9zdHJ1Y3RfdmFsdWVzOwoKCgpleHRl cm4gY29uc3QgY2hhciAqY29uc3RhbnRfc3RyaW5nX2NsYXNzX25hbWU7CgoKCgoKZXh0ZXJuIGlu dCB3YXJuX3NlbGVjdG9yOwoKCgoKCgpleHRlcm4gaW50IHdhcm5fdW5kZWNsYXJlZF9zZWxlY3Rv cjsKCgoKCgpleHRlcm4gaW50IHdhcm5fcHJvdG9jb2w7CgoKCgoKCgpleHRlcm4gaW50IGZsYWdf bm9fZ251X2tleXdvcmRzOwoKCgoKZXh0ZXJuIGludCBmbGFnX2ltcGxlbWVudF9pbmxpbmVzOwoK CgoKZXh0ZXJuIGludCBmbGFnX2V4dGVybmFsX3RlbXBsYXRlczsKCgoKCgpleHRlcm4gaW50IGZs YWdfYWx0X2V4dGVybmFsX3RlbXBsYXRlczsKCgoKZXh0ZXJuIGludCBmbGFnX2ltcGxpY2l0X3Rl bXBsYXRlczsKCgoKCgpleHRlcm4gaW50IGZsYWdfaW1wbGljaXRfaW5saW5lX3RlbXBsYXRlczsK CgoKCmV4dGVybiBpbnQgZmxhZ191c2VfcmVwb3NpdG9yeTsKCgoKCmV4dGVybiBpbnQgZmxhZ19v cHRpb25hbF9kaWFnczsKCgoKZXh0ZXJuIGludCBmbGFnX2VsaWRlX2NvbnN0cnVjdG9yczsKCgoK CmV4dGVybiBpbnQgZmxhZ19kZWZhdWx0X2lubGluZTsKCgoKCmV4dGVybiBpbnQgZmxhZ19ydHRp OwoKCgoKCgpleHRlcm4gaW50IGZsYWdfY29uc2VydmVfc3BhY2U7CgoKCmV4dGVybiBpbnQgZmxh Z19hY2Nlc3NfY29udHJvbDsKCgoKCmV4dGVybiBpbnQgZmxhZ19jaGVja19uZXc7CiMgNzM1ICIv Vm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1v bi5oIgpleHRlcm4gaW50IGZsYWdfbmV3X2Zvcl9zY29wZTsKCgoKCgpleHRlcm4gaW50IGZsYWdf d2VhazsKCgoKCmV4dGVybiBpbnQgZmxhZ191c2VfY3hhX2F0ZXhpdDsKCgoKZXh0ZXJuIGludCBm bGFnX3Z0YWJsZV9nYzsKCgoKCmV4dGVybiBpbnQgZmxhZ19wZXJtaXNzaXZlOwoKCgoKCgpleHRl cm4gaW50IGZsYWdfZW5mb3JjZV9laF9zcGVjczsKIyA3NzcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiCmV4dGVybiBpbnQgZmxh Z19hYmlfdmVyc2lvbjsKCgoKCmV4dGVybiBpbnQgd2Fybl9hYmk7CgoKCmV4dGVybiBpbnQgd2Fy bl9pbXBsaWNpdDsKCgoKCmV4dGVybiBpbnQgd2Fybl9jdG9yX2R0b3JfcHJpdmFjeTsKCgoKCgpl eHRlcm4gaW50IHdhcm5fb3ZlcmxvYWRlZF92aXJ0dWFsOwoKCgoKZXh0ZXJuIGludCB3YXJuX25v bnZkdG9yOwoKCgpleHRlcm4gaW50IHdhcm5fcmVvcmRlcjsKCgoKZXh0ZXJuIGludCB3YXJuX3N5 bnRoOwoKCgoKZXh0ZXJuIGludCB3YXJuX3BtZjJwdHI7CgoKCmV4dGVybiBpbnQgd2Fybl9lY3Bw OwoKCgoKZXh0ZXJuIGludCB3YXJuX3NpZ25fcHJvbW87CgoKCmV4dGVybiBpbnQgd2Fybl9vbGRf c3R5bGVfY2FzdDsKCgoKCmV4dGVybiBpbnQgd2Fybl9ub250ZW1wbGF0ZV9mcmllbmQ7CgoKCmV4 dGVybiBpbnQgd2Fybl9kZXByZWNhdGVkOwoKCgoKCmV4dGVybiBpbnQgbWF4X3RpbnN0X2RlcHRo OwoKCgoKZXh0ZXJuIGludCBza2lwX2V2YWx1YXRpb247CiMgODcxICIvVm9sdW1lcy9VRlNfUGFy dGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1vbi5oIgpleHRlcm4gY29u c3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZVtdOwpleHRl cm4gY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIGNfY29tbW9uX2Zvcm1hdF9hdHRyaWJ1dGVf dGFibGVbXTsKCgoKCgoKZXh0ZXJuIHRyZWUgKCptYWtlX2ZuYW1lX2RlY2wpICh0cmVlLCBpbnQp OwoKZXh0ZXJuIHRyZWUgaWRlbnRpZmllcl9nbG9iYWxfdmFsdWUgKHRyZWUpOwpleHRlcm4gdm9p ZCByZWNvcmRfYnVpbHRpbl90eXBlIChlbnVtIHJpZCwgY29uc3QgY2hhciAqLCB0cmVlKTsKCmV4 dGVybiB0cmVlIGJ1aWxkX3ZvaWRfbGlzdF9ub2RlICh2b2lkKTsKZXh0ZXJuIHZvaWQgc3RhcnRf Zm5hbWVfZGVjbHMgKHZvaWQpOwpleHRlcm4gdm9pZCBmaW5pc2hfZm5hbWVfZGVjbHMgKHZvaWQp OwpleHRlcm4gY29uc3QgY2hhciAqZm5hbWVfYXNfc3RyaW5nIChpbnQpOwpleHRlcm4gdHJlZSBm bmFtZV9kZWNsICh1bnNpZ25lZCwgdHJlZSk7CmV4dGVybiBjb25zdCBjaGFyICpmbmFtZV9zdHJp bmcgKHVuc2lnbmVkKTsKCmV4dGVybiB2b2lkIGNoZWNrX2Z1bmN0aW9uX2FyZ3VtZW50cyAodHJl ZSwgdHJlZSk7CmV4dGVybiB2b2lkIGNoZWNrX2Z1bmN0aW9uX2FyZ3VtZW50c19yZWN1cnNlICh2 b2lkICgqKSAodm9pZCAqLCB0cmVlLCB1bnNpZ25lZCBsb25nKSwgdm9pZCAqLCB0cmVlLCB1bnNp Z25lZCBsb25nKTsKCgoKCmV4dGVybiB2b2lkIGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCAoaW50ICos IHRyZWUsIHRyZWUpOwpleHRlcm4gdm9pZCBzZXRfV2Zvcm1hdCAoaW50KTsKZXh0ZXJuIHRyZWUg aGFuZGxlX2Zvcm1hdF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBfQm9vbCAq KTsKCmV4dGVybiB0cmVlIGhhbmRsZV9mb3JtYXRfYXJnX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVl LCB0cmVlLCBpbnQsIF9Cb29sICopOwoKZXh0ZXJuIHZvaWQgY19jb21tb25faW5zZXJ0X2RlZmF1 bHRfYXR0cmlidXRlcyAodHJlZSk7CmV4dGVybiBpbnQgY19jb21tb25fZGVjb2RlX29wdGlvbiAo aW50LCBjaGFyICoqKTsKZXh0ZXJuIHRyZWUgY19jb21tb25fdHlwZV9mb3JfbW9kZSAoZW51bSBt YWNoaW5lX21vZGUsIGludCk7CgpleHRlcm4gdHJlZSBjX2NvbW1vbl90eXBlX2Zvcl9zaXplICh1 bnNpZ25lZCBpbnQsIGludCk7CmV4dGVybiB0cmVlIGNfY29tbW9uX3Vuc2lnbmVkX3R5cGUgKHRy ZWUpOwpleHRlcm4gdHJlZSBjX2NvbW1vbl9zaWduZWRfdHlwZSAodHJlZSk7CmV4dGVybiB0cmVl IGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlIChpbnQsIHRyZWUpOwpleHRlcm4gdHJl ZSBjX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24gKHRyZWUpOwpleHRlcm4gdm9pZCBjX2Fw cGx5X3R5cGVfcXVhbHNfdG9fZGVjbCAoaW50LCB0cmVlKTsKZXh0ZXJuIHRyZWUgY19zaXplb2Zf b3JfYWxpZ25vZl90eXBlICh0cmVlLCBlbnVtIHRyZWVfY29kZSwgaW50KTsKZXh0ZXJuIHRyZWUg Y19hbGlnbm9mX2V4cHIgKHRyZWUpOwoKCmV4dGVybiB2b2lkIGJpbmFyeV9vcF9lcnJvciAoZW51 bSB0cmVlX2NvZGUpOwoKCgpleHRlcm4gdHJlZSBjX2V4cGFuZF9leHByX3N0bXQgKHRyZWUpOwpl eHRlcm4gdm9pZCBjX2V4cGFuZF9zdGFydF9jb25kICh0cmVlLCBpbnQsIHRyZWUpOwpleHRlcm4g dm9pZCBjX2ZpbmlzaF90aGVuICh2b2lkKTsKZXh0ZXJuIHZvaWQgY19leHBhbmRfc3RhcnRfZWxz ZSAodm9pZCk7CmV4dGVybiB2b2lkIGNfZmluaXNoX2Vsc2UgKHZvaWQpOwpleHRlcm4gdm9pZCBj X2V4cGFuZF9lbmRfY29uZCAodm9pZCk7CgpleHRlcm4gdHJlZSBjaGVja19jYXNlX3ZhbHVlICh0 cmVlKTsKZXh0ZXJuIHRyZWUgZml4X3N0cmluZ190eXBlICh0cmVlKTsKc3RydWN0IHZhcnJheV9o ZWFkX3RhZzsKZXh0ZXJuIHRyZWUgY29tYmluZV9zdHJpbmdzIChzdHJ1Y3QgdmFycmF5X2hlYWRf dGFnICopOwpleHRlcm4gdm9pZCBjb25zdGFudF9leHByZXNzaW9uX3dhcm5pbmcgKHRyZWUpOwpl eHRlcm4gdHJlZSBjb252ZXJ0X2FuZF9jaGVjayAodHJlZSwgdHJlZSk7CmV4dGVybiB2b2lkIG92 ZXJmbG93X3dhcm5pbmcgKHRyZWUpOwpleHRlcm4gdm9pZCB1bnNpZ25lZF9jb252ZXJzaW9uX3dh cm5pbmcgKHRyZWUsIHRyZWUpOwoKCmV4dGVybiBjaGFyICpnZXRfZGlyZWN0aXZlX2xpbmUgKHZv aWQpOwoKCgoKCgoKZXh0ZXJuIHRyZWUgc2hvcnRlbl9jb21wYXJlICh0cmVlICosIHRyZWUgKiwg dHJlZSAqLCBlbnVtIHRyZWVfY29kZSAqKTsKCmV4dGVybiB0cmVlIHBvaW50ZXJfaW50X3N1bSAo ZW51bSB0cmVlX2NvZGUsIHRyZWUsIHRyZWUpOwpleHRlcm4gdW5zaWduZWQgaW50IG1pbl9wcmVj aXNpb24gKHRyZWUsIGludCk7CgoKZXh0ZXJuIHRyZWUgY19idWlsZF9xdWFsaWZpZWRfdHlwZSAo dHJlZSwgaW50KTsKCgoKZXh0ZXJuIHZvaWQgY19jb21tb25fbm9kZXNfYW5kX2J1aWx0aW5zICh2 b2lkKTsKCmV4dGVybiB2b2lkIGRpc2FibGVfYnVpbHRpbl9mdW5jdGlvbiAoY29uc3QgY2hhciAq KTsKCmV4dGVybiB0cmVlIGJ1aWxkX3ZhX2FyZyAodHJlZSwgdHJlZSk7CgpleHRlcm4gdm9pZCBj X2NvbW1vbl9pbml0X29wdGlvbnMgKGVudW0gY19sYW5ndWFnZV9raW5kKTsKZXh0ZXJuIF9Cb29s IGNfY29tbW9uX3Bvc3Rfb3B0aW9ucyAoY29uc3QgY2hhciAqKik7CmV4dGVybiBfQm9vbCBjX2Nv bW1vbl9pbml0ICh2b2lkKTsKZXh0ZXJuIHZvaWQgY19jb21tb25fZmluaXNoICh2b2lkKTsKZXh0 ZXJuIHZvaWQgY19jb21tb25fcGFyc2VfZmlsZSAoaW50KTsKZXh0ZXJuIGxvbmcgY19jb21tb25f Z2V0X2FsaWFzX3NldCAodHJlZSk7CmV4dGVybiBfQm9vbCBjX3Byb21vdGluZ19pbnRlZ2VyX3R5 cGVfcCAodHJlZSk7CmV4dGVybiBpbnQgc2VsZl9wcm9tb3RpbmdfYXJnc19wICh0cmVlKTsKZXh0 ZXJuIHRyZWUgc3RyaXBfYXJyYXlfdHlwZXMgKHRyZWUpOwojIDExNDUgIi9Wb2x1bWVzL1VGU19Q YXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiCmVudW0gY190 cmVlX2NvZGUgewogIENfRFVNTVlfVFJFRV9DT0RFID0gTEFTVF9BTkRfVU5VU0VEX1RSRUVfQ09E RSwKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj Yy9jLWNvbW1vbi5kZWYiIDEKIyAyOCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny Yy9mc2YvZ2NjL3NyYy9nY2MvYy1jb21tb24uZGVmIgpTSVpFT0ZfRVhQUiwKQVJST1dfRVhQUiwK QUxJR05PRl9FWFBSLAoKCgpFWFBSX1NUTVQsCgoKCkNPTVBPVU5EX1NUTVQsCgoKCkRFQ0xfU1RN VCwKCgoKSUZfU1RNVCwKCgoKRk9SX1NUTVQsCgoKCldISUxFX1NUTVQsCgoKCkRPX1NUTVQsCgoK ClJFVFVSTl9TVE1ULAoKCkJSRUFLX1NUTVQsCgoKQ09OVElOVUVfU1RNVCwKCgoKU1dJVENIX1NU TVQsCgoKR09UT19TVE1ULAoKCgpMQUJFTF9TVE1ULAoKCkFTTV9TVE1ULAoKCgoKCgoKU0NPUEVf U1RNVCwKCgoKRklMRV9TVE1ULAoKCgoKCkNBU0VfTEFCRUwsCgoKClNUTVRfRVhQUiwKCgoKCgoK Q09NUE9VTkRfTElURVJBTF9FWFBSLAoKCgoKQ0xFQU5VUF9TVE1ULAojIDExNDggIi9Wb2x1bWVz L1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiIDIK ICBMQVNUX0NfVFJFRV9DT0RFCn07CiMgMTE2MyAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5z a2lhL3NyYy9mc2YvZ2NjL3NyYy9nY2MvYy1jb21tb24uaCIKZXh0ZXJuIF9Cb29sIHN0YXRlbWVu dF9jb2RlX3BbMjU2XTsKIyAxMTc1ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj L2ZzZi9nY2Mvc3JjL2djYy9jLWNvbW1vbi5oIgpleHRlcm4gdm9pZCBnZW5ydGxfZG9fcHVzaGxl dmVsICh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2VucnRsX2dvdG9fc3RtdCAodHJlZSk7CmV4dGVybiB2 b2lkIGdlbnJ0bF9leHByX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxfZXhwcl9zdG10 X3ZhbHVlICh0cmVlLCBpbnQsIGludCk7CmV4dGVybiB2b2lkIGdlbnJ0bF9kZWNsX3N0bXQgKHRy ZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxfaWZfc3RtdCAodHJlZSk7CmV4dGVybiB2b2lkIGdlbnJ0 bF93aGlsZV9zdG10ICh0cmVlKTsKZXh0ZXJuIHZvaWQgZ2VucnRsX2RvX3N0bXQgKHRyZWUpOwpl eHRlcm4gdm9pZCBnZW5ydGxfcmV0dXJuX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxf Zm9yX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxfYnJlYWtfc3RtdCAodm9pZCk7CmV4 dGVybiB2b2lkIGdlbnJ0bF9jb250aW51ZV9zdG10ICh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2VucnRs X3Njb3BlX3N0bXQgKHRyZWUpOwpleHRlcm4gdm9pZCBnZW5ydGxfc3dpdGNoX3N0bXQgKHRyZWUp OwpleHRlcm4gdm9pZCBnZW5ydGxfY2FzZV9sYWJlbCAodHJlZSk7CmV4dGVybiB2b2lkIGdlbnJ0 bF9jb21wb3VuZF9zdG10ICh0cmVlKTsKZXh0ZXJuIHZvaWQgZ2VucnRsX2FzbV9zdG10ICh0cmVl LCB0cmVlLCB0cmVlLCB0cmVlLCB0cmVlLCBpbnQpOwoKCmV4dGVybiB2b2lkIGdlbnJ0bF9jbGVh bnVwX3N0bXQgKHRyZWUpOwpleHRlcm4gaW50IHN0bXRzX2FyZV9mdWxsX2V4cHJzX3AgKHZvaWQp OwpleHRlcm4gaW50IGFub25fYWdncl90eXBlX3AgKHRyZWUpOwojIDEyMTQgIi9Wb2x1bWVzL1VG U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtY29tbW9uLmgiCmV4dGVy biB2b2lkIGVtaXRfbG9jYWxfdmFyICh0cmVlKTsKZXh0ZXJuIHZvaWQgbWFrZV9ydGxfZm9yX2xv Y2FsX3N0YXRpYyAodHJlZSk7CmV4dGVybiB0cmVlIGV4cGFuZF9jb25kICh0cmVlKTsKZXh0ZXJu IHRyZWUgY19leHBhbmRfcmV0dXJuICh0cmVlKTsKZXh0ZXJuIHRyZWUgZG9fY2FzZSAodHJlZSwg dHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX3N0bXQgKGVudW0gdHJlZV9jb2RlLCAuLi4pOwpleHRl cm4gdHJlZSBidWlsZF9jYXNlX2xhYmVsICh0cmVlLCB0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUg YnVpbGRfY29udGludWVfc3RtdCAodm9pZCk7CmV4dGVybiB0cmVlIGJ1aWxkX2JyZWFrX3N0bXQg KHZvaWQpOwpleHRlcm4gdHJlZSBidWlsZF9yZXR1cm5fc3RtdCAodHJlZSk7CgoKCgoKCgpleHRl cm4gdm9pZCBjX2V4cGFuZF9hc21fb3BlcmFuZHMgKHRyZWUsIHRyZWUsIHRyZWUsIHRyZWUsIGlu dCwgY29uc3QgY2hhciAqLCBpbnQpOwoKCgoKZXh0ZXJuIHRyZWUgYnVpbGRfdW5hcnlfb3AgKGVu dW0gdHJlZV9jb2RlLCB0cmVlLCBpbnQpOwoKZXh0ZXJuIHRyZWUgYnVpbGRfYmluYXJ5X29wIChl bnVtIHRyZWVfY29kZSwgdHJlZSwgdHJlZSwgaW50KTsKCmV4dGVybiBpbnQgbHZhbHVlX3AgKHRy ZWUpOwpleHRlcm4gdHJlZSBkZWZhdWx0X2NvbnZlcnNpb24gKHRyZWUpOwoKCgoKZXh0ZXJuIHRy ZWUgY29tbW9uX3R5cGUgKHRyZWUsIHRyZWUpOwoKZXh0ZXJuIHRyZWUgZXhwYW5kX3RyZWVfYnVp bHRpbiAodHJlZSwgdHJlZSwgdHJlZSk7CgpleHRlcm4gdHJlZSBkZWNsX2NvbnN0YW50X3ZhbHVl ICh0cmVlKTsKCgpleHRlcm4gdHJlZSBib29sZWFuX2luY3JlbWVudCAoZW51bSB0cmVlX2NvZGUs IHRyZWUpOwoKCgoKZXh0ZXJuIHZvaWQgZXh0cmFjdF9pbnRlcmZhY2VfaW5mbyAodm9pZCk7Cgpl eHRlcm4gaW50IGNhc2VfY29tcGFyZSAoc3BsYXlfdHJlZV9rZXksIHNwbGF5X3RyZWVfa2V5KTsK CgpleHRlcm4gdHJlZSBjX2FkZF9jYXNlX2xhYmVsIChzcGxheV90cmVlLCB0cmVlLCB0cmVlLCB0 cmVlKTsKCgoKZXh0ZXJuIHRyZWUgYnVpbGRfZnVuY3Rpb25fY2FsbCAodHJlZSwgdHJlZSk7Cgpl eHRlcm4gdHJlZSBmaW5pc2hfbGFiZWxfYWRkcmVzc19leHByICh0cmVlKTsKCgoKZXh0ZXJuIHRy ZWUgbG9va3VwX2xhYmVsICh0cmVlKTsKCmV4dGVybiBydHggY19leHBhbmRfZXhwciAodHJlZSwg cnR4LCBlbnVtIG1hY2hpbmVfbW9kZSwgaW50KTsKCgoKZXh0ZXJuIGludCBjX3NhZmVfZnJvbV9w IChydHgsIHRyZWUpOwoKZXh0ZXJuIGludCBjX3N0YXRpY3AgKHRyZWUpOwoKZXh0ZXJuIGludCBj X2NvbW1vbl91bnNhZmVfZm9yX3JlZXZhbCAodHJlZSk7CgpleHRlcm4gdm9pZCBpbml0X2NfbGV4 ICh2b2lkKTsKCmV4dGVybiB2b2lkIGNfY3BwX2J1aWx0aW5zIChjcHBfcmVhZGVyICopOwoKCgpl eHRlcm4gaW50IHBlbmRpbmdfbGFuZ19jaGFuZ2U7CgoKCnN0cnVjdCBjX2ZpbGVpbmZvCnsKICBp bnQgdGltZTsKICBzaG9ydCBpbnRlcmZhY2Vfb25seTsKICBzaG9ydCBpbnRlcmZhY2VfdW5rbm93 bjsKfTsKCnN0cnVjdCBjX2ZpbGVpbmZvICpnZXRfZmlsZWluZm8gKGNvbnN0IGNoYXIgKik7CmV4 dGVybiB2b2lkIGR1bXBfdGltZV9zdGF0aXN0aWNzICh2b2lkKTsKCmV4dGVybiBfQm9vbCBjX2R1 bXBfdHJlZSAodm9pZCAqLCB0cmVlKTsKCmV4dGVybiB2b2lkIHBjaF9pbml0ICh2b2lkKTsKZXh0 ZXJuIGludCBjX2NvbW1vbl92YWxpZF9wY2ggKGNwcF9yZWFkZXIgKnBmaWxlLCBjb25zdCBjaGFy ICpuYW1lLCBpbnQgZmQpOwoKCmV4dGVybiB2b2lkIGNfY29tbW9uX3JlYWRfcGNoIChjcHBfcmVh ZGVyICpwZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IGZkLCBjb25zdCBjaGFyICpvcmlnKTsK CgoKZXh0ZXJuIHZvaWQgY19jb21tb25fd3JpdGVfcGNoICh2b2lkKTsKZXh0ZXJuIHZvaWQgYnVp bHRpbl9kZWZpbmVfd2l0aF92YWx1ZSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7 CgpleHRlcm4gdm9pZCBjX3N0ZGRlZl9jcHBfYnVpbHRpbnMgKHZvaWQpOwpleHRlcm4gdm9pZCBm ZV9maWxlX2NoYW5nZSAoY29uc3Qgc3RydWN0IGxpbmVfbWFwICopOwoKCmV4dGVybiB2b2lkIGlu aXRfcHBfb3V0cHV0IChGSUxFICopOwpleHRlcm4gdm9pZCBwcmVwcm9jZXNzX2ZpbGUgKGNwcF9y ZWFkZXIgKik7CmV4dGVybiB2b2lkIHBwX2ZpbGVfY2hhbmdlIChjb25zdCBzdHJ1Y3QgbGluZV9t YXAgKik7CiMgMjcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z cmMvZ2NjL2MtcHJldHR5LXByaW50LmgiIDIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3Bp bnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9wcmV0dHktcHJpbnQuaCIgMQojIDI1ICIvVm9sdW1l cy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9wcmV0dHktcHJpbnQu aCIKIyAxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj Yy9kaWFnbm9zdGljLmgiIDEKIyAzMCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3Ny Yy9mc2YvZ2NjL3NyYy9nY2MvZGlhZ25vc3RpYy5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgY29uc3Qg Y2hhciAqZm9ybWF0X3NwZWM7CiAgdmFfbGlzdCAqYXJnc19wdHI7Cn0gdGV4dF9pbmZvOwoKCnR5 cGVkZWYgZW51bQp7CgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNm L2djYy9zcmMvZ2NjL2RpYWdub3N0aWMuZGVmIiAxCkRLX0ZBVEFMLApES19JQ0UsCkRLX1NPUlJZ LApES19FUlJPUiwKREtfV0FSTklORywKREtfQU5BQ0hST05JU00sCkRLX05PVEUsCkRLX0RFQlVH LAojIDQxICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2dj Yy9kaWFnbm9zdGljLmgiIDIKCiAgREtfTEFTVF9ESUFHTk9TVElDX0tJTkQKfSBkaWFnbm9zdGlj X3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgdGV4dF9pbmZvIG1lc3NhZ2U7CiAgbG9jYXRpb25f dCBsb2NhdGlvbjsKCiAgZGlhZ25vc3RpY190IGtpbmQ7Cn0gZGlhZ25vc3RpY19pbmZvOwojIDYz ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9kaWFn bm9zdGljLmgiCnR5cGVkZWYgZW51bQp7CiAgRElBR05PU1RJQ1NfU0hPV19QUkVGSVhfT05DRSA9 IDB4MCwKICBESUFHTk9TVElDU19TSE9XX1BSRUZJWF9ORVZFUiA9IDB4MSwKICBESUFHTk9TVElD U19TSE9XX1BSRUZJWF9FVkVSWV9MSU5FID0gMHgyCn0gZGlhZ25vc3RpY19wcmVmaXhpbmdfcnVs ZV90OwoKCnR5cGVkZWYgc3RydWN0CnsKCiAgY29uc3QgY2hhciAqcHJlZml4OwoKCgogIGludCBt YXhpbXVtX2xlbmd0aDsKCgoKICBpbnQgaWRlYWxfbWF4aW11bV9sZW5ndGg7CgoKICBpbnQgaW5k ZW50X3NraXA7CgoKICBfQm9vbCBlbWl0dGVkX3ByZWZpeF9wOwoKCiAgX0Jvb2wgbmVlZF9uZXds aW5lX3A7CgoKICBkaWFnbm9zdGljX3ByZWZpeGluZ19ydWxlX3QgcHJlZml4aW5nX3J1bGU7Cn0g b3V0cHV0X3N0YXRlOwoKCgoKdHlwZWRlZiBzdHJ1Y3Qgb3V0cHV0X2J1ZmZlciBvdXRwdXRfYnVm ZmVyOwp0eXBlZGVmIF9Cb29sICgqcHJpbnRlcl9mbikgKG91dHB1dF9idWZmZXIgKiwgdGV4dF9p bmZvICopOwoKCgpzdHJ1Y3Qgb3V0cHV0X2J1ZmZlcgp7CgogIG91dHB1dF9zdGF0ZSBzdGF0ZTsK CgogIEZJTEUqIHN0cmVhbTsKCgogIHN0cnVjdCBvYnN0YWNrIG9ic3RhY2s7CgoKICBpbnQgbGlu ZV9sZW5ndGg7CgoKCiAgY2hhciBkaWdpdF9idWZmZXJbMTI4XTsKIyAxMzEgIi9Wb2x1bWVzL1VG U19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2RpYWdub3N0aWMuaCIKICBw cmludGVyX2ZuIGZvcm1hdF9kZWNvZGVyOwp9IDsKIyAxNzIgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2RpYWdub3N0aWMuaCIKdHlwZWRlZiBzdHJ1 Y3QgZGlhZ25vc3RpY19jb250ZXh0IGRpYWdub3N0aWNfY29udGV4dDsKdHlwZWRlZiB2b2lkICgq ZGlhZ25vc3RpY19zdGFydGVyX2ZuKSAoZGlhZ25vc3RpY19jb250ZXh0ICosIGRpYWdub3N0aWNf aW5mbyAqKTsKCnR5cGVkZWYgZGlhZ25vc3RpY19zdGFydGVyX2ZuIGRpYWdub3N0aWNfZmluYWxp emVyX2ZuOwoKCgpzdHJ1Y3QgZGlhZ25vc3RpY19jb250ZXh0CnsKCgoKICBvdXRwdXRfYnVmZmVy IGJ1ZmZlcjsKCgogIGludCBkaWFnbm9zdGljX2NvdW50W0RLX0xBU1RfRElBR05PU1RJQ19LSU5E XTsKCgoKICBfQm9vbCB3YXJuaW5nc19hcmVfZXJyb3JzX21lc3NhZ2U7CgoKICBfQm9vbCBhYm9y dF9vbl9lcnJvcjsKIyAyMDMgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNm L2djYy9zcmMvZ2NjL2RpYWdub3N0aWMuaCIKICBkaWFnbm9zdGljX3N0YXJ0ZXJfZm4gYmVnaW5f ZGlhZ25vc3RpYzsKCgogIGRpYWdub3N0aWNfZmluYWxpemVyX2ZuIGVuZF9kaWFnbm9zdGljOwoK CiAgdm9pZCAoKmludGVybmFsX2Vycm9yKSAoY29uc3QgY2hhciAqLCB2YV9saXN0ICopOwoKCgoK ICB0cmVlIGxhc3RfZnVuY3Rpb247CgoKICBpbnQgbGFzdF9tb2R1bGU7CgogIGludCBsb2NrOwoK CiAgdm9pZCAqeF9kYXRhOwp9OwojIDI3MiAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lh L3NyYy9mc2YvZ2NjL3NyYy9nY2MvZGlhZ25vc3RpYy5oIgpleHRlcm4gZGlhZ25vc3RpY19jb250 ZXh0ICpnbG9iYWxfZGM7CiMgMjkzICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj L2ZzZi9nY2Mvc3JjL2djYy9kaWFnbm9zdGljLmgiCmV4dGVybiB2b2lkIGRpYWdub3N0aWNfaW5p dGlhbGl6ZSAoZGlhZ25vc3RpY19jb250ZXh0ICopOwpleHRlcm4gdm9pZCBkaWFnbm9zdGljX3Jl cG9ydF9jdXJyZW50X21vZHVsZSAoZGlhZ25vc3RpY19jb250ZXh0ICopOwpleHRlcm4gdm9pZCBk aWFnbm9zdGljX3JlcG9ydF9jdXJyZW50X2Z1bmN0aW9uIChkaWFnbm9zdGljX2NvbnRleHQgKik7 CmV4dGVybiB2b2lkIGRpYWdub3N0aWNfZmx1c2hfYnVmZmVyIChkaWFnbm9zdGljX2NvbnRleHQg Kik7CmV4dGVybiBfQm9vbCBkaWFnbm9zdGljX2NvdW50X2RpYWdub3N0aWMgKGRpYWdub3N0aWNf Y29udGV4dCAqLCBkaWFnbm9zdGljX3QpOwoKZXh0ZXJuIHZvaWQgZGlhZ25vc3RpY19yZXBvcnRf ZGlhZ25vc3RpYyAoZGlhZ25vc3RpY19jb250ZXh0ICosIGRpYWdub3N0aWNfaW5mbyAqKTsKCmV4 dGVybiB2b2lkIGRpYWdub3N0aWNfc2V0X2luZm8gKGRpYWdub3N0aWNfaW5mbyAqLCBjb25zdCBj aGFyICosIHZhX2xpc3QgKiwgY29uc3QgY2hhciAqLCBpbnQsIGRpYWdub3N0aWNfdCk7CgoKCmV4 dGVybiBjaGFyICpkaWFnbm9zdGljX2J1aWxkX3ByZWZpeCAoZGlhZ25vc3RpY19pbmZvICopOwoK CmV4dGVybiB2b2lkIGluaXRfb3V0cHV0X2J1ZmZlciAob3V0cHV0X2J1ZmZlciAqLCBjb25zdCBj aGFyICosIGludCk7CgpleHRlcm4gdm9pZCBvdXRwdXRfY2xlYXIgKG91dHB1dF9idWZmZXIgKik7 CmV4dGVybiBjb25zdCBjaGFyICpvdXRwdXRfbGFzdF9wb3NpdGlvbiAoY29uc3Qgb3V0cHV0X2J1 ZmZlciAqKTsKZXh0ZXJuIHZvaWQgb3V0cHV0X3NldF9wcmVmaXggKG91dHB1dF9idWZmZXIgKiwg Y29uc3QgY2hhciAqKTsKCmV4dGVybiB2b2lkIG91dHB1dF9kZXN0cm95X3ByZWZpeCAob3V0cHV0 X2J1ZmZlciAqKTsKZXh0ZXJuIHZvaWQgb3V0cHV0X3NldF9tYXhpbXVtX2xlbmd0aCAob3V0cHV0 X2J1ZmZlciAqLCBpbnQpOwpleHRlcm4gdm9pZCBvdXRwdXRfZW1pdF9wcmVmaXggKG91dHB1dF9i dWZmZXIgKik7CmV4dGVybiB2b2lkIG91dHB1dF9hZGRfbmV3bGluZSAob3V0cHV0X2J1ZmZlciAq KTsKZXh0ZXJuIHZvaWQgb3V0cHV0X2FkZF9zcGFjZSAob3V0cHV0X2J1ZmZlciAqKTsKZXh0ZXJu IGludCBvdXRwdXRfc3BhY2VfbGVmdCAoY29uc3Qgb3V0cHV0X2J1ZmZlciAqKTsKZXh0ZXJuIHZv aWQgb3V0cHV0X2FwcGVuZCAob3V0cHV0X2J1ZmZlciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKik7CgpleHRlcm4gdm9pZCBvdXRwdXRfYWRkX2NoYXJhY3RlciAob3V0cHV0X2J1ZmZlciAq LCBpbnQpOwpleHRlcm4gdm9pZCBvdXRwdXRfZGVjaW1hbCAob3V0cHV0X2J1ZmZlciAqLCBpbnQp OwpleHRlcm4gdm9pZCBvdXRwdXRfYWRkX3N0cmluZyAob3V0cHV0X2J1ZmZlciAqLCBjb25zdCBj aGFyICopOwoKZXh0ZXJuIHZvaWQgb3V0cHV0X2FkZF9pZGVudGlmaWVyIChvdXRwdXRfYnVmZmVy ICosIHRyZWUpOwpleHRlcm4gY29uc3QgY2hhciAqb3V0cHV0X2ZpbmFsaXplX21lc3NhZ2UgKG91 dHB1dF9idWZmZXIgKik7CmV4dGVybiB2b2lkIG91dHB1dF9jbGVhcl9tZXNzYWdlX3RleHQgKG91 dHB1dF9idWZmZXIgKik7CmV4dGVybiB2b2lkIG91dHB1dF9wcmludGYgKG91dHB1dF9idWZmZXIg KiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50 Zl9fLCAyLCAzKSkpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCmV4dGVybiB2 b2lkIG91dHB1dF92ZXJiYXRpbSAob3V0cHV0X2J1ZmZlciAqLCBjb25zdCBjaGFyICosIC4uLikg X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKZXh0ZXJuIHZvaWQgdmVyYmF0aW0gKGNvbnN0IGNo YXIgKiwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAx LCAyKSkpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKZXh0ZXJuIGNoYXIgKmZp bGVfbmFtZV9hc19wcmVmaXggKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGluZm9ybSAoY29u c3QgY2hhciAqLCAuLi4pOwojIDI2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj L2ZzZi9nY2Mvc3JjL2djYy9wcmV0dHktcHJpbnQuaCIgMgoKCnR5cGVkZWYgdW5zaWduZWQgaW50 IHBwX2ZsYWdzOwoKdHlwZWRlZiBlbnVtCnsKICBwcF9ub25lLCBwcF9iZWZvcmUsIHBwX2FmdGVy Cn0gcHBfcGFkZGluZzsKCnN0cnVjdCBwcmV0dHlfcHJpbnRfaW5mbwp7CgogIG91dHB1dF9idWZm ZXIgKmJ1ZmZlcjsKICBwcF9mbGFncyBmbGFnczsKCiAgcHBfcGFkZGluZyBwYWRkaW5nOwp9Owoj IDI4ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9nY2Mvc3JjL2djYy9j LXByZXR0eS1wcmludC5oIiAyCgoKCgp0eXBlZGVmIHN0cnVjdCBjX3ByZXR0eV9wcmludF9pbmZv ICpjX3ByZXR0eV9wcmludGVyOwoKCnR5cGVkZWYgdm9pZCAoKmNfcHJldHR5X3ByaW50X2ZuKSAo Y19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CgpzdHJ1Y3QgY19wcmV0dHlfcHJpbnRfaW5mbwp7CiAg c3RydWN0IHByZXR0eV9wcmludF9pbmZvIGJhc2U7CgoKICBpbnQgKm9mZnNldF9saXN0OwoKCgog IGNfcHJldHR5X3ByaW50X2ZuIGRlY2xhcmF0aW9uOwogIGNfcHJldHR5X3ByaW50X2ZuIGRlY2xh cmF0aW9uX3NwZWNpZmllcnM7CiAgY19wcmV0dHlfcHJpbnRfZm4gdHlwZV9zcGVjaWZpZXI7CiAg Y19wcmV0dHlfcHJpbnRfZm4gZGVjbGFyYXRvcjsKICBjX3ByZXR0eV9wcmludF9mbiBkaXJlY3Rf ZGVjbGFyYXRvcjsKICBjX3ByZXR0eV9wcmludF9mbiBwYXJhbWV0ZXJfZGVjbGFyYXRpb247CiAg Y19wcmV0dHlfcHJpbnRfZm4gdHlwZV9pZDsKCiAgY19wcmV0dHlfcHJpbnRfZm4gc3RhdGVtZW50 OwoKICBjX3ByZXR0eV9wcmludF9mbiBwcmltYXJ5X2V4cHJlc3Npb247CiAgY19wcmV0dHlfcHJp bnRfZm4gcG9zdGZpeF9leHByZXNzaW9uOwogIGNfcHJldHR5X3ByaW50X2ZuIHVuYXJ5X2V4cHJl c3Npb247CiAgY19wcmV0dHlfcHJpbnRfZm4gaW5pdGlhbGl6ZXI7CiAgY19wcmV0dHlfcHJpbnRf Zm4gbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbjsKICBjX3ByZXR0eV9wcmludF9mbiBjb25kaXRp b25hbF9leHByZXNzaW9uOwogIGNfcHJldHR5X3ByaW50X2ZuIGFzc2lnbm1lbnRfZXhwcmVzc2lv bjsKfTsKIyAxNDcgIi9Wb2x1bWVzL1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9z cmMvZ2NjL2MtcHJldHR5LXByaW50LmgiCmV4dGVybiB2b2lkIHBwX2NfcHJldHR5X3ByaW50ZXJf aW5pdCAoY19wcmV0dHlfcHJpbnRlcik7CgoKdm9pZCBwcF9jX2F0dHJpYnV0ZXMgKGNfcHJldHR5 X3ByaW50ZXIsIHRyZWUpOwp2b2lkIHBwX2NfY3ZfcXVhbGlmaWVyIChjX3ByZXR0eV9wcmludGVy LCBpbnQpOwp2b2lkIHBwX2NfcGFyYW1ldGVyX2RlY2xhcmF0aW9uX2NsYXVzZSAoY19wcmV0dHlf cHJpbnRlciwgdHJlZSk7CnZvaWQgcHBfY19kZWNsYXJhdGlvbiAoY19wcmV0dHlfcHJpbnRlciwg dHJlZSk7Cgp2b2lkIHBwX2Nfc3RhdGVtZW50IChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKCnZv aWQgcHBfY19leHByZXNzaW9uIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKdm9pZCBwcF9jX2xv Z2ljYWxfb3JfZXhwcmVzc2lvbiAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnZvaWQgcHBfY19l eHByZXNzaW9uX2xpc3QgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwp2b2lkIHBwX2NfY2FzdF9l eHByZXNzaW9uIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKdm9pZCBwcF9jX3Bvc3RmaXhfZXhw cmVzc2lvbiAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnZvaWQgcHBfY19pbml0aWFsaXplciAo Y19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnZvaWQgcHBfY19saXRlcmFsIChjX3ByZXR0eV9wcmlu dGVyLCB0cmVlKTsKIyAyOCAiL1ZvbHVtZXMvVUZTX1BhcnRpdGlvbi9waW5za2lhL3NyYy9mc2Yv Z2NjL3NyYy9nY2MvYy1wcmV0dHktcHJpbnQuYyIgMgojIDEgIi9Wb2x1bWVzL1VGU19QYXJ0aXRp b24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtdHJlZS5oIiAxCiMgMzcgIi9Wb2x1bWVz L1VGU19QYXJ0aXRpb24vcGluc2tpYS9zcmMvZnNmL2djYy9zcmMvZ2NjL2MtdHJlZS5oIgpzdHJ1 Y3QgbGFuZ19pZGVudGlmaWVyCnsKICBzdHJ1Y3QgY19jb21tb25faWRlbnRpZmllciBjb21tb25f aWQ7CiAgdHJlZSBzeW1ib2xfdmFsdWU7CiAgdHJlZSB0YWdfdmFsdWU7CiAgdHJlZSBsYWJlbF92 YWx1ZTsKfTsKCgoKdW5pb24gbGFuZ190cmVlX25vZGUKIAoKewogIHVuaW9uIHRyZWVfbm9kZQoK ICAgIGdlbmVyaWM7CiAgc3RydWN0IGxhbmdfaWRlbnRpZmllciBpZGVudGlmaWVyOwp9OwoKCgpz dHJ1Y3QgbGFuZ19kZWNsCnsKICBzdHJ1Y3QgY19sYW5nX2RlY2wgYmFzZTsKCgoKICB0cmVlIHBl bmRpbmdfc2l6ZXM7Cn07CiMgMTEwICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3Jj L2ZzZi9nY2Mvc3JjL2djYy9jLXRyZWUuaCIKc3RydWN0IGxhbmdfdHlwZQp7CiAgaW50IGxlbjsK ICB0cmVlIGVsdHNbMV07Cn07CiMgMTU2ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv c3JjL2ZzZi9nY2Mvc3JjL2djYy9jLXRyZWUuaCIKZXh0ZXJuIHRyZWUgbG9va3VwX2ludGVyZmFj ZSAodHJlZSk7CmV4dGVybiB0cmVlIGlzX2NsYXNzX25hbWUgKHRyZWUpOwpleHRlcm4gdHJlZSBv YmpjX2lzX2lkICh0cmVlKTsKZXh0ZXJuIHZvaWQgb2JqY19jaGVja19kZWNsICh0cmVlKTsKZXh0 ZXJuIHZvaWQgZmluaXNoX2ZpbGUgKHZvaWQpOwpleHRlcm4gaW50IG9iamNfY29tcHR5cGVzICh0 cmVlLCB0cmVlLCBpbnQpOwpleHRlcm4gdHJlZSBvYmpjX21lc3NhZ2Vfc2VsZWN0b3IgKHZvaWQp OwpleHRlcm4gdHJlZSBsb29rdXBfb2JqY19pdmFyICh0cmVlKTsKZXh0ZXJuIHZvaWQgY19leHBh bmRfYm9keSAodHJlZSk7CgoKCmV4dGVybiB2b2lkIGNfcGFyc2VfaW5pdCAodm9pZCk7CgoKZXh0 ZXJuIHZvaWQgZ2VuX2F1eF9pbmZvX3JlY29yZCAodHJlZSwgaW50LCBpbnQsIGludCk7CgoKZXh0 ZXJuIGludCBnbG9iYWxfYmluZGluZ3NfcCAodm9pZCk7CmV4dGVybiBpbnQga2VwdF9sZXZlbF9w ICh2b2lkKTsKZXh0ZXJuIHRyZWUgZ2V0ZGVjbHMgKHZvaWQpOwpleHRlcm4gdm9pZCBwdXNobGV2 ZWwgKGludCk7CmV4dGVybiB0cmVlIHBvcGxldmVsIChpbnQsaW50LCBpbnQpOwpleHRlcm4gdm9p ZCBpbnNlcnRfYmxvY2sgKHRyZWUpOwpleHRlcm4gdm9pZCBzZXRfYmxvY2sgKHRyZWUpOwpleHRl cm4gdHJlZSBwdXNoZGVjbCAodHJlZSk7CgpleHRlcm4gdm9pZCBjX2luc2VydF9kZWZhdWx0X2F0 dHJpYnV0ZXMgKHRyZWUpOwpleHRlcm4gdm9pZCBjX2luaXRfZGVjbF9wcm9jZXNzaW5nICh2b2lk KTsKZXh0ZXJuIHZvaWQgY19kdXBfbGFuZ19zcGVjaWZpY19kZWNsICh0cmVlKTsKZXh0ZXJuIHZv aWQgY19wcmludF9pZGVudGlmaWVyIChGSUxFICosIHRyZWUsIGludCk7CmV4dGVybiB0cmVlIGJ1 aWxkX2FycmF5X2RlY2xhcmF0b3IgKHRyZWUsIHRyZWUsIGludCwgaW50KTsKZXh0ZXJuIHRyZWUg YnVpbGRfZW51bWVyYXRvciAodHJlZSwgdHJlZSk7CmV4dGVybiB2b2lkIGNoZWNrX2Zvcl9sb29w X2RlY2xzICh2b2lkKTsKZXh0ZXJuIHZvaWQgY2xlYXJfcGFybV9vcmRlciAodm9pZCk7CmV4dGVy biBpbnQgY29tcGxldGVfYXJyYXlfdHlwZSAodHJlZSwgdHJlZSwgaW50KTsKZXh0ZXJuIHZvaWQg ZGVjbGFyZV9wYXJtX2xldmVsIChpbnQpOwpleHRlcm4gdHJlZSBkZWZpbmVfbGFiZWwgKGNvbnN0 IGNoYXIgKiwgaW50LCB0cmVlKTsKCmV4dGVybiB2b2lkIGZpbmlzaF9kZWNsICh0cmVlLCB0cmVl LCB0cmVlKTsKZXh0ZXJuIHRyZWUgZmluaXNoX2VudW0gKHRyZWUsIHRyZWUsIHRyZWUpOwpleHRl cm4gdm9pZCBmaW5pc2hfZnVuY3Rpb24gKGludCwgaW50KTsKZXh0ZXJuIHRyZWUgZmluaXNoX3N0 cnVjdCAodHJlZSwgdHJlZSwgdHJlZSk7CmV4dGVybiB0cmVlIGdldF9wYXJtX2luZm8gKGludCk7 CmV4dGVybiB0cmVlIGdyb2tmaWVsZCAoY29uc3QgY2hhciAqLCBpbnQsIHRyZWUsIHRyZWUsIHRy ZWUpOwpleHRlcm4gdHJlZSBncm9rdHlwZW5hbWUgKHRyZWUpOwpleHRlcm4gdHJlZSBncm9rdHlw ZW5hbWVfaW5fcGFybV9jb250ZXh0ICh0cmVlKTsKZXh0ZXJuIHRyZWUgaW1wbGljaXRseV9kZWNs YXJlICh0cmVlKTsKZXh0ZXJuIGludCBpbl9wYXJtX2xldmVsX3AgKHZvaWQpOwpleHRlcm4gdm9p ZCBrZWVwX25leHRfbGV2ZWwgKHZvaWQpOwpleHRlcm4gdHJlZSBsb29rdXBfbmFtZSAodHJlZSk7 CmV4dGVybiB2b2lkIHBhcm1saXN0X3RhZ3Nfd2FybmluZyAodm9pZCk7CmV4dGVybiB2b2lkIHBl bmRpbmdfeHJlZl9lcnJvciAodm9pZCk7CmV4dGVybiB2b2lkIGNfcHVzaF9mdW5jdGlvbl9jb250 ZXh0IChzdHJ1Y3QgZnVuY3Rpb24gKik7CmV4dGVybiB2b2lkIGNfcG9wX2Z1bmN0aW9uX2NvbnRl eHQgKHN0cnVjdCBmdW5jdGlvbiAqKTsKZXh0ZXJuIHZvaWQgcG9wX2xhYmVsX2xldmVsICh2b2lk KTsKZXh0ZXJuIHZvaWQgcHVzaF9sYWJlbF9sZXZlbCAodm9pZCk7CmV4dGVybiB2b2lkIHB1c2hf cGFybV9kZWNsICh0cmVlKTsKZXh0ZXJuIHRyZWUgcHVzaGRlY2xfdG9wX2xldmVsICh0cmVlKTsK ZXh0ZXJuIHRyZWUgcHVzaGRlY2xfZnVuY3Rpb25fbGV2ZWwgKHRyZWUsIHRyZWUpOwpleHRlcm4g dm9pZCBwdXNodGFnICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgc2V0X2FycmF5X2RlY2xhcmF0 b3JfdHlwZSAodHJlZSwgdHJlZSwgaW50KTsKZXh0ZXJuIHRyZWUgc2hhZG93X2xhYmVsICh0cmVl KTsKZXh0ZXJuIHZvaWQgc2hhZG93X3RhZyAodHJlZSk7CmV4dGVybiB2b2lkIHNoYWRvd190YWdf d2FybmVkICh0cmVlLCBpbnQpOwpleHRlcm4gdHJlZSBzdGFydF9lbnVtICh0cmVlKTsKZXh0ZXJu IGludCBzdGFydF9mdW5jdGlvbiAodHJlZSwgdHJlZSwgdHJlZSk7CmV4dGVybiB0cmVlIHN0YXJ0 X2RlY2wgKHRyZWUsIHRyZWUsIGludCwgdHJlZSk7CgpleHRlcm4gdHJlZSBzdGFydF9zdHJ1Y3Qg KGVudW0gdHJlZV9jb2RlLCB0cmVlKTsKZXh0ZXJuIHZvaWQgc3RvcmVfcGFybV9kZWNscyAodm9p ZCk7CmV4dGVybiB0cmVlIHhyZWZfdGFnIChlbnVtIHRyZWVfY29kZSwgdHJlZSk7CmV4dGVybiB0 cmVlIGNfYmVnaW5fY29tcG91bmRfc3RtdCAodm9pZCk7CmV4dGVybiB2b2lkIGNfZXhwYW5kX2Rl ZmVycmVkX2Z1bmN0aW9uICh0cmVlKTsKZXh0ZXJuIHZvaWQgY19leHBhbmRfZGVjbF9zdG10ICh0 cmVlKTsKZXh0ZXJuIHRyZWUgbWFrZV9wb2ludGVyX2RlY2xhcmF0b3IgKHRyZWUsIHRyZWUpOwoK CmV4dGVybiBpbnQgY19kaXNyZWdhcmRfaW5saW5lX2xpbWl0cyAodHJlZSk7CmV4dGVybiBpbnQg Y19jYW5ub3RfaW5saW5lX3RyZWVfZm4gKHRyZWUgKik7CmV4dGVybiBfQm9vbCBjX29iamNfY29t bW9uX2luaXQgKHZvaWQpOwpleHRlcm4gaW50IGNfbWlzc2luZ19ub3JldHVybl9va19wICh0cmVl KTsKZXh0ZXJuIHZvaWQgY19vYmpjX2NvbW1vbl9maW5pc2hfZmlsZSAodm9pZCk7CmV4dGVybiBp bnQgZGVmZXJfZm4gKHRyZWUpOwpleHRlcm4gX0Jvb2wgY193YXJuX3VudXNlZF9nbG9iYWxfZGVj bCAodHJlZSk7CiMgMjQ5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEvc3JjL2ZzZi9n Y2Mvc3JjL2djYy9jLXRyZWUuaCIKZXh0ZXJuIHRyZWUgcmVxdWlyZV9jb21wbGV0ZV90eXBlICh0 cmVlKTsKZXh0ZXJuIGludCBjb21wdHlwZXMgKHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBjX3Np emVfaW5fYnl0ZXMgKHRyZWUpOwpleHRlcm4gX0Jvb2wgY19tYXJrX2FkZHJlc3NhYmxlICh0cmVl KTsKZXh0ZXJuIHZvaWQgY19pbmNvbXBsZXRlX3R5cGVfZXJyb3IgKHRyZWUsIHRyZWUpOwpleHRl cm4gdHJlZSBjX3R5cGVfcHJvbW90ZXNfdG8gKHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9jb21w b25lbnRfcmVmICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHRyZWUgYnVpbGRfaW5kaXJlY3RfcmVmICh0 cmVlLCBjb25zdCBjaGFyICopOwpleHRlcm4gdHJlZSBidWlsZF9hcnJheV9yZWYgKHRyZWUsIHRy ZWUpOwpleHRlcm4gdHJlZSBidWlsZF9leHRlcm5hbF9yZWYgKHRyZWUsIGludCk7CmV4dGVybiB0 cmVlIHBhcnNlcl9idWlsZF9iaW5hcnlfb3AgKGVudW0gdHJlZV9jb2RlLCB0cmVlLCB0cmVlKTsK CmV4dGVybiBpbnQgY190cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCAodHJlZSk7CmV4dGVybiB2b2lk IHJlYWRvbmx5X3dhcm5pbmcgKHRyZWUsIGNvbnN0IGNoYXIgKik7CmV4dGVybiB0cmVlIGJ1aWxk X2NvbmRpdGlvbmFsX2V4cHIgKHRyZWUsIHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9j b21wb3VuZF9leHByICh0cmVlKTsKZXh0ZXJuIHRyZWUgY19jYXN0X2V4cHIgKHRyZWUsIHRyZWUp OwpleHRlcm4gdHJlZSBidWlsZF9jX2Nhc3QgKHRyZWUsIHRyZWUpOwpleHRlcm4gdHJlZSBidWls ZF9tb2RpZnlfZXhwciAodHJlZSwgZW51bSB0cmVlX2NvZGUsIHRyZWUpOwoKZXh0ZXJuIHZvaWQg c3RvcmVfaW5pdF92YWx1ZSAodHJlZSwgdHJlZSk7CmV4dGVybiB2b2lkIGVycm9yX2luaXQgKGNv bnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHBlZHdhcm5faW5pdCAoY29uc3QgY2hhciAqKTsKZXh0 ZXJuIHZvaWQgc3RhcnRfaW5pdCAodHJlZSwgdHJlZSwgaW50KTsKZXh0ZXJuIHZvaWQgZmluaXNo X2luaXQgKHZvaWQpOwpleHRlcm4gdm9pZCByZWFsbHlfc3RhcnRfaW5jcmVtZW50YWxfaW5pdCAo dHJlZSk7CmV4dGVybiB2b2lkIHB1c2hfaW5pdF9sZXZlbCAoaW50KTsKZXh0ZXJuIHRyZWUgcG9w X2luaXRfbGV2ZWwgKGludCk7CmV4dGVybiB2b2lkIHNldF9pbml0X2luZGV4ICh0cmVlLCB0cmVl KTsKZXh0ZXJuIHZvaWQgc2V0X2luaXRfbGFiZWwgKHRyZWUpOwpleHRlcm4gdm9pZCBwcm9jZXNz X2luaXRfZWxlbWVudCAodHJlZSk7CmV4dGVybiB0cmVlIGJ1aWxkX2NvbXBvdW5kX2xpdGVyYWwg KHRyZWUsIHRyZWUpOwpleHRlcm4gdm9pZCBwZWR3YXJuX2M5OSAoY29uc3QgY2hhciAqLCAuLi4p CiAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CmV4dGVybiB0cmVlIGNfc3RhcnRfY2Fz ZSAodHJlZSk7CmV4dGVybiB2b2lkIGNfZmluaXNoX2Nhc2UgKHZvaWQpOwpleHRlcm4gdHJlZSBz aW1wbGVfYXNtX3N0bXQgKHRyZWUpOwpleHRlcm4gdHJlZSBidWlsZF9hc21fc3RtdCAodHJlZSwg dHJlZSwgdHJlZSwgdHJlZSwgdHJlZSk7CgpleHRlcm4gdHJlZSBjX2NvbnZlcnRfcGFybV9mb3Jf aW5saW5pbmcgKHRyZWUsIHRyZWUsIHRyZWUpOwoKCgoKZXh0ZXJuIGludCBjdXJyZW50X2Z1bmN0 aW9uX3JldHVybnNfdmFsdWU7CgoKCgpleHRlcm4gaW50IGN1cnJlbnRfZnVuY3Rpb25fcmV0dXJu c19udWxsOwoKCgoKZXh0ZXJuIGludCBjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfYWJub3JtYWxs eTsKCgoKZXh0ZXJuIGludCBzeXN0ZW1faGVhZGVyX3A7CgoKZXh0ZXJuIHZvaWQgY19maW5pc2hf aW5jb21wbGV0ZV9kZWNsICh0cmVlKTsKCmV4dGVybiB0cmVlIHN0YXRpY19jdG9yczsKZXh0ZXJu IHRyZWUgc3RhdGljX2R0b3JzOwojIDI5ICIvVm9sdW1lcy9VRlNfUGFydGl0aW9uL3BpbnNraWEv c3JjL2ZzZi9nY2Mvc3JjL2djYy9jLXByZXR0eS1wcmludC5jIiAyCgoKc3RhdGljIHZvaWQgcHBf Y19jaGFyIChjX3ByZXR0eV9wcmludGVyLCBpbnQpOwpzdGF0aWMgdm9pZCBwcF9jX2NoYXJhY3Rl cl9saXRlcmFsIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19ib29s X2xpdGVyYWwgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwpzdGF0aWMgX0Jvb2wgcHBfY19lbnVt ZXJhdG9yIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19pbnRlZ2Vy X2xpdGVyYWwgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX3JlYWxf bGl0ZXJhbCAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2Nfc3RyaW5n X2xpdGVyYWwgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwoKc3RhdGljIHZvaWQgcHBfY19wcmlt YXJ5X2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwoKCnN0YXRpYyB2b2lkIHBw X2NfaW5pdGlhbGl6ZXJfbGlzdCAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CgpzdGF0aWMgdm9p ZCBwcF9jX3VuYXJ5X2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwpzdGF0aWMg dm9pZCBwcF9jX211bHRpcGxpY2F0aXZlX2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50ZXIsIHRy ZWUpOwpzdGF0aWMgdm9pZCBwcF9jX2FkZGl0aXZlX2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50 ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX3NoaWZ0X2V4cHJlc3Npb24gKGNfcHJldHR5X3By aW50ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX3JlbGF0aW9uYWxfZXhwcmVzc2lvbiAoY19w cmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfZXF1YWxpdHlfZXhwcmVzc2lv biAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfYW5kX2V4cHJlc3Np b24gKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX2V4Y2x1c2l2ZV9v cl9leHByZXNzaW9uIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKCnN0YXRpYyB2b2lkIHBwX2Nf aW5jbHVzaXZlX29yX2V4cHJlc3Npb24gKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUpOwoKc3RhdGlj IHZvaWQgcHBfY19sb2dpY2FsX2FuZF9leHByZXNzaW9uIChjX3ByZXR0eV9wcmludGVyLCB0cmVl KTsKc3RhdGljIHZvaWQgcHBfY19jb25kaXRpb25hbF9leHByZXNzaW9uIChjX3ByZXR0eV9wcmlu dGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19hc3NpZ25tZW50X2V4cHJlc3Npb24gKGNfcHJl dHR5X3ByaW50ZXIsIHRyZWUpOwoKCnN0YXRpYyB2b2lkIHBwX2NfZGVjbGFyYXRpb25fc3BlY2lm aWVycyAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfaW5pdF9kZWNs YXJhdG9yIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19kZWNsYXJh dG9yIChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGljIHZvaWQgcHBfY19kaXJlY3RfZGVj bGFyYXRvciAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfYWJzdHJh Y3RfZGVjbGFyYXRvciAoY19wcmV0dHlfcHJpbnRlciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2Nf c3BlY2lmaWVyX3F1YWxpZmllcl9saXN0IChjX3ByZXR0eV9wcmludGVyLCB0cmVlKTsKc3RhdGlj IHZvaWQgcHBfY19zaW1wbGVfdHlwZV9zcGVjaWZpZXIgKGNfcHJldHR5X3ByaW50ZXIsIHRyZWUp OwpzdGF0aWMgdm9pZCBwcF9jX3BhcmFtZXRlcl9kZWNsYXJhdGlvbiAoY19wcmV0dHlfcHJpbnRl ciwgdHJlZSk7CnN0YXRpYyB2b2lkIHBwX2NfdHlwZV9pZCAoY19wcmV0dHlfcHJpbnRlciwgdHJl ZSk7CnN0YXRpYyB2b2lkIHBwX2Nfc3RvcmFnZV9jbGFzc19zcGVjaWZpZXIgKGNfcHJldHR5X3By aW50ZXIsIHRyZWUpOwpzdGF0aWMgdm9pZCBwcF9jX2Z1bmN0aW9uX3NwZWNpZmllciAoY19wcmV0 dHlfcHJpbnRlciwgdHJlZSk7CgoKCgoKdm9pZApwcF9jX2N2X3F1YWxpZmllciAocHBpLCBjdikK ICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICBpbnQgY3Y7CnsKICBpZiAoY3YgJiAweDEp CiAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBv dXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5n ID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAo KHBwaSktPmJhc2UuYnVmZmVyLCAiY29uc3QiKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2Jl Zm9yZTsgfSB3aGlsZSAoMCk7CiAgaWYgKGN2ICYgMHgyKQogICAgZG8geyBkbyB7IGlmICgocHBp KS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSkt PmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDAp OyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgInZv bGF0aWxlIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwog IGlmIChjdiAmIDB4NCkKICAgIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBw cF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkp LT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1 dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGZsYWdfaXNvYzk5ID8gInJlc3RyaWN0 IiA6ICJfX3Jlc3RyaWN0X18iKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3 aGlsZSAoMCk7Cn0KCnN0YXRpYyB2b2lkCnBwX2Nfc2ltcGxlX3R5cGVfc3BlY2lmaWVyIChwcGks IHQpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSB0Owp7CiAgY29uc3QgZW51 bSB0cmVlX2NvZGUgY29kZSA9ICgoZW51bSB0cmVlX2NvZGUpICh0KS0+Y29tbW9uLmNvZGUpOwog IHN3aXRjaCAoY29kZSkKICAgIHsKICAgIGNhc2UgRVJST1JfTUFSSzoKICAgICAgZG8geyBkbyB7 IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFj ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1 ZmZlciwgIjx0eXBlLWVycm9yPiIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9 IHdoaWxlICgwKTsKICAgICAgYnJlYWs7CgoKCgoKCgogICAgY2FzZSBJREVOVElGSUVSX05PREU6 CiAgICAgIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7 IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRp bmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5n ICgocHBpKS0+YmFzZS5idWZmZXIsICgoY29uc3QgY2hhciAqKSAodCktPmlkZW50aWZpZXIuaWQu c3RyKSk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAg ICBicmVhazsKCiAgICBjYXNlIFZPSURfVFlQRToKICAgIGNhc2UgQk9PTEVBTl9UWVBFOgogICAg Y2FzZSBDSEFSX1RZUEU6CiAgICBjYXNlIElOVEVHRVJfVFlQRToKICAgIGNhc2UgUkVBTF9UWVBF OgogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8g eyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRk aW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmlu ZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAoKGNvbnN0IGNoYXIgKikgKCgodCktPmRlY2wubmFtZSkp LT5pZGVudGlmaWVyLmlkLnN0cikpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9 IHdoaWxlICgwKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBDT01QTEVYX1RZUEU6CiAgICBjYXNl IFZFQ1RPUl9UWVBFOgogICAgICBwcF9jX3NpbXBsZV90eXBlX3NwZWNpZmllciAocHBpLCAoKCgo dCktPmNvbW1vbi50eXBlKSktPnR5cGUubWFpbl92YXJpYW50KSk7CiAgICAgIGlmIChjb2RlID09 IENPTVBMRVhfVFlQRSkKIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9u b25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5i YXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9h ZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGZsYWdfaXNvYzk5ID8gIl9Db21wbGV4IiA6 ICJfX2NvbXBsZXhfXyIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxl ICgwKTsKICAgICAgZWxzZSBpZiAoY29kZSA9PSBWRUNUT1JfVFlQRSkKIGRvIHsgZG8geyBpZiAo KHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChw cGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIs ICJfX3ZlY3Rvcl9fIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUg KDApOwogICAgICBicmVhazsKCiAgICBjYXNlIFRZUEVfREVDTDoKICAgICAgaWYgKCgodCktPmRl Y2wubmFtZSkpCiBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkg ZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5w YWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0 cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAoKGNvbnN0IGNoYXIgKikgKCgodCktPmRlY2wubmFt ZSkpLT5pZGVudGlmaWVyLmlkLnN0cikpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3Jl OyB9IHdoaWxlICgwKTsKICAgICAgZWxzZQogZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRk aW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVy KTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgw KTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIjx0eXBlZGVmLWVycm9y PiIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxlICgwKTsKICAgICAg YnJlYWs7CgogICAgY2FzZSBVTklPTl9UWVBFOgogICAgY2FzZSBSRUNPUkRfVFlQRToKICAgIGNh c2UgRU5VTUVSQUxfVFlQRToKICAgICAgaWYgKGNvZGUgPT0gVU5JT05fVFlQRSkKIGRvIHsgZG8g eyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3Bh Y2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9 IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5i dWZmZXIsICJ1bmlvbiIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxl ICgwKTsKICAgICAgZWxzZSBpZiAoY29kZSA9PSBSRUNPUkRfVFlQRSkKIGRvIHsgZG8geyBpZiAo KHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChw cGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIs ICJzdHJ1Y3QiKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7 CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gRU5VTUVSQUxfVFlQRSkKIGRvIHsgZG8geyBpZiAoKHBw aSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkp LT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJl bnVtIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAg ICBlbHNlCiBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8g eyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRk aW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmlu ZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiPHRhZy1lcnJvcj4iKTsgKHBwaSktPmJhc2UucGFkZGlu ZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CgogICAgICBpZiAoKCh0KS0+dHlwZS5uYW1lKSkK IGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1 dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBw cF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBp KS0+YmFzZS5idWZmZXIsICgoY29uc3QgY2hhciAqKSAoKCh0KS0+dHlwZS5uYW1lKSktPmlkZW50 aWZpZXIuaWQuc3RyKSk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUg KDApOwogICAgICBlbHNlCiBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBf bm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+ YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRf YWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiPGFub255bW91cz4iKTsgKHBwaSktPmJh c2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoKICAgIGRl ZmF1bHQ6CiAgICAgIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJhc2UuYnVmZmVyLCAiI2Alcycg bm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVsoaW50KSAoKGVudW0gdHJlZV9j b2RlKSAodCktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJT05fXyk7CiAgICB9Cn0KCnN0YXRpYyBf X2lubGluZV9fIHZvaWQKcHBfY19zcGVjaWZpZXJfcXVhbGlmaWVyX2xpc3QgKHBwaSwgdCkKICAg ICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIHQ7CnsKICBwcF9jX3NpbXBsZV90eXBl X3NwZWNpZmllciAocHBpLCAoKCgodCktPmNvbW1vbi50eXBlKSktPnR5cGUubWFpbl92YXJpYW50 KSk7CiAgcHBfY19jdl9xdWFsaWZpZXIgKHBwaSwgKCgoKHQpLT5jb21tb24ucmVhZG9ubHlfZmxh ZykgKiAweDEpIHwgKCgodCktPmNvbW1vbi52b2xhdGlsZV9mbGFnKSAqIDB4MikgfCAoKCh0KS0+ dHlwZS5yZXN0cmljdF9mbGFnKSAqIDB4NCkgfCAoKCgoZW51bSB0cmVlX2NvZGUpICh0KS0+Y29t bW9uLmNvZGUpID09IFJFQ09SRF9UWVBFICYmICgodCktPmNvbW1vbi50eXBlKSkgKiAweDgpKSk7 Cn0KCnN0YXRpYyB2b2lkCnBwX2NfYWJzdHJhY3RfZGVjbGFyYXRvciAocHBpLCB0KQogICAgIGNf cHJldHR5X3ByaW50ZXIgcHBpOwogICAgIHRyZWUgdDsKewogIG91dHB1dF92ZXJiYXRpbSAoKHBw aSktPmJhc2UuYnVmZmVyLCAiI2Alcycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVf bmFtZVsoaW50KSAoKGVudW0gdHJlZV9jb2RlKSAodCktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJ T05fXyk7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCnBwX2NfdHlwZV9pZCAocHBpLCB0KQog ICAgIGNfcHJldHR5X3ByaW50ZXIgcHBpOwogICAgIHRyZWUgdDsKewogIHBwX2Nfc3BlY2lmaWVy X3F1YWxpZmllcl9saXN0IChwcGksIHQpOwogIHBwX2NfYWJzdHJhY3RfZGVjbGFyYXRvciAocHBp LCB0KTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX3N0b3JhZ2VfY2xhc3Nfc3BlY2lm aWVyIChwcCwgdCkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwOwogICAgIHRyZWUgdDsKewogIGlm ICgoKGVudW0gdHJlZV9jb2RlKSAodCktPmNvbW1vbi5jb2RlKSA9PSBUWVBFX0RFQ0wpCiAgICBk byB7IGRvIHsgaWYgKChwcCktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9h ZGRfc3BhY2UgKChwcCktPmJhc2UuYnVmZmVyKTsgKHBwKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9u ZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwKS0+YmFz ZS5idWZmZXIsICJ0eXBlZGVmIik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3 aGlsZSAoMCk7CiAgZWxzZSBpZiAoKCh0KS0+ZGVjbC5yZWdkZWNsX2ZsYWcpKQogICAgZG8geyBk byB7IGlmICgocHApLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3Nw YWNlICgocHApLT5iYXNlLmJ1ZmZlcik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcCktPmJhc2UuYnVm ZmVyLCAicmVnaXN0ZXIiKTsgKHBwKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxl ICgwKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2Z1bmN0aW9uX3NwZWNpZmllciAo cHAsIHQpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcDsKICAgICB0cmVlIHQ7CnsKICBpZiAoKChl bnVtIHRyZWVfY29kZSkgKHQpLT5jb21tb24uY29kZSkgPT0gRlVOQ1RJT05fREVDTCAmJiAoKCh0 KS0+ZGVjbC5sYW5nX3NwZWNpZmljKS0+YmFzZS5kZWNsYXJlZF9pbmxpbmUpKQogICAgZG8geyBk byB7IGlmICgocHApLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3Nw YWNlICgocHApLT5iYXNlLmJ1ZmZlcik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcCktPmJhc2UuYnVm ZmVyLCAiaW5saW5lIik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAo MCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19kZWNsYXJhdGlvbl9zcGVjaWZpZXJz IChwcCwgdCkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwOwogICAgIHRyZWUgdDsKewogIHBwX2Nf c3RvcmFnZV9jbGFzc19zcGVjaWZpZXIgKHBwLCB0KTsKICBwcF9jX2Z1bmN0aW9uX3NwZWNpZmll ciAocHAsIHQpOwogICgqKHBwKS0+dHlwZV9zcGVjaWZpZXIpICgocHApLCAoKCgodCktPmNvbW1v bi50eXBlKSktPnR5cGUubWFpbl92YXJpYW50KSk7CiAgcHBfY19jdl9xdWFsaWZpZXIgKHBwLCAo KCgoKCh0KS0+Y29tbW9uLnR5cGUpKS0+Y29tbW9uLnJlYWRvbmx5X2ZsYWcpICogMHgxKSB8ICgo KCgodCktPmNvbW1vbi50eXBlKSktPmNvbW1vbi52b2xhdGlsZV9mbGFnKSAqIDB4MikgfCAoKCgo KHQpLT5jb21tb24udHlwZSkpLT50eXBlLnJlc3RyaWN0X2ZsYWcpICogMHg0KSB8ICgoKChlbnVt IHRyZWVfY29kZSkgKCgodCktPmNvbW1vbi50eXBlKSktPmNvbW1vbi5jb2RlKSA9PSBSRUNPUkRf VFlQRSAmJiAoKCgodCktPmNvbW1vbi50eXBlKSktPmNvbW1vbi50eXBlKSkgKiAweDgpKSk7Cn0K CnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19kaXJlY3RfZGVjbGFyYXRvciAocHAsIHQpCiAg ICAgY19wcmV0dHlfcHJpbnRlciBwcDsKICAgICB0cmVlIHQ7CnsKICBvdXRwdXRfdmVyYmF0aW0g KChwcCktPmJhc2UuYnVmZmVyLCAiI2Alcycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2Nv ZGVfbmFtZVsoaW50KSAoKGVudW0gdHJlZV9jb2RlKSAodCktPmNvbW1vbi5jb2RlKV0sIF9fRlVO Q1RJT05fXyk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19kZWNsYXJhdG9yIChwcCwg dCkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwOwogICAgIHRyZWUgdDsKewogIG91dHB1dF92ZXJi YXRpbSAoKHBwKS0+YmFzZS5idWZmZXIsICIjYCVzJyBub3Qgc3VwcG9ydGVkIGJ5ICVzIyIsIHRy ZWVfY29kZV9uYW1lWyhpbnQpICgoZW51bSB0cmVlX2NvZGUpICh0KS0+Y29tbW9uLmNvZGUpXSwg X19GVU5DVElPTl9fKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2luaXRfZGVjbGFy YXRvciAocHAsIHQpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcDsKICAgICB0cmVlIHQ7CnsKICAo KihwcCktPmRlY2xhcmF0b3IpICgocHApLCB0KTsKICBpZiAoKCh0KS0+ZGVjbC5pbml0aWFsKSkK ICAgIHsKICAgICAgb3V0cHV0X2FkZF9zcGFjZSAoKHBwKS0+YmFzZS5idWZmZXIpOwogICAgICBv dXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIsICc9Jyk7CiAgICAgIG91dHB1 dF9hZGRfc3BhY2UgKChwcCktPmJhc2UuYnVmZmVyKTsKICAgICAgcHBfY19pbml0aWFsaXplciAo cHAsICgodCktPmRlY2wuaW5pdGlhbCkpOwogICAgfQp9Cgp2b2lkCnBwX2NfZGVjbGFyYXRpb24g KHBwLCB0KQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHA7CiAgICAgdHJlZSB0Owp7CiAgKCoocHAp LT5kZWNsYXJhdGlvbl9zcGVjaWZpZXJzKSAoKHBwKSwgdCk7CiAgcHBfY19pbml0X2RlY2xhcmF0 b3IgKHBwLCB0KTsKfQoKc3RhdGljIHZvaWQKcHBfY19wYXJhbWV0ZXJfZGVjbGFyYXRpb24gKHBw LCB0KQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHA7CiAgICAgdHJlZSB0Owp7CiAgb3V0cHV0X3Zl cmJhdGltICgocHApLT5iYXNlLmJ1ZmZlciwgIiNgJXMnIG5vdCBzdXBwb3J0ZWQgYnkgJXMjIiwg dHJlZV9jb2RlX25hbWVbKGludCkgKChlbnVtIHRyZWVfY29kZSkgKHQpLT5jb21tb24uY29kZSld LCBfX0ZVTkNUSU9OX18pOwp9CgoKdm9pZApwcF9jX2F0dHJpYnV0ZXMgKHBwLCBhdHRyaWJ1dGVz KQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHA7CiAgICAgdHJlZSBhdHRyaWJ1dGVzOwp7CiAgaWYg KGF0dHJpYnV0ZXMgPT0gKHRyZWUpICgodm9pZCAqKTApKQogICAgcmV0dXJuOwoKICBkbyB7IGRv IHsgaWYgKChwcCktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3Bh Y2UgKChwcCktPmJhc2UuYnVmZmVyKTsgKHBwKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3 aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwKS0+YmFzZS5idWZm ZXIsICJfX2F0dHJpYnV0ZV9fIik7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3 aGlsZSAoMCk7CiAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIs ICcoJyk7IChwcCktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogIGRvIHsg b3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcCktPmJhc2UuYnVmZmVyLCAnKCcpOyAocHApLT5iYXNl LnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICBmb3IgKDsgYXR0cmlidXRlcyAhPSAo dHJlZSkgKCh2b2lkICopMCk7IGF0dHJpYnV0ZXMgPSAoKGF0dHJpYnV0ZXMpLT5jb21tb24uY2hh aW4pKQogICAgewogICAgICBvdXRwdXRfYWRkX3N0cmluZyAoKHBwKS0+YmFzZS5idWZmZXIsICgo Y29uc3QgY2hhciAqKSAoKChhdHRyaWJ1dGVzKS0+bGlzdC5wdXJwb3NlKSktPmlkZW50aWZpZXIu aWQuc3RyKSk7CiAgICAgIGlmICgoKGF0dHJpYnV0ZXMpLT5saXN0LnZhbHVlKSkKIHsKICAgZG8g eyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcCktPmJh c2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICBwcF9jX2V4cHJlc3Npb25fbGlz dCAocHAsICgoYXR0cmlidXRlcyktPmxpc3QudmFsdWUpKTsKICAgZG8geyBvdXRwdXRfYWRkX2No YXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIsICcpJyk7IChwcCktPmJhc2UucGFkZGluZyA9IHBw X25vbmU7IH0gd2hpbGUgKDApOwogfQoKICAgICAgaWYgKCgoYXR0cmlidXRlcyktPmNvbW1vbi5j aGFpbikpCiBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHApLT5iYXNlLmJ1ZmZlciwgJywn KTsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAg IH0KICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHApLT5iYXNlLmJ1ZmZlciwgJyknKTsg KHBwKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgZG8geyBvdXRwdXRf YWRkX2NoYXJhY3RlciAoKHBwKS0+YmFzZS5idWZmZXIsICcpJyk7IChwcCktPmJhc2UucGFkZGlu ZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwp9CgoKCgoKc3RhdGljIHZvaWQKcHBfY19jaGFyIChw cGksIGMpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgaW50IGM7CnsKICBzd2l0Y2gg KGMpCiAgICB7CiAgICBjYXNlIDAxMjoKICAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5i YXNlLmJ1ZmZlciwgIlxcbiIpOwogICAgICBicmVhazsKICAgIGNhc2UgMDExOgogICAgICBvdXRw dXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiXFx0Iik7CiAgICAgIGJyZWFrOwog ICAgY2FzZSAwMTM6CiAgICAgIG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIs ICJcXHYiKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDAxMDoKICAgICAgb3V0cHV0X2FkZF9zdHJp bmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIlxcYiIpOwogICAgICBicmVhazsKICAgIGNhc2UgMDE1 OgogICAgICBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiXFxyIik7CiAg ICAgIGJyZWFrOwogICAgY2FzZSAwMTQ6CiAgICAgIG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+ YmFzZS5idWZmZXIsICJcXGYiKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDAwNzoKICAgICAgb3V0 cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIlxcYSIpOwogICAgICBicmVhazsK ICAgIGNhc2UgJ1xcJzoKICAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZl ciwgIlxcXFwiKTsKICAgICAgYnJlYWs7CiAgICBjYXNlICdcJyc6CiAgICAgIG91dHB1dF9hZGRf c3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJcXCciKTsKICAgICAgYnJlYWs7CiAgICBjYXNl ICdcIic6CiAgICAgIG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJcXFwi Iik7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgaWYgKChfc2NoX2lzdGFibGVbKGMp ICYgMHhmZl0gJiAodW5zaWduZWQgc2hvcnQpKF9zY2hfaXNwcmludCkpKQogb3V0cHV0X2FkZF9j aGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgYyk7CiAgICAgIGVsc2UKIGRvIHsgc3ByaW50 ZiAoKChwcGkpLT5iYXNlLmJ1ZmZlciktPmRpZ2l0X2J1ZmZlciwgIlxcJTAzbyIsICh1bnNpZ25l ZCkgYyk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICgocHBpKS0+YmFz ZS5idWZmZXIpLT5kaWdpdF9idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICAgYnJlYWs7CiAgICB9 Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCnBwX2Nfc3RyaW5nX2xpdGVyYWwgKHBwaSwgcykK ICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIHM7CnsKICBjb25zdCBjaGFyICpw ID0gKChzKS0+c3RyaW5nLnBvaW50ZXIpOwogIGludCBuID0gKChzKS0+c3RyaW5nLmxlbmd0aCkg LSAxOwogIGludCBpOwogIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIs ICciJyk7CiAgZm9yIChpID0gMDsgaSA8IG47ICsraSkKICAgIHBwX2NfY2hhciAocHBpLCBwW2ld KTsKICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnIicpOwp9CgoK c3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2NoYXJhY3Rlcl9saXRlcmFsIChwcGksIGMpCiAg ICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBjOwp7CiAgb3V0cHV0X2FkZF9jaGFy YWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJ1wnJyk7CiAgcHBfY19jaGFyIChwcGksIHRyZWVf bG93X2NzdCAoYywgMCkpOwogIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm ZXIsICdcJycpOwp9CgoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2Jvb2xfbGl0ZXJhbCAo cHBpLCBiKQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHBpOwogICAgIHRyZWUgYjsKewogIGlmIChi ID09IGNfZ2xvYmFsX3RyZWVzW0NUSV9CT09MRUFOX0ZBTFNFXSB8fCBpbnRlZ2VyX3plcm9wIChi KSkKICAgIHsKICAgICAgaWYgKGNfbGFuZ3VhZ2UgPT0gY2xrX2NwbHVzcGx1cykKIGRvIHsgZG8g eyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3Bh Y2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9 IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5i dWZmZXIsICJmYWxzZSIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxl ICgwKTsKICAgICAgZWxzZSBpZiAoY19sYW5ndWFnZSA9PSBjbGtfYyAmJiBmbGFnX2lzb2M5OSkK IGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1 dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBw cF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBp KS0+YmFzZS5idWZmZXIsICJfRmFsc2UiKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9y ZTsgfSB3aGlsZSAoMCk7CiAgICAgIGVsc2UKIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJhc2Uu YnVmZmVyLCAiI2Alcycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVsoaW50 KSAoKGVudW0gdHJlZV9jb2RlKSAoYiktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJT05fXyk7CiAg ICB9CiAgZWxzZSBpZiAoYiA9PSBjX2dsb2JhbF90cmVlc1tDVElfQk9PTEVBTl9UUlVFXSkKICAg IHsKICAgICAgaWYgKGNfbGFuZ3VhZ2UgPT0gY2xrX2NwbHVzcGx1cykKIGRvIHsgZG8geyBpZiAo KHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChw cGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIs ICJ0cnVlIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwog ICAgICBlbHNlIGlmIChjX2xhbmd1YWdlID09IGNsa19jICYmIGZsYWdfaXNvYzk5KQogZG8geyBk byB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9z cGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7 IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNl LmJ1ZmZlciwgIl9UcnVlIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hp bGUgKDApOwogICAgICBlbHNlCiBvdXRwdXRfdmVyYmF0aW0gKChwcGkpLT5iYXNlLmJ1ZmZlciwg IiNgJXMnIG5vdCBzdXBwb3J0ZWQgYnkgJXMjIiwgdHJlZV9jb2RlX25hbWVbKGludCkgKChlbnVt IHRyZWVfY29kZSkgKGIpLT5jb21tb24uY29kZSldLCBfX0ZVTkNUSU9OX18pOwogICAgfQogIGVs c2UKICAgIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJhc2UuYnVmZmVyLCAiI2Alcycgbm90IHN1 cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVsoaW50KSAoKGVudW0gdHJlZV9jb2RlKSAo YiktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJT05fXyk7Cn0KCgoKCgpzdGF0aWMgX0Jvb2wKcHBf Y19lbnVtZXJhdG9yIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJl ZSBlOwp7CiAgdHJlZSB0eXBlID0gKChlKS0+Y29tbW9uLnR5cGUpOwogIHRyZWUgdmFsdWU7CgoK ICBmb3IgKHZhbHVlID0gKCh0eXBlKS0+dHlwZS52YWx1ZXMpOwogICAgICAgdmFsdWUgIT0gKHRy ZWUpICgodm9pZCAqKTApICYmICF0cmVlX2ludF9jc3RfZXF1YWwgKCgodmFsdWUpLT5saXN0LnZh bHVlKSwgZSk7CiAgICAgICB2YWx1ZSA9ICgodmFsdWUpLT5jb21tb24uY2hhaW4pKQogICAgOwoK ICBpZiAodmFsdWUgIT0gKHRyZWUpICgodm9pZCAqKTApKQogICAgZG8geyBkbyB7IGlmICgocHBp KS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSkt PmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDAp OyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgKChj b25zdCBjaGFyICopICgoKHZhbHVlKS0+bGlzdC5wdXJwb3NlKSktPmlkZW50aWZpZXIuaWQuc3Ry KSk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogIGVsc2UK ICAgIHsKCiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZl ciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAg ICAoKihwcGkpLT50eXBlX2lkKSAoKHBwaSksIHR5cGUpOwogICAgICBkbyB7IG91dHB1dF9hZGRf Y2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcg PSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogIHJldHVybiAx Owp9CgoKc3RhdGljIHZvaWQKcHBfY19pbnRlZ2VyX2xpdGVyYWwgKHBwaSwgaSkKICAgICBjX3By ZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGk7CnsKICB0cmVlIHR5cGUgPSAoKGkpLT5jb21t b24udHlwZSk7CgogIGlmICh0eXBlID09IGNfZ2xvYmFsX3RyZWVzW0NUSV9CT09MRUFOX1RZUEVd KQogICAgcHBfY19ib29sX2xpdGVyYWwgKHBwaSwgaSk7CiAgZWxzZSBpZiAodHlwZSA9PSBpbnRl Z2VyX3R5cGVzW2l0a19jaGFyXSkKICAgIHBwX2NfY2hhcmFjdGVyX2xpdGVyYWwgKHBwaSwgaSk7 CiAgZWxzZSBpZiAoKChlbnVtIHRyZWVfY29kZSkgKHR5cGUpLT5jb21tb24uY29kZSkgPT0gRU5V TUVSQUxfVFlQRQogICAgJiYgcHBfY19lbnVtZXJhdG9yIChwcGksIGkpKQogICAgOwogIGVsc2UK ICAgIHsKICAgICAgaWYgKGhvc3RfaW50ZWdlcnAgKGksIDApKQogZG8geyBzcHJpbnRmICgoKHBw aSktPmJhc2UuYnVmZmVyKS0+ZGlnaXRfYnVmZmVyLCAiJWxkIiwgKGxvbmcpICgoKGkpLT5pbnRf Y3N0LmludF9jc3QpLmxvdykpOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVy LCAoKHBwaSktPmJhc2UuYnVmZmVyKS0+ZGlnaXRfYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAg IGVsc2UKIHsKICAgaWYgKHRyZWVfaW50X2NzdF9zZ24gKGkpIDwgMCkKICAgICB7CiAgICAgICBz dGF0aWMgY2hhciBmb3JtYXRbMTBdOwogICAgICAgaWYgKCFmb3JtYXRbMF0pCiAgc3ByaW50ZiAo Zm9ybWF0LCAiJSV4JSUwJWR4IiwgKDggKiA0KSAvIDQpOwoKICAgICAgIHBwX2NfY2hhciAocHBp LCAnLScpOwogICAgICAgaSA9IGJ1aWxkX2ludF8yX3dpZGUgKCh1bnNpZ25lZCBsb25nKSAoLSgo KGkpLT5pbnRfY3N0LmludF9jc3QpLmxvdykpLCAobG9uZykgKH4oKChpKS0+aW50X2NzdC5pbnRf Y3N0KS5oaWdoKSArICEoKChpKS0+aW50X2NzdC5pbnRfY3N0KS5sb3cpKSk7CgogICAgICAgc3By aW50ZiAoKHBwaSktPmJhc2UuYnVmZmVyLT5kaWdpdF9idWZmZXIsIGZvcm1hdCwKICAgICAgICAg KCgoaSktPmludF9jc3QuaW50X2NzdCkuaGlnaCksICgoKGkpLT5pbnRfY3N0LmludF9jc3QpLmxv dykpOwogICAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgKHBwaSkt PmJhc2UuYnVmZmVyLT5kaWdpdF9idWZmZXIpOwoKICAgICB9CiB9CiAgICB9Cn0KCgpzdGF0aWMg X19pbmxpbmVfXyB2b2lkCnBwX2NfcmVhbF9saXRlcmFsIChwcGksIHIpCiAgICAgY19wcmV0dHlf cHJpbnRlciBwcGk7CiAgICAgdHJlZSByOwp7CiAgcmVhbF90b19kZWNpbWFsICgocHBpKS0+YmFz ZS5idWZmZXItPmRpZ2l0X2J1ZmZlciwgJigqKChyKS0+cmVhbF9jc3QucmVhbF9jc3RfcHRyKSks CiAgICAgc2l6ZW9mICgocHBpKS0+YmFzZS5idWZmZXItPmRpZ2l0X2J1ZmZlciksIDAsIDEpOwog IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIChwcGkpLT5iYXNlLmJ1ZmZl ci0+ZGlnaXRfYnVmZmVyKTsKfQoKCnZvaWQKcHBfY19saXRlcmFsIChwcGksIGUpCiAgICAgY19w cmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgc3dpdGNoICgoKGVudW0gdHJlZV9j b2RlKSAoZSktPmNvbW1vbi5jb2RlKSkKICAgIHsKICAgIGNhc2UgSU5URUdFUl9DU1Q6CiAgICAg IHBwX2NfaW50ZWdlcl9saXRlcmFsIChwcGksIGUpOwogICAgICBicmVhazsKCiAgICBjYXNlIFJF QUxfQ1NUOgogICAgICBwcF9jX3JlYWxfbGl0ZXJhbCAocHBpLCBlKTsKICAgICAgYnJlYWs7Cgog ICAgY2FzZSBTVFJJTkdfQ1NUOgogICAgICBwcF9jX3N0cmluZ19saXRlcmFsIChwcGksIGUpOwog ICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICBvdXRwdXRfdmVyYmF0aW0gKChwcGkpLT5i YXNlLmJ1ZmZlciwgIiNgJXMnIG5vdCBzdXBwb3J0ZWQgYnkgJXMjIiwgdHJlZV9jb2RlX25hbWVb KGludCkgKChlbnVtIHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSldLCBfX0ZVTkNUSU9OX18p OwogICAgICBicmVhazsKICAgIH0KfQoKCnN0YXRpYyB2b2lkCnBwX2NfcHJpbWFyeV9leHByZXNz aW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAg c3dpdGNoICgoKGVudW0gdHJlZV9jb2RlKSAoZSktPmNvbW1vbi5jb2RlKSkKICAgIHsKICAgIGNh c2UgVkFSX0RFQ0w6CiAgICBjYXNlIFBBUk1fREVDTDoKICAgIGNhc2UgRklFTERfREVDTDoKICAg IGNhc2UgQ09OU1RfREVDTDoKICAgIGNhc2UgRlVOQ1RJT05fREVDTDoKICAgIGNhc2UgTEFCRUxf REVDTDoKICAgICAgZSA9ICgoZSktPmRlY2wubmFtZSk7CgogICAgY2FzZSBJREVOVElGSUVSX05P REU6CiAgICAgIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBk byB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBh ZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3Ry aW5nICgocHBpKS0+YmFzZS5idWZmZXIsICgoY29uc3QgY2hhciAqKSAoZSktPmlkZW50aWZpZXIu aWQuc3RyKSk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwog ICAgICBicmVhazsKCiAgICBjYXNlIEVSUk9SX01BUks6CiAgICAgIGRvIHsgZG8geyBpZiAoKHBw aSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkp LT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICI8 ZXJyb25lb3VzLWV4cHJlc3Npb24+Iik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7 IH0gd2hpbGUgKDApOwogICAgICBicmVhazsKCiAgICBjYXNlIFJFU1VMVF9ERUNMOgogICAgICBk byB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRf YWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBf bm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSkt PmJhc2UuYnVmZmVyLCAiPHJldHVybi12YWx1ZT4iKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBw X2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgSU5URUdFUl9DU1Q6 CiAgICBjYXNlIFJFQUxfQ1NUOgogICAgY2FzZSBTVFJJTkdfQ1NUOgogICAgICBwcF9jX2xpdGVy YWwgKHBwaSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgVEFSR0VUX0VYUFI6CiAgICAgIGRv IHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSkt PmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICBkbyB7IGRvIHsgaWYg KChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgo cHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGls ZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVy LCAiX19idWlsdGluX21lbWNweSIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9 IHdoaWxlICgwKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu YnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7 CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcmJyk7CiAg ICAgIHBwX2NfcHJpbWFyeV9leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkp OwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcs Jyk7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwog ICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnJicpOwogICAg ICAoKihwcGkpLT5pbml0aWFsaXplcikgKChwcGkpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsK ICAgICAgaWYgKCgoZSktPmV4cC5vcGVyYW5kc1syXSkpCiB7CiAgIGRvIHsgb3V0cHV0X2FkZF9j aGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJywnKTsgb3V0cHV0X2FkZF9zcGFjZSAoKHBw aSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCAo KGUpLT5leHAub3BlcmFuZHNbMl0pKTsKIH0KICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3Rl ciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnKScpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9u ZTsgfSB3aGlsZSAoMCk7CgogICAgY2FzZSBTVE1UX0VYUFI6CiAgICAgIGRvIHsgb3V0cHV0X2Fk ZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGlu ZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICAoKihwcGkpLT5zdGF0ZW1lbnQpICgocHBp KSwgKCgoZSkpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJh Y3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnKScpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBf bm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CgogICAgICBkbyB7 IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcGkpLT5i YXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19leHByZXNzaW9u IChwcGksIGUpOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5i dWZmZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsK ICAgICAgYnJlYWs7CiAgICB9Cn0KCgp2b2lkCnBwX2NfaW5pdGlhbGl6ZXIgKHBwaSwgZSkKICAg ICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBpZiAoKChlbnVtIHRyZWVf Y29kZSkgKGUpLT5jb21tb24uY29kZSkgPT0gQ09OU1RSVUNUT1IpCiAgICB7CiAgICAgIGVudW0g dHJlZV9jb2RlIGNvZGUgPSAoKGVudW0gdHJlZV9jb2RlKSAoKChlKS0+Y29tbW9uLnR5cGUpKS0+ Y29tbW9uLmNvZGUpOwogICAgICBpZiAoY29kZSA9PSBSRUNPUkRfVFlQRSB8fCBjb2RlID09IFVO SU9OX1RZUEUgfHwgY29kZSA9PSBBUlJBWV9UWVBFKQogewogICBvdXRwdXRfYWRkX2NoYXJhY3Rl ciAoKHBwaSktPmJhc2UuYnVmZmVyLCAneycpOwogICBwcF9jX2luaXRpYWxpemVyX2xpc3QgKHBw aSwgZSk7CiAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd9Jyk7 CiB9CiAgICAgIGVsc2UKIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJhc2UuYnVmZmVyLCAiI2Al cycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVsoaW50KSAoKGVudW0gdHJl ZV9jb2RlKSAoKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJ T05fXyk7CiAgICB9CiAgZWxzZQogICAgKCoocHBpKS0+YXNzaWdubWVudF9leHByZXNzaW9uKSAo KHBwaSksIGUpOwp9CgpzdGF0aWMgdm9pZApwcF9jX2luaXRpYWxpemVyX2xpc3QgKHBwaSwgZSkK ICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICB0cmVlIHR5cGUgPSAo KGUpLT5jb21tb24udHlwZSk7CiAgY29uc3QgZW51bSB0cmVlX2NvZGUgY29kZSA9ICgoZW51bSB0 cmVlX2NvZGUpICh0eXBlKS0+Y29tbW9uLmNvZGUpOwoKICBpZiAoY29kZSA9PSBSRUNPUkRfVFlQ RSB8fCBjb2RlID09IFVOSU9OX1RZUEUgfHwgY29kZSA9PSBBUlJBWV9UWVBFKQogICAgewogICAg ICB0cmVlIGluaXQgPSAoKGUpLT5leHAub3BlcmFuZHNbMV0pOwogICAgICBmb3IgKDsgaW5pdCAh PSAodHJlZSkgKCh2b2lkICopMCk7IGluaXQgPSAoKGluaXQpLT5jb21tb24uY2hhaW4pKQogewog ICBpZiAoY29kZSA9PSBSRUNPUkRfVFlQRSB8fCBjb2RlID09IFVOSU9OX1RZUEUpCiAgICAgewog ICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJy4nKTsKICAg ICAgIHBwX2NfcHJpbWFyeV9leHByZXNzaW9uIChwcGksICgoaW5pdCktPmxpc3QucHVycG9zZSkp OwogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIg KChwcGkpLT5iYXNlLmJ1ZmZlciwgJ1snKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7 IH0gd2hpbGUgKDApOwogICAgICAgaWYgKCgoaW5pdCktPmxpc3QucHVycG9zZSkpCiAgcHBfY19s aXRlcmFsIChwcGksICgoaW5pdCktPmxpc3QucHVycG9zZSkpOwogICAgICAgZG8geyBvdXRwdXRf YWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnXScpOyAocHBpKS0+YmFzZS5wYWRk aW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgfQogICBkbyB7IG91dHB1dF9hZGRfc3Bh Y2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9 IHdoaWxlICgwKTsKICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwg Jz0nKTsKICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBp KS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICgqKHBwaSktPmluaXRp YWxpemVyKSAoKHBwaSksICgoaW5pdCktPmxpc3QudmFsdWUpKTsKICAgaWYgKCgoaW5pdCktPmNv bW1vbi5jaGFpbikpCiAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu YnVmZmVyLCAnLCcpOyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdo aWxlICgwKTsKIH0KICAgIH0KICBlbHNlCiAgICBvdXRwdXRfdmVyYmF0aW0gKChwcGkpLT5iYXNl LmJ1ZmZlciwgIiNgJXMnIG5vdCBzdXBwb3J0ZWQgYnkgJXMjIiwgdHJlZV9jb2RlX25hbWVbKGlu dCkgKChlbnVtIHRyZWVfY29kZSkgKHR5cGUpLT5jb21tb24uY29kZSldLCBfX0ZVTkNUSU9OX18p Owp9Cgp2b2lkCnBwX2NfcG9zdGZpeF9leHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlf cHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgZW51bSB0cmVlX2NvZGUgY29kZSA9ICgoZW51 bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpOwogIHN3aXRjaCAoY29kZSkKICAgIHsKICAg IGNhc2UgUE9TVElOQ1JFTUVOVF9FWFBSOgogICAgY2FzZSBQT1NUREVDUkVNRU5UX0VYUFI6CiAg ICAgICgqKHBwaSktPnBvc3RmaXhfZXhwcmVzc2lvbikgKChwcGkpLCAoKGUpLT5leHAub3BlcmFu ZHNbMF0pKTsKICAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgY29k ZSA9PSBQT1NUSU5DUkVNRU5UX0VYUFIgPyAiKysiIDogIi0tIik7CiAgICAgIGJyZWFrOwoKICAg IGNhc2UgQVJST1dfRVhQUjoKICAgICAgKCoocHBpKS0+cG9zdGZpeF9leHByZXNzaW9uKSAoKHBw aSksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBvdXRwdXRfYWRkX3N0cmluZyAoKHBw aSktPmJhc2UuYnVmZmVyLCAiLT4iKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBBUlJBWV9SRUY6 CiAgICAgICgqKHBwaSktPnBvc3RmaXhfZXhwcmVzc2lvbikgKChwcGkpLCAoKGUpLT5leHAub3Bl cmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu YnVmZmVyLCAnWycpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7 CiAgICAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsKICAg ICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnXScpOyAo cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoK ICAgIGNhc2UgQ0FMTF9FWFBSOgogICAgICAoKihwcGkpLT5wb3N0Zml4X2V4cHJlc3Npb24pICgo cHBpKSwgKChlKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFy YWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBw X25vbmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9jX2V4cHJlc3Npb25fbGlzdCAocHBpLCAoKGUp LT5leHAub3BlcmFuZHNbMV0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBw aSktPmJhc2UuYnVmZmVyLCAnKScpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3 aGlsZSAoMCk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgQUJTX0VYUFI6CiAgICBjYXNlIEZGU19F WFBSOgogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkg ZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5w YWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0 cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCBjb2RlID09IEFCU19FWFBSID8gIl9fYnVpbHRpbl9h YnMiIDogIl9fYnVpbHRpbl9mZnMiKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsg fSB3aGlsZSAoMCk7CgogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFz ZS5idWZmZXIsICcoJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw KTsKICAgICAgcHBfY19leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwog ICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7 IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgYnJlYWs7 CgogICAgY2FzZSBDT01QT05FTlRfUkVGOgogICAgICB7CiB0cmVlIG9iamVjdCA9ICgoZSktPmV4 cC5vcGVyYW5kc1swXSk7CiBpZiAoKChlbnVtIHRyZWVfY29kZSkgKG9iamVjdCktPmNvbW1vbi5j b2RlKSA9PSBJTkRJUkVDVF9SRUYpCiAgIHsKICAgICAoKihwcGkpLT5wb3N0Zml4X2V4cHJlc3Np b24pICgocHBpKSwgKChvYmplY3QpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICBvdXRwdXRfYWRk X3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiLT4iKTsKICAgfQogZWxzZQogICB7CiAgICAg KCoocHBpKS0+cG9zdGZpeF9leHByZXNzaW9uKSAoKHBwaSksIG9iamVjdCk7CiAgICAgb3V0cHV0 X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJy4nKTsKICAgfQogcHBfY19leHBy ZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICB9CiAgICAgIGJyZWFr OwoKICAgIGNhc2UgQ09NUExFWF9DU1Q6CiAgICBjYXNlIFZFQ1RPUl9DU1Q6CiAgICBjYXNlIENP TVBMRVhfRVhQUjoKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu YnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7 CiAgICAgICgqKHBwaSktPnR5cGVfaWQpICgocHBpKSwgKChlKS0+Y29tbW9uLnR5cGUpKTsKICAg ICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnKScpOyAo cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9h ZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd7Jyk7CgogICAgICBpZiAoY29kZSA9 PSBDT01QTEVYX0NTVCkKIHsKICAgcHBfY19leHByZXNzaW9uIChwcGksICgoZSktPmNvbXBsZXgu cmVhbCkpOwogICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIs ICcsJyk7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDAp OwogICBwcF9jX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+Y29tcGxleC5pbWFnKSk7CiB9CiAgICAg IGVsc2UgaWYgKGNvZGUgPT0gVkVDVE9SX0NTVCkKIHBwX2NfZXhwcmVzc2lvbl9saXN0IChwcGks ICgoZSktPnZlY3Rvci5lbGVtZW50cykpOwogICAgICBlbHNlIGlmIChjb2RlID09IENPTVBMRVhf RVhQUikKIHsKICAgcHBfY19leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkp OwogICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcsJyk7 IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwogICBw cF9jX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiB9CgogICAgICBv dXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnfScpOwogICAgICBicmVh azsKCiAgICBjYXNlIENPTVBPVU5EX0xJVEVSQUxfRVhQUjoKICAgICAgZSA9ICgoZSktPmRlY2wu aW5pdGlhbCk7CgogICAgY2FzZSBDT05TVFJVQ1RPUjoKICAgICAgKCoocHBpKS0+aW5pdGlhbGl6 ZXIpICgocHBpKSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgVkFfQVJHX0VYUFI6CiAgICAg IGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1 dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBw cF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBp KS0+YmFzZS5idWZmZXIsICJfX2J1aWx0aW5fdmFfYXJnIik7IChwcGkpLT5iYXNlLnBhZGRpbmcg PSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVy ICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25l OyB9IHdoaWxlICgwKTsKICAgICAgKCoocHBpKS0+YXNzaWdubWVudF9leHByZXNzaW9uKSAoKHBw aSksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFj dGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcsJyk7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i YXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwogICAgICAoKihwcGkpLT50eXBlX2lkKSAoKHBwaSks ICgoZSktPmNvbW1vbi50eXBlKSk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChw cGkpLT5iYXNlLmJ1ZmZlciwgJyknKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g d2hpbGUgKDApOwogICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICAoKihwcGkpLT5wcmlt YXJ5X2V4cHJlc3Npb24pICgocHBpKSwgZSk7CiAgICAgIGJyZWFrOwogICAgfQp9CgoKdm9pZApw cF9jX2V4cHJlc3Npb25fbGlzdCAocHBpLCBlKQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHBpOwog ICAgIHRyZWUgZTsKewogIGZvciAoOyBlICE9ICh0cmVlKSAoKHZvaWQgKikwKTsgZSA9ICgoZSkt PmNvbW1vbi5jaGFpbikpCiAgICB7CiAgICAgIHBwX2NfYXNzaWdubWVudF9leHByZXNzaW9uIChw cGksICgoZSktPmxpc3QudmFsdWUpKTsKICAgICAgaWYgKCgoZSktPmNvbW1vbi5jaGFpbikpCiBk byB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcsJyk7IG91dHB1 dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwogICAgfQp9Cgpz dGF0aWMgdm9pZApwcF9jX3VuYXJ5X2V4cHJlc3Npb24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9w cmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBlbnVtIHRyZWVfY29kZSBjb2RlID0gKChlbnVt IHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSk7CiAgc3dpdGNoIChjb2RlKQogICAgewogICAg Y2FzZSBQUkVJTkNSRU1FTlRfRVhQUjoKICAgIGNhc2UgUFJFREVDUkVNRU5UX0VYUFI6CiAgICAg IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGNvZGUgPT0gUFJFSU5DUkVN RU5UX0VYUFIgPyAiKysiIDogIi0tIik7CiAgICAgIHBwX2NfdW5hcnlfZXhwcmVzc2lvbiAocHBp LCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBBRERSX0VY UFI6CiAgICBjYXNlIElORElSRUNUX1JFRjoKICAgIGNhc2UgQ09OVkVSVF9FWFBSOgogICAgY2Fz ZSBORUdBVEVfRVhQUjoKICAgIGNhc2UgQklUX05PVF9FWFBSOgogICAgY2FzZSBUUlVUSF9OT1Rf RVhQUjoKICAgIGNhc2UgQ09OSl9FWFBSOgogICAgICBpZiAoY29kZSA9PSBBRERSX0VYUFIpCiBv dXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnJicpOwogICAgICBlbHNl IGlmIChjb2RlID09IElORElSRUNUX1JFRikKIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+ YmFzZS5idWZmZXIsICcqJyk7CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gTkVHQVRFX0VYUFIpCiBv dXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnLScpOwogICAgICBlbHNl IGlmIChjb2RlID09IEJJVF9OT1RfRVhQUiB8fCBjb2RlID09IENPTkpfRVhQUikKIG91dHB1dF9h ZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd+Jyk7CiAgICAgIGVsc2UgaWYgKGNv ZGUgPT0gVFJVVEhfTk9UX0VYUFIpCiBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu YnVmZmVyLCAnIScpOwogICAgICBwcF9jX2Nhc3RfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAu b3BlcmFuZHNbMF0pKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTSVpFT0ZfRVhQUjoKICAgIGNh c2UgQUxJR05PRl9FWFBSOgogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcg IT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAo cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBv dXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCBjb2RlID09IFNJWkVPRl9FWFBS ID8gInNpemVvZiIgOiAiX19hbGlnbm9mX18iKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2Jl Zm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJh c2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwog ICAgICBpZiAoKHRyZWVfY29kZV90eXBlWyhpbnQpICgoKGVudW0gdHJlZV9jb2RlKSAoKChlKS0+ ZXhwLm9wZXJhbmRzWzBdKSktPmNvbW1vbi5jb2RlKSldID09ICd0JykpCiB7CiAgIGRvIHsgb3V0 cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2Uu cGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAoKihwcGkpLT50eXBlX2lkKSAoKHBw aSksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVy ICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25l OyB9IHdoaWxlICgwKTsKIH0KICAgICAgZWxzZQogcHBfY191bmFyeV9leHByZXNzaW9uIChwcGks ICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBicmVhazsKCiAgICBjYXNlIFJFQUxQQVJU X0VYUFI6CiAgICBjYXNlIElNQUdQQVJUX0VYUFI6CiAgICAgIGRvIHsgZG8geyBpZiAoKHBwaSkt PmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i YXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsg fSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGNvZGUg PT0gUkVBTFBBUlRfRVhQUiA/ICJfX3JlYWxfXyIgOiAiX19pbWFnX18iKTsgKHBwaSktPmJhc2Uu cGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9z cGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7 IH0gd2hpbGUgKDApOwogICAgICAoKihwcGkpLT51bmFyeV9leHByZXNzaW9uKSAoKHBwaSksICgo ZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAgICAo KihwcGkpLT5wb3N0Zml4X2V4cHJlc3Npb24pICgocHBpKSwgZSk7CiAgICAgIGJyZWFrOwogICAg fQp9Cgp2b2lkCnBwX2NfY2FzdF9leHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJp bnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgaWYgKCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29t bW9uLmNvZGUpID09IENPTlZFUlRfRVhQUiB8fCAoKGVudW0gdHJlZV9jb2RlKSAoZSktPmNvbW1v bi5jb2RlKSA9PSBGTE9BVF9FWFBSKQogICAgewogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFj dGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9u b25lOyB9IHdoaWxlICgwKTsKICAgICAgKCoocHBpKS0+dHlwZV9pZCkgKChwcGkpLCAoKGUpLT5j b21tb24udHlwZSkpOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFz ZS5idWZmZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw KTsKICAgICAgcHBfY19jYXN0X2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzBd KSk7CiAgICB9CiAgZWxzZQogICAgKCoocHBpKS0+dW5hcnlfZXhwcmVzc2lvbikgKChwcGkpLCBl KTsKfQoKc3RhdGljIHZvaWQKcHBfY19tdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIChwcGksIGUp CiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgZW51bSB0cmVlX2Nv ZGUgY29kZSA9ICgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpOwogIHN3aXRjaCAo Y29kZSkKICAgIHsKICAgIGNhc2UgTVVMVF9FWFBSOgogICAgY2FzZSBUUlVOQ19ESVZfRVhQUjoK ICAgIGNhc2UgVFJVTkNfTU9EX0VYUFI6CiAgICAgIHBwX2NfbXVsdGlwbGljYXRpdmVfZXhwcmVz c2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRk X3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9u ZTsgfSB3aGlsZSAoMCk7CiAgICAgIGlmIChjb2RlID09IE1VTFRfRVhQUikKIG91dHB1dF9hZGRf Y2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcqJyk7CiAgICAgIGVsc2UgaWYgKGNvZGUg PT0gVFJVTkNfRElWX0VYUFIpCiBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVm ZmVyLCAnLycpOwogICAgICBlbHNlCiBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu YnVmZmVyLCAnJScpOwogICAgICBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1 ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAg cHBfY19jYXN0X2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICAg IGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHBwX2NfY2FzdF9leHByZXNzaW9uIChwcGksIGUp OwogICAgICBicmVhazsKICAgIH0KfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2FkZGl0 aXZlX2V4cHJlc3Npb24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0 cmVlIGU7CnsKICBlbnVtIHRyZWVfY29kZSBjb2RlID0gKChlbnVtIHRyZWVfY29kZSkgKGUpLT5j b21tb24uY29kZSk7CiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBQTFVTX0VYUFI6CiAg ICBjYXNlIE1JTlVTX0VYUFI6CiAgICAgIHBwX2NfYWRkaXRpdmVfZXhwcmVzc2lvbiAocHBpLCAo KGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBp KS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAo MCk7CiAgICAgIGlmIChjb2RlID09IFBMVVNfRVhQUikKIG91dHB1dF9hZGRfY2hhcmFjdGVyICgo cHBpKS0+YmFzZS5idWZmZXIsICcrJyk7CiAgICAgIGVsc2UKIG91dHB1dF9hZGRfY2hhcmFjdGVy ICgocHBpKS0+YmFzZS5idWZmZXIsICctJyk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAo KHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hp bGUgKDApOwogICAgICAoKihwcGkpLT5tdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uKSAoKHBwaSks ICgoZSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBicmVhazsKCiAgICBkZWZhdWx0OgogICAg ICAoKihwcGkpLT5tdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uKSAoKHBwaSksIGUpOwogICAgICBi cmVhazsKICAgIH0KfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX3NoaWZ0X2V4cHJlc3Np b24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBl bnVtIHRyZWVfY29kZSBjb2RlID0gKChlbnVtIHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSk7 CiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBMU0hJRlRfRVhQUjoKICAgIGNhc2UgUlNI SUZUX0VYUFI6CiAgICAgIHBwX2Nfc2hpZnRfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3Bl cmFuZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZm ZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91 dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGNvZGUgPT0gTFNISUZUX0VYUFIg PyAiPDwiIDogIj4+Iik7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2Uu YnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAg ICBwcF9jX2FkZGl0aXZlX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7 CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHBwX2NfYWRkaXRpdmVfZXhwcmVzc2lv biAocHBpLCBlKTsKICAgIH0KfQoKc3RhdGljIHZvaWQKcHBfY19yZWxhdGlvbmFsX2V4cHJlc3Np b24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBl bnVtIHRyZWVfY29kZSBjb2RlID0gKChlbnVtIHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSk7 CiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBMVF9FWFBSOgogICAgY2FzZSBHVF9FWFBS OgogICAgY2FzZSBMRV9FWFBSOgogICAgY2FzZSBHRV9FWFBSOgogICAgICBwcF9jX3JlbGF0aW9u YWxfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBv dXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5n ID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIGlmIChjb2RlID09IExUX0VYUFIpCiBvdXRw dXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnPCcpOwogICAgICBlbHNlIGlm IChjb2RlID09IEdUX0VYUFIpCiBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVm ZmVyLCAnPicpOwogICAgICBlbHNlIGlmIChjb2RlID09IExFX0VYUFIpCiBvdXRwdXRfYWRkX3N0 cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAiPD0iKTsKICAgICAgZWxzZSBpZiAoY29kZSA9PSBH RV9FWFBSKQogb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIj49Iik7CiAg ICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJh c2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9jX3NoaWZ0X2V4cHJl c3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICAgIGJyZWFrOwoKICAgIGRl ZmF1bHQ6CiAgICAgIHBwX2Nfc2hpZnRfZXhwcmVzc2lvbiAocHBpLCBlKTsKICAgICAgYnJlYWs7 CiAgICB9Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19lcXVhbGl0eV9leHByZXNzaW9u IChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgZW51 bSB0cmVlX2NvZGUgY29kZSA9ICgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpOwog IHN3aXRjaCAoY29kZSkKICAgIHsKICAgIGNhc2UgRVFfRVhQUjoKICAgIGNhc2UgTkVfRVhQUjoK ICAgICAgcHBfY19lcXVhbGl0eV9leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1sw XSkpOwogICAgICBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsg b3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGlu ZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKICAgICAgb3V0cHV0X2FkZF9z dHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgY29kZSA9PSBFUV9FWFBSID8gIj09IiA6ICIhPSIp OwogICAgICBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkp LT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19yZWxhdGlv bmFsX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICAgIGJyZWFr OwoKICAgIGRlZmF1bHQ6CiAgICAgIHBwX2NfcmVsYXRpb25hbF9leHByZXNzaW9uIChwcGksIGUp OwogICAgICBicmVhazsKICAgIH0KfQoKc3RhdGljIF9faW5saW5lX18gdm9pZApwcF9jX2FuZF9l eHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBl Owp7CiAgaWYgKCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpID09IEJJVF9BTkRf RVhQUikKICAgIHsKICAgICAgcHBfY19hbmRfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3Bl cmFuZHNbMF0pKTsKICAgICAgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25l KSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNl LnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1 dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcmJyk7CiAgICAgIGRvIHsgb3V0 cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9 IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9jX2VxdWFsaXR5X2V4cHJlc3Npb24gKHBw aSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICB9CiAgZWxzZQogICAgcHBfY19lcXVhbGl0 eV9leHByZXNzaW9uIChwcGksIGUpOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCnBwX2NfZXhj bHVzaXZlX29yX2V4cHJlc3Npb24gKHBwaSwgZSkKICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsK ICAgICB0cmVlIGU7CnsKICBpZiAoKChlbnVtIHRyZWVfY29kZSkgKGUpLT5jb21tb24uY29kZSkg PT0gQklUX1hPUl9FWFBSKQogICAgewogICAgICBwcF9jX2V4Y2x1c2l2ZV9vcl9leHByZXNzaW9u IChwcGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBkbyB7IGlmICgocHBpKS0+YmFz ZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2Uu YnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdo aWxlICgwKTsKICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwg J14nKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAo cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIHBwX2NfYW5k X2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICB9CiAgZWxzZQog ICAgcHBfY19hbmRfZXhwcmVzc2lvbiAocHBpLCBlKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9p ZApwcF9jX2luY2x1c2l2ZV9vcl9leHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJp bnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgaWYgKCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29t bW9uLmNvZGUpID09IEJJVF9JT1JfRVhQUikKICAgIHsKICAgICAgcHBfY19leGNsdXNpdmVfb3Jf ZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBpZiAo KHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChw cGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFz ZS5idWZmZXIsICd8Jyk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2Uu YnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAg ICBwcF9jX2V4Y2x1c2l2ZV9vcl9leHByZXNzaW9uIChwcGksICgoZSktPmV4cC5vcGVyYW5kc1sx XSkpOwogICAgfQogIGVsc2UKICAgIHBwX2NfZXhjbHVzaXZlX29yX2V4cHJlc3Npb24gKHBwaSwg ZSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKcHBfY19sb2dpY2FsX2FuZF9leHByZXNzaW9u IChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBlOwp7CiAgaWYg KCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpID09IFRSVVRIX0FORElGX0VYUFIp CiAgICB7CiAgICAgIHBwX2NfbG9naWNhbF9hbmRfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAu b3BlcmFuZHNbMF0pKTsKICAgICAgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9u b25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5i YXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiAgICAgIG91 dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICImJiIpOwogICAgICBkbyB7IG91 dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcg PSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19pbmNsdXNpdmVfb3JfZXhwcmVzc2lv biAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsKICAgIH0KICBlbHNlCiAgICBwcF9jX2lu Y2x1c2l2ZV9vcl9leHByZXNzaW9uIChwcGksIGUpOwp9Cgp2b2lkCnBwX2NfbG9naWNhbF9vcl9l eHByZXNzaW9uIChwcGksIGUpCiAgICAgY19wcmV0dHlfcHJpbnRlciBwcGk7CiAgICAgdHJlZSBl Owp7CiAgaWYgKCgoZW51bSB0cmVlX2NvZGUpIChlKS0+Y29tbW9uLmNvZGUpID09IFRSVVRIX09S SUZfRVhQUikKICAgIHsKICAgICAgcHBfY19sb2dpY2FsX29yX2V4cHJlc3Npb24gKHBwaSwgKChl KS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcg IT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAo cHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwog ICAgICBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAifHwiKTsKICAgICAg ZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5w YWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIHBwX2NfbG9naWNhbF9hbmRfZXhw cmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsKICAgIH0KICBlbHNlCiAgICBw cF9jX2xvZ2ljYWxfYW5kX2V4cHJlc3Npb24gKHBwaSwgZSk7Cn0KCnN0YXRpYyB2b2lkCnBwX2Nf Y29uZGl0aW9uYWxfZXhwcmVzc2lvbiAocHBpLCBlKQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHBp OwogICAgIHRyZWUgZTsKewogIGlmICgoKGVudW0gdHJlZV9jb2RlKSAoZSktPmNvbW1vbi5jb2Rl KSA9PSBDT05EX0VYUFIpCiAgICB7CiAgICAgIHBwX2NfbG9naWNhbF9vcl9leHByZXNzaW9uIChw cGksICgoZSktPmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBkbyB7IGlmICgocHBpKS0+YmFzZS5w YWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVm ZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxl ICgwKTsKICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJz8n KTsKICAgICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBp KS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgIHBwX2NfZXhwcmVz c2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMV0pKTsKICAgICAgZG8geyBpZiAoKHBwaSkt PmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i YXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsg fSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm ZXIsICc6Jyk7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVy KTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9j X2NvbmRpdGlvbmFsX2V4cHJlc3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzJdKSk7CiAg ICB9CiAgZWxzZQogICAgcHBfY19sb2dpY2FsX29yX2V4cHJlc3Npb24gKHBwaSwgZSk7Cn0KCgoK c3RhdGljIHZvaWQKcHBfY19hc3NpZ25tZW50X2V4cHJlc3Npb24gKHBwaSwgZSkKICAgICBjX3By ZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIGU7CnsKICBpZiAoKChlbnVtIHRyZWVfY29kZSkg KGUpLT5jb21tb24uY29kZSkgPT0gTU9ESUZZX0VYUFIgfHwgKChlbnVtIHRyZWVfY29kZSkgKGUp LT5jb21tb24uY29kZSkgPT0gSU5JVF9FWFBSKQogICAgewogICAgICBwcF9jX3VuYXJ5X2V4cHJl c3Npb24gKHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIGRvIHsgaWYgKChwcGkp LT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+ YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7 IH0gd2hpbGUgKDApOwogICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVm ZmVyLCAnPScpOwogICAgICBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOwog ICAgICBwcF9jX2Fzc2lnbm1lbnRfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNb MV0pKTsKICAgIH0KICBlbHNlCiAgICBwcF9jX2NvbmRpdGlvbmFsX2V4cHJlc3Npb24gKHBwaSwg ZSk7Cn0KCgp2b2lkCnBwX2NfZXhwcmVzc2lvbiAocHBpLCBlKQogICAgIGNfcHJldHR5X3ByaW50 ZXIgcHBpOwogICAgIHRyZWUgZTsKewogIHN3aXRjaCAoKChlbnVtIHRyZWVfY29kZSkgKGUpLT5j b21tb24uY29kZSkpCiAgICB7CiAgICBjYXNlIElOVEVHRVJfQ1NUOgogICAgICBwcF9jX2ludGVn ZXJfbGl0ZXJhbCAocHBpLCBlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBSRUFMX0NTVDoKICAg ICAgcHBfY19yZWFsX2xpdGVyYWwgKHBwaSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1RS SU5HX0NTVDoKICAgICAgcHBfY19zdHJpbmdfbGl0ZXJhbCAocHBpLCBlKTsKICAgICAgYnJlYWs7 CgogICAgY2FzZSBGVU5DVElPTl9ERUNMOgogICAgY2FzZSBWQVJfREVDTDoKICAgIGNhc2UgQ09O U1RfREVDTDoKICAgIGNhc2UgUEFSTV9ERUNMOgogICAgY2FzZSBSRVNVTFRfREVDTDoKICAgIGNh c2UgRklFTERfREVDTDoKICAgIGNhc2UgTEFCRUxfREVDTDoKICAgIGNhc2UgRVJST1JfTUFSSzoK ICAgIGNhc2UgVEFSR0VUX0VYUFI6CiAgICBjYXNlIFNUTVRfRVhQUjoKICAgICAgcHBfY19wcmlt YXJ5X2V4cHJlc3Npb24gKHBwaSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgUE9TVElOQ1JF TUVOVF9FWFBSOgogICAgY2FzZSBQT1NUREVDUkVNRU5UX0VYUFI6CiAgICBjYXNlIEFSUk9XX0VY UFI6CiAgICBjYXNlIEFSUkFZX1JFRjoKICAgIGNhc2UgQ0FMTF9FWFBSOgogICAgY2FzZSBDT01Q T05FTlRfUkVGOgogICAgY2FzZSBDT01QTEVYX0NTVDoKICAgIGNhc2UgVkVDVE9SX0NTVDoKICAg IGNhc2UgQUJTX0VYUFI6CiAgICBjYXNlIEZGU19FWFBSOgogICAgY2FzZSBDT05TVFJVQ1RPUjoK ICAgIGNhc2UgQ09NUE9VTkRfTElURVJBTF9FWFBSOgogICAgY2FzZSBDT01QTEVYX0VYUFI6CiAg ICBjYXNlIFZBX0FSR19FWFBSOgogICAgICBwcF9jX3Bvc3RmaXhfZXhwcmVzc2lvbiAocHBpLCBl KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBDT05KX0VYUFI6CiAgICBjYXNlIEFERFJfRVhQUjoK ICAgIGNhc2UgSU5ESVJFQ1RfUkVGOgogICAgY2FzZSBORUdBVEVfRVhQUjoKICAgIGNhc2UgQklU X05PVF9FWFBSOgogICAgY2FzZSBUUlVUSF9OT1RfRVhQUjoKICAgIGNhc2UgUFJFSU5DUkVNRU5U X0VYUFI6CiAgICBjYXNlIFBSRURFQ1JFTUVOVF9FWFBSOgogICAgY2FzZSBTSVpFT0ZfRVhQUjoK ICAgIGNhc2UgQUxJR05PRl9FWFBSOgogICAgY2FzZSBSRUFMUEFSVF9FWFBSOgogICAgY2FzZSBJ TUFHUEFSVF9FWFBSOgogICAgICBwcF9jX3VuYXJ5X2V4cHJlc3Npb24gKHBwaSwgZSk7CiAgICAg IGJyZWFrOwoKICAgIGNhc2UgQ09OVkVSVF9FWFBSOgogICAgY2FzZSBGTE9BVF9FWFBSOgogICAg ICBwcF9jX2Nhc3RfZXhwcmVzc2lvbiAocHBpLCBlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBN VUxUX0VYUFI6CiAgICBjYXNlIFRSVU5DX01PRF9FWFBSOgogICAgY2FzZSBUUlVOQ19ESVZfRVhQ UjoKICAgICAgcHBfY19tdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIChwcGksIGUpOwogICAgICBi cmVhazsKCiAgICBjYXNlIExTSElGVF9FWFBSOgogICAgY2FzZSBSU0hJRlRfRVhQUjoKICAgICAg cHBfY19zaGlmdF9leHByZXNzaW9uIChwcGksIGUpOwogICAgICBicmVhazsKCiAgICBjYXNlIExU X0VYUFI6CiAgICBjYXNlIEdUX0VYUFI6CiAgICBjYXNlIExFX0VYUFI6CiAgICBjYXNlIEdFX0VY UFI6CiAgICAgIHBwX2NfcmVsYXRpb25hbF9leHByZXNzaW9uIChwcGksIGUpOwogICAgICBicmVh azsKCiAgICBjYXNlIEJJVF9BTkRfRVhQUjoKICAgICAgcHBfY19hbmRfZXhwcmVzc2lvbiAocHBp LCBlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBCSVRfWE9SX0VYUFI6CiAgICAgIHBwX2NfZXhj bHVzaXZlX29yX2V4cHJlc3Npb24gKHBwaSwgZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgQklU X0lPUl9FWFBSOgogICAgICBwcF9jX2luY2x1c2l2ZV9vcl9leHByZXNzaW9uIChwcGksIGUpOwog ICAgICBicmVhazsKCiAgICBjYXNlIFRSVVRIX0FORElGX0VYUFI6CiAgICAgIHBwX2NfbG9naWNh bF9hbmRfZXhwcmVzc2lvbiAocHBpLCBlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBUUlVUSF9P UklGX0VYUFI6CiAgICAgIHBwX2NfbG9naWNhbF9vcl9leHByZXNzaW9uIChwcGksIGUpOwogICAg ICBicmVhazsKCiAgICBjYXNlIENPTkRfRVhQUjoKICAgICAgcHBfY19jb25kaXRpb25hbF9leHBy ZXNzaW9uIChwcGksIGUpOwogICAgICBicmVhazsKCiAgICBjYXNlIE1PRElGWV9FWFBSOgogICAg Y2FzZSBJTklUX0VYUFI6CiAgICAgIHBwX2NfYXNzaWdubWVudF9leHByZXNzaW9uIChwcGksIGUp OwogICAgICBicmVhazsKCiAgICBjYXNlIE5PUF9FWFBSOgogICAgICBwcF9jX2V4cHJlc3Npb24g KHBwaSwgKChlKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgQ09N UE9VTkRfRVhQUjoKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2Uu YnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7 CiAgICAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCAoKGUpLT5leHAub3BlcmFuZHNbMF0pKTsKICAg ICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnLCcpOyBv dXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICAg KCoocHBpKS0+YXNzaWdubWVudF9leHByZXNzaW9uKSAoKHBwaSksICgoZSktPmV4cC5vcGVyYW5k c1sxXSkpOwogICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm ZXIsICcpJyk7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAg ICAgYnJlYWs7CgoKICAgIGRlZmF1bHQ6CiAgICAgIG91dHB1dF92ZXJiYXRpbSAoKHBwaSktPmJh c2UuYnVmZmVyLCAiI2Alcycgbm90IHN1cHBvcnRlZCBieSAlcyMiLCB0cmVlX2NvZGVfbmFtZVso aW50KSAoKGVudW0gdHJlZV9jb2RlKSAoZSktPmNvbW1vbi5jb2RlKV0sIF9fRlVOQ1RJT05fXyk7 CiAgICAgIGJyZWFrOwogICAgfQp9CgoKCnZvaWQKcHBfY19zdGF0ZW1lbnQgKHBwaSwgc3RtdCkK ICAgICBjX3ByZXR0eV9wcmludGVyIHBwaTsKICAgICB0cmVlIHN0bXQ7CnsKICBjb25zdCBlbnVt IHRyZWVfY29kZSBjb2RlID0gKChlbnVtIHRyZWVfY29kZSkgKHN0bXQpLT5jb21tb24uY29kZSk7 CiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBMQUJFTF9TVE1UOgogICAgY2FzZSBDQVNF X0xBQkVMOgogICAgICBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7CiAg ICAgIGlmIChjb2RlID09IExBQkVMX1NUTVQpCiBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJh c2UuYnVmZmVyLCAoKGNvbnN0IGNoYXIgKikgKCgoKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbMF0p KS0+ZGVjbC5uYW1lKSktPmlkZW50aWZpZXIuaWQuc3RyKSk7CiAgICAgIGVsc2UgaWYgKGNvZGUg PT0gTEFCRUxfU1RNVCkKIHsKICAgaWYgKCgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKSA9PSAo dHJlZSkgKCh2b2lkICopMCkpCiAgICAgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1 ZmZlciwgImRlZmF1bHQiKTsKICAgZWxzZQogICAgIHsKICAgICAgIGRvIHsgZG8geyBpZiAoKHBw aSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkp LT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJj YXNlIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAg ICAgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFz ZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAgICAgICAoKihwcGkpLT5jb25kaXRp b25hbF9leHByZXNzaW9uKSAoKHBwaSksICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAg ICAgICBpZiAoKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbMV0pKQogIHsKICAgIG91dHB1dF9hZGRf c3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICIuLi4iKTsKICAgICgqKHBwaSktPmNvbmRpdGlv bmFsX2V4cHJlc3Npb24pICgocHBpKSwgKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbMV0pKTsKICB9 CiAgICAgfQogfQogICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVy LCAnOicpOwogICAgICBkbyB7ICgocHBpKS0+YmFzZS5idWZmZXIpLT5zdGF0ZS5pbmRlbnRfc2tp cCArPSAzOyBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUg KDApOwogICAgICBicmVhazsKCiAgICBjYXNlIENPTVBPVU5EX1NUTVQ6CiAgICAgIG91dHB1dF9h ZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd7Jyk7CiAgICAgIGRvIHsgKChwcGkp LT5iYXNlLmJ1ZmZlciktPnN0YXRlLmluZGVudF9za2lwICs9IDM7IG91dHB1dF9hZGRfbmV3bGlu ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgIGZvciAoc3RtdCA9ICgo KHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKTsgc3RtdDsgc3RtdCA9ICgoc3RtdCktPmNvbW1vbi5j aGFpbikpCiBwcF9jX3N0YXRlbWVudCAocHBpLCBzdG10KTsKICAgICAgZG8geyAoKHBwaSktPmJh c2UuYnVmZmVyKS0+c3RhdGUuaW5kZW50X3NraXAgKz0gLTM7IG91dHB1dF9hZGRfbmV3bGluZSAo KHBwaSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFj dGVyICgocHBpKS0+YmFzZS5idWZmZXIsICd9Jyk7CiAgICAgIG91dHB1dF9hZGRfbmV3bGluZSAo KHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBFWFBSX1NUTVQ6CiAg ICBjYXNlIENMRUFOVVBfU1RNVDoKICAgICAgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFz ZS5idWZmZXIpOwogICAgICBwcF9jX2V4cHJlc3Npb24gKHBwaSwgY29kZSA9PSBFWFBSX1NUTVQK ICAgICAgICAgPyAoKChzdG10KSktPmV4cC5vcGVyYW5kc1swXSkKICAgICAgICAgOiAoKChzdG10 KSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSkt PmJhc2UuYnVmZmVyLCAnOycpOwogICAgICBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNl LmJ1ZmZlcik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgSUZfU1RNVDoKICAgICAgZG8geyBkbyB7 IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFj ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0g d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1 ZmZlciwgImlmIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDAp OwogICAgICBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAgICBkbyB7 IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChwcGkpLT5i YXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19leHByZXNzaW9u IChwcGksICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIG91dHB1dF9hZGRfY2hh cmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7CiAgICAgIGRvIHsgKChwcGkpLT5iYXNl LmJ1ZmZlciktPnN0YXRlLmluZGVudF9za2lwICs9IDM7IG91dHB1dF9hZGRfbmV3bGluZSAoKHBw aSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgICgqKHBwaSktPnN0YXRlbWVudCkg KChwcGkpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBkbyB7ICgocHBpKS0+ YmFzZS5idWZmZXIpLT5zdGF0ZS5pbmRlbnRfc2tpcCArPSAtMzsgb3V0cHV0X2FkZF9uZXdsaW5l ICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICAgaWYgKCgoKHN0bXQpKS0+ ZXhwLm9wZXJhbmRzWzJdKSkKIHsKICAgdHJlZSBlbHNlX2NsYXVzZSA9ICgoKHN0bXQpKS0+ZXhw Lm9wZXJhbmRzWzJdKTsKICAgZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBw X25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSkt PmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0 X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgImVsc2UiKTsgKHBwaSktPmJhc2UucGFk ZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgIGlmICgoKGVudW0gdHJlZV9jb2RlKSAo ZWxzZV9jbGF1c2UpLT5jb21tb24uY29kZSkgPT0gSUZfU1RNVCkKICAgICBkbyB7IG91dHB1dF9h ZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9u b25lOyB9IHdoaWxlICgwKTsKICAgZWxzZQogICAgIGRvIHsgKChwcGkpLT5iYXNlLmJ1ZmZlcikt PnN0YXRlLmluZGVudF9za2lwICs9IDM7IG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJhc2Uu YnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICgqKHBwaSktPnN0YXRlbWVudCkgKChwcGkpLCBlbHNl X2NsYXVzZSk7CiAgIGlmICgoKGVudW0gdHJlZV9jb2RlKSAoZWxzZV9jbGF1c2UpLT5jb21tb24u Y29kZSkgIT0gSUZfU1RNVCkKICAgICBkbyB7ICgocHBpKS0+YmFzZS5idWZmZXIpLT5zdGF0ZS5p bmRlbnRfc2tpcCArPSAtMzsgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIp OyB9IHdoaWxlICgwKTsKIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSBTV0lUQ0hfU1RNVDoKICAg ICAgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAgICBkbyB7IGRv IHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3Nw YWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsg fSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2Uu YnVmZmVyLCAic3dpdGNoIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hp bGUgKDApOwogICAgICBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAg ICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcoJyk7IChw cGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsKICAgICAgcHBfY19leHBy ZXNzaW9uIChwcGksICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBdKSk7CiAgICAgIG91dHB1dF9h ZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICcpJyk7CiAgICAgIGRvIHsgKChwcGkp LT5iYXNlLmJ1ZmZlciktPnN0YXRlLmluZGVudF9za2lwICs9IDM7IG91dHB1dF9hZGRfbmV3bGlu ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgICgqKHBwaSktPnN0YXRl bWVudCkgKChwcGkpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBkbyB7ICgo cHBpKS0+YmFzZS5idWZmZXIpLT5zdGF0ZS5pbmRlbnRfc2tpcCArPSAtMzsgb3V0cHV0X2FkZF9u ZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICAgYnJlYWs7Cgog ICAgY2FzZSBXSElMRV9TVE1UOgogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRp bmcgIT0gcHBfbm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIp OyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDAp OyBvdXRwdXRfYWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAid2hpbGUiKTsgKHBwaSkt PmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRf c3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0 ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25v bmU7IH0gd2hpbGUgKDApOwogICAgICBwcF9jX2V4cHJlc3Npb24gKHBwaSwgKCgoc3RtdCkpLT5l eHAub3BlcmFuZHNbMF0pKTsKICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNl LmJ1ZmZlciwgJyknKTsKICAgICAgZG8geyAoKHBwaSktPmJhc2UuYnVmZmVyKS0+c3RhdGUuaW5k ZW50X3NraXAgKz0gMzsgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOyB9 IHdoaWxlICgwKTsKICAgICAgKCoocHBpKS0+c3RhdGVtZW50KSAoKHBwaSksICgoKHN0bXQpKS0+ ZXhwLm9wZXJhbmRzWzFdKSk7CiAgICAgIGRvIHsgKChwcGkpLT5iYXNlLmJ1ZmZlciktPnN0YXRl LmluZGVudF9za2lwICs9IC0zOyBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZl cik7IH0gd2hpbGUgKDApOwogICAgICBicmVhazsKCiAgICBjYXNlIERPX1NUTVQ6CiAgICAgIGRv IHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9h ZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9u b25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+ YmFzZS5idWZmZXIsICJkbyIpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdo aWxlICgwKTsKICAgICAgZG8geyAoKHBwaSktPmJhc2UuYnVmZmVyKS0+c3RhdGUuaW5kZW50X3Nr aXAgKz0gMzsgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxl ICgwKTsKICAgICAgKCoocHBpKS0+c3RhdGVtZW50KSAoKHBwaSksICgoKHN0bXQpKS0+ZXhwLm9w ZXJhbmRzWzFdKSk7CiAgICAgIGRvIHsgKChwcGkpLT5iYXNlLmJ1ZmZlciktPnN0YXRlLmluZGVu dF9za2lwICs9IC0zOyBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0g d2hpbGUgKDApOwogICAgICBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBf bm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+ YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRf YWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCAid2hpbGUiKTsgKHBwaSktPmJhc2UucGFk ZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfc3BhY2UgKChw cGkpLT5iYXNlLmJ1ZmZlcik7CiAgICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkp LT5iYXNlLmJ1ZmZlciwgJygnKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hp bGUgKDApOwogICAgICBwcF9jX2V4cHJlc3Npb24gKHBwaSwgKCgoc3RtdCkpLT5leHAub3BlcmFu ZHNbMF0pKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVm ZmVyLCAnKScpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7CiAg ICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICc7Jyk7CiAgICAg IG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgYnJlYWs7Cgog ICAgY2FzZSBGT1JfU1RNVDoKICAgICAgZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5n ICE9IHBwX25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsg KHBwaSktPmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsg b3V0cHV0X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgImZvciIpOyAocHBpKS0+YmFz ZS5wYWRkaW5nID0gcHBfYmVmb3JlOyB9IHdoaWxlICgwKTsKICAgICAgb3V0cHV0X2FkZF9zcGFj ZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAo KHBwaSktPmJhc2UuYnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsg fSB3aGlsZSAoMCk7CiAgICAgICgqKHBwaSktPnN0YXRlbWVudCkgKChwcGkpLCAoKChzdG10KSkt PmV4cC5vcGVyYW5kc1swXSkpOwogICAgICBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i YXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsK ICAgICAgaWYgKCgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzFdKSkKIHBwX2NfZXhwcmVzc2lvbiAo cHBpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1sxXSkpOwogICAgICBvdXRwdXRfYWRkX2NoYXJh Y3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnOycpOwogICAgICBkbyB7IG91dHB1dF9hZGRfc3Bh Y2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9 IHdoaWxlICgwKTsKICAgICAgaWYgKCgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzJdKSkKIHBwX2Nf ZXhwcmVzc2lvbiAocHBpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1syXSkpOwogICAgICBvdXRw dXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnKScpOwogICAgICBkbyB7ICgo cHBpKS0+YmFzZS5idWZmZXIpLT5zdGF0ZS5pbmRlbnRfc2tpcCArPSAzOyBvdXRwdXRfYWRkX25l d2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUgKDApOwogICAgICAoKihwcGkpLT5z dGF0ZW1lbnQpICgocHBpKSwgKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbM10pKTsKICAgICAgZG8g eyAoKHBwaSktPmJhc2UuYnVmZmVyKS0+c3RhdGUuaW5kZW50X3NraXAgKz0gLTM7IG91dHB1dF9h ZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgfSB3aGlsZSAoMCk7CiAgICAgIGJyZWFr OwoKICAgIGNhc2UgQlJFQUtfU1RNVDoKICAgIGNhc2UgQ09OVElOVUVfU1RNVDoKICAgICAgb3V0 cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAgICBvdXRwdXRfYWRkX3N0 cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCBjb2RlID09IEJSRUFLX1NUTVQgPyAiYnJlYWsiIDog ImNvbnRpbnVlIik7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm ZXIsICc7Jyk7CiAgICAgIG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsK ICAgICAgYnJlYWs7CgogICAgY2FzZSBSRVRVUk5fU1RNVDoKICAgIGNhc2UgR09UT19TVE1UOgog ICAgICB7CiB0cmVlIGUgPSBjb2RlID09IFJFVFVSTl9TVE1UCiAgID8gKCgoc3RtdCkpLT5leHAu b3BlcmFuZHNbMF0pCiAgIDogKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbMF0pOwoKIG91dHB1dF9h ZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKIGRvIHsgZG8geyBpZiAoKHBwaSktPmJh c2UucGFkZGluZyAhPSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNl LmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3 aGlsZSAoMCk7IG91dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsIGNvZGUgPT0g UkVUVVJOX1NUTVQgPyAicmV0dXJuIiA6ICJnb3RvIik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBw cF9iZWZvcmU7IH0gd2hpbGUgKDApOwogaWYgKGUpCiAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCBl KTsKIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICc7Jyk7CiBvdXRw dXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7CiAgICAgIH0KICAgICAgYnJlYWs7 CgogICAgY2FzZSBTQ09QRV9TVE1UOgogICAgICBpZiAoISgoKCgoKHN0bXQpKSktPmV4cC5vcGVy YW5kc1swXSkpID09ICh0cmVlKSAoKHZvaWQgKikwKSkgJiYgKCgoKHN0bXQpKS0+Y29tbW9uLmxh bmdfZmxhZ18zKSkpCiB7CiAgIGlmICgoKCgoc3RtdCkpLT5jb21tb24ubGFuZ19mbGFnXzApKSkK ICAgICB7CiAgICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAn eycpOwogICAgICAgZG8geyAoKHBwaSktPmJhc2UuYnVmZmVyKS0+c3RhdGUuaW5kZW50X3NraXAg Kz0gMzsgb3V0cHV0X2FkZF9uZXdsaW5lICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgw KTsKICAgICB9CiAgIGVsc2UgaWYgKCghKCgoKChzdG10KSkpLT5jb21tb24ubGFuZ19mbGFnXzAp KSkpCiAgICAgewogICAgICAgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZl ciwgJ30nKTsKICAgICAgIGRvIHsgKChwcGkpLT5iYXNlLmJ1ZmZlciktPnN0YXRlLmluZGVudF9z a2lwICs9IC0zOyBvdXRwdXRfYWRkX25ld2xpbmUgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hp bGUgKDApOwogICAgIH0KIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSBERUNMX1NUTVQ6CiAgICAg ICgqKHBwaSktPmRlY2xhcmF0aW9uKSAoKHBwaSksICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzBd KSk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZmZXIsICc7Jyk7 CiAgICAgIG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgYnJl YWs7CgogICAgY2FzZSBBU01fU1RNVDoKICAgICAgewogX0Jvb2wgaGFzX3ZvbGF0aWxlX3AgPSAo KCgoKHN0bXQpKSktPmV4cC5vcGVyYW5kc1swXSkgIT0gKHRyZWUpICgodm9pZCAqKTApKTsKIF9C b29sIGlzX2V4dGVuZGVkID0gaGFzX3ZvbGF0aWxlX3AgfHwgKCgoc3RtdCkpLT5leHAub3BlcmFu ZHNbM10pCiAgIHx8ICgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzJdKSB8fCAoKChzdG10KSktPmV4 cC5vcGVyYW5kc1s0XSk7CiBkbyB7IGRvIHsgaWYgKChwcGkpLT5iYXNlLnBhZGRpbmcgIT0gcHBf bm9uZSkgZG8geyBvdXRwdXRfYWRkX3NwYWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyAocHBpKS0+ YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBvdXRwdXRf YWRkX3N0cmluZyAoKHBwaSktPmJhc2UuYnVmZmVyLCBpc19leHRlbmRlZCA/ICJfX2FzbV9fIiA6 ICJhc20iKTsgKHBwaSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiBp ZiAoaGFzX3ZvbGF0aWxlX3ApCiAgIGRvIHsgZG8geyBpZiAoKHBwaSktPmJhc2UucGFkZGluZyAh PSBwcF9ub25lKSBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IChw cGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IG91 dHB1dF9hZGRfc3RyaW5nICgocHBpKS0+YmFzZS5idWZmZXIsICJfX3ZvbGF0aWxlX18iKTsgKHBw aSktPmJhc2UucGFkZGluZyA9IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiBvdXRwdXRfYWRkX3Nw YWNlICgocHBpKS0+YmFzZS5idWZmZXIpOwogZG8geyBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBw aSktPmJhc2UuYnVmZmVyLCAnKCcpOyAocHBpKS0+YmFzZS5wYWRkaW5nID0gcHBfbm9uZTsgfSB3 aGlsZSAoMCk7CiBwcF9jX3N0cmluZ19saXRlcmFsIChwcGksICgoKHN0bXQpKS0+ZXhwLm9wZXJh bmRzWzFdKSk7CiBpZiAoaXNfZXh0ZW5kZWQpCiAgIHsKICAgICBvdXRwdXRfYWRkX3NwYWNlICgo cHBpKS0+YmFzZS5idWZmZXIpOwogICAgIGRvIHsgb3V0cHV0X2FkZF9jaGFyYWN0ZXIgKChwcGkp LT5iYXNlLmJ1ZmZlciwgJzonKTsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVy KTsgfSB3aGlsZSAoMCk7CiAgICAgaWYgKCgoKHN0bXQpKS0+ZXhwLm9wZXJhbmRzWzJdKSkKICAg ICAgIHBwX2NfZXhwcmVzc2lvbiAocHBpLCAoKChzdG10KSktPmV4cC5vcGVyYW5kc1syXSkpOwog ICAgIG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7CiAgICAgZG8geyBvdXRw dXRfYWRkX2NoYXJhY3RlciAoKHBwaSktPmJhc2UuYnVmZmVyLCAnOicpOyBvdXRwdXRfYWRkX3Nw YWNlICgocHBpKS0+YmFzZS5idWZmZXIpOyB9IHdoaWxlICgwKTsKICAgICBpZiAoKCgoc3RtdCkp LT5leHAub3BlcmFuZHNbM10pKQogICAgICAgcHBfY19leHByZXNzaW9uIChwcGksICgoKHN0bXQp KS0+ZXhwLm9wZXJhbmRzWzNdKSk7CiAgICAgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2Uu YnVmZmVyKTsKICAgICBkbyB7IG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBpKS0+YmFzZS5idWZm ZXIsICc6Jyk7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5iYXNlLmJ1ZmZlcik7IH0gd2hpbGUg KDApOwogICAgIGlmICgoKChzdG10KSktPmV4cC5vcGVyYW5kc1s0XSkpCiAgICAgICBwcF9jX2V4 cHJlc3Npb24gKHBwaSwgKCgoc3RtdCkpLT5leHAub3BlcmFuZHNbNF0pKTsKICAgfQogb3V0cHV0 X2FkZF9jaGFyYWN0ZXIgKChwcGkpLT5iYXNlLmJ1ZmZlciwgJyknKTsKIG91dHB1dF9hZGRfbmV3 bGluZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsKICAgICAgfQogICAgICBicmVhazsKCiAgICBjYXNl IEZJTEVfU1RNVDoKICAgICAgZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBw X25vbmUpIGRvIHsgb3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSkt PmJhc2UucGFkZGluZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0 X2FkZF9zdHJpbmcgKChwcGkpLT5iYXNlLmJ1ZmZlciwgIl9fRklMRV9fIik7IChwcGkpLT5iYXNl LnBhZGRpbmcgPSBwcF9iZWZvcmU7IH0gd2hpbGUgKDApOwogICAgICBvdXRwdXRfYWRkX3NwYWNl ICgocHBpKS0+YmFzZS5idWZmZXIpOwogICAgICBvdXRwdXRfYWRkX2NoYXJhY3RlciAoKHBwaSkt PmJhc2UuYnVmZmVyLCAnPScpOwogICAgICBkbyB7IG91dHB1dF9hZGRfc3BhY2UgKChwcGkpLT5i YXNlLmJ1ZmZlcik7IChwcGkpLT5iYXNlLnBhZGRpbmcgPSBwcF9ub25lOyB9IHdoaWxlICgwKTsK ICAgICAgZG8geyBkbyB7IGlmICgocHBpKS0+YmFzZS5wYWRkaW5nICE9IHBwX25vbmUpIGRvIHsg b3V0cHV0X2FkZF9zcGFjZSAoKHBwaSktPmJhc2UuYnVmZmVyKTsgKHBwaSktPmJhc2UucGFkZGlu ZyA9IHBwX25vbmU7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgb3V0cHV0X2FkZF9zdHJpbmcg KChwcGkpLT5iYXNlLmJ1ZmZlciwgKCgoY29uc3QgY2hhciAqKSAoKCgoKHN0bXQpKS0+ZXhwLm9w ZXJhbmRzWzBdKSkpLT5pZGVudGlmaWVyLmlkLnN0cikpKTsgKHBwaSktPmJhc2UucGFkZGluZyA9 IHBwX2JlZm9yZTsgfSB3aGlsZSAoMCk7CiAgICAgIG91dHB1dF9hZGRfY2hhcmFjdGVyICgocHBp KS0+YmFzZS5idWZmZXIsICc7Jyk7CiAgICAgIG91dHB1dF9hZGRfbmV3bGluZSAoKHBwaSktPmJh c2UuYnVmZmVyKTsKICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAgICAgb3V0cHV0X3ZlcmJh dGltICgocHBpKS0+YmFzZS5idWZmZXIsICIjYCVzJyBub3Qgc3VwcG9ydGVkIGJ5ICVzIyIsIHRy ZWVfY29kZV9uYW1lWyhpbnQpICgoZW51bSB0cmVlX2NvZGUpIChzdG10KS0+Y29tbW9uLmNvZGUp XSwgX19GVU5DVElPTl9fKTsKICAgIH0KCn0KCgoKdm9pZApwcF9jX3ByZXR0eV9wcmludGVyX2lu aXQgKHBwKQogICAgIGNfcHJldHR5X3ByaW50ZXIgcHA7CnsKICBwcC0+b2Zmc2V0X2xpc3QgPSAw OwoKICBwcC0+ZGVjbGFyYXRpb24gPSBwcF9jX2RlY2xhcmF0aW9uOwogIHBwLT5kZWNsYXJhdGlv bl9zcGVjaWZpZXJzID0gcHBfY19kZWNsYXJhdGlvbl9zcGVjaWZpZXJzOwogIHBwLT50eXBlX3Nw ZWNpZmllciA9IHBwX2Nfc2ltcGxlX3R5cGVfc3BlY2lmaWVyOwogIHBwLT5kZWNsYXJhdG9yID0g cHBfY19kZWNsYXJhdG9yOwogIHBwLT5kaXJlY3RfZGVjbGFyYXRvciA9IHBwX2NfZGlyZWN0X2Rl Y2xhcmF0b3I7CiAgcHAtPnBhcmFtZXRlcl9kZWNsYXJhdGlvbiA9IHBwX2NfcGFyYW1ldGVyX2Rl Y2xhcmF0aW9uOwogIHBwLT50eXBlX2lkID0gcHBfY190eXBlX2lkOwoKICBwcC0+c3RhdGVtZW50 ID0gcHBfY19zdGF0ZW1lbnQ7CgogIHBwLT5wcmltYXJ5X2V4cHJlc3Npb24gPSBwcF9jX3ByaW1h cnlfZXhwcmVzc2lvbjsKICBwcC0+cG9zdGZpeF9leHByZXNzaW9uID0gcHBfY19wb3N0Zml4X2V4 cHJlc3Npb247CiAgcHAtPnVuYXJ5X2V4cHJlc3Npb24gPSBwcF9jX3VuYXJ5X2V4cHJlc3Npb247 CiAgcHAtPmluaXRpYWxpemVyID0gcHBfY19pbml0aWFsaXplcjsKICBwcC0+bXVsdGlwbGljYXRp dmVfZXhwcmVzc2lvbiA9IHBwX2NfbXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbjsKICBwcC0+Y29u ZGl0aW9uYWxfZXhwcmVzc2lvbiA9IHBwX2NfY29uZGl0aW9uYWxfZXhwcmVzc2lvbjsKICBwcC0+ YXNzaWdubWVudF9leHByZXNzaW9uID0gcHBfY19hc3NpZ25tZW50X2V4cHJlc3Npb247Cn0K