Received: by 2002:a05:7412:bbc7:b0:fc:a2b0:25d7 with SMTP id kh7csp1298059rdb; Sat, 3 Feb 2024 00:14:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IGcBJx43iKqJb0S+SsJnSQ0AmsxoHnkZG5XldQDnaRmlrFcgOHUNqVSTjDbNNhHxlyaqKFH X-Received: by 2002:a05:6358:d58d:b0:175:c1d8:7c61 with SMTP id ms13-20020a056358d58d00b00175c1d87c61mr10654282rwb.12.1706948045632; Sat, 03 Feb 2024 00:14:05 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706948045; cv=pass; d=google.com; s=arc-20160816; b=Uv/KxiSYy4lR8cudPtogeEDcU79JNg0W1hyYsmnHG/+/HkZIoQmHzHy1oY77Ti/rip CFS5eL3wmPVAZy2Ur/gW997W9/uAZcrmsmAXdx3N7LcLKVnAxaJne8ZNRxrYeijaQCFt ykidNQ+8wG5K5VEDqILfoTSW3MhJ8wS4MDbDJgMqsAtTFJoSBVc8p59OK81lzKf+8mqA cOvhJIYTWxMkggHkzNVbPuGiXLmomvi1ceT8qx/4yrMbsT5jJLfU+NoeNVQKAJHnnyWy JDO2LjLkdXcoPfVcWObkriXxagctnlXlGSwiRWPwauCT10q1cHXu5yv2KhCRCbQCqwvK NT6w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:message-id:reply-to:cc:to:from:date; bh=qgyZ/nzVLcG5NhDe0apD0amlES92lprXPOQ4M5C7dc0=; fh=CSTjJ74EOBocoxZ9zLT8dI2PgFn0f5Uh1/GgnEWh+CA=; b=ZSnW4MjDZA6bL7zKu7/we8PE+GPAfC2S4WuCUuHpJF4plsx2VoBist5ExzsbGMqyt6 aZX5ciHVNC5nmoethKAxmNmnGajfgq50ci7wRLX5z7LvJeWjQ+UpA/Q5gjhGbkK/vTLD MZ97ZnL5iWK8TPi8GwZ3c4++osoSh9Lq6eIhB8rXCyyhYT8Kh9GgtLjeotaPfxaMYA+y CuD1btXVI+DY9ovdYPAA0kjnudVp4aA6+WBJYvPPslFdYFEI77mlqEK7WrVwgfjTqv7X InH0/t/nVMiAUz/bKuDT2JOMR1u/ZQmXSSTkCrFNNYwsAnGqdSbZKTMyWTu4m0KUHEg0 PFfw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-50970-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-50970-linux.lists.archive=gmail.com@vger.kernel.org" X-Forwarded-Encrypted: i=1; AJvYcCUdmha2OcoKrQuVO6hLNkihwNfG7tlzjnjpsRGnPeh4DzcRG6G274EmFXFQqRILphVHa68RI+Mcy2pDwtk4tfsTod1QgPnafFI762YcKQ== Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id cw27-20020a056a00451b00b006dffafb066esi2054267pfb.227.2024.02.03.00.14.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Feb 2024 00:14:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-50970-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-50970-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-50970-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id AECF2B2A4D4 for ; Sat, 3 Feb 2024 07:58:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AE3484EB46; Sat, 3 Feb 2024 07:57:54 +0000 (UTC) Received: from out28-219.mail.aliyun.com (out28-219.mail.aliyun.com [115.124.28.219]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D60374F5F2; Sat, 3 Feb 2024 07:57:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.28.219 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706947071; cv=none; b=IxUKzJIhibuMyou6z5eYYxE02CsgWHyBlEUIvY8BUDMC4iTdhVnvF8Eif9Qd0LcoZDKMnHFHlaeNjptGxXF5ehrqJxcVad5O/WBtPlTXGc0dM45ZQ10jsInCpqUQ8cnqr+wifK+ea+yICEKf6gS88DePHgc0W7pCy4c+xeLHZDM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706947071; c=relaxed/simple; bh=qgyZ/nzVLcG5NhDe0apD0amlES92lprXPOQ4M5C7dc0=; h=Date:From:To:Cc:Message-ID:Subject:MIME-Version:Content-Type; b=cg4h3wsWKuvA6oDyiwM3jTUg6RM82jw4OSIzhc7FHLtA7jtzB/dHyitKOB/cMHTb1P1KrD0fH96pCdBDFP/qK4R72Agy38VZPLE68utasxN4vUjzj3WZzSUbV5s3KcRcJ2ftWg1NjHyYk/cuJ2EKAKK90Cgnp8t4txb0vgxazoc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com; spf=pass smtp.mailfrom=ubisectech.com; arc=none smtp.client-ip=115.124.28.219 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ubisectech.com X-Alimail-AntiSpam:AC=CONTINUE;BC=0.07400068|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.0335505-0.00199894-0.964451;FP=0|0|0|0|0|0|0|0;HT=ay29a033018047205;MF=bugreport@ubisectech.com;NM=1;PH=DW;RN=3;RT=3;SR=0;TI=W4_0.2.3_v5_212513F0_1706943363122_o7001c94t; Received: from WS-web (bugreport@ubisectech.com[W4_0.2.3_v5_212513F0_1706943363122_o7001c94t]) at Sat, 03 Feb 2024 14:56:27 +0800 Date: Sat, 03 Feb 2024 14:56:27 +0800 From: "Ubisectech Sirius" To: "linux-trace-kernel" , "linux-kernel" Cc: "tj" Reply-To: "Ubisectech Sirius" Message-ID: <003e73f8-2be4-43ab-8028-d7e175a957ed.bugreport@ubisectech.com> Subject: =?UTF-8?B?SU5GTzogcmN1IGRldGVjdGVkIHN0YWxsIGluIGlkbGVfY3VsbF9mbg==?= X-Mailer: [Alimail-Mailagent revision 1][W4_0.2.3][v5][Chrome] Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 x-aliyun-mail-creator: W4_0.2.3_v5_M3LTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMS4wLjAuMCBTYWZhcmkvNTM3LjM2vN Content-Type: multipart/mixed; boundary="----=ALIBOUNDARY_25767_7f8a0939e700_65bde39b_52f634" This is a multi-part message in MIME format. ------=ALIBOUNDARY_25767_7f8a0939e700_65bde39b_52f634 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGVsbG8uCldlIGFyZSBVYmlzZWN0ZWNoIFNpcml1cyBUZWFtLCB0aGUgdnVsbmVyYWJpbGl0eSBs YWIgb2YgQ2hpbmEgVmFsaWFudFNlYy4gUmVjZW50bHksIG91ciB0ZWFtIGhhcyBkaXNjb3ZlcmVk IGEgaXNzdWUgaW4gTGludXgga2VybmVsIDYuOC4wLXJjMS1nZWNiMWI4Mjg4ZGM3LiBBdHRhY2hl ZCB0byB0aGUgZW1haWwgd2VyZSBhIFBPQyBmaWxlIG9mIHRoZSBpc3N1ZS4KClN0YWNrIGR1bXA6 CnJjdTogSU5GTzogcmN1X3ByZWVtcHQgZGV0ZWN0ZWQgZXhwZWRpdGVkIHN0YWxscyBvbiBDUFVz L3Rhc2tzOiB7IDEtLi4uLiB9IDI2NDIgamlmZmllcyBzOiAxMTU3IHJvb3Q6IDB4Mi8uCnJjdTog YmxvY2tpbmcgcmN1X25vZGUgc3RydWN0dXJlcyAoaW50ZXJuYWwgUkNVIGRlYnVnKToKU2VuZGlu ZyBOTUkgZnJvbSBDUFUgMCB0byBDUFVzIDE6Ck5NSSBiYWNrdHJhY2UgZm9yIGNwdSAxCkNQVTog MSBQSUQ6IDEwNDYgQ29tbToga3dvcmtlci91Njo1IE5vdCB0YWludGVkIDYuOC4wLXJjMS1nZWNi MWI4Mjg4ZGM3ICMyMQpIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlggKyBQ SUlYLCAxOTk2KSwgQklPUyAxLjE1LjAtMSAwNC8wMS8yMDE0CldvcmtxdWV1ZTogZXZlbnRzX3Vu Ym91bmQgaWRsZV9jdWxsX2ZuClJJUDogMDAxMDpsb2NrZGVwX2VuYWJsZWQga2VybmVsL2xvY2tp bmcvbG9ja2RlcC5jOjEyMiBbaW5saW5lXQpSSVA6IDAwMTA6bG9ja19yZWxlYXNlKzB4MTI4LzB4 NjgwIGtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYzo1NzY3CkNvZGU6IDg1IGU3IDAyIDAwIDAwIDY1 IDRjIDhiIDM0IDI1IDQwIGMyIDAzIDAwIDQ5IDhkIGJlIGJjIDBhIDAwIDAwIDQ4IGI4IDAwIDAw IDAwIDAwIDAwIGZjIGZmIGRmIDQ4IDg5IGZhIDQ4IGMxIGVhIDAzIDBmIGI2IDE0IDAyIDw0OD4g ODkgZjggODMgZTAgMDcgODMgYzAgMDMgMzggZDAgN2MgMDggODQgZDIgMGYgODUgY2MgMDQgMDAg MDAgNDEKUlNQOiAwMDE4OmZmZmZjOTAwMDA0YjhjNzAgRUZMQUdTOiAwMDAwMDgwMwpSQVg6IGRm ZmZmYzAwMDAwMDAwMDAgUkJYOiBmZmZmZmZmZjhlZjUwZmI4IFJDWDogZmZmZmZmZmY4MTY2OTM5 NQpSRFg6IDAwMDAwMDAwMDAwMDAwMDAgUlNJOiAwMDAwMDAwMDAwMDEwMDA0IFJESTogZmZmZjg4 ODA0MDdkOGFiYwpSQlA6IDFmZmZmOTIwMDAwOTcxOTAgUjA4OiAwMDAwMDAwMDAwMDAwMDAxIFIw OTogZmZmZmZiZmZmMWRlOWI4MgpSMTA6IGZmZmZmZmZmOGVmNGRjMTcgUjExOiAwMDAwMDAwMDAw MDAwMDAwIFIxMjogZmZmZmZmZmY5MjdhYWQ5OApSMTM6IGZmZmY4ODgwNDQzNTIzNDAgUjE0OiBm ZmZmODg4MDQwN2Q4MDAwIFIxNTogMWZmZmY5MjAwMDA5NzFhYwpGUzogIDAwMDAwMDAwMDAwMDAw MDAoMDAwMCkgR1M6ZmZmZjg4ODA3ZWMwMDAwMCgwMDAwKSBrbmxHUzowMDAwMDAwMDAwMDAwMDAw CkNTOiAgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMKQ1IyOiAw MDAwNTU1NTU2NmZlZDY4IENSMzogMDAwMDAwMDAwY2I3ODAwMCBDUjQ6IDAwMDAwMDAwMDA3NTBl ZjAKRFIwOiAwMDAwMDAwMDAwMDAwMDAwIERSMTogMDAwMDAwMDAwMDAwMDAwMCBEUjI6IDAwMDAw MDAwMDAwMDAwMDAKRFIzOiAwMDAwMDAwMDAwMDAwMDAwIERSNjogMDAwMDAwMDBmZmZlMGZmMCBE Ujc6IDAwMDAwMDAwMDAwMDA0MDAKUEtSVTogNTU1NTU1NTQKQ2FsbCBUcmFjZToKIDxOTUk+CiA8 L05NST4KIDxJUlE+CiBfX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlIGluY2x1ZGUvbGludXgv c3BpbmxvY2tfYXBpX3NtcC5oOjE0OSBbaW5saW5lXQogX3Jhd19zcGluX3VubG9ja19pcnFyZXN0 b3JlKzB4MWEvMHg3MCBrZXJuZWwvbG9ja2luZy9zcGlubG9jay5jOjE5NAogZGVidWdfb2JqZWN0 X2RlYWN0aXZhdGUrMHgyMTIvMHgzOTAgbGliL2RlYnVnb2JqZWN0cy5jOjc3OAogZGVidWdfaHJ0 aW1lcl9kZWFjdGl2YXRlIGtlcm5lbC90aW1lL2hydGltZXIuYzo0MjcgW2lubGluZV0KIGRlYnVn X2RlYWN0aXZhdGUga2VybmVsL3RpbWUvaHJ0aW1lci5jOjQ4MyBbaW5saW5lXQogX19ydW5faHJ0 aW1lciBrZXJuZWwvdGltZS9ocnRpbWVyLmM6MTY1NiBbaW5saW5lXQogX19ocnRpbWVyX3J1bl9x dWV1ZXMrMHgzZmQvMHhjMTAga2VybmVsL3RpbWUvaHJ0aW1lci5jOjE3NTIKIGhydGltZXJfaW50 ZXJydXB0KzB4MzIwLzB4N2IwIGtlcm5lbC90aW1lL2hydGltZXIuYzoxODE0CiBsb2NhbF9hcGlj X3RpbWVyX2ludGVycnVwdCBhcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljLmM6MTA2NSBbaW5saW5l XQogX19zeXN2ZWNfYXBpY190aW1lcl9pbnRlcnJ1cHQrMHgxMDUvMHg0MDAgYXJjaC94ODYva2Vy bmVsL2FwaWMvYXBpYy5jOjEwODIKIHN5c3ZlY19hcGljX3RpbWVyX2ludGVycnVwdCsweDk0LzB4 YjAgYXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jOjEwNzYKIDwvSVJRPgogPFRBU0s+CiBhc21f c3lzdmVjX2FwaWNfdGltZXJfaW50ZXJydXB0KzB4MWEvMHgyMCBhcmNoL3g4Ni9pbmNsdWRlL2Fz bS9pZHRlbnRyeS5oOjY0OQpSSVA6IDAwMTA6X19yYXdfc3Bpbl91bmxvY2tfaXJxIGluY2x1ZGUv bGludXgvc3BpbmxvY2tfYXBpX3NtcC5oOjE2MCBbaW5saW5lXQpSSVA6IDAwMTA6X3Jhd19zcGlu X3VubG9ja19pcnErMHgyOS8weDUwIGtlcm5lbC9sb2NraW5nL3NwaW5sb2NrLmM6MjAyCkNvZGU6 IDkwIGYzIDBmIDFlIGZhIDU1IDQ4IDhiIDc0IDI0IDA4IDQ4IDg5IGZkIDQ4IDgzIGM3IDE4IGU4 IGRhIDRkIDAzIGY3IDQ4IDg5IGVmIGU4IGMyIGJiIDAzIGY3IGU4IDNkIDc0IDI5IGY3IGZiIGJm IDAxIDAwIDAwIDAwIDxlOD4gYjIgODQgZjUgZjYgNjUgOGIgMDUgMTMgN2QgYTAgNzUgODUgYzAg NzQgMDIgNWQgYzMgZTggOTAgM2EgOWQKUlNQOiAwMDE4OmZmZmZjOTAwMDUxN2ZjMTggRUZMQUdT OiAwMDAwMDIwMgpSQVg6IDAwMDAwMDAwMDAwNDAxNjcgUkJYOiBmZmZmODg4MDEzM2UwMGQ4IFJD WDogMWZmZmZmZmZmMjM5YmU4OQpSRFg6IDAwMDAwMDAwMDAwMDAwMDAgUlNJOiAwMDAwMDAwMDAw MDAwMDAxIFJESTogMDAwMDAwMDAwMDAwMDAwMQpSQlA6IGZmZmY4ODgwMTMzZTAwMDAgUjA4OiAw MDAwMDAwMDAwMDAwMDAxIFIwOTogZmZmZmZiZmZmMjM5YWJlYQpSMTA6IDAwMDAwMDAwMDAwMDAw MDEgUjExOiAwMDAwMDAwMDAwMDAwMDAxIFIxMjogZmZmZmZmZmZmZmZmZThkMwpSMTM6IDAwMDAw MDAxMDAwMDJlNWEgUjE0OiBmZmZmODg4MDFkNzA1MzMwIFIxNTogZmZmZjg4ODAxMzNlMDA3NAog aWRsZV9jdWxsX2ZuKzB4MWFjLzB4M2QwIGtlcm5lbC93b3JrcXVldWUuYzoyMzgyCiBwcm9jZXNz X29uZV93b3JrKzB4ODc4LzB4MTVjMCBrZXJuZWwvd29ya3F1ZXVlLmM6MjYzMwogcHJvY2Vzc19z Y2hlZHVsZWRfd29ya3Mga2VybmVsL3dvcmtxdWV1ZS5jOjI3MDYgW2lubGluZV0KIHdvcmtlcl90 aHJlYWQrMHg4NTUvMHgxMjAwIGtlcm5lbC93b3JrcXVldWUuYzoyNzg3CiBrdGhyZWFkKzB4MmNj LzB4M2IwIGtlcm5lbC9rdGhyZWFkLmM6Mzg4CiByZXRfZnJvbV9mb3JrKzB4NDUvMHg4MCBhcmNo L3g4Ni9rZXJuZWwvcHJvY2Vzcy5jOjE0NwogcmV0X2Zyb21fZm9ya19hc20rMHgxMS8weDIwIGFy Y2gveDg2L2VudHJ5L2VudHJ5XzY0LlM6MjQyCiA8L1RBU0s+CklORk86IE5NSSBoYW5kbGVyIChu bWlfY3B1X2JhY2t0cmFjZV9oYW5kbGVyKSB0b29rIHRvbyBsb25nIHRvIHJ1bjogNC4xMTkgbXNl Y3MKClRoYW5rIHlvdSBmb3IgdGFraW5nIHRoZSB0aW1lIHRvIHJlYWQgdGhpcyBlbWFpbCBhbmQg d2UgbG9vayBmb3J3YXJkIHRvIHdvcmtpbmcgd2l0aCB5b3UgZnVydGhlci4KCgoKCgo= ------=ALIBOUNDARY_25767_7f8a0939e700_65bde39b_52f634 Content-Type: application/octet-stream Content-Disposition: attachment; filename="=?UTF-8?B?cG9jLmM=?=" Content-Transfer-Encoding: base64 Ly8gYXV0b2dlbmVyYXRlZCBieSBzeXprYWxsZXIgKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv c3l6a2FsbGVyKQoKI2RlZmluZSBfR05VX1NPVVJDRQoKI2luY2x1ZGUgPGFycGEvaW5ldC5oPgoj aW5jbHVkZSA8ZGlyZW50Lmg+CiNpbmNsdWRlIDxlbmRpYW4uaD4KI2luY2x1ZGUgPGVycm5vLmg+ CiNpbmNsdWRlIDxmY250bC5oPgojaW5jbHVkZSA8bmV0L2lmLmg+CiNpbmNsdWRlIDxuZXQvaWZf YXJwLmg+CiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiNpbmNsdWRlIDxzY2hlZC5oPgojaW5jbHVk ZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxzdGRhcmcuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KI2lu Y2x1ZGUgPHN0ZGludC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoj aW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KI2luY2x1ZGUgPHN5cy9t b3VudC5oPgojaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4K I2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRlIDxz eXMvc3lzY2FsbC5oPgojaW5jbHVkZSA8c3lzL3RpbWUuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5o PgojaW5jbHVkZSA8c3lzL3Vpby5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KI2luY2x1ZGUgPHRp bWUuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgoKI2luY2x1ZGUgPGxpbnV4L2NhcGFiaWxpdHkuaD4K I2luY2x1ZGUgPGxpbnV4L2dlbmV0bGluay5oPgojaW5jbHVkZSA8bGludXgvaWZfYWRkci5oPgoj aW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KI2luY2x1ZGUgPGxpbnV4L2lmX2xpbmsuaD4KI2lu Y2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgojaW5jbHVkZSA8bGludXgvaW42Lmg+CiNpbmNsdWRlIDxs aW51eC9pcC5oPgojaW5jbHVkZSA8bGludXgvbmVpZ2hib3VyLmg+CiNpbmNsdWRlIDxsaW51eC9u ZXQuaD4KI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGlu ay5oPgojaW5jbHVkZSA8bGludXgvdGNwLmg+CiNpbmNsdWRlIDxsaW51eC92ZXRoLmg+CgpzdGF0 aWMgdW5zaWduZWQgbG9uZyBsb25nIHByb2NpZDsKCnN0YXRpYyB2b2lkIHNsZWVwX21zKHVpbnQ2 NF90IG1zKQp7CiAgdXNsZWVwKG1zICogMTAwMCk7Cn0KCnN0YXRpYyB1aW50NjRfdCBjdXJyZW50 X3RpbWVfbXModm9pZCkKewogIHN0cnVjdCB0aW1lc3BlYyB0czsKICBpZiAoY2xvY2tfZ2V0dGlt ZShDTE9DS19NT05PVE9OSUMsICZ0cykpCiAgICBleGl0KDEpOwogIHJldHVybiAodWludDY0X3Qp dHMudHZfc2VjICogMTAwMCArICh1aW50NjRfdCl0cy50dl9uc2VjIC8gMTAwMDAwMDsKfQoKI2Rl ZmluZSBCSVRNQVNLKGJmX29mZiwgYmZfbGVuKSAoKCgxdWxsIDw8IChiZl9sZW4pKSAtIDEpIDw8 IChiZl9vZmYpKQojZGVmaW5lIFNUT1JFX0JZX0JJVE1BU0sodHlwZSwgaHRvYmUsIGFkZHIsIHZh bCwgYmZfb2ZmLCBiZl9sZW4pICAgICAgICAgICAgICAgXAogICoodHlwZSopKGFkZHIpID0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogICAgICBodG9iZSgoaHRvYmUoKih0eXBlKikoYWRkcikpICYgfkJJVE1BU0soKGJmX29mZiks IChiZl9sZW4pKSkgfCAgICAgICAgICAgXAogICAgICAgICAgICAoKCh0eXBlKSh2YWwpIDw8IChi Zl9vZmYpKSAmIEJJVE1BU0soKGJmX29mZiksIChiZl9sZW4pKSkpCgpzdGF0aWMgYm9vbCB3cml0 ZV9maWxlKGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIHdoYXQsIC4uLikKewogIGNoYXIg YnVmWzEwMjRdOwogIHZhX2xpc3QgYXJnczsKICB2YV9zdGFydChhcmdzLCB3aGF0KTsKICB2c25w cmludGYoYnVmLCBzaXplb2YoYnVmKSwgd2hhdCwgYXJncyk7CiAgdmFfZW5kKGFyZ3MpOwogIGJ1 ZltzaXplb2YoYnVmKSAtIDFdID0gMDsKICBpbnQgbGVuID0gc3RybGVuKGJ1Zik7CiAgaW50IGZk ID0gb3BlbihmaWxlLCBPX1dST05MWSB8IE9fQ0xPRVhFQyk7CiAgaWYgKGZkID09IC0xKQogICAg cmV0dXJuIGZhbHNlOwogIGlmICh3cml0ZShmZCwgYnVmLCBsZW4pICE9IGxlbikgewogICAgaW50 IGVyciA9IGVycm5vOwogICAgY2xvc2UoZmQpOwogICAgZXJybm8gPSBlcnI7CiAgICByZXR1cm4g ZmFsc2U7CiAgfQogIGNsb3NlKGZkKTsKICByZXR1cm4gdHJ1ZTsKfQoKc3RydWN0IG5sbXNnIHsK ICBjaGFyKiBwb3M7CiAgaW50IG5lc3Rpbmc7CiAgc3RydWN0IG5sYXR0ciogbmVzdGVkWzhdOwog IGNoYXIgYnVmWzQwOTZdOwp9OwoKc3RhdGljIHZvaWQgbmV0bGlua19pbml0KHN0cnVjdCBubG1z Zyogbmxtc2csIGludCB0eXAsIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHZvaWQqIGRhdGEsIGludCBzaXplKQp7CiAgbWVtc2V0KG5sbXNnLCAwLCBzaXplb2YoKm5s bXNnKSk7CiAgc3RydWN0IG5sbXNnaGRyKiBoZHIgPSAoc3RydWN0IG5sbXNnaGRyKilubG1zZy0+ YnVmOwogIGhkci0+bmxtc2dfdHlwZSA9IHR5cDsKICBoZHItPm5sbXNnX2ZsYWdzID0gTkxNX0Zf UkVRVUVTVCB8IE5MTV9GX0FDSyB8IGZsYWdzOwogIG1lbWNweShoZHIgKyAxLCBkYXRhLCBzaXpl KTsKICBubG1zZy0+cG9zID0gKGNoYXIqKShoZHIgKyAxKSArIE5MTVNHX0FMSUdOKHNpemUpOwp9 CgpzdGF0aWMgdm9pZCBuZXRsaW5rX2F0dHIoc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHR5cCwg Y29uc3Qgdm9pZCogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKQp7CiAg c3RydWN0IG5sYXR0ciogYXR0ciA9IChzdHJ1Y3QgbmxhdHRyKilubG1zZy0+cG9zOwogIGF0dHIt Pm5sYV9sZW4gPSBzaXplb2YoKmF0dHIpICsgc2l6ZTsKICBhdHRyLT5ubGFfdHlwZSA9IHR5cDsK ICBpZiAoc2l6ZSA+IDApCiAgICBtZW1jcHkoYXR0ciArIDEsIGRhdGEsIHNpemUpOwogIG5sbXNn LT5wb3MgKz0gTkxNU0dfQUxJR04oYXR0ci0+bmxhX2xlbik7Cn0KCnN0YXRpYyB2b2lkIG5ldGxp bmtfbmVzdChzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgdHlwKQp7CiAgc3RydWN0IG5sYXR0ciog YXR0ciA9IChzdHJ1Y3QgbmxhdHRyKilubG1zZy0+cG9zOwogIGF0dHItPm5sYV90eXBlID0gdHlw OwogIG5sbXNnLT5wb3MgKz0gc2l6ZW9mKCphdHRyKTsKICBubG1zZy0+bmVzdGVkW25sbXNnLT5u ZXN0aW5nKytdID0gYXR0cjsKfQoKc3RhdGljIHZvaWQgbmV0bGlua19kb25lKHN0cnVjdCBubG1z Zyogbmxtc2cpCnsKICBzdHJ1Y3QgbmxhdHRyKiBhdHRyID0gbmxtc2ctPm5lc3RlZFstLW5sbXNn LT5uZXN0aW5nXTsKICBhdHRyLT5ubGFfbGVuID0gbmxtc2ctPnBvcyAtIChjaGFyKilhdHRyOwp9 CgpzdGF0aWMgaW50IG5ldGxpbmtfc2VuZF9leHQoc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNv Y2ssIHVpbnQxNl90IHJlcGx5X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQq IHJlcGx5X2xlbiwgYm9vbCBkb2ZhaWwpCnsKICBpZiAobmxtc2ctPnBvcyA+IG5sbXNnLT5idWYg KyBzaXplb2Yobmxtc2ctPmJ1ZikgfHwgbmxtc2ctPm5lc3RpbmcpCiAgICBleGl0KDEpOwogIHN0 cnVjdCBubG1zZ2hkciogaGRyID0gKHN0cnVjdCBubG1zZ2hkciopbmxtc2ctPmJ1ZjsKICBoZHIt Pm5sbXNnX2xlbiA9IG5sbXNnLT5wb3MgLSBubG1zZy0+YnVmOwogIHN0cnVjdCBzb2NrYWRkcl9u bCBhZGRyOwogIG1lbXNldCgmYWRkciwgMCwgc2l6ZW9mKGFkZHIpKTsKICBhZGRyLm5sX2ZhbWls eSA9IEFGX05FVExJTks7CiAgc3NpemVfdCBuID0gc2VuZHRvKHNvY2ssIG5sbXNnLT5idWYsIGhk ci0+bmxtc2dfbGVuLCAwLAogICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyKikm YWRkciwgc2l6ZW9mKGFkZHIpKTsKICBpZiAobiAhPSAoc3NpemVfdCloZHItPm5sbXNnX2xlbikg ewogICAgaWYgKGRvZmFpbCkKICAgICAgZXhpdCgxKTsKICAgIHJldHVybiAtMTsKICB9CiAgbiA9 IHJlY3Yoc29jaywgbmxtc2ctPmJ1Ziwgc2l6ZW9mKG5sbXNnLT5idWYpLCAwKTsKICBpZiAocmVw bHlfbGVuKQogICAgKnJlcGx5X2xlbiA9IDA7CiAgaWYgKG4gPCAwKSB7CiAgICBpZiAoZG9mYWls KQogICAgICBleGl0KDEpOwogICAgcmV0dXJuIC0xOwogIH0KICBpZiAobiA8IChzc2l6ZV90KXNp emVvZihzdHJ1Y3Qgbmxtc2doZHIpKSB7CiAgICBlcnJubyA9IEVJTlZBTDsKICAgIGlmIChkb2Zh aWwpCiAgICAgIGV4aXQoMSk7CiAgICByZXR1cm4gLTE7CiAgfQogIGlmIChoZHItPm5sbXNnX3R5 cGUgPT0gTkxNU0dfRE9ORSkKICAgIHJldHVybiAwOwogIGlmIChyZXBseV9sZW4gJiYgaGRyLT5u bG1zZ190eXBlID09IHJlcGx5X3R5cGUpIHsKICAgICpyZXBseV9sZW4gPSBuOwogICAgcmV0dXJu IDA7CiAgfQogIGlmIChuIDwgKHNzaXplX3QpKHNpemVvZihzdHJ1Y3Qgbmxtc2doZHIpICsgc2l6 ZW9mKHN0cnVjdCBubG1zZ2VycikpKSB7CiAgICBlcnJubyA9IEVJTlZBTDsKICAgIGlmIChkb2Zh aWwpCiAgICAgIGV4aXQoMSk7CiAgICByZXR1cm4gLTE7CiAgfQogIGlmIChoZHItPm5sbXNnX3R5 cGUgIT0gTkxNU0dfRVJST1IpIHsKICAgIGVycm5vID0gRUlOVkFMOwogICAgaWYgKGRvZmFpbCkK ICAgICAgZXhpdCgxKTsKICAgIHJldHVybiAtMTsKICB9CiAgZXJybm8gPSAtKChzdHJ1Y3Qgbmxt c2dlcnIqKShoZHIgKyAxKSktPmVycm9yOwogIHJldHVybiAtZXJybm87Cn0KCnN0YXRpYyBpbnQg bmV0bGlua19zZW5kKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrKQp7CiAgcmV0dXJuIG5l dGxpbmtfc2VuZF9leHQobmxtc2csIHNvY2ssIDAsIE5VTEwsIHRydWUpOwp9CgpzdGF0aWMgaW50 IG5ldGxpbmtfcXVlcnlfZmFtaWx5X2lkKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZhbWlseV9uYW1l LCBib29sIGRvZmFpbCkKewogIHN0cnVjdCBnZW5sbXNnaGRyIGdlbmxoZHI7CiAgbWVtc2V0KCZn ZW5saGRyLCAwLCBzaXplb2YoZ2VubGhkcikpOwogIGdlbmxoZHIuY21kID0gQ1RSTF9DTURfR0VU RkFNSUxZOwogIG5ldGxpbmtfaW5pdChubG1zZywgR0VOTF9JRF9DVFJMLCAwLCAmZ2VubGhkciwg c2l6ZW9mKGdlbmxoZHIpKTsKICBuZXRsaW5rX2F0dHIobmxtc2csIENUUkxfQVRUUl9GQU1JTFlf TkFNRSwgZmFtaWx5X25hbWUsCiAgICAgICAgICAgICAgIHN0cm5sZW4oZmFtaWx5X25hbWUsIEdF TkxfTkFNU0laIC0gMSkgKyAxKTsKICBpbnQgbiA9IDA7CiAgaW50IGVyciA9IG5ldGxpbmtfc2Vu ZF9leHQobmxtc2csIHNvY2ssIEdFTkxfSURfQ1RSTCwgJm4sIGRvZmFpbCk7CiAgaWYgKGVyciA8 IDApIHsKICAgIHJldHVybiAtMTsKICB9CiAgdWludDE2X3QgaWQgPSAwOwogIHN0cnVjdCBubGF0 dHIqIGF0dHIgPSAoc3RydWN0IG5sYXR0ciopKG5sbXNnLT5idWYgKyBOTE1TR19IRFJMRU4gKwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MTVNHX0FMSUdOKHNpemVv ZihnZW5saGRyKSkpOwogIGZvciAoOyAoY2hhciopYXR0ciA8IG5sbXNnLT5idWYgKyBuOwogICAg ICAgYXR0ciA9IChzdHJ1Y3QgbmxhdHRyKikoKGNoYXIqKWF0dHIgKyBOTE1TR19BTElHTihhdHRy LT5ubGFfbGVuKSkpIHsKICAgIGlmIChhdHRyLT5ubGFfdHlwZSA9PSBDVFJMX0FUVFJfRkFNSUxZ X0lEKSB7CiAgICAgIGlkID0gKih1aW50MTZfdCopKGF0dHIgKyAxKTsKICAgICAgYnJlYWs7CiAg ICB9CiAgfQogIGlmICghaWQpIHsKICAgIGVycm5vID0gRUlOVkFMOwogICAgcmV0dXJuIC0xOwog IH0KICByZWN2KHNvY2ssIG5sbXNnLT5idWYsIHNpemVvZihubG1zZy0+YnVmKSwgMCk7CiAgcmV0 dXJuIGlkOwp9CgpzdGF0aWMgaW50IG5ldGxpbmtfbmV4dF9tc2coc3RydWN0IG5sbXNnKiBubG1z ZywgdW5zaWduZWQgaW50IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCB0b3RhbF9sZW4pCnsKICBzdHJ1Y3Qgbmxtc2doZHIqIGhkciA9IChzdHJ1Y3Qgbmxt c2doZHIqKShubG1zZy0+YnVmICsgb2Zmc2V0KTsKICBpZiAob2Zmc2V0ID09IHRvdGFsX2xlbiB8 fCBvZmZzZXQgKyBoZHItPm5sbXNnX2xlbiA+IHRvdGFsX2xlbikKICAgIHJldHVybiAtMTsKICBy ZXR1cm4gaGRyLT5ubG1zZ19sZW47Cn0KCnN0YXRpYyB2b2lkIG5ldGxpbmtfYWRkX2RldmljZV9p bXBsKHN0cnVjdCBubG1zZyogbmxtc2csIGNvbnN0IGNoYXIqIHR5cGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdXApCnsKICBzdHJ1 Y3QgaWZpbmZvbXNnIGhkcjsKICBtZW1zZXQoJmhkciwgMCwgc2l6ZW9mKGhkcikpOwogIGlmICh1 cCkKICAgIGhkci5pZmlfZmxhZ3MgPSBoZHIuaWZpX2NoYW5nZSA9IElGRl9VUDsKICBuZXRsaW5r X2luaXQobmxtc2csIFJUTV9ORVdMSU5LLCBOTE1fRl9FWENMIHwgTkxNX0ZfQ1JFQVRFLCAmaGRy LAogICAgICAgICAgICAgICBzaXplb2YoaGRyKSk7CiAgaWYgKG5hbWUpCiAgICBuZXRsaW5rX2F0 dHIobmxtc2csIElGTEFfSUZOQU1FLCBuYW1lLCBzdHJsZW4obmFtZSkpOwogIG5ldGxpbmtfbmVz dChubG1zZywgSUZMQV9MSU5LSU5GTyk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX0lORk9f S0lORCwgdHlwZSwgc3RybGVuKHR5cGUpKTsKfQoKc3RhdGljIHZvaWQgbmV0bGlua19hZGRfZGV2 aWNlKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLCBjb25zdCBjaGFyKiB0eXBlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSkKewogIG5ldGxpbmtf YWRkX2RldmljZV9pbXBsKG5sbXNnLCB0eXBlLCBuYW1lLCBmYWxzZSk7CiAgbmV0bGlua19kb25l KG5sbXNnKTsKICBpbnQgZXJyID0gbmV0bGlua19zZW5kKG5sbXNnLCBzb2NrKTsKICBpZiAoZXJy IDwgMCkgewogIH0KfQoKc3RhdGljIHZvaWQgbmV0bGlua19hZGRfdmV0aChzdHJ1Y3Qgbmxtc2cq IG5sbXNnLCBpbnQgc29jaywgY29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyKiBwZWVyKQp7CiAgbmV0bGlua19hZGRfZGV2aWNlX2ltcGwobmxt c2csICJ2ZXRoIiwgbmFtZSwgZmFsc2UpOwogIG5ldGxpbmtfbmVzdChubG1zZywgSUZMQV9JTkZP X0RBVEEpOwogIG5ldGxpbmtfbmVzdChubG1zZywgVkVUSF9JTkZPX1BFRVIpOwogIG5sbXNnLT5w b3MgKz0gc2l6ZW9mKHN0cnVjdCBpZmluZm9tc2cpOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZM QV9JRk5BTUUsIHBlZXIsIHN0cmxlbihwZWVyKSk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBu ZXRsaW5rX2RvbmUobmxtc2cpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgaW50IGVyciA9IG5l dGxpbmtfc2VuZChubG1zZywgc29jayk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0YXRpYyB2 b2lkIG5ldGxpbmtfYWRkX3hmcm0oc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0 IGNoYXIqIG5hbWUpCnsKICBuZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChubG1zZywgInhmcm0iLCBu YW1lLCB0cnVlKTsKICBuZXRsaW5rX25lc3Qobmxtc2csIElGTEFfSU5GT19EQVRBKTsKICBpbnQg aWZfaWQgPSAxOwogIG5ldGxpbmtfYXR0cihubG1zZywgMiwgJmlmX2lkLCBzaXplb2YoaWZfaWQp KTsKICBuZXRsaW5rX2RvbmUobmxtc2cpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgaW50IGVy ciA9IG5ldGxpbmtfc2VuZChubG1zZywgc29jayk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0 YXRpYyB2b2lkIG5ldGxpbmtfYWRkX2hzcihzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywg Y29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq IHNsYXZlMSwgY29uc3QgY2hhciogc2xhdmUyKQp7CiAgbmV0bGlua19hZGRfZGV2aWNlX2ltcGwo bmxtc2csICJoc3IiLCBuYW1lLCBmYWxzZSk7CiAgbmV0bGlua19uZXN0KG5sbXNnLCBJRkxBX0lO Rk9fREFUQSk7CiAgaW50IGlmaW5kZXgxID0gaWZfbmFtZXRvaW5kZXgoc2xhdmUxKTsKICBuZXRs aW5rX2F0dHIobmxtc2csIElGTEFfSFNSX1NMQVZFMSwgJmlmaW5kZXgxLCBzaXplb2YoaWZpbmRl eDEpKTsKICBpbnQgaWZpbmRleDIgPSBpZl9uYW1ldG9pbmRleChzbGF2ZTIpOwogIG5ldGxpbmtf YXR0cihubG1zZywgSUZMQV9IU1JfU0xBVkUyLCAmaWZpbmRleDIsIHNpemVvZihpZmluZGV4Mikp OwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBpbnQgZXJy ID0gbmV0bGlua19zZW5kKG5sbXNnLCBzb2NrKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoKc3Rh dGljIHZvaWQgbmV0bGlua19hZGRfbGlua2VkKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2Nr LCBjb25zdCBjaGFyKiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciogbmFtZSwgY29uc3QgY2hhciogbGluaykKewogIG5ldGxpbmtfYWRkX2RldmljZV9pbXBs KG5sbXNnLCB0eXBlLCBuYW1lLCBmYWxzZSk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBpbnQg aWZpbmRleCA9IGlmX25hbWV0b2luZGV4KGxpbmspOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZM QV9MSU5LLCAmaWZpbmRleCwgc2l6ZW9mKGlmaW5kZXgpKTsKICBpbnQgZXJyID0gbmV0bGlua19z ZW5kKG5sbXNnLCBzb2NrKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoKc3RhdGljIHZvaWQgbmV0 bGlua19hZGRfdmxhbihzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywgY29uc3QgY2hhciog bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsaW5rLCB1aW50 MTZfdCBpZCwgdWludDE2X3QgcHJvdG8pCnsKICBuZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChubG1z ZywgInZsYW4iLCBuYW1lLCBmYWxzZSk7CiAgbmV0bGlua19uZXN0KG5sbXNnLCBJRkxBX0lORk9f REFUQSk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX1ZMQU5fSUQsICZpZCwgc2l6ZW9mKGlk KSk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX1ZMQU5fUFJPVE9DT0wsICZwcm90bywgc2l6 ZW9mKHByb3RvKSk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBuZXRsaW5rX2RvbmUobmxtc2cp OwogIGludCBpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgobGluayk7CiAgbmV0bGlua19hdHRyKG5s bXNnLCBJRkxBX0xJTkssICZpZmluZGV4LCBzaXplb2YoaWZpbmRleCkpOwogIGludCBlcnIgPSBu ZXRsaW5rX3NlbmQobmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQp9CgpzdGF0aWMg dm9pZCBuZXRsaW5rX2FkZF9tYWN2bGFuKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLCBj b25zdCBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIqIGxpbmspCnsKICBuZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChubG1zZywgIm1hY3ZsYW4iLCBu YW1lLCBmYWxzZSk7CiAgbmV0bGlua19uZXN0KG5sbXNnLCBJRkxBX0lORk9fREFUQSk7CiAgdWlu dDMyX3QgbW9kZSA9IE1BQ1ZMQU5fTU9ERV9CUklER0U7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJ RkxBX01BQ1ZMQU5fTU9ERSwgJm1vZGUsIHNpemVvZihtb2RlKSk7CiAgbmV0bGlua19kb25lKG5s bXNnKTsKICBuZXRsaW5rX2RvbmUobmxtc2cpOwogIGludCBpZmluZGV4ID0gaWZfbmFtZXRvaW5k ZXgobGluayk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX0xJTkssICZpZmluZGV4LCBzaXpl b2YoaWZpbmRleCkpOwogIGludCBlcnIgPSBuZXRsaW5rX3NlbmQobmxtc2csIHNvY2spOwogIGlm IChlcnIgPCAwKSB7CiAgfQp9CgpzdGF0aWMgdm9pZCBuZXRsaW5rX2FkZF9nZW5ldmUoc3RydWN0 IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0IGNoYXIqIG5hbWUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCB2bmksIHN0cnVjdCBpbl9hZGRyKiBhZGRyNCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbjZfYWRkciogYWRkcjYpCnsKICBu ZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChubG1zZywgImdlbmV2ZSIsIG5hbWUsIGZhbHNlKTsKICBu ZXRsaW5rX25lc3Qobmxtc2csIElGTEFfSU5GT19EQVRBKTsKICBuZXRsaW5rX2F0dHIobmxtc2cs IElGTEFfR0VORVZFX0lELCAmdm5pLCBzaXplb2Yodm5pKSk7CiAgaWYgKGFkZHI0KQogICAgbmV0 bGlua19hdHRyKG5sbXNnLCBJRkxBX0dFTkVWRV9SRU1PVEUsIGFkZHI0LCBzaXplb2YoKmFkZHI0 KSk7CiAgaWYgKGFkZHI2KQogICAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX0dFTkVWRV9SRU1P VEU2LCBhZGRyNiwgc2l6ZW9mKCphZGRyNikpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgbmV0 bGlua19kb25lKG5sbXNnKTsKICBpbnQgZXJyID0gbmV0bGlua19zZW5kKG5sbXNnLCBzb2NrKTsK ICBpZiAoZXJyIDwgMCkgewogIH0KfQoKI2RlZmluZSBJRkxBX0lQVkxBTl9GTEFHUyAyCiNkZWZp bmUgSVBWTEFOX01PREVfTDNTIDIKI3VuZGVmIElQVkxBTl9GX1ZFUEEKI2RlZmluZSBJUFZMQU5f Rl9WRVBBIDIKCnN0YXRpYyB2b2lkIG5ldGxpbmtfYWRkX2lwdmxhbihzdHJ1Y3Qgbmxtc2cqIG5s bXNnLCBpbnQgc29jaywgY29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIqIGxpbmssIHVpbnQxNl90IG1vZGUsIHVpbnQxNl90IGZsYWdzKQp7 CiAgbmV0bGlua19hZGRfZGV2aWNlX2ltcGwobmxtc2csICJpcHZsYW4iLCBuYW1lLCBmYWxzZSk7 CiAgbmV0bGlua19uZXN0KG5sbXNnLCBJRkxBX0lORk9fREFUQSk7CiAgbmV0bGlua19hdHRyKG5s bXNnLCBJRkxBX0lQVkxBTl9NT0RFLCAmbW9kZSwgc2l6ZW9mKG1vZGUpKTsKICBuZXRsaW5rX2F0 dHIobmxtc2csIElGTEFfSVBWTEFOX0ZMQUdTLCAmZmxhZ3MsIHNpemVvZihmbGFncykpOwogIG5l dGxpbmtfZG9uZShubG1zZyk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBpbnQgaWZpbmRleCA9 IGlmX25hbWV0b2luZGV4KGxpbmspOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZMQV9MSU5LLCAm aWZpbmRleCwgc2l6ZW9mKGlmaW5kZXgpKTsKICBpbnQgZXJyID0gbmV0bGlua19zZW5kKG5sbXNn LCBzb2NrKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoKc3RhdGljIHZvaWQgbmV0bGlua19kZXZp Y2VfY2hhbmdlKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwgYm9vbCB1cCwgY29uc3QgY2hhciog bWFzdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogbWFj LCBpbnQgbWFjc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIqIG5ld19uYW1lKQp7CiAgc3RydWN0IGlmaW5mb21zZyBoZHI7CiAgbWVtc2V0KCZoZHIsIDAs IHNpemVvZihoZHIpKTsKICBpZiAodXApCiAgICBoZHIuaWZpX2ZsYWdzID0gaGRyLmlmaV9jaGFu Z2UgPSBJRkZfVVA7CiAgaGRyLmlmaV9pbmRleCA9IGlmX25hbWV0b2luZGV4KG5hbWUpOwogIG5l dGxpbmtfaW5pdChubG1zZywgUlRNX05FV0xJTkssIDAsICZoZHIsIHNpemVvZihoZHIpKTsKICBp ZiAobmV3X25hbWUpCiAgICBuZXRsaW5rX2F0dHIobmxtc2csIElGTEFfSUZOQU1FLCBuZXdfbmFt ZSwgc3RybGVuKG5ld19uYW1lKSk7CiAgaWYgKG1hc3RlcikgewogICAgaW50IGlmaW5kZXggPSBp Zl9uYW1ldG9pbmRleChtYXN0ZXIpOwogICAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX01BU1RF UiwgJmlmaW5kZXgsIHNpemVvZihpZmluZGV4KSk7CiAgfQogIGlmIChtYWNzaXplKQogICAgbmV0 bGlua19hdHRyKG5sbXNnLCBJRkxBX0FERFJFU1MsIG1hYywgbWFjc2l6ZSk7CiAgaW50IGVyciA9 IG5ldGxpbmtfc2VuZChubG1zZywgc29jayk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0YXRp YyBpbnQgbmV0bGlua19hZGRfYWRkcihzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywgY29u c3QgY2hhciogZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogYWRk ciwgaW50IGFkZHJzaXplKQp7CiAgc3RydWN0IGlmYWRkcm1zZyBoZHI7CiAgbWVtc2V0KCZoZHIs IDAsIHNpemVvZihoZHIpKTsKICBoZHIuaWZhX2ZhbWlseSA9IGFkZHJzaXplID09IDQgPyBBRl9J TkVUIDogQUZfSU5FVDY7CiAgaGRyLmlmYV9wcmVmaXhsZW4gPSBhZGRyc2l6ZSA9PSA0ID8gMjQg OiAxMjA7CiAgaGRyLmlmYV9zY29wZSA9IFJUX1NDT1BFX1VOSVZFUlNFOwogIGhkci5pZmFfaW5k ZXggPSBpZl9uYW1ldG9pbmRleChkZXYpOwogIG5ldGxpbmtfaW5pdChubG1zZywgUlRNX05FV0FE RFIsIE5MTV9GX0NSRUFURSB8IE5MTV9GX1JFUExBQ0UsICZoZHIsCiAgICAgICAgICAgICAgIHNp emVvZihoZHIpKTsKICBuZXRsaW5rX2F0dHIobmxtc2csIElGQV9MT0NBTCwgYWRkciwgYWRkcnNp emUpOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZBX0FERFJFU1MsIGFkZHIsIGFkZHJzaXplKTsK ICByZXR1cm4gbmV0bGlua19zZW5kKG5sbXNnLCBzb2NrKTsKfQoKc3RhdGljIHZvaWQgbmV0bGlu a19hZGRfYWRkcjQoc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0IGNoYXIqIGRl diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWRkcikKewogIHN0 cnVjdCBpbl9hZGRyIGluX2FkZHI7CiAgaW5ldF9wdG9uKEFGX0lORVQsIGFkZHIsICZpbl9hZGRy KTsKICBpbnQgZXJyID0gbmV0bGlua19hZGRfYWRkcihubG1zZywgc29jaywgZGV2LCAmaW5fYWRk ciwgc2l6ZW9mKGluX2FkZHIpKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoKc3RhdGljIHZvaWQg bmV0bGlua19hZGRfYWRkcjYoc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0IGNo YXIqIGRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWRkcikK ewogIHN0cnVjdCBpbjZfYWRkciBpbjZfYWRkcjsKICBpbmV0X3B0b24oQUZfSU5FVDYsIGFkZHIs ICZpbjZfYWRkcik7CiAgaW50IGVyciA9IG5ldGxpbmtfYWRkX2FkZHIobmxtc2csIHNvY2ssIGRl diwgJmluNl9hZGRyLCBzaXplb2YoaW42X2FkZHIpKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoK c3RhdGljIHN0cnVjdCBubG1zZyBubG1zZzsKCiNkZWZpbmUgREVWTElOS19GQU1JTFlfTkFNRSAi ZGV2bGluayIKCiNkZWZpbmUgREVWTElOS19DTURfUE9SVF9HRVQgNQojZGVmaW5lIERFVkxJTktf QVRUUl9CVVNfTkFNRSAxCiNkZWZpbmUgREVWTElOS19BVFRSX0RFVl9OQU1FIDIKI2RlZmluZSBE RVZMSU5LX0FUVFJfTkVUREVWX05BTUUgNwoKc3RhdGljIHN0cnVjdCBubG1zZyBubG1zZzI7Cgpz dGF0aWMgdm9pZCBpbml0aWFsaXplX2RldmxpbmtfcG9ydHMoY29uc3QgY2hhciogYnVzX25hbWUs IGNvbnN0IGNoYXIqIGRldl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciogbmV0ZGV2X3ByZWZpeCkKewogIHN0cnVjdCBnZW5sbXNnaGRyIGdlbmxo ZHI7CiAgaW50IGxlbiwgdG90YWxfbGVuLCBpZCwgZXJyLCBvZmZzZXQ7CiAgdWludDE2X3QgbmV0 ZGV2X2luZGV4OwogIGludCBzb2NrID0gc29ja2V0KEFGX05FVExJTkssIFNPQ0tfUkFXLCBORVRM SU5LX0dFTkVSSUMpOwogIGlmIChzb2NrID09IC0xKQogICAgZXhpdCgxKTsKICBpbnQgcnRzb2Nr ID0gc29ja2V0KEFGX05FVExJTkssIFNPQ0tfUkFXLCBORVRMSU5LX1JPVVRFKTsKICBpZiAocnRz b2NrID09IC0xKQogICAgZXhpdCgxKTsKICBpZCA9IG5ldGxpbmtfcXVlcnlfZmFtaWx5X2lkKCZu bG1zZywgc29jaywgREVWTElOS19GQU1JTFlfTkFNRSwgdHJ1ZSk7CiAgaWYgKGlkID09IC0xKQog ICAgZ290byBlcnJvcjsKICBtZW1zZXQoJmdlbmxoZHIsIDAsIHNpemVvZihnZW5saGRyKSk7CiAg Z2VubGhkci5jbWQgPSBERVZMSU5LX0NNRF9QT1JUX0dFVDsKICBuZXRsaW5rX2luaXQoJm5sbXNn LCBpZCwgTkxNX0ZfRFVNUCwgJmdlbmxoZHIsIHNpemVvZihnZW5saGRyKSk7CiAgbmV0bGlua19h dHRyKCZubG1zZywgREVWTElOS19BVFRSX0JVU19OQU1FLCBidXNfbmFtZSwgc3RybGVuKGJ1c19u YW1lKSArIDEpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIERFVkxJTktfQVRUUl9ERVZfTkFNRSwg ZGV2X25hbWUsIHN0cmxlbihkZXZfbmFtZSkgKyAxKTsKICBlcnIgPSBuZXRsaW5rX3NlbmRfZXh0 KCZubG1zZywgc29jaywgaWQsICZ0b3RhbF9sZW4sIHRydWUpOwogIGlmIChlcnIgPCAwKSB7CiAg ICBnb3RvIGVycm9yOwogIH0KICBvZmZzZXQgPSAwOwogIG5ldGRldl9pbmRleCA9IDA7CiAgd2hp bGUgKChsZW4gPSBuZXRsaW5rX25leHRfbXNnKCZubG1zZywgb2Zmc2V0LCB0b3RhbF9sZW4pKSAh PSAtMSkgewogICAgc3RydWN0IG5sYXR0ciogYXR0ciA9IChzdHJ1Y3QgbmxhdHRyKikobmxtc2cu YnVmICsgb2Zmc2V0ICsgTkxNU0dfSERSTEVOICsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5MTVNHX0FMSUdOKHNpemVvZihnZW5saGRyKSkpOwogICAgZm9yICg7 IChjaGFyKilhdHRyIDwgbmxtc2cuYnVmICsgb2Zmc2V0ICsgbGVuOwogICAgICAgICBhdHRyID0g KHN0cnVjdCBubGF0dHIqKSgoY2hhciopYXR0ciArIE5MTVNHX0FMSUdOKGF0dHItPm5sYV9sZW4p KSkgewogICAgICBpZiAoYXR0ci0+bmxhX3R5cGUgPT0gREVWTElOS19BVFRSX05FVERFVl9OQU1F KSB7CiAgICAgICAgY2hhciogcG9ydF9uYW1lOwogICAgICAgIGNoYXIgbmV0ZGV2X25hbWVbSUZO QU1TSVpdOwogICAgICAgIHBvcnRfbmFtZSA9IChjaGFyKikoYXR0ciArIDEpOwogICAgICAgIHNu cHJpbnRmKG5ldGRldl9uYW1lLCBzaXplb2YobmV0ZGV2X25hbWUpLCAiJXMlZCIsIG5ldGRldl9w cmVmaXgsCiAgICAgICAgICAgICAgICAgbmV0ZGV2X2luZGV4KTsKICAgICAgICBuZXRsaW5rX2Rl dmljZV9jaGFuZ2UoJm5sbXNnMiwgcnRzb2NrLCBwb3J0X25hbWUsIHRydWUsIDAsIDAsIDAsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9uYW1lKTsKICAgICAgICBicmVhazsK ICAgICAgfQogICAgfQogICAgb2Zmc2V0ICs9IGxlbjsKICAgIG5ldGRldl9pbmRleCsrOwogIH0K ZXJyb3I6CiAgY2xvc2UocnRzb2NrKTsKICBjbG9zZShzb2NrKTsKfQoKI2RlZmluZSBERVZfSVBW NCAiMTcyLjIwLjIwLiVkIgojZGVmaW5lIERFVl9JUFY2ICJmZTgwOjolMDJ4IgojZGVmaW5lIERF Vl9NQUMgMHgwMGFhYWFhYWFhYWEKCnN0YXRpYyB2b2lkIG5ldGRldnNpbV9hZGQodW5zaWduZWQg aW50IGFkZHIsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50KQp7CiAgd3JpdGVfZmlsZSgiL3N5cy9i dXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UiLCAiJXUiLCBhZGRyKTsKICBpZiAod3JpdGVfZmlsZSgi L3N5cy9idXMvbmV0ZGV2c2ltL25ld19kZXZpY2UiLCAiJXUgJXUiLCBhZGRyLCBwb3J0X2NvdW50 KSkgewogICAgY2hhciBidWZbMzJdOwogICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIm5l dGRldnNpbSVkIiwgYWRkcik7CiAgICBpbml0aWFsaXplX2RldmxpbmtfcG9ydHMoIm5ldGRldnNp bSIsIGJ1ZiwgIm5ldGRldnNpbSIpOwogIH0KfQoKI2RlZmluZSBXR19HRU5MX05BTUUgIndpcmVn dWFyZCIKZW51bSB3Z19jbWQgewogIFdHX0NNRF9HRVRfREVWSUNFLAogIFdHX0NNRF9TRVRfREVW SUNFLAp9OwplbnVtIHdnZGV2aWNlX2F0dHJpYnV0ZSB7CiAgV0dERVZJQ0VfQV9VTlNQRUMsCiAg V0dERVZJQ0VfQV9JRklOREVYLAogIFdHREVWSUNFX0FfSUZOQU1FLAogIFdHREVWSUNFX0FfUFJJ VkFURV9LRVksCiAgV0dERVZJQ0VfQV9QVUJMSUNfS0VZLAogIFdHREVWSUNFX0FfRkxBR1MsCiAg V0dERVZJQ0VfQV9MSVNURU5fUE9SVCwKICBXR0RFVklDRV9BX0ZXTUFSSywKICBXR0RFVklDRV9B X1BFRVJTLAp9OwplbnVtIHdncGVlcl9hdHRyaWJ1dGUgewogIFdHUEVFUl9BX1VOU1BFQywKICBX R1BFRVJfQV9QVUJMSUNfS0VZLAogIFdHUEVFUl9BX1BSRVNIQVJFRF9LRVksCiAgV0dQRUVSX0Ff RkxBR1MsCiAgV0dQRUVSX0FfRU5EUE9JTlQsCiAgV0dQRUVSX0FfUEVSU0lTVEVOVF9LRUVQQUxJ VkVfSU5URVJWQUwsCiAgV0dQRUVSX0FfTEFTVF9IQU5EU0hBS0VfVElNRSwKICBXR1BFRVJfQV9S WF9CWVRFUywKICBXR1BFRVJfQV9UWF9CWVRFUywKICBXR1BFRVJfQV9BTExPV0VESVBTLAogIFdH UEVFUl9BX1BST1RPQ09MX1ZFUlNJT04sCn07CmVudW0gd2dhbGxvd2VkaXBfYXR0cmlidXRlIHsK ICBXR0FMTE9XRURJUF9BX1VOU1BFQywKICBXR0FMTE9XRURJUF9BX0ZBTUlMWSwKICBXR0FMTE9X RURJUF9BX0lQQUREUiwKICBXR0FMTE9XRURJUF9BX0NJRFJfTUFTSywKfTsKCnN0YXRpYyB2b2lk IG5ldGxpbmtfd2lyZWd1YXJkX3NldHVwKHZvaWQpCnsKICBjb25zdCBjaGFyIGlmbmFtZV9hW10g PSAid2cwIjsKICBjb25zdCBjaGFyIGlmbmFtZV9iW10gPSAid2cxIjsKICBjb25zdCBjaGFyIGlm bmFtZV9jW10gPSAid2cyIjsKICBjb25zdCBjaGFyIHByaXZhdGVfYVtdID0KICAgICAgIlx4YTBc eDVjXHhhOFx4NGZceDZjXHg5Y1x4OGVceDM4XHg1M1x4ZTJceGZkXHg3YVx4NzBceGFlXHgwZlx4 YjJceDBmXHhhMSIKICAgICAgIlx4NTJceDYwXHgwY1x4YjBceDA4XHg0NVx4MTdceDRmXHgwOFx4 MDdceDZmXHg4ZFx4NzhceDQzIjsKICBjb25zdCBjaGFyIHByaXZhdGVfYltdID0KICAgICAgIlx4 YjBceDgwXHg3M1x4ZThceGQ0XHg0ZVx4OTFceGUzXHhkYVx4OTJceDJjXHgyMlx4NDNceDgyXHg0 NFx4YmJceDg4XHg1YyIKICAgICAgIlx4NjlceGUyXHg2OVx4YzhceGU5XHhkOFx4MzVceGIxXHgx NFx4MjlceDNhXHg0ZFx4ZGNceDZlIjsKICBjb25zdCBjaGFyIHByaXZhdGVfY1tdID0KICAgICAg Ilx4YTBceGNiXHg4N1x4OWFceDQ3XHhmNVx4YmNceDY0XHg0Y1x4MGVceDY5XHgzZlx4YTZceGQw XHgzMVx4YzdceDRhXHgxNSIKICAgICAgIlx4NTNceGI2XHhlOVx4MDFceGI5XHhmZlx4MmZceDUx XHg4Y1x4NzhceDA0XHgyZlx4YjVceDQyIjsKICBjb25zdCBjaGFyIHB1YmxpY19hW10gPQogICAg ICAiXHg5N1x4NWNceDlkXHg4MVx4YzlceDgzXHhjOFx4MjBceDllXHhlN1x4ODFceDI1XHg0Ylx4 ODlceDlmXHg4ZVx4ZDlceDI1IgogICAgICAiXHhhZVx4OWZceDA5XHgyM1x4YzJceDNjXHg2Mlx4 ZjVceDNjXHg1N1x4Y2RceGJmXHg2OVx4MWMiOwogIGNvbnN0IGNoYXIgcHVibGljX2JbXSA9CiAg ICAgICJceGQxXHg3M1x4MjhceDk5XHhmNlx4MTFceGNkXHg4OVx4OTRceDAzXHg0ZFx4N2ZceDQx XHgzZFx4YzlceDU3XHg2M1x4MGUiCiAgICAgICJceDU0XHg5M1x4YzJceDg1XHhhY1x4YTRceDAw XHg2NVx4Y2JceDYzXHgxMVx4YmVceDY5XHg2YiI7CiAgY29uc3QgY2hhciBwdWJsaWNfY1tdID0K ICAgICAgIlx4ZjRceDRkXHhhM1x4NjdceGE4XHg4ZVx4ZTZceDU2XHg0Zlx4MDJceDAyXHgxMVx4 NDVceDY3XHgyN1x4MDhceDJmXHg1YyIKICAgICAgIlx4ZWJceGVlXHg4Ylx4MWJceGY1XHhlYlx4 NzNceDM3XHgzNFx4MWJceDQ1XHg5Ylx4MzlceDIyIjsKICBjb25zdCB1aW50MTZfdCBsaXN0ZW5f YSA9IDIwMDAxOwogIGNvbnN0IHVpbnQxNl90IGxpc3Rlbl9iID0gMjAwMDI7CiAgY29uc3QgdWlu dDE2X3QgbGlzdGVuX2MgPSAyMDAwMzsKICBjb25zdCB1aW50MTZfdCBhZl9pbmV0ID0gQUZfSU5F VDsKICBjb25zdCB1aW50MTZfdCBhZl9pbmV0NiA9IEFGX0lORVQ2OwogIGNvbnN0IHN0cnVjdCBz b2NrYWRkcl9pbiBlbmRwb2ludF9iX3Y0ID0gewogICAgICAuc2luX2ZhbWlseSA9IEFGX0lORVQs CiAgICAgIC5zaW5fcG9ydCA9IGh0b25zKGxpc3Rlbl9iKSwKICAgICAgLnNpbl9hZGRyID0ge2h0 b25sKElOQUREUl9MT09QQkFDSyl9fTsKICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gZW5kcG9p bnRfY192NCA9IHsKICAgICAgLnNpbl9mYW1pbHkgPSBBRl9JTkVULAogICAgICAuc2luX3BvcnQg PSBodG9ucyhsaXN0ZW5fYyksCiAgICAgIC5zaW5fYWRkciA9IHtodG9ubChJTkFERFJfTE9PUEJB Q0spfX07CiAgc3RydWN0IHNvY2thZGRyX2luNiBlbmRwb2ludF9hX3Y2ID0gey5zaW42X2ZhbWls eSA9IEFGX0lORVQ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2lu Nl9wb3J0ID0gaHRvbnMobGlzdGVuX2EpfTsKICBlbmRwb2ludF9hX3Y2LnNpbjZfYWRkciA9IGlu NmFkZHJfbG9vcGJhY2s7CiAgc3RydWN0IHNvY2thZGRyX2luNiBlbmRwb2ludF9jX3Y2ID0gey5z aW42X2ZhbWlseSA9IEFGX0lORVQ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAuc2luNl9wb3J0ID0gaHRvbnMobGlzdGVuX2MpfTsKICBlbmRwb2ludF9jX3Y2LnNpbjZf YWRkciA9IGluNmFkZHJfbG9vcGJhY2s7CiAgY29uc3Qgc3RydWN0IGluX2FkZHIgZmlyc3RfaGFs Zl92NCA9IHswfTsKICBjb25zdCBzdHJ1Y3QgaW5fYWRkciBzZWNvbmRfaGFsZl92NCA9IHsodWlu dDMyX3QpaHRvbmwoMTI4IDw8IDI0KX07CiAgY29uc3Qgc3RydWN0IGluNl9hZGRyIGZpcnN0X2hh bGZfdjYgPSB7e3swfX19OwogIGNvbnN0IHN0cnVjdCBpbjZfYWRkciBzZWNvbmRfaGFsZl92NiA9 IHt7ezB4ODB9fX07CiAgY29uc3QgdWludDhfdCBoYWxmX2NpZHIgPSAxOwogIGNvbnN0IHVpbnQx Nl90IHBlcnNpc3RlbnRfa2VlcGFsaXZlc1tdID0gezEsIDMsIDcsIDksIDE0LCAxOX07CiAgc3Ry dWN0IGdlbmxtc2doZHIgZ2VubGhkciA9IHsuY21kID0gV0dfQ01EX1NFVF9ERVZJQ0UsIC52ZXJz aW9uID0gMX07CiAgaW50IHNvY2s7CiAgaW50IGlkLCBlcnI7CiAgc29jayA9IHNvY2tldChBRl9O RVRMSU5LLCBTT0NLX1JBVywgTkVUTElOS19HRU5FUklDKTsKICBpZiAoc29jayA9PSAtMSkgewog ICAgcmV0dXJuOwogIH0KICBpZCA9IG5ldGxpbmtfcXVlcnlfZmFtaWx5X2lkKCZubG1zZywgc29j aywgV0dfR0VOTF9OQU1FLCB0cnVlKTsKICBpZiAoaWQgPT0gLTEpCiAgICBnb3RvIGVycm9yOwog IG5ldGxpbmtfaW5pdCgmbmxtc2csIGlkLCAwLCAmZ2VubGhkciwgc2l6ZW9mKGdlbmxoZHIpKTsK ICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX0lGTkFNRSwgaWZuYW1lX2EsIHN0cmxl bihpZm5hbWVfYSkgKyAxKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX1BSSVZB VEVfS0VZLCBwcml2YXRlX2EsIDMyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9B X0xJU1RFTl9QT1JULCAmbGlzdGVuX2EsIDIpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9G X05FU1RFRCB8IFdHREVWSUNFX0FfUEVFUlMpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9G X05FU1RFRCB8IDApOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BVQkxJQ19LRVks IHB1YmxpY19iLCAzMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfRU5EUE9JTlQs ICZlbmRwb2ludF9iX3Y0LAogICAgICAgICAgICAgICBzaXplb2YoZW5kcG9pbnRfYl92NCkpOwog IG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BFUlNJU1RFTlRfS0VFUEFMSVZFX0lOVEVS VkFMLAogICAgICAgICAgICAgICAmcGVyc2lzdGVudF9rZWVwYWxpdmVzWzBdLCAyKTsKICBuZXRs aW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCBXR1BFRVJfQV9BTExPV0VESVBTKTsKICBu ZXRsaW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5s bXNnLCBXR0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2luZXQsIDIpOwogIG5ldGxpbmtfYXR0cigm bmxtc2csIFdHQUxMT1dFRElQX0FfSVBBRERSLCAmZmlyc3RfaGFsZl92NCwKICAgICAgICAgICAg ICAgc2l6ZW9mKGZpcnN0X2hhbGZfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9X RURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7 CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRy KCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0NiwgMik7CiAgbmV0bGlua19h dHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZmaXJzdF9oYWxmX3Y2LAogICAgICAg ICAgICAgICBzaXplb2YoZmlyc3RfaGFsZl92NikpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdH QUxMT1dFRElQX0FfQ0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5s bXNnKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBu ZXRsaW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5s bXNnLCBXR1BFRVJfQV9QVUJMSUNfS0VZLCBwdWJsaWNfYywgMzIpOwogIG5ldGxpbmtfYXR0cigm bmxtc2csIFdHUEVFUl9BX0VORFBPSU5ULCAmZW5kcG9pbnRfY192NiwKICAgICAgICAgICAgICAg c2l6ZW9mKGVuZHBvaW50X2NfdjYpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR1BFRVJfQV9Q RVJTSVNURU5UX0tFRVBBTElWRV9JTlRFUlZBTCwKICAgICAgICAgICAgICAgJnBlcnNpc3RlbnRf a2VlcGFsaXZlc1sxXSwgMik7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwg V0dQRUVSX0FfQUxMT1dFRElQUyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVE IHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9p bmV0LCAyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJnNl Y29uZF9oYWxmX3Y0LAogICAgICAgICAgICAgICBzaXplb2Yoc2Vjb25kX2hhbGZfdjQpKTsKICBu ZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwg MSk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0Zf TkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFks ICZhZl9pbmV0NiwgMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFE RFIsICZzZWNvbmRfaGFsZl92NiwKICAgICAgICAgICAgICAgc2l6ZW9mKHNlY29uZF9oYWxmX3Y2 KSk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9DSURSX01BU0ssICZoYWxm X2NpZHIsIDEpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cp OwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIGVyciA9 IG5ldGxpbmtfc2VuZCgmbmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQogIG5ldGxp bmtfaW5pdCgmbmxtc2csIGlkLCAwLCAmZ2VubGhkciwgc2l6ZW9mKGdlbmxoZHIpKTsKICBuZXRs aW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX0lGTkFNRSwgaWZuYW1lX2IsIHN0cmxlbihpZm5h bWVfYikgKyAxKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX1BSSVZBVEVfS0VZ LCBwcml2YXRlX2IsIDMyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX0xJU1RF Tl9QT1JULCAmbGlzdGVuX2IsIDIpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RF RCB8IFdHREVWSUNFX0FfUEVFUlMpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RF RCB8IDApOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BVQkxJQ19LRVksIHB1Ymxp Y19hLCAzMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfRU5EUE9JTlQsICZlbmRw b2ludF9hX3Y2LAogICAgICAgICAgICAgICBzaXplb2YoZW5kcG9pbnRfYV92NikpOwogIG5ldGxp bmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BFUlNJU1RFTlRfS0VFUEFMSVZFX0lOVEVSVkFMLAog ICAgICAgICAgICAgICAmcGVyc2lzdGVudF9rZWVwYWxpdmVzWzJdLCAyKTsKICBuZXRsaW5rX25l c3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCBXR1BFRVJfQV9BTExPV0VESVBTKTsKICBuZXRsaW5r X25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBX R0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2luZXQsIDIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2cs IFdHQUxMT1dFRElQX0FfSVBBRERSLCAmZmlyc3RfaGFsZl92NCwKICAgICAgICAgICAgICAgc2l6 ZW9mKGZpcnN0X2hhbGZfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9B X0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0 bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1z ZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0NiwgMik7CiAgbmV0bGlua19hdHRyKCZu bG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZmaXJzdF9oYWxmX3Y2LAogICAgICAgICAgICAg ICBzaXplb2YoZmlyc3RfaGFsZl92NikpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dF RElQX0FfQ0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsK ICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5r X25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBX R1BFRVJfQV9QVUJMSUNfS0VZLCBwdWJsaWNfYywgMzIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2cs IFdHUEVFUl9BX0VORFBPSU5ULCAmZW5kcG9pbnRfY192NCwKICAgICAgICAgICAgICAgc2l6ZW9m KGVuZHBvaW50X2NfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR1BFRVJfQV9QRVJTSVNU RU5UX0tFRVBBTElWRV9JTlRFUlZBTCwKICAgICAgICAgICAgICAgJnBlcnNpc3RlbnRfa2VlcGFs aXZlc1szXSwgMik7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgV0dQRUVS X0FfQUxMT1dFRElQUyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7 CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0LCAy KTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJnNlY29uZF9o YWxmX3Y0LAogICAgICAgICAgICAgICBzaXplb2Yoc2Vjb25kX2hhbGZfdjQpKTsKICBuZXRsaW5r X2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAg bmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVE IHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9p bmV0NiwgMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZz ZWNvbmRfaGFsZl92NiwKICAgICAgICAgICAgICAgc2l6ZW9mKHNlY29uZF9oYWxmX3Y2KSk7CiAg bmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9DSURSX01BU0ssICZoYWxmX2NpZHIs IDEpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5l dGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIGVyciA9IG5ldGxp bmtfc2VuZCgmbmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQogIG5ldGxpbmtfaW5p dCgmbmxtc2csIGlkLCAwLCAmZ2VubGhkciwgc2l6ZW9mKGdlbmxoZHIpKTsKICBuZXRsaW5rX2F0 dHIoJm5sbXNnLCBXR0RFVklDRV9BX0lGTkFNRSwgaWZuYW1lX2MsIHN0cmxlbihpZm5hbWVfYykg KyAxKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX1BSSVZBVEVfS0VZLCBwcml2 YXRlX2MsIDMyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX0xJU1RFTl9QT1JU LCAmbGlzdGVuX2MsIDIpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RFRCB8IFdH REVWSUNFX0FfUEVFUlMpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RFRCB8IDAp OwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BVQkxJQ19LRVksIHB1YmxpY19hLCAz Mik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfRU5EUE9JTlQsICZlbmRwb2ludF9h X3Y2LAogICAgICAgICAgICAgICBzaXplb2YoZW5kcG9pbnRfYV92NikpOwogIG5ldGxpbmtfYXR0 cigmbmxtc2csIFdHUEVFUl9BX1BFUlNJU1RFTlRfS0VFUEFMSVZFX0lOVEVSVkFMLAogICAgICAg ICAgICAgICAmcGVyc2lzdGVudF9rZWVwYWxpdmVzWzRdLCAyKTsKICBuZXRsaW5rX25lc3QoJm5s bXNnLCBOTEFfRl9ORVNURUQgfCBXR1BFRVJfQV9BTExPV0VESVBTKTsKICBuZXRsaW5rX25lc3Qo Jm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9X RURJUF9BX0ZBTUlMWSwgJmFmX2luZXQsIDIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxM T1dFRElQX0FfSVBBRERSLCAmZmlyc3RfaGFsZl92NCwKICAgICAgICAgICAgICAgc2l6ZW9mKGZp cnN0X2hhbGZfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0NJRFJf TUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19u ZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dB TExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0NiwgMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywg V0dBTExPV0VESVBfQV9JUEFERFIsICZmaXJzdF9oYWxmX3Y2LAogICAgICAgICAgICAgICBzaXpl b2YoZmlyc3RfaGFsZl92NikpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dFRElQX0Ff Q0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRs aW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX25lc3Qo Jm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR1BFRVJf QV9QVUJMSUNfS0VZLCBwdWJsaWNfYiwgMzIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVF Ul9BX0VORFBPSU5ULCAmZW5kcG9pbnRfYl92NCwKICAgICAgICAgICAgICAgc2l6ZW9mKGVuZHBv aW50X2JfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR1BFRVJfQV9QRVJTSVNURU5UX0tF RVBBTElWRV9JTlRFUlZBTCwKICAgICAgICAgICAgICAgJnBlcnNpc3RlbnRfa2VlcGFsaXZlc1s1 XSwgMik7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgV0dQRUVSX0FfQUxM T1dFRElQUyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0 bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0LCAyKTsKICBu ZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJnNlY29uZF9oYWxmX3Y0 LAogICAgICAgICAgICAgICBzaXplb2Yoc2Vjb25kX2hhbGZfdjQpKTsKICBuZXRsaW5rX2F0dHIo Jm5sbXNnLCBXR0FMTE9XRURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlu a19kb25lKCZubG1zZyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7 CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0Niwg Mik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZzZWNvbmRf aGFsZl92NiwKICAgICAgICAgICAgICAgc2l6ZW9mKHNlY29uZF9oYWxmX3Y2KSk7CiAgbmV0bGlu a19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9DSURSX01BU0ssICZoYWxmX2NpZHIsIDEpOwog IG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtf ZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIGVyciA9IG5ldGxpbmtfc2Vu ZCgmbmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQoKZXJyb3I6CiAgY2xvc2Uoc29j ayk7Cn0KCnN0YXRpYyB2b2lkIGluaXRpYWxpemVfbmV0ZGV2aWNlcyh2b2lkKQp7CiAgY2hhciBu ZXRkZXZzaW1bMTZdOwogIHNwcmludGYobmV0ZGV2c2ltLCAibmV0ZGV2c2ltJWQiLCAoaW50KXBy b2NpZCk7CiAgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIqIHR5cGU7CiAgICBjb25zdCBjaGFyKiBk ZXY7CiAgfSBkZXZ0eXBlc1tdID0gewogICAgICB7ImlwNmdyZXRhcCIsICJpcDZncmV0YXAwIn0s IHsiYnJpZGdlIiwgImJyaWRnZTAifSwgeyJ2Y2FuIiwgInZjYW4wIn0sCiAgICAgIHsiYm9uZCIs ICJib25kMCJ9LCAgICAgICAgICAgeyJ0ZWFtIiwgInRlYW0wIn0sICAgICB7ImR1bW15IiwgImR1 bW15MCJ9LAogICAgICB7Im5sbW9uIiwgIm5sbW9uMCJ9LCAgICAgICAgIHsiY2FpZiIsICJjYWlm MCJ9LCAgICAgeyJiYXRhZHYiLCAiYmF0YWR2MCJ9LAogICAgICB7InZ4Y2FuIiwgInZ4Y2FuMSJ9 LCAgICAgICAgIHsidmV0aCIsIDB9LCAgICAgICAgICAgeyJ3aXJlZ3VhcmQiLCAid2cwIn0sCiAg ICAgIHsid2lyZWd1YXJkIiwgIndnMSJ9LCAgICAgICAgeyJ3aXJlZ3VhcmQiLCAid2cyIn0sCiAg fTsKICBjb25zdCBjaGFyKiBkZXZtYXN0ZXJzW10gPSB7ImJyaWRnZSIsICJib25kIiwgInRlYW0i LCAiYmF0YWR2In07CiAgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICBpbnQgbWFj c2l6ZTsKICAgIGJvb2wgbm9pcHY2OwogIH0gZGV2aWNlc1tdID0gewogICAgICB7ImxvIiwgRVRI X0FMRU59LAogICAgICB7InNpdDAiLCAwfSwKICAgICAgeyJicmlkZ2UwIiwgRVRIX0FMRU59LAog ICAgICB7InZjYW4wIiwgMCwgdHJ1ZX0sCiAgICAgIHsidHVubDAiLCAwfSwKICAgICAgeyJncmUw IiwgMH0sCiAgICAgIHsiZ3JldGFwMCIsIEVUSF9BTEVOfSwKICAgICAgeyJpcF92dGkwIiwgMH0s CiAgICAgIHsiaXA2X3Z0aTAiLCAwfSwKICAgICAgeyJpcDZ0bmwwIiwgMH0sCiAgICAgIHsiaXA2 Z3JlMCIsIDB9LAogICAgICB7ImlwNmdyZXRhcDAiLCBFVEhfQUxFTn0sCiAgICAgIHsiZXJzcGFu MCIsIEVUSF9BTEVOfSwKICAgICAgeyJib25kMCIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMCIs IEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMSIsIEVUSF9BTEVOfSwKICAgICAgeyJ0ZWFtMCIsIEVU SF9BTEVOfSwKICAgICAgeyJ2ZXRoMF90b19icmlkZ2UiLCBFVEhfQUxFTn0sCiAgICAgIHsidmV0 aDFfdG9fYnJpZGdlIiwgRVRIX0FMRU59LAogICAgICB7InZldGgwX3RvX2JvbmQiLCBFVEhfQUxF Tn0sCiAgICAgIHsidmV0aDFfdG9fYm9uZCIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF90b190 ZWFtIiwgRVRIX0FMRU59LAogICAgICB7InZldGgxX3RvX3RlYW0iLCBFVEhfQUxFTn0sCiAgICAg IHsidmV0aDBfdG9faHNyIiwgRVRIX0FMRU59LAogICAgICB7InZldGgxX3RvX2hzciIsIEVUSF9B TEVOfSwKICAgICAgeyJoc3IwIiwgMH0sCiAgICAgIHsiZHVtbXkwIiwgRVRIX0FMRU59LAogICAg ICB7Im5sbW9uMCIsIDB9LAogICAgICB7InZ4Y2FuMCIsIDAsIHRydWV9LAogICAgICB7InZ4Y2Fu MSIsIDAsIHRydWV9LAogICAgICB7ImNhaWYwIiwgRVRIX0FMRU59LAogICAgICB7ImJhdGFkdjAi LCBFVEhfQUxFTn0sCiAgICAgIHtuZXRkZXZzaW0sIEVUSF9BTEVOfSwKICAgICAgeyJ4ZnJtMCIs IEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF92aXJ0X3dpZmkiLCBFVEhfQUxFTn0sCiAgICAgIHsi dmV0aDFfdmlydF93aWZpIiwgRVRIX0FMRU59LAogICAgICB7InZpcnRfd2lmaTAiLCBFVEhfQUxF Tn0sCiAgICAgIHsidmV0aDBfdmxhbiIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMV92bGFuIiwg RVRIX0FMRU59LAogICAgICB7InZsYW4wIiwgRVRIX0FMRU59LAogICAgICB7InZsYW4xIiwgRVRI X0FMRU59LAogICAgICB7Im1hY3ZsYW4wIiwgRVRIX0FMRU59LAogICAgICB7Im1hY3ZsYW4xIiwg RVRIX0FMRU59LAogICAgICB7ImlwdmxhbjAiLCBFVEhfQUxFTn0sCiAgICAgIHsiaXB2bGFuMSIs IEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF9tYWN2dGFwIiwgRVRIX0FMRU59LAogICAgICB7InZl dGgxX21hY3Z0YXAiLCBFVEhfQUxFTn0sCiAgICAgIHsibWFjdnRhcDAiLCBFVEhfQUxFTn0sCiAg ICAgIHsibWFjc2VjMCIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF90b19iYXRhZHYiLCBFVEhf QUxFTn0sCiAgICAgIHsidmV0aDFfdG9fYmF0YWR2IiwgRVRIX0FMRU59LAogICAgICB7ImJhdGFk dl9zbGF2ZV8wIiwgRVRIX0FMRU59LAogICAgICB7ImJhdGFkdl9zbGF2ZV8xIiwgRVRIX0FMRU59 LAogICAgICB7ImdlbmV2ZTAiLCBFVEhfQUxFTn0sCiAgICAgIHsiZ2VuZXZlMSIsIEVUSF9BTEVO fSwKICAgICAgeyJ3ZzAiLCAwfSwKICAgICAgeyJ3ZzEiLCAwfSwKICAgICAgeyJ3ZzIiLCAwfSwK ICB9OwogIGludCBzb2NrID0gc29ja2V0KEFGX05FVExJTkssIFNPQ0tfUkFXLCBORVRMSU5LX1JP VVRFKTsKICBpZiAoc29jayA9PSAtMSkKICAgIGV4aXQoMSk7CiAgdW5zaWduZWQgaTsKICBmb3Ig KGkgPSAwOyBpIDwgc2l6ZW9mKGRldnR5cGVzKSAvIHNpemVvZihkZXZ0eXBlc1swXSk7IGkrKykK ICAgIG5ldGxpbmtfYWRkX2RldmljZSgmbmxtc2csIHNvY2ssIGRldnR5cGVzW2ldLnR5cGUsIGRl dnR5cGVzW2ldLmRldik7CiAgZm9yIChpID0gMDsgaSA8IHNpemVvZihkZXZtYXN0ZXJzKSAvIChz aXplb2YoZGV2bWFzdGVyc1swXSkpOyBpKyspIHsKICAgIGNoYXIgbWFzdGVyWzMyXSwgc2xhdmUw WzMyXSwgdmV0aDBbMzJdLCBzbGF2ZTFbMzJdLCB2ZXRoMVszMl07CiAgICBzcHJpbnRmKHNsYXZl MCwgIiVzX3NsYXZlXzAiLCBkZXZtYXN0ZXJzW2ldKTsKICAgIHNwcmludGYodmV0aDAsICJ2ZXRo MF90b18lcyIsIGRldm1hc3RlcnNbaV0pOwogICAgbmV0bGlua19hZGRfdmV0aCgmbmxtc2csIHNv Y2ssIHNsYXZlMCwgdmV0aDApOwogICAgc3ByaW50ZihzbGF2ZTEsICIlc19zbGF2ZV8xIiwgZGV2 bWFzdGVyc1tpXSk7CiAgICBzcHJpbnRmKHZldGgxLCAidmV0aDFfdG9fJXMiLCBkZXZtYXN0ZXJz W2ldKTsKICAgIG5ldGxpbmtfYWRkX3ZldGgoJm5sbXNnLCBzb2NrLCBzbGF2ZTEsIHZldGgxKTsK ICAgIHNwcmludGYobWFzdGVyLCAiJXMwIiwgZGV2bWFzdGVyc1tpXSk7CiAgICBuZXRsaW5rX2Rl dmljZV9jaGFuZ2UoJm5sbXNnLCBzb2NrLCBzbGF2ZTAsIGZhbHNlLCBtYXN0ZXIsIDAsIDAsIE5V TEwpOwogICAgbmV0bGlua19kZXZpY2VfY2hhbmdlKCZubG1zZywgc29jaywgc2xhdmUxLCBmYWxz ZSwgbWFzdGVyLCAwLCAwLCBOVUxMKTsKICB9CiAgbmV0bGlua19hZGRfeGZybSgmbmxtc2csIHNv Y2ssICJ4ZnJtMCIpOwogIG5ldGxpbmtfZGV2aWNlX2NoYW5nZSgmbmxtc2csIHNvY2ssICJicmlk Z2Vfc2xhdmVfMCIsIHRydWUsIDAsIDAsIDAsIE5VTEwpOwogIG5ldGxpbmtfZGV2aWNlX2NoYW5n ZSgmbmxtc2csIHNvY2ssICJicmlkZ2Vfc2xhdmVfMSIsIHRydWUsIDAsIDAsIDAsIE5VTEwpOwog IG5ldGxpbmtfYWRkX3ZldGgoJm5sbXNnLCBzb2NrLCAiaHNyX3NsYXZlXzAiLCAidmV0aDBfdG9f aHNyIik7CiAgbmV0bGlua19hZGRfdmV0aCgmbmxtc2csIHNvY2ssICJoc3Jfc2xhdmVfMSIsICJ2 ZXRoMV90b19oc3IiKTsKICBuZXRsaW5rX2FkZF9oc3IoJm5sbXNnLCBzb2NrLCAiaHNyMCIsICJo c3Jfc2xhdmVfMCIsICJoc3Jfc2xhdmVfMSIpOwogIG5ldGxpbmtfZGV2aWNlX2NoYW5nZSgmbmxt c2csIHNvY2ssICJoc3Jfc2xhdmVfMCIsIHRydWUsIDAsIDAsIDAsIE5VTEwpOwogIG5ldGxpbmtf ZGV2aWNlX2NoYW5nZSgmbmxtc2csIHNvY2ssICJoc3Jfc2xhdmVfMSIsIHRydWUsIDAsIDAsIDAs IE5VTEwpOwogIG5ldGxpbmtfYWRkX3ZldGgoJm5sbXNnLCBzb2NrLCAidmV0aDBfdmlydF93aWZp IiwgInZldGgxX3ZpcnRfd2lmaSIpOwogIG5ldGxpbmtfYWRkX2xpbmtlZCgmbmxtc2csIHNvY2ss ICJ2aXJ0X3dpZmkiLCAidmlydF93aWZpMCIsCiAgICAgICAgICAgICAgICAgICAgICJ2ZXRoMV92 aXJ0X3dpZmkiKTsKICBuZXRsaW5rX2FkZF92ZXRoKCZubG1zZywgc29jaywgInZldGgwX3ZsYW4i LCAidmV0aDFfdmxhbiIpOwogIG5ldGxpbmtfYWRkX3ZsYW4oJm5sbXNnLCBzb2NrLCAidmxhbjAi LCAidmV0aDBfdmxhbiIsIDAsIGh0b25zKEVUSF9QXzgwMjFRKSk7CiAgbmV0bGlua19hZGRfdmxh bigmbmxtc2csIHNvY2ssICJ2bGFuMSIsICJ2ZXRoMF92bGFuIiwgMSwgaHRvbnMoRVRIX1BfODAy MUFEKSk7CiAgbmV0bGlua19hZGRfbWFjdmxhbigmbmxtc2csIHNvY2ssICJtYWN2bGFuMCIsICJ2 ZXRoMV92bGFuIik7CiAgbmV0bGlua19hZGRfbWFjdmxhbigmbmxtc2csIHNvY2ssICJtYWN2bGFu MSIsICJ2ZXRoMV92bGFuIik7CiAgbmV0bGlua19hZGRfaXB2bGFuKCZubG1zZywgc29jaywgImlw dmxhbjAiLCAidmV0aDBfdmxhbiIsIElQVkxBTl9NT0RFX0wyLCAwKTsKICBuZXRsaW5rX2FkZF9p cHZsYW4oJm5sbXNnLCBzb2NrLCAiaXB2bGFuMSIsICJ2ZXRoMF92bGFuIiwgSVBWTEFOX01PREVf TDNTLAogICAgICAgICAgICAgICAgICAgICBJUFZMQU5fRl9WRVBBKTsKICBuZXRsaW5rX2FkZF92 ZXRoKCZubG1zZywgc29jaywgInZldGgwX21hY3Z0YXAiLCAidmV0aDFfbWFjdnRhcCIpOwogIG5l dGxpbmtfYWRkX2xpbmtlZCgmbmxtc2csIHNvY2ssICJtYWN2dGFwIiwgIm1hY3Z0YXAwIiwgInZl dGgwX21hY3Z0YXAiKTsKICBuZXRsaW5rX2FkZF9saW5rZWQoJm5sbXNnLCBzb2NrLCAibWFjc2Vj IiwgIm1hY3NlYzAiLCAidmV0aDFfbWFjdnRhcCIpOwogIGNoYXIgYWRkclszMl07CiAgc3ByaW50 ZihhZGRyLCBERVZfSVBWNCwgMTQgKyAxMCk7CiAgc3RydWN0IGluX2FkZHIgZ2VuZXZlX2FkZHI0 OwogIGlmIChpbmV0X3B0b24oQUZfSU5FVCwgYWRkciwgJmdlbmV2ZV9hZGRyNCkgPD0gMCkKICAg IGV4aXQoMSk7CiAgc3RydWN0IGluNl9hZGRyIGdlbmV2ZV9hZGRyNjsKICBpZiAoaW5ldF9wdG9u KEFGX0lORVQ2LCAiZmMwMDo6MDEiLCAmZ2VuZXZlX2FkZHI2KSA8PSAwKQogICAgZXhpdCgxKTsK ICBuZXRsaW5rX2FkZF9nZW5ldmUoJm5sbXNnLCBzb2NrLCAiZ2VuZXZlMCIsIDAsICZnZW5ldmVf YWRkcjQsIDApOwogIG5ldGxpbmtfYWRkX2dlbmV2ZSgmbmxtc2csIHNvY2ssICJnZW5ldmUxIiwg MSwgMCwgJmdlbmV2ZV9hZGRyNik7CiAgbmV0ZGV2c2ltX2FkZCgoaW50KXByb2NpZCwgNCk7CiAg bmV0bGlua193aXJlZ3VhcmRfc2V0dXAoKTsKICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGRldmlj ZXMpIC8gKHNpemVvZihkZXZpY2VzWzBdKSk7IGkrKykgewogICAgY2hhciBhZGRyWzMyXTsKICAg IHNwcmludGYoYWRkciwgREVWX0lQVjQsIGkgKyAxMCk7CiAgICBuZXRsaW5rX2FkZF9hZGRyNCgm bmxtc2csIHNvY2ssIGRldmljZXNbaV0ubmFtZSwgYWRkcik7CiAgICBpZiAoIWRldmljZXNbaV0u bm9pcHY2KSB7CiAgICAgIHNwcmludGYoYWRkciwgREVWX0lQVjYsIGkgKyAxMCk7CiAgICAgIG5l dGxpbmtfYWRkX2FkZHI2KCZubG1zZywgc29jaywgZGV2aWNlc1tpXS5uYW1lLCBhZGRyKTsKICAg IH0KICAgIHVpbnQ2NF90IG1hY2FkZHIgPSBERVZfTUFDICsgKChpICsgMTB1bGwpIDw8IDQwKTsK ICAgIG5ldGxpbmtfZGV2aWNlX2NoYW5nZSgmbmxtc2csIHNvY2ssIGRldmljZXNbaV0ubmFtZSwg dHJ1ZSwgMCwgJm1hY2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlc1tpXS5t YWNzaXplLCBOVUxMKTsKICB9CiAgY2xvc2Uoc29jayk7Cn0Kc3RhdGljIHZvaWQgaW5pdGlhbGl6 ZV9uZXRkZXZpY2VzX2luaXQodm9pZCkKewogIGludCBzb2NrID0gc29ja2V0KEFGX05FVExJTkss IFNPQ0tfUkFXLCBORVRMSU5LX1JPVVRFKTsKICBpZiAoc29jayA9PSAtMSkKICAgIGV4aXQoMSk7 CiAgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIqIHR5cGU7CiAgICBpbnQgbWFjc2l6ZTsKICAgIGJv b2wgbm9pcHY2OwogICAgYm9vbCBub3VwOwogIH0gZGV2dHlwZXNbXSA9IHsKICAgICAgeyJuciIs IDcsIHRydWV9LAogICAgICB7InJvc2UiLCA1LCB0cnVlLCB0cnVlfSwKICB9OwogIHVuc2lnbmVk IGk7CiAgZm9yIChpID0gMDsgaSA8IHNpemVvZihkZXZ0eXBlcykgLyBzaXplb2YoZGV2dHlwZXNb MF0pOyBpKyspIHsKICAgIGNoYXIgZGV2WzMyXSwgYWRkclszMl07CiAgICBzcHJpbnRmKGRldiwg IiVzJWQiLCBkZXZ0eXBlc1tpXS50eXBlLCAoaW50KXByb2NpZCk7CiAgICBzcHJpbnRmKGFkZHIs ICIxNzIuMzAuJWQuJWQiLCBpLCAoaW50KXByb2NpZCArIDEpOwogICAgbmV0bGlua19hZGRfYWRk cjQoJm5sbXNnLCBzb2NrLCBkZXYsIGFkZHIpOwogICAgaWYgKCFkZXZ0eXBlc1tpXS5ub2lwdjYp IHsKICAgICAgc3ByaW50ZihhZGRyLCAiZmU4ODo6JTAyeDolMDJ4IiwgaSwgKGludClwcm9jaWQg KyAxKTsKICAgICAgbmV0bGlua19hZGRfYWRkcjYoJm5sbXNnLCBzb2NrLCBkZXYsIGFkZHIpOwog ICAgfQogICAgaW50IG1hY3NpemUgPSBkZXZ0eXBlc1tpXS5tYWNzaXplOwogICAgdWludDY0X3Qg bWFjYWRkciA9IDB4YmJiYmJiICsKICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxv bmcgbG9uZylpIDw8ICg4ICogKG1hY3NpemUgLSAyKSkpICsKICAgICAgICAgICAgICAgICAgICAg ICAocHJvY2lkIDw8ICg4ICogKG1hY3NpemUgLSAxKSkpOwogICAgbmV0bGlua19kZXZpY2VfY2hh bmdlKCZubG1zZywgc29jaywgZGV2LCAhZGV2dHlwZXNbaV0ubm91cCwgMCwgJm1hY2FkZHIsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFjc2l6ZSwgTlVMTCk7CiAgfQogIGNsb3NlKHNvY2sp Owp9CgojZGVmaW5lIE1BWF9GRFMgMzAKCnN0YXRpYyB2b2lkIHNldHVwX2NvbW1vbigpCnsKICBp ZiAobW91bnQoMCwgIi9zeXMvZnMvZnVzZS9jb25uZWN0aW9ucyIsICJmdXNlY3RsIiwgMCwgMCkp IHsKICB9Cn0KCnN0YXRpYyB2b2lkIHNldHVwX2JpbmRlcmZzKCkKewogIGlmIChta2RpcigiL2Rl di9iaW5kZXJmcyIsIDA3NzcpKSB7CiAgfQogIGlmIChtb3VudCgiYmluZGVyIiwgIi9kZXYvYmlu ZGVyZnMiLCAiYmluZGVyIiwgMCwgTlVMTCkpIHsKICB9CiAgaWYgKHN5bWxpbmsoIi9kZXYvYmlu ZGVyZnMiLCAiLi9iaW5kZXJmcyIpKSB7CiAgfQp9CgpzdGF0aWMgdm9pZCBsb29wKCk7CgpzdGF0 aWMgdm9pZCBzYW5kYm94X2NvbW1vbigpCnsKICBwcmN0bChQUl9TRVRfUERFQVRIU0lHLCBTSUdL SUxMLCAwLCAwLCAwKTsKICBzZXRzaWQoKTsKICBzdHJ1Y3QgcmxpbWl0IHJsaW07CiAgcmxpbS5y bGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSAoMjAwIDw8IDIwKTsKICBzZXRybGltaXQoUkxJTUlU X0FTLCAmcmxpbSk7CiAgcmxpbS5ybGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSAzMiA8PCAyMDsK ICBzZXRybGltaXQoUkxJTUlUX01FTUxPQ0ssICZybGltKTsKICBybGltLnJsaW1fY3VyID0gcmxp bS5ybGltX21heCA9IDEzNiA8PCAyMDsKICBzZXRybGltaXQoUkxJTUlUX0ZTSVpFLCAmcmxpbSk7 CiAgcmxpbS5ybGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSAxIDw8IDIwOwogIHNldHJsaW1pdChS TElNSVRfU1RBQ0ssICZybGltKTsKICBybGltLnJsaW1fY3VyID0gcmxpbS5ybGltX21heCA9IDEy OCA8PCAyMDsKICBzZXRybGltaXQoUkxJTUlUX0NPUkUsICZybGltKTsKICBybGltLnJsaW1fY3Vy ID0gcmxpbS5ybGltX21heCA9IDI1NjsKICBzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsaW0p OwogIGlmICh1bnNoYXJlKENMT05FX05FV05TKSkgewogIH0KICBpZiAobW91bnQoTlVMTCwgIi8i LCBOVUxMLCBNU19SRUMgfCBNU19QUklWQVRFLCBOVUxMKSkgewogIH0KICBpZiAodW5zaGFyZShD TE9ORV9ORVdJUEMpKSB7CiAgfQogIGlmICh1bnNoYXJlKDB4MDIwMDAwMDApKSB7CiAgfQogIGlm ICh1bnNoYXJlKENMT05FX05FV1VUUykpIHsKICB9CiAgaWYgKHVuc2hhcmUoQ0xPTkVfU1lTVlNF TSkpIHsKICB9CiAgdHlwZWRlZiBzdHJ1Y3QgewogICAgY29uc3QgY2hhciogbmFtZTsKICAgIGNv bnN0IGNoYXIqIHZhbHVlOwogIH0gc3lzY3RsX3Q7CiAgc3RhdGljIGNvbnN0IHN5c2N0bF90IHN5 c2N0bHNbXSA9IHsKICAgICAgeyIvcHJvYy9zeXMva2VybmVsL3NobW1heCIsICIxNjc3NzIxNiJ9 LAogICAgICB7Ii9wcm9jL3N5cy9rZXJuZWwvc2htYWxsIiwgIjUzNjg3MDkxMiJ9LAogICAgICB7 Ii9wcm9jL3N5cy9rZXJuZWwvc2htbW5pIiwgIjEwMjQifSwKICAgICAgeyIvcHJvYy9zeXMva2Vy bmVsL21zZ21heCIsICI4MTkyIn0sCiAgICAgIHsiL3Byb2Mvc3lzL2tlcm5lbC9tc2dtbmkiLCAi MTAyNCJ9LAogICAgICB7Ii9wcm9jL3N5cy9rZXJuZWwvbXNnbW5iIiwgIjEwMjQifSwKICAgICAg eyIvcHJvYy9zeXMva2VybmVsL3NlbSIsICIxMDI0IDEwNDg1NzYgNTAwIDEwMjQifSwKICB9Owog IHVuc2lnbmVkIGk7CiAgZm9yIChpID0gMDsgaSA8IHNpemVvZihzeXNjdGxzKSAvIHNpemVvZihz eXNjdGxzWzBdKTsgaSsrKQogICAgd3JpdGVfZmlsZShzeXNjdGxzW2ldLm5hbWUsIHN5c2N0bHNb aV0udmFsdWUpOwp9CgpzdGF0aWMgaW50IHdhaXRfZm9yX2xvb3AoaW50IHBpZCkKewogIGlmIChw aWQgPCAwKQogICAgZXhpdCgxKTsKICBpbnQgc3RhdHVzID0gMDsKICB3aGlsZSAod2FpdHBpZCgt MSwgJnN0YXR1cywgX19XQUxMKSAhPSBwaWQpIHsKICB9CiAgcmV0dXJuIFdFWElUU1RBVFVTKHN0 YXR1cyk7Cn0KCnN0YXRpYyB2b2lkIGRyb3BfY2Fwcyh2b2lkKQp7CiAgc3RydWN0IF9fdXNlcl9j YXBfaGVhZGVyX3N0cnVjdCBjYXBfaGRyID0ge307CiAgc3RydWN0IF9fdXNlcl9jYXBfZGF0YV9z dHJ1Y3QgY2FwX2RhdGFbMl0gPSB7fTsKICBjYXBfaGRyLnZlcnNpb24gPSBfTElOVVhfQ0FQQUJJ TElUWV9WRVJTSU9OXzM7CiAgY2FwX2hkci5waWQgPSBnZXRwaWQoKTsKICBpZiAoc3lzY2FsbChT WVNfY2FwZ2V0LCAmY2FwX2hkciwgJmNhcF9kYXRhKSkKICAgIGV4aXQoMSk7CiAgY29uc3QgaW50 IGRyb3AgPSAoMSA8PCBDQVBfU1lTX1BUUkFDRSkgfCAoMSA8PCBDQVBfU1lTX05JQ0UpOwogIGNh cF9kYXRhWzBdLmVmZmVjdGl2ZSAmPSB+ZHJvcDsKICBjYXBfZGF0YVswXS5wZXJtaXR0ZWQgJj0g fmRyb3A7CiAgY2FwX2RhdGFbMF0uaW5oZXJpdGFibGUgJj0gfmRyb3A7CiAgaWYgKHN5c2NhbGwo U1lTX2NhcHNldCwgJmNhcF9oZHIsICZjYXBfZGF0YSkpCiAgICBleGl0KDEpOwp9CgpzdGF0aWMg aW50IGRvX3NhbmRib3hfbm9uZSh2b2lkKQp7CiAgaWYgKHVuc2hhcmUoQ0xPTkVfTkVXUElEKSkg ewogIH0KICBpbnQgcGlkID0gZm9yaygpOwogIGlmIChwaWQgIT0gMCkKICAgIHJldHVybiB3YWl0 X2Zvcl9sb29wKHBpZCk7CiAgc2V0dXBfY29tbW9uKCk7CiAgc2FuZGJveF9jb21tb24oKTsKICBk cm9wX2NhcHMoKTsKICBpbml0aWFsaXplX25ldGRldmljZXNfaW5pdCgpOwogIGlmICh1bnNoYXJl KENMT05FX05FV05FVCkpIHsKICB9CiAgd3JpdGVfZmlsZSgiL3Byb2Mvc3lzL25ldC9pcHY0L3Bp bmdfZ3JvdXBfcmFuZ2UiLCAiMCA2NTUzNSIpOwogIGluaXRpYWxpemVfbmV0ZGV2aWNlcygpOwog IHNldHVwX2JpbmRlcmZzKCk7CiAgbG9vcCgpOwogIGV4aXQoMSk7Cn0KCnN0YXRpYyB2b2lkIGtp bGxfYW5kX3dhaXQoaW50IHBpZCwgaW50KiBzdGF0dXMpCnsKICBraWxsKC1waWQsIFNJR0tJTEwp OwogIGtpbGwocGlkLCBTSUdLSUxMKTsKICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7 CiAgICBpZiAod2FpdHBpZCgtMSwgc3RhdHVzLCBXTk9IQU5HIHwgX19XQUxMKSA9PSBwaWQpCiAg ICAgIHJldHVybjsKICAgIHVzbGVlcCgxMDAwKTsKICB9CiAgRElSKiBkaXIgPSBvcGVuZGlyKCIv c3lzL2ZzL2Z1c2UvY29ubmVjdGlvbnMiKTsKICBpZiAoZGlyKSB7CiAgICBmb3IgKDs7KSB7CiAg ICAgIHN0cnVjdCBkaXJlbnQqIGVudCA9IHJlYWRkaXIoZGlyKTsKICAgICAgaWYgKCFlbnQpCiAg ICAgICAgYnJlYWs7CiAgICAgIGlmIChzdHJjbXAoZW50LT5kX25hbWUsICIuIikgPT0gMCB8fCBz dHJjbXAoZW50LT5kX25hbWUsICIuLiIpID09IDApCiAgICAgICAgY29udGludWU7CiAgICAgIGNo YXIgYWJvcnRbMzAwXTsKICAgICAgc25wcmludGYoYWJvcnQsIHNpemVvZihhYm9ydCksICIvc3lz L2ZzL2Z1c2UvY29ubmVjdGlvbnMvJXMvYWJvcnQiLAogICAgICAgICAgICAgICBlbnQtPmRfbmFt ZSk7CiAgICAgIGludCBmZCA9IG9wZW4oYWJvcnQsIE9fV1JPTkxZKTsKICAgICAgaWYgKGZkID09 IC0xKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYgKHdyaXRlKGZkLCBhYm9y dCwgMSkgPCAwKSB7CiAgICAgIH0KICAgICAgY2xvc2UoZmQpOwogICAgfQogICAgY2xvc2VkaXIo ZGlyKTsKICB9IGVsc2UgewogIH0KICB3aGlsZSAod2FpdHBpZCgtMSwgc3RhdHVzLCBfX1dBTEwp ICE9IHBpZCkgewogIH0KfQoKc3RhdGljIHZvaWQgc2V0dXBfdGVzdCgpCnsKICBwcmN0bChQUl9T RVRfUERFQVRIU0lHLCBTSUdLSUxMLCAwLCAwLCAwKTsKICBzZXRwZ3JwKCk7CiAgd3JpdGVfZmls ZSgiL3Byb2Mvc2VsZi9vb21fc2NvcmVfYWRqIiwgIjEwMDAiKTsKfQoKc3RhdGljIHZvaWQgY2xv c2VfZmRzKCkKewogIGZvciAoaW50IGZkID0gMzsgZmQgPCBNQVhfRkRTOyBmZCsrKQogICAgY2xv c2UoZmQpOwp9CgpzdGF0aWMgdm9pZCBleGVjdXRlX29uZSh2b2lkKTsKCiNkZWZpbmUgV0FJVF9G TEFHUyBfX1dBTEwKCnN0YXRpYyB2b2lkIGxvb3Aodm9pZCkKewogIGludCBpdGVyID0gMDsKICBm b3IgKDs7IGl0ZXIrKykgewogICAgaW50IHBpZCA9IGZvcmsoKTsKICAgIGlmIChwaWQgPCAwKQog ICAgICBleGl0KDEpOwogICAgaWYgKHBpZCA9PSAwKSB7CiAgICAgIHNldHVwX3Rlc3QoKTsKICAg ICAgZXhlY3V0ZV9vbmUoKTsKICAgICAgY2xvc2VfZmRzKCk7CiAgICAgIGV4aXQoMCk7CiAgICB9 CiAgICBpbnQgc3RhdHVzID0gMDsKICAgIHVpbnQ2NF90IHN0YXJ0ID0gY3VycmVudF90aW1lX21z KCk7CiAgICBmb3IgKDs7KSB7CiAgICAgIGlmICh3YWl0cGlkKC0xLCAmc3RhdHVzLCBXTk9IQU5H IHwgV0FJVF9GTEFHUykgPT0gcGlkKQogICAgICAgIGJyZWFrOwogICAgICBzbGVlcF9tcygxKTsK ICAgICAgaWYgKGN1cnJlbnRfdGltZV9tcygpIC0gc3RhcnQgPCA1MDAwKQogICAgICAgIGNvbnRp bnVlOwogICAgICBraWxsX2FuZF93YWl0KHBpZCwgJnN0YXR1cyk7CiAgICAgIGJyZWFrOwogICAg fQogIH0KfQoKdWludDY0X3QgclszXSA9IHsweGZmZmZmZmZmZmZmZmZmZmYsIDB4MCwgMHhmZmZm ZmZmZmZmZmZmZmZmfTsKCnZvaWQgZXhlY3V0ZV9vbmUodm9pZCkKewogIGludHB0cl90IHJlcyA9 IDA7CiAgcmVzID0gc3lzY2FsbChfX05SX3NvY2tldCwgLypkb21haW49Ki8weDExdWwsIC8qdHlw ZT0qLzB4ODAwMDAwMDAzdWwsCiAgICAgICAgICAgICAgICAvKnByb3RvPSovMCk7CiAgaWYgKHJl cyAhPSAtMSkKICAgIHJbMF0gPSByZXM7CiAgbWVtY3B5KCh2b2lkKikweDIwMDAwNjAwLCAidGVh bTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCIsCiAgICAgICAg IDE2KTsKICByZXMgPSBzeXNjYWxsKF9fTlJfaW9jdGwsIC8qZmQ9Ki9yWzBdLCAvKmNtZD0qLzB4 ODkzMywgLyphcmc9Ki8weDIwMDAwNjAwdWwpOwogIGlmIChyZXMgIT0gLTEpCiAgICByWzFdID0g Kih1aW50MzJfdCopMHgyMDAwMDYxMDsKICByZXMgPSBzeXNjYWxsKF9fTlJfc29ja2V0LCAvKmRv bWFpbj0qLzB4MTB1bCwgLyp0eXBlPSovM3VsLCAvKnByb3RvPSovMCk7CiAgaWYgKHJlcyAhPSAt MSkKICAgIHJbMl0gPSByZXM7CiAgKih1aW50NjRfdCopMHgyMDAwMDdjMCA9IDA7CiAgKih1aW50 MzJfdCopMHgyMDAwMDdjOCA9IDA7CiAgKih1aW50NjRfdCopMHgyMDAwMDdkMCA9IDB4MjAwMDA3 ODA7CiAgKih1aW50NjRfdCopMHgyMDAwMDc4MCA9IDB4MjAwMDAwMDA7CiAgKih1aW50MzJfdCop MHgyMDAwMDAwMCA9IDB4Y2M7CiAgKih1aW50MTZfdCopMHgyMDAwMDAwNCA9IDB4MjQ7CiAgKih1 aW50MTZfdCopMHgyMDAwMDAwNiA9IDB4ZjBiOwogICoodWludDMyX3QqKTB4MjAwMDAwMDggPSAw OwogICoodWludDMyX3QqKTB4MjAwMDAwMGMgPSAwOwogICoodWludDhfdCopMHgyMDAwMDAxMCA9 IDA7CiAgKih1aW50OF90KikweDIwMDAwMDExID0gMDsKICAqKHVpbnQxNl90KikweDIwMDAwMDEy ID0gMHgxMjsKICAqKHVpbnQzMl90KikweDIwMDAwMDE0ID0gclsxXTsKICAqKHVpbnQxNl90Kikw eDIwMDAwMDE4ID0gMDsKICAqKHVpbnQxNl90KikweDIwMDAwMDFhID0gMDsKICAqKHVpbnQxNl90 KikweDIwMDAwMDFjID0gLTE7CiAgKih1aW50MTZfdCopMHgyMDAwMDAxZSA9IC0xOwogICoodWlu dDE2X3QqKTB4MjAwMDAwMjAgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwMjIgPSAwOwogICoo dWludDE2X3QqKTB4MjAwMDAwMjQgPSAweGI7CiAgKih1aW50MTZfdCopMHgyMDAwMDAyNiA9IDE7 CiAgbWVtY3B5KCh2b2lkKikweDIwMDAwMDI4LCAidGFwcmlvXDAwMCIsIDcpOwogICoodWludDE2 X3QqKTB4MjAwMDAwMzAgPSAweDljOwogICoodWludDE2X3QqKTB4MjAwMDAwMzIgPSAyOwogICoo dWludDE2X3QqKTB4MjAwMDAwMzQgPSAweDU2OwogICoodWludDE2X3QqKTB4MjAwMDAwMzYgPSAx OwogICoodWludDhfdCopMHgyMDAwMDAzOCA9IDI7CiAgKih1aW50OF90KikweDIwMDAwMDM5ID0g MDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAwM2EgPSAwOwogICoodWludDhfdCopMHgyMDAwMDAzYiA9 IDA7CiAgKih1aW50OF90KikweDIwMDAwMDNjID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAwM2Qg PSAwOwogICoodWludDhfdCopMHgyMDAwMDAzZSA9IDA7CiAgKih1aW50OF90KikweDIwMDAwMDNm ID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAwNDAgPSAwOwogICoodWludDhfdCopMHgyMDAwMDA0 MSA9IDA7CiAgKih1aW50OF90KikweDIwMDAwMDQyID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAw NDMgPSAwOwogICoodWludDhfdCopMHgyMDAwMDA0NCA9IDA7CiAgKih1aW50OF90KikweDIwMDAw MDQ1ID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAwNDYgPSAwOwogICoodWludDhfdCopMHgyMDAw MDA0NyA9IDA7CiAgKih1aW50OF90KikweDIwMDAwMDQ4ID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAw MDAwNDkgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNGEgPSA4OwogICoodWludDE2X3QqKTB4 MjAwMDAwNGMgPSA0OwogICoodWludDE2X3QqKTB4MjAwMDAwNGUgPSAwOwogICoodWludDE2X3Qq KTB4MjAwMDAwNTAgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNTIgPSAwOwogICoodWludDE2 X3QqKTB4MjAwMDAwNTQgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNTYgPSAwOwogICoodWlu dDE2X3QqKTB4MjAwMDAwNTggPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNWEgPSAwOwogICoo dWludDE2X3QqKTB4MjAwMDAwNWMgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNWUgPSAwOwog ICoodWludDE2X3QqKTB4MjAwMDAwNjAgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNjIgPSAw OwogICoodWludDE2X3QqKTB4MjAwMDAwNjQgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNjYg PSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNjggPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAw NmEgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNmMgPSA4OwogICoodWludDE2X3QqKTB4MjAw MDAwNmUgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNzAgPSAwOwogICoodWludDE2X3QqKTB4 MjAwMDAwNzIgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNzQgPSAwOwogICoodWludDE2X3Qq KTB4MjAwMDAwNzYgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwNzggPSAwOwogICoodWludDE2 X3QqKTB4MjAwMDAwN2EgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwN2MgPSAwOwogICoodWlu dDE2X3QqKTB4MjAwMDAwN2UgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwODAgPSAwOwogICoo dWludDE2X3QqKTB4MjAwMDAwODIgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwODQgPSAwOwog ICoodWludDE2X3QqKTB4MjAwMDAwODYgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAwODggPSAw OwogICoodWludDE2X3QqKTB4MjAwMDAwOGMgPSAweDM4OwogIFNUT1JFX0JZX0JJVE1BU0sodWlu dDE2X3QsICwgMHgyMDAwMDA4ZSwgMiwgMCwgMTQpOwogIFNUT1JFX0JZX0JJVE1BU0sodWludDE2 X3QsICwgMHgyMDAwMDA4ZiwgMCwgNiwgMSk7CiAgU1RPUkVfQllfQklUTUFTSyh1aW50MTZfdCwg LCAweDIwMDAwMDhmLCAxLCA3LCAxKTsKICAqKHVpbnQxNl90KikweDIwMDAwMDkwID0gMHgzNDsK ICBTVE9SRV9CWV9CSVRNQVNLKHVpbnQxNl90LCAsIDB4MjAwMDAwOTIsIDEsIDAsIDE0KTsKICBT VE9SRV9CWV9CSVRNQVNLKHVpbnQxNl90LCAsIDB4MjAwMDAwOTMsIDAsIDYsIDEpOwogIFNUT1JF X0JZX0JJVE1BU0sodWludDE2X3QsICwgMHgyMDAwMDA5MywgMSwgNywgMSk7CiAgKih1aW50MTZf dCopMHgyMDAwMDA5NCA9IDg7CiAgKih1aW50MTZfdCopMHgyMDAwMDA5NiA9IDQ7CiAgKih1aW50 MzJfdCopMHgyMDAwMDA5OCA9IDB4ODAwMDAwMDE7CiAgKih1aW50MTZfdCopMHgyMDAwMDA5YyA9 IDU7CiAgKih1aW50MTZfdCopMHgyMDAwMDA5ZSA9IDI7CiAgKih1aW50OF90KikweDIwMDAwMGEw ID0gNjsKICAqKHVpbnQxNl90KikweDIwMDAwMGE0ID0gNTsKICAqKHVpbnQxNl90KikweDIwMDAw MGE2ID0gMjsKICAqKHVpbnQ4X3QqKTB4MjAwMDAwYTggPSAwOwogICoodWludDE2X3QqKTB4MjAw MDAwYWMgPSA4OwogICoodWludDE2X3QqKTB4MjAwMDAwYWUgPSAzOwogICoodWludDMyX3QqKTB4 MjAwMDAwYjAgPSAweGJhOwogICoodWludDE2X3QqKTB4MjAwMDAwYjQgPSA4OwogICoodWludDE2 X3QqKTB4MjAwMDAwYjYgPSA0OwogICoodWludDMyX3QqKTB4MjAwMDAwYjggPSAweGZmZjsKICAq KHVpbnQxNl90KikweDIwMDAwMGJjID0gODsKICAqKHVpbnQxNl90KikweDIwMDAwMGJlID0gMzsK ICAqKHVpbnQzMl90KikweDIwMDAwMGMwID0gMHgxMDE7CiAgKih1aW50MTZfdCopMHgyMDAwMDBj NCA9IDg7CiAgKih1aW50MTZfdCopMHgyMDAwMDBjNiA9IDU7CiAgKih1aW50MzJfdCopMHgyMDAw MDBjOCA9IDA7CiAgKih1aW50NjRfdCopMHgyMDAwMDc4OCA9IDB4Y2M7CiAgKih1aW50NjRfdCop MHgyMDAwMDdkOCA9IDE7CiAgKih1aW50NjRfdCopMHgyMDAwMDdlMCA9IDA7CiAgKih1aW50NjRf dCopMHgyMDAwMDdlOCA9IDA7CiAgKih1aW50MzJfdCopMHgyMDAwMDdmMCA9IDA7CiAgc3lzY2Fs bChfX05SX3NlbmRtc2csIC8qZmQ9Ki9yWzJdLCAvKm1zZz0qLzB4MjAwMDA3YzB1bCwgLypmPSov MHVsKTsKfQppbnQgbWFpbih2b2lkKQp7CiAgc3lzY2FsbChfX05SX21tYXAsIC8qYWRkcj0qLzB4 MWZmZmYwMDB1bCwgLypsZW49Ki8weDEwMDB1bCwgLypwcm90PSovMHVsLAogICAgICAgICAgLypm bGFncz0qLzB4MzJ1bCwgLypmZD0qLy0xLCAvKm9mZnNldD0qLzB1bCk7CiAgc3lzY2FsbChfX05S X21tYXAsIC8qYWRkcj0qLzB4MjAwMDAwMDB1bCwgLypsZW49Ki8weDEwMDAwMDB1bCwgLypwcm90 PSovN3VsLAogICAgICAgICAgLypmbGFncz0qLzB4MzJ1bCwgLypmZD0qLy0xLCAvKm9mZnNldD0q LzB1bCk7CiAgc3lzY2FsbChfX05SX21tYXAsIC8qYWRkcj0qLzB4MjEwMDAwMDB1bCwgLypsZW49 Ki8weDEwMDB1bCwgLypwcm90PSovMHVsLAogICAgICAgICAgLypmbGFncz0qLzB4MzJ1bCwgLypm ZD0qLy0xLCAvKm9mZnNldD0qLzB1bCk7CiAgZG9fc2FuZGJveF9ub25lKCk7CiAgcmV0dXJuIDA7 Cn0K ------=ALIBOUNDARY_25767_7f8a0939e700_65bde39b_52f634--