Received: by 10.223.176.5 with SMTP id f5csp4323673wra; Tue, 30 Jan 2018 05:43:06 -0800 (PST) X-Google-Smtp-Source: AH8x2263RH1gsdH/pDAdfp/8m737XSI61Ja1HPxCEhMfzlqPL89iu9tNEJekCv9qKyr3MKmKWTw2 X-Received: by 10.99.134.194 with SMTP id x185mr24208485pgd.252.1517319786030; Tue, 30 Jan 2018 05:43:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517319785; cv=none; d=google.com; s=arc-20160816; b=acAtSteIJaGaqNfiHHpjQmMPpsXREh5+MNCAEZbVBALgXDy99jI2ghR3ug6RZcmf9Q Eb400H+M/8shi3wvZJwWJ6mZwDkYBqB/ZaTYwooszmN6srqfdG+BJCa+BZ8RdUtbwJnn dOKjLqeVgeSqzhwzwROEsLA1xJrFmIalZdw677I0WWnlpERwkRJrUsLlBR6a9Wk7s0w8 JN0Zxa0COhqApd8cI95eaUzoj6Vk8cjCWBJxFBCwiRVHXF3dk9Um/h9vi7Sq3wuou7sZ 06SCDQc3XP+nPC107mHLi6q9vQVdAF4DDmIbyl3tI1MCzzIDo88ogxfGolQYoXwnTNMr WErA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from :arc-authentication-results; bh=3Z9lk5wQ4w0kYG8HQBoSjjoAzRgkQ6wOaR0n8she2vk=; b=frAQ7jI8Fe0JYBAENPxblAsJXH3og4tS4oo8KMY7jnhchjHkQOoZTI/VhRtg6MUhPZ alrvvUDCojnD7E8Z9p2mfXFdae0KEgZZ2Jq41KbP4xVbVxQFqxWOOZAEz9ppPRKqBLEa dx6AnQ90vZhMc+/2JIlzZQaLex6YeESzCcFo6M8hFkyLX9fGlqlc9xqA+rn4sDGKJSXk r66v6kpWzFcOf6/OPaUpNRKm332jNOEhX6jzvsLspel5hrmx1qBz6Zsn06Sd1AqChHyq IsgVI92h6esjINKSoIJkV22fi94C38H47i35MXCXqiQIalxK9RXlBWL3TBFK61jaV+J5 qHxA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y128si1510437pfy.110.2018.01.30.05.42.50; Tue, 30 Jan 2018 05:43:05 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752485AbeA3NWK (ORCPT + 99 others); Tue, 30 Jan 2018 08:22:10 -0500 Received: from mg.richtek.com ([220.130.44.152]:47528 "EHLO mg.richtek.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752461AbeA3NWG (ORCPT ); Tue, 30 Jan 2018 08:22:06 -0500 X-MailGates: (flag:4,DYNAMIC,BADHELO,RELAY,NOHOST:PASS)(compute_score:DE LIVER,40,3) Received: from 192.168.8.45 by mg.richtek.com with MailGates ESMTP Server V5.0(15886:0:AUTH_RELAY) (envelope-from ); Tue, 30 Jan 2018 21:21:02 +0800 (CST) Received: from ex1.rt.l (192.168.8.44) by ex2.rt.l (192.168.8.45) with Microsoft SMTP Server (TLS) id 15.0.1076.9; Tue, 30 Jan 2018 21:20:59 +0800 Received: from ex1.rt.l ([fe80::557d:30f0:a3f8:3efc]) by ex1.rt.l ([fe80::557d:30f0:a3f8:3efc%15]) with mapi id 15.00.1076.000; Tue, 30 Jan 2018 21:21:01 +0800 From: =?utf-8?B?c2h1ZmFuX2xlZSjmnY7mm7jluIYp?= To: 'Guenter Roeck' CC: Heikki Krogerus , 'Jun Li' , ShuFanLee , =?utf-8?B?Y3lfaHVhbmco6buD5ZWf5Y6fKQ==?= , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" Subject: RE: [PATCH] USB TYPEC: RT1711H Type-C Chip Driver Thread-Topic: [PATCH] USB TYPEC: RT1711H Type-C Chip Driver Thread-Index: AQHTieCLFd+d5p/wz0qymBaVQ9+cLaN6DAKAgACwyuD//6aTAIAAiK7g//+In4CAAG9NgIAETJIQgACZXACACqxK8IAAZtUAgAGDp2A= Date: Tue, 30 Jan 2018 13:21:01 +0000 Message-ID: References: <1515567552-7692-1-git-send-email-leechu729@gmail.com> <20180119082218.GA22976@kuha.fi.intel.com> <25ced79e8ea84908bf6110a613ed81a2@ex1.rt.l> <20180119092413.GB22976@kuha.fi.intel.com> <20180119160235.GA21066@roeck-us.net> <20180122185034.GA26058@roeck-us.net> <20180129195752.GA24352@roeck-us.net> In-Reply-To: <20180129195752.GA24352@roeck-us.net> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [192.168.92.54] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgR3VlbnRlciwNCg0KICBGb3Igbm93LCBpdCBsb29rcyBsaWtlIHRoZXJlIGFyZSB0d28gd2F5 cyB0byBpbXBsZW1lbnQgdmVuZG9yIGRhdGEuIEl0IHdvdWxkIGJlIG5pY2UgdG8gaGVhciB5b3Vy IHN1Z2dlc3Rpb24uDQoNCiAgMS4gU2V0IHZlbmRvciBkYXRhIGluIHRoZSBkYXRhIGZpZWxkIG9m IG9mX2RldmljZV9pZC4NCklmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIHRoaXMgd291bGQgYmUg dGhlIG9uZSBtb3JlIGxpa2UgeW91IG1lbnRpb25lZCBiZWZvcmUuDQpJbiB0aGlzIGNhc2UsIHRj cGNpX3J0MTcxMWhfZGF0YSBuZWVkcyB0byBiZSBkZWZpbmVkIGluc2lkZSB0Y3BjaS5jIG9yIGRl ZmluZWQgYnkgb3RoZXIgZmlsZSh0Y3BjaV9ydDE3MTFoLmMpIGJ1dCBleHRlcm4gaW4gdGNwY2ku Yy4NCg0KRm9yIGV4YW1wbGU6DQpzdGF0aWMgc3RydWN0IHRjcGNpX3ZlbmRvcl9kYXRhIHRjcGNp X3J0MTcxMWhfZGF0YSA9IHsNCi5pbml0ID0gcnQxNzExaF9pbml0Ow0KLmlycV9oYW5kbGVyID0g cnQxNzExaF9pcnFfaGFuZGxlcg0KfTsNCk9SDQpleHRlcm4gc3RydWN0IHRjcGNpX3ZlbmRvcl9k YXRhIHRjcGNpX3J0MTcxMWhfZGF0YTsNCg0KVGhlbiwgcHV0IHRoaXMgc3RydWN0dXJlIGhlcmUN CnN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHRjcGNpX29mX21hdGNoW10gPSB7DQp7 IC5jb21wYXRpYmxlID0gInVzYix0Y3BjaSIsIH0sDQp7IC5jb21wYXRpYmxlID0gInJpY2h0ZWss cnQxNzExaCIsIC5kYXRhID0gKHZvaWQgKikmdGNwY2lfcnQxNzExaF9kYXRhIH0sDQp7fSwNCn07 DQoNCkZvciBvdGhlciB2ZW5kb3JzIHdobyB3YW50IHRvIGhhbmRsZSB2ZW5kb3IgZGF0YSBhbHNv IG5lZWQgdG8gYWRkIHRoZXNlIGNvZGUgaW5zaWRlIHRjcGNpLmMuDQpXZSBhcmUgbm90IHN1cmUg dGhhdCdzIHdoYXQgeW91IGV4cGVjdCBvciBub3QuDQoNCg0KMi4gSW4gdGNwY2kuYywgY3JlYXRl IGEgc3RhdGljIGxpc3RfaGVhZCB1c2VkIHRvIG1haW50YWluIHZlbmRvciBkYXRhLg0KVENQQ0kg ZHJpdmVyIHByb3ZpZGVzIGFuIEFQSSBmb3IgdGhvc2UgdmVuZG9ycyB0byBhZGQgdGhlaXIgdmVu ZG9yIGRhdGEgaW4gdGhlIGxpc3QuDQpUaGVuLCB3ZSBjb3VsZCBmaW5kIHZlbmRvciBkYXRhIGlu IHRoZSBsaXN0IGFjY29yZGluZyB0byBjb21wYXRpYmxlIHN0cmluZy4NCg0KRm9yIGV4YW1wbGU6 DQpJbiB0Y3BjaS5oDQpzdHJ1Y3QgdGNwY2lfdmVuZG9yX2RhdGEgew0KY29uc3QgY2hhciAqY29t cGF0aWJsZTsNCmludCAoKmluaXQpKC4uLik7DQppbnQgKCppcnFfaGFuZGxlcikoLi4uKTsNCnN0 cnVjdCBsaXN0X2hlYWQgbGlzdDsNCn07DQovKiBUaGlzIGZ1bmN0aW9uIGFkZHMgdGNwY2lfdmVu ZG9yX2RhdGEgdG8gdGhlIGxpc3QgKi8NCmV4dGVybiBpbnQgdGNwY2lfcmVnaXN0ZXJfdmVuZG9y X2RhdGEoc3RydWN0IHRjcGNpX3ZlbmRvcl9kYXRhICpkYXRhKTsNCg0KSW4gdGNwY2kuYw0Kc3Rh dGljIExJU1RfSEVBRCh0Y3BjaV92ZW5kb3JfZGF0YV9saXN0KTsNCmludCB0Y3BjaV9yZWdpc3Rl cl92ZW5kb3JfZGF0YSguLi4pDQp7DQouLi4NCmxpc3RfYWRkKC4uLik7DQouLi4NCn0NCg0KdGNw Y2lfaW5pdCgpDQp7DQouLi4NCi8qIEZpbmQgY29ycmVjdCB2ZW5kb3IgZGF0YSAqLw0KbGlzdF9m b3JfZWFjaCguLi4pDQouLi4NCn0NCg0KSW4gdGhpcyBjYXNlLCB2ZW5kb3IgbmVlZHMgdG8gZ3Vh cmFudGVlIHRoYXQgdmVuZG9yIGRhdGEgaXMgYWRkZWQgdG8gdGhlIGxpc3QgYmVmb3JlIHRjcGNp IHN0YXJ0cyB0byB3b3JrLg0KDQpCZXN0IFJlZ2FyZHMsDQoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKg0KU2h1LUZhbiBMZWUNClJpY2h0ZWsgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbg0KVEVM OiArODg2LTMtNTUyNjc4OSAjMjM1OQ0KRkFYOiArODg2LTMtNTUyNjYxMg0KKioqKioqKioqKioq KioqKioqKioqKioqKioqKioNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEd1 ZW50ZXIgUm9lY2sgW21haWx0bzpncm9lY2s3QGdtYWlsLmNvbV0gT24gQmVoYWxmIE9mIEd1ZW50 ZXIgUm9lY2sNClNlbnQ6IFR1ZXNkYXksIEphbnVhcnkgMzAsIDIwMTggMzo1OCBBTQ0KVG86IHNo dWZhbl9sZWUo5p2O5pu45biGKQ0KQ2M6IEhlaWtraSBLcm9nZXJ1czsgJ0p1biBMaSc7IFNodUZh bkxlZTsgY3lfaHVhbmco6buD5ZWf5Y6fKTsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsg bGludXgtdXNiQHZnZXIua2VybmVsLm9yZw0KU3ViamVjdDogUmU6IFtQQVRDSF0gVVNCIFRZUEVD OiBSVDE3MTFIIFR5cGUtQyBDaGlwIERyaXZlcg0KDQpPbiBNb24sIEphbiAyOSwgMjAxOCBhdCAw NzoxOTowNkFNICswMDAwLCBzaHVmYW5fbGVlKOadjuabuOW4hikgd3JvdGU6DQo+IEhpIEd1ZW50 ZXIsDQo+DQo+ICAgV2UgdHJ5IHRvIHVzZSB0aGUgVENQQ0kgZHJpdmVyIG9uIFJUMTcxMUggYW5k IGhlcmUgYXJlIHNvbWUgcXVlc3Rpb25zLg0KPg0KPiAgIFExLiBJcyBjdXJyZW50IFRDUENJIGRy aXZlciB3cml0dGVuIGFjY29yZGluZyB0byBUeXBlQyBQb3J0IENvbnRyb2xsZXIgSW50ZXJmYWNl IFNwZWNpZmljYXRpb24gUmV2aXNpb24gMS4wICYgVmVyc2lvbiAxLjI/DQoNClJldmlzaW9uIDEu MC4gTm90ZSB0aGF0IEkgZGlkIG5vdCBmaW5kIHJldmlzaW9uIDEuMiwgb25seSBSZXZpc2lvbiAx LjAgYW5kIFJldmlzaW9uIDIuMCB2ZXJzaW9uIDEuMC4NCg0KPiAgIFEyLiBCZWNhdXNlIDB4ODB+ MHhGRiBhcmUgdmVuZG9yIGRlZmluZWQgcmVnaXN0ZXJzLiBTb21lIG9mIHRoZW0gYXJlIG5lZWRl ZCB0byBiZSBpbml0aWFsaXplZCBpbiB0Y3BjaV9pbml0IGZvciBSVDE3MTFIIChvciBvdGhlciBj aGlwcyBhbHNvKS4NCj4gSW4gdGhlIGZ1dHVyZSBUQ1BDSSBkcml2ZXIsIHdpbGwgYW4gaW5pdGlh bCBpbnRlcmZhY2UgdGhhdCBpcyBjYWxsZWQgaW4gdGNwY2lfaW5pdCBiZSByZWxlYXNlZCBmb3Ig ZGlmZmVyZW50IHZlbmRvcnMgdG8gaW1wbGVtZW50Lg0KDQpNeSBzdWdnZXN0aW9uIHdvdWxkIGJl IHRvIHByb3ZpZGUgYW4gQVBJIGZvciB2ZW5kb3Igc3BlY2lmaWMgY29kZS4NCg0KPiBPciwgd2Ug c2hvdWxkIGRpcmVjdGx5IGNvcHkgdGNwY2kuYyB0byB0Y3BjaV9ydDE3MTFoLmMgYW5kIGFkZCB0 aGUgZGlmZmVyZW50IHBhcnRzPw0KDQpUaGF0IHdvdWxkIGRlZmVhdCB0aGUgcHVycG9zZS4gSXQg d291bGQgYmUgYmV0dGVyIHRvIGltcGxlbWVudCB2ZW5kb3Igc3BlY2lmaWMgY29kZSBpbiB0Y3Bj aV9ydDE3MTFoLmMgYW5kIGNhbGwgaXQgZnJvbSB0Y3BjaS5jDQoNClBvc3NpYmxlIGV4YW1wbGU6 DQoNCnN0cnVjdCB0Y3BjaV92ZW5kb3JfZGF0YSB7DQppbnQgKCppbml0KSguLi4pOw0KaW50ICgq aXJxX2hhbmRsZXIpKC4uLik7DQouLi4NCn0NCg0Kc3RhdGljIGlycXJldHVybl90IHRjcGNpX2ly cSguLi4pDQp7DQpzdHJ1Y3QgdGNwY2kgKnRjcGNpID0gZGV2X2lkOw0KDQouLi4NCmlmICh0Y3Bj aS0+dmVuZG9yX2RhdGEtPmlycV9oYW5kbGVyKSB7DQpyZXQgPSAoKnRjcGNpLT52ZW5kb3JfZGF0 YS0+aXJxX2hhbmRsZXIpKC4uLik7DQouLi4NCn0NCi4uLg0KfQ0KDQp0Y3BjaV9pbml0KCkNCnsN CnN0cnVjdCB0Y3BjaV92ZW5kb3JfZGF0YSAqdmVuZG9yX2RhdGEgPSAmdGNwY2lfcnQxNzExaF9k YXRhOw0KLy8gZWcgZnJvbSBkZXZpY2V0cmVlIGNvbXBhdGlibGUgcHJvcGVydHkNCg0KLi4uDQpp ZiAodmVuZG9yX2RhdGEtPmluaXQpIHsNCnJldCA9ICgqdmVuZG9yX2RhdGEtPmluaXQpKC4uLik7 DQppZiAocmV0KQ0KcmV0dXJuIHJldDsNCn0NCi4uLg0KfQ0KDQo+ICAgUTMuIElmIHRoZXJlIGFy ZSBJUlFzIGRlZmluZWQgaW4gdmVuZG9yIGRlZmluZWQgcmVnaXN0ZXJzLCB3aWxsIGFuIGludGVy ZmFjZSB0aGF0IGlzIGNhbGxlZCBpbiB0Y3BjaV9pcnEgYmUgcmVsZWFzZWQgZm9yIGRpZmZlcmVu dCB2ZW5kb3JzIHRvIGltcGxlbWVudC4NCj4gU28gdGhhdCB0aGV5IGNhbiBoYW5kbGUgdGhlaXIg b3duIElSUXMgZmlyc3Q/DQoNCklmIHRoZXJlIGFyZSB2ZW5kb3Igc3BlY2lmaWMgaW50ZXJydXB0 cywgSSB3b3VsZCBhc3N1bWUgdGhhdCB2ZW5kb3Igc3BlY2lmaWMgY29kZSB3aWxsIGhhdmUgdG8g YmUgY2FsbGVkLiBFaXRoZXIgdGhlIGdlbmVyaWMgaW50ZXJydXB0IGhhbmRsZXIgY2FuIGNhbGwg dmVuZG9yIHNwZWNpZmljIGNvZGUsIG9yIHRoZSB2ZW5kb3Igc3BlY2lmaWMgY29kZSBoYW5kbGVz IHRoZSBpbnRlcnJ1cHQgYW5kIGNhbGxzIHRoZSBnZW5lcmljIGhhbmRsZXIuIEkgZG9uJ3Qga25v dyBhdCB0aGlzIHBvaW50IHdoaWNoIG9uZSBpcyBiZXR0ZXIuDQoNCj4gSWYgdGhlIHN1Z2dlc3Rp b24gb2YgUTIgaXMgdG8gY29weSB0Y3BjaS5jIHRvIHRjcGNpX3J0MTcxMWguYywgdGhlbiBRMyB3 aWxsIG5vdCBiZSBhIHByb2JsZW0uDQo+ICAgUTQuIEFjY29yZGluZyB0byBUQ1BDSSBTcGVjaWZp Y2F0aW9uIFJldmlzaW9uIDEuMCwgd2Ugc2hvdWxkIHNldCBEUlAgPSAxIGFuZCByb2xlIHRvIFJw L1JwIG9yIFJkL1JkIGFuZCBzZXQgTE9PSzRDT05ORUNUSU9OIGNvbW1hbmQgdG8gc3RhcnQgdG9n Z2xlLg0KPiBTbyB3ZSBtb2RpZnkgdGhlIHRjcGNpX3N0YXJ0X2RycF90b2dnbGluZyBpbiBUQ1BD SSBkcml2ZXIgYXMgZm9sbG93aW5nLiBIZXJlIHdlIHdyaXRlIFJkL1JkIGFuZCBEUlAgPSAwIHNp bXVsdGFuZW91c2x5IHNvIHRoYXQgUmQvUmQgdGFrZXMgZWZmZWN0Lg0KPiBUaGVuIHdlIHdyaXRl IERSUCA9IDEgYW5kIHNldCBMT09LNENPTk5FQ1RJT04gY29tbWFuZCB0byBzdGFydCB0b2dnbGlu Zy4NCj4NClNHVE0uDQoNCj4gc3RhdGljIGludCB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmcoc3Ry dWN0IHRjcGNfZGV2ICp0Y3BjLA0KPiAgICAgIGVudW0gdHlwZWNfY2Nfc3RhdHVzIGNjKQ0KPiAg ew0KPiAraW50IHJldCA9IDA7DQo+ICBzdHJ1Y3QgdGNwY2kgKnRjcGNpID0gdGNwY190b190Y3Bj aSh0Y3BjKTsgLXVuc2lnbmVkIGludCByZWcgPQ0KPiBUQ1BDX1JPTEVfQ1RSTF9EUlA7DQo+ICt1 MzIgcmVnID0gKFRDUENfUk9MRV9DVFJMX0NDX1JEIDw8IFRDUENfUk9MRV9DVFJMX0NDMV9TSElG VCkgfA0KPiArKFRDUENfUk9MRV9DVFJMX0NDX1JEIDw8IFRDUENfUk9MRV9DVFJMX0NDMl9TSElG VCk7DQo+DQo+ICBzd2l0Y2ggKGNjKSB7DQo+ICBkZWZhdWx0Og0KPiBAQCAtMTI1LDggKzY3Miwx OSBAQCBzdGF0aWMgaW50IHRjcGNpX3N0YXJ0X2RycF90b2dnbGluZyhzdHJ1DQo+IFRDUENfUk9M RV9DVFJMX1JQX1ZBTF9TSElGVCk7ICBicmVhazsgIH0NCj4gLQ0KPiAtcmV0dXJuIHJlZ21hcF93 cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1JPTEVfQ1RSTCwgcmVnKTsNCj4gK3JldCA9IHJlZ21h cF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1JPTEVfQ1RSTCwgcmVnKTsgaWYgKHJldCA8IDAp DQo+ICtyZXR1cm4gcmV0OyBtZGVsYXkoMSk7DQoNClRoYXQgaXMgYmFkOyB5b3UgZG9uJ3Qgd2Fu dCB0byBob2xkIHVwIHRlaCBzeXN0ZW0gZm9yIHRoYXQgbXVjaC4NClRyeSB0byB1c2UgdXNsZWVw X3JhbmdlKCkuDQoNCj4gK3JlZyB8PSBUQ1BDX1JPTEVfQ1RSTF9EUlA7DQo+ICtyZXQgPSByZWdt YXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJlZyk7IGlmIChyZXQgPCAw KQ0KPiArcmV0dXJuIHJldDsgcmV0ID0gcmVnbWFwX3dyaXRlKHRjcGNpLT5yZWdtYXAsIFRDUENf Q09NTUFORCwNCj4gK1RDUENfQ01EX0xPT0s0Q09OTkVDVElPTik7IGlmIChyZXQgPCAwKSByZXR1 cm4gcmV0OyByZXR1cm4gMDsNCj4gIH0NCj4NCj4gICBRNS4gVGhlIHRjcGNpX3NldF92YnVzIGlu IFRDUENJIGRyaXZlciB1c2VzIGNvbW1hbmQgdG8gY29udHJvbCBTaW5rL1NvdXJjZSBWQlVTLg0K PiBJZiBvdXIgY2hpcCBkb2VzIG5vdCBzdXBwb3J0IHBvd2VyIHBhdGgsIGkuZS4gU2luayAmIFNv dXJjZSBhcmUgY29udHJvbGxlZCBieSBvdGhlciBjaGFyZ2VyIElDLiBPdXIgY2hpcCB3aWxsIGRv IG5vdGhpbmcgd2hpbGUgc2V0dGluZyB0aGVzZSBjb21tYW5kcy4NCj4gSW4gdGhlIGZ1dHVyZSBU Q1BDSSBkcml2ZXIsIHdpbGwgYSBmcmFtZXdvcmsgYmUgYXBwbGllZCB0byBub3RpZnkgdGhlc2Ug ZXZlbnRzLiBpLmcuIHBvd2VyX3N1cHBseSBvciBub3RpZmllci4NCj4NCkkgd291bGQgdGhpbmsg c28uDQoNCk5vdGUgdGhhdCB0aGUgZHJpdmVyIGlzLCBhdCB0aGlzIHBvaW50LCBmYWlyIGdhbWUg dG8gY2hhbmdlIHRvIG1ha2UgaXQgd29yayB3aXRoIHlvdXIgY2hpcC4gVGhlIG9ubHkgY29uZGl0 aW9uIGlzIHRoYXQgYSBzdGFuZGFyZCBjaGlwIHNob3VsZCBzdGlsbCB3b3JrLCBpZSB5b3Ugc2hv dWxkIG5vdCBtYWtlIGFueSBjaGFuZ2VzIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBkcml2ZXIgdG8g X29ubHlfIHdvcmsgd2l0aCB5b3VyIGNoaXAuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBmYWlyIGdhbWUu DQoNClRoYW5rcywNCkd1ZW50ZXINCioqKioqKioqKioqKiogRW1haWwgQ29uZmlkZW50aWFsaXR5 IE5vdGljZSAqKioqKioqKioqKioqKioqKioqKg0KDQpUaGUgaW5mb3JtYXRpb24gY29udGFpbmVk IGluIHRoaXMgZS1tYWlsIG1lc3NhZ2UgKGluY2x1ZGluZyBhbnkgYXR0YWNobWVudHMpIG1heSBi ZSBjb25maWRlbnRpYWwsIHByb3ByaWV0YXJ5LCBwcml2aWxlZ2VkLCBvciBvdGhlcndpc2UgZXhl bXB0IGZyb20gZGlzY2xvc3VyZSB1bmRlciBhcHBsaWNhYmxlIGxhd3MuIEl0IGlzIGludGVuZGVk IHRvIGJlIGNvbnZleWVkIG9ubHkgdG8gdGhlIGRlc2lnbmF0ZWQgcmVjaXBpZW50KHMpLiBBbnkg dXNlLCBkaXNzZW1pbmF0aW9uLCBkaXN0cmlidXRpb24sIHByaW50aW5nLCByZXRhaW5pbmcgb3Ig Y29weWluZyBvZiB0aGlzIGUtbWFpbCAoaW5jbHVkaW5nIGl0cyBhdHRhY2htZW50cykgYnkgdW5p bnRlbmRlZCByZWNpcGllbnQocykgaXMgc3RyaWN0bHkgcHJvaGliaXRlZCBhbmQgbWF5IGJlIHVu bGF3ZnVsLiBJZiB5b3UgYXJlIG5vdCBhbiBpbnRlbmRlZCByZWNpcGllbnQgb2YgdGhpcyBlLW1h aWwsIG9yIGJlbGlldmUgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGUtbWFpbCBpbiBlcnJv ciwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IChieSByZXBseWluZyB0byB0 aGlzIGUtbWFpbCksIGRlbGV0ZSBhbnkgYW5kIGFsbCBjb3BpZXMgb2YgdGhpcyBlLW1haWwgKGlu Y2x1ZGluZyBhbnkgYXR0YWNobWVudHMpIGZyb20geW91ciBzeXN0ZW0sIGFuZCBkbyBub3QgZGlz Y2xvc2UgdGhlIGNvbnRlbnQgb2YgdGhpcyBlLW1haWwgdG8gYW55IG90aGVyIHBlcnNvbi4gVGhh bmsgeW91IQ0K