<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>40925</bug_id>
          
          <creation_ts>2010-06-21 09:30:13 -0700</creation_ts>
          <short_desc>Speech Input: Add a speech button to text input element (no rendering or actions yet)</short_desc>
          <delta_ts>2010-06-24 04:26:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39485</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Satish Sampath">satish</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jorlow</cc>
    
    <cc>satish</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>240746</commentid>
    <comment_count>0</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-06-21 09:30:13 -0700</bug_when>
    <thetext>This patch adds an &apos;@speech&apos; attribute to enable a speech button in &lt;input&gt; elements. The speech button is an inner element similar to the &lt;input type=&apos;search&apos;&gt; element&apos;s clear button. A CSS pseudotype &apos;webkit-input-speech-button&apos; in the UA style sheet is used to render the speech button (blank button for now).

All code changes are behind the speech input compile time flag (disabled by default).

More information about the speech input API proposal can be found in the following links:
 Parent bug: https://bugs.webkit.org/show_bug.cgi?id=39485
 Full API proposal: https://docs.google.com/View?id=dcfg79pz_5dhnp23f5
 Relevant discussions in the WHATWG list:
  - http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-May/026338.html
  - http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-June/026747.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240761</commentid>
    <comment_count>1</comment_count>
      <attachid>59261</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-06-21 10:04:51 -0700</bug_when>
    <thetext>Created attachment 59261
Patch

Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241248</commentid>
    <comment_count>2</comment_count>
      <attachid>59261</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-22 07:48:52 -0700</bug_when>
    <thetext>Comment on attachment 59261
Patch

Drive by comment:

WebCore/rendering/TextControlInnerElements.cpp:322
 +      return new InputFieldSpeechButtonElement(document);
ADOPT REF!!!!!!!!!!!!!!!!

This will cause a memory leak.  Always remember to use adropRef with your ::create methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241266</commentid>
    <comment_count>3</comment_count>
      <attachid>59261</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-22 08:33:57 -0700</bug_when>
    <thetext>Comment on attachment 59261
Patch

&gt; @@ -1,5 +1,60 @@
&gt;  2010-06-21  Satish Sampath  &lt;satish@chromium.org&gt;
&gt;  
&gt; +        Reviewed by NOBODY (OOPS!).

This form of ChangeLog diff makes a problem with commit queue.  Please change the date of the new ChangeLog entry.

WebCore/html/HTMLInputElement.cpp:2830
 +      /* FIXME: Enable the following as the renderers are updated to include speech UI.
Do not have commented-out code.


WebCore/html/HTMLInputElement.cpp:2842
 +      default:
Do not use &quot;default&quot; for inputType().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241279</commentid>
    <comment_count>4</comment_count>
      <attachid>59376</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-06-22 08:57:51 -0700</bug_when>
    <thetext>Created attachment 59376
Addresses Kent &amp; Jeremy&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241731</commentid>
    <comment_count>5</comment_count>
      <attachid>59376</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-06-23 00:59:07 -0700</bug_when>
    <thetext>Comment on attachment 59376
Addresses Kent &amp; Jeremy&apos;s comments

Looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242414</commentid>
    <comment_count>6</comment_count>
      <attachid>59376</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-24 03:40:43 -0700</bug_when>
    <thetext>Comment on attachment 59376
Addresses Kent &amp; Jeremy&apos;s comments

Clearing flags on attachment: 59376

Committed r61752: &lt;http://trac.webkit.org/changeset/61752&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242415</commentid>
    <comment_count>7</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-06-24 03:40:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242430</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-24 04:26:44 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61752 might have broken Chromium Mac Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59261</attachid>
            <date>2010-06-21 10:04:51 -0700</date>
            <delta_ts>2010-06-22 08:57:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40925-20100621180448.patch</filename>
            <type>text/plain</type>
            <size>28985</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njk3ZmJiMWUxM2E4MjY3OWNkYWRlY2NjYWY2N2MxYjcwNGE1ZGQxMC4uZDc1OTg3NjBiMzUxNGY2
MmQyN2VmYTdlYzFkMTRhYzM5M2U3NDVmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2MCBAQAogMjAxMC0wNi0yMSAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNwZWVjaCBidXR0b24gdG8gaW5wdXQg
ZWxlbWVudHMsIG5vIHJlbmRlcmluZyBvciBhY3Rpb25zIHlldC4KKworICAgICAgICBTcGVlY2gg
SW5wdXQ6IEFkZCBhIHNwZWVjaCBidXR0b24gdG8gdGV4dCBpbnB1dCBlbGVtZW50IChubyByZW5k
ZXJpbmcgb3IgYWN0aW9ucyB5ZXQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDkyNQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gV2lsbCBjcmVhdGUg
YSBsYXlvdXQgdGVzdCBpbiBhIHN1YnNlcXVlbnQgcGF0Y2guCisKKyAgICAgICAgKiBjc3MvQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKToKKyAgICAgICAgKFdl
YkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjopOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluOgorICAgICAgICAqIGNzcy9odG1sLmNzczoKKyAgICAgICAgKGlucHV0Ojotd2Vi
a2l0LWlucHV0LXNwZWVjaC1idXR0b24pOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
aXNTcGVlY2hFbmFibGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpub2RlQXRQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmZvcndhcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6aGFzQ29udHJvbENsaXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjpjb250cm9sQ2xpcFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjp0ZXh0QmxvY2tXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmFkanVzdENvbnRyb2xI
ZWlnaHRCYXNlZE9uTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6OmNyZWF0ZVN1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZVNwZWVjaEJ1dHRvblN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y2xpZW50UGFk
ZGluZ1JpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50Qm9y
ZGVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnREZWNvcmF0aW9u
cyk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6SW5wdXRGaWVs
ZFNwZWVjaEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKworMjAxMC0w
Ni0yMSAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJl
dmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgogCiAgICAgICAgIFNwZWVjaCBJbnB1dCBQYXRjaCAwOiBB
ZGRlZCBjb21waWxhdGlvbiBhcmd1bWVudCB0byBjb25kaXRpb25hbGx5IGNvbXBpbGUgcGVuZGlu
ZyBwYXRjaGVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4IGY2
NDZiMjllNDMwMDk5MDY1NjUzOGRlZjdiZGU5MzcxZGI3Y2NjNjYuLjU5ZDA2Mzk2ZjAyYzEwZjY1
N2I4MGZmNWUwNmYyMTFjNjlmMDM1N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgKQEAgLTM0NCw2ICszNDQsMTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENvbnRyb2xQYXJ0IGUpCiAgICAgICAgIGNhc2Ug
Q2Fwc0xvY2tJbmRpY2F0b3JQYXJ0OgogICAgICAgICAgICAgbV92YWx1ZS5pZGVudCA9IENTU1Zh
bHVlQ2Fwc0xvY2tJbmRpY2F0b3I7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJ
bnB1dFNwZWVjaEJ1dHRvblBhcnQ6CisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICAgICAg
ICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZUlucHV0U3BlZWNoQnV0dG9uOworI2VuZGlmCisg
ICAgICAgICAgICBicmVhazsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCAzZmY5Mzcz
ZGRlNjY3NjcyNTU0OWRjODAyM2M4ZTk3OTk1MDYyMDg2Li5kZGYxNzM3MTE5NmQ3MWM4OWQ3Yjdm
OThmNmI3MjhlOTgyZGRlY2QxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5j
cHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC01LDYgKzUsNyBAQAogICog
ICAgICAgICAgICAgICAyMDAxLTIwMDMgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IERhdmlkIFNtaXRoIChjYXRmaXNo
Lm1hbkBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA3LDYgKzEwOCwxMCBAQCBQ
c2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRvVHlwZSB0eXBlKQogICAgICAgICBy
ZXR1cm4gRklMRV9VUExPQURfQlVUVE9OOwogICAgIGNhc2UgUHNldWRvSW5wdXRQbGFjZWhvbGRl
cjoKICAgICAgICAgcmV0dXJuIElOUFVUX1BMQUNFSE9MREVSOworI2lmIEVOQUJMRShJTlBVVF9T
UEVFQ0gpCisgICAgY2FzZSBQc2V1ZG9JbnB1dFNwZWVjaEJ1dHRvbjoKKyAgICAgICAgcmV0dXJu
IElOUFVUX1NQRUVDSF9CVVRUT047CisjZW5kaWYKICAgICBjYXNlIFBzZXVkb1NsaWRlclRodW1i
OgogICAgICAgICByZXR1cm4gU0xJREVSX1RIVU1COwogICAgIGNhc2UgUHNldWRvU2VhcmNoQ2Fu
Y2VsQnV0dG9uOgpAQCAtMjgwLDYgKzI4NSw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmlu
Z0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGVNYXAoCiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGJlZm9yZSwgKCJiZWZvcmUiKSk7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGNoZWNrZWQsICgiY2hlY2tl
ZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlsZVVwbG9hZEJ1
dHRvbiwgKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIpKTsKKyNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpbnB1dFNwZWVj
aEJ1dHRvbiwgKCItd2Via2l0LWlucHV0LXNwZWVjaC1idXR0b24iKSk7CisjZW5kaWYKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGVmYXVsdFN0cmluZywgKCJkZWZhdWx0
IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkaXNhYmxlZCwgKCJk
aXNhYmxlZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZE9u
bHksICgicmVhZC1vbmx5IikpOwpAQCAtMzkwLDYgKzM5OCw5IEBAIHN0YXRpYyBIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5
cGVNYXAoCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChiZWZvcmUuaW1wbCgpLCBDU1NT
ZWxlY3Rvcjo6UHNldWRvQmVmb3JlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGNo
ZWNrZWQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZCk7CiAgICAgICAgIG5hbWVU
b1BzZXVkb1R5cGUtPnNldChmaWxlVXBsb2FkQnV0dG9uLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0ZpbGVVcGxvYWRCdXR0b24pOworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgICAg
IG5hbWVUb1BzZXVkb1R5cGUtPnNldChpbnB1dFNwZWVjaEJ1dHRvbi5pbXBsKCksIENTU1NlbGVj
dG9yOjpQc2V1ZG9JbnB1dFNwZWVjaEJ1dHRvbik7CisjZW5kaWYKICAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KGRlZmF1bHRTdHJpbmcuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRGVm
YXVsdCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChkaXNhYmxlZC5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9EaXNhYmxlZCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNl
dChyZWFkT25seS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9SZWFkT25seSk7CkBAIC01MTks
NiArNTMwLDkgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAog
ICAgIGNhc2UgUHNldWRvRmlsZVVwbG9hZEJ1dHRvbjoKICAgICBjYXNlIFBzZXVkb0lucHV0TGlz
dEJ1dHRvbjoKICAgICBjYXNlIFBzZXVkb0lucHV0UGxhY2Vob2xkZXI6CisjaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKKyAgICBjYXNlIFBzZXVkb0lucHV0U3BlZWNoQnV0dG9uOgorI2VuZGlmCiAg
ICAgY2FzZSBQc2V1ZG9Jbm5lclNwaW5CdXR0b246CiAgICAgY2FzZSBQc2V1ZG9NZWRpYUNvbnRy
b2xzUGFuZWw6CiAgICAgY2FzZSBQc2V1ZG9NZWRpYUNvbnRyb2xzTXV0ZUJ1dHRvbjoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oCmluZGV4IGY1YjU2ZWYzZWVlY2UzMDM1YzYwNDkxNTM3MTk0YzgxY2FmZGZhODUuLmQ1NWZh
ZmNjMzcxYjE3ZTg4YWQzOGI2MjRlMmRhNTc2ODBiZjYwNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtMTk2
LDYgKzE5Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb01ldGVy
VmVydGljYWxTdWJvcHRpbWFsLAogICAgICAgICAgICAgUHNldWRvTWV0ZXJWZXJ0aWNhbEV2ZW5M
ZXNzR29vZCwKICAgICAgICAgICAgIFBzZXVkb0lucHV0TGlzdEJ1dHRvbiwKKyNpZiBFTkFCTEUo
SU5QVVRfU1BFRUNIKQorICAgICAgICAgICAgUHNldWRvSW5wdXRTcGVlY2hCdXR0b24sCisjZW5k
aWYKICAgICAgICAgICAgIFBzZXVkb0lubmVyU3BpbkJ1dHRvbiwKICAgICAgICAgICAgIFBzZXVk
b091dGVyU3BpbkJ1dHRvbiwKICAgICAgICAgICAgIFBzZXVkb1Byb2dyZXNzQmFyVmFsdWUsCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCAxNTQxODNiNTQ0NTgzZmU1YmY3MjYyMzc2N2Y3ZGI1
ZmUxMzNkNWMzLi5jZTk4OTA3OTgzMzI2Mzc3NGEzY2I5MmE0OGQ1MzljNDczMjlmZWI2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTU2Niw2ICs1NjYsNyBAQCBidXR0b24KIGJ1dHRvbi1i
ZXZlbAogZGVmYXVsdC1idXR0b24KIGlubmVyLXNwaW4tYnV0dG9uCitpbnB1dC1zcGVlY2gtYnV0
dG9uCiBsaXN0LWJ1dHRvbgogbGlzdGJveAogbGlzdGl0ZW0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL2h0bWwuY3NzIGIvV2ViQ29yZS9jc3MvaHRtbC5jc3MKaW5kZXggMTYzMzRjZjI1MWRhNjdh
NWFiN2FhYzM1NDgwMWIwMDEyOGFhNDE4OS4uZmFiYThiNzE3NDBiMTc4ZTBjNjQzOTc5MTkzNjky
Y2E0NWU1MjQxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MKKysrIGIvV2ViQ29y
ZS9jc3MvaHRtbC5jc3MKQEAgLTM3Miw2ICszNzIsMTEgQEAgaW5wdXQ6Oi13ZWJraXQtb3V0ZXIt
c3Bpbi1idXR0b24gewogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiB9CiAKK2lucHV0
Ojotd2Via2l0LWlucHV0LXNwZWVjaC1idXR0b24geworICAgIC13ZWJraXQtYXBwZWFyYW5jZTog
aW5wdXQtc3BlZWNoLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cit9CisKIHRl
eHRhcmVhIHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRhcmVhOwogICAgIGJhY2tncm91
bmQtY29sb3I6IHdoaXRlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50Lmgg
Yi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAppbmRleCBkNDc3MDQ2NDRiYWI5NzY2MTg4NDRk
ZjY2OTQyZWQ5ZWQzNjJmMGE1Li4xZDZjMzU2MWNlZmZhNjY5ODIyYzU3OTI4Yzc4MjBkY2M0N2Zk
NzI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2RvbS9JbnB1dEVsZW1lbnQuaApAQCAtNDQsNiArNDQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVGV4
dEZpZWxkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNTcGluQnV0dG9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIHZpcnR1
YWwgYm9vbCBpc1NwZWVjaEVuYWJsZWQoKSBjb25zdCA9IDA7CisjZW5kaWYgICAgCiAKICAgICB2
aXJ0dWFsIGJvb2wgc2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkgY29uc3QgPSAwOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCA2MGQ1ZDczOTFiNDgyOGNjM2RlZTE3
NzhiODc5ZDAyYTgzNWY1ZWE5Li5iNDViYTllZGM2ZGJhN2Y3Zjc0ZGZlYmVmZDEwNDUyNGIzMjcw
NTg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTI1NSw2ICsyNTUsNyBAQCBz
aXplCiBzb3J0YWJsZQogc29ydGRpcmVjdGlvbgogc3Bhbgorc3BlZWNoCiBzcGVsbGNoZWNrCiBz
cmMKIHN0YW5kYnkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA3ZGI5NjFlM2VjOWU1
ZmY5MDE2MjNiODQyOWFjY2RiNzJiZTRjZDdmLi5iZWMzZGJiYzVkM2JkYzA4NjJkMWZiM2MyZTE2
ZTU0MTc1YjA5YjhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01LDYgKzUsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAw
NiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgU2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MjgxNiw2ICsyODE3LDMzIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0V2FwSW5wdXRGb3Jt
YXQoU3RyaW5nJiBtYXNrKQogfQogI2VuZGlmCiAKLQorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gp
Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzU3BlZWNoRW5hYmxlZCgpIGNvbnN0Cit7CisgICAg
c3dpdGNoIChpbnB1dFR5cGUoKSkgeworICAgIGNhc2UgVEVYVDoKKyAgICBjYXNlIFBBU1NXT1JE
OgorICAgIGNhc2UgU0VBUkNIOgorICAgIGNhc2UgTlVNQkVSOgorICAgIGNhc2UgVEVMRVBIT05F
OgorICAgICAgICByZXR1cm4gaGFzQXR0cmlidXRlKHNwZWVjaEF0dHIpOworICAgIC8qIEZJWE1F
OiBFbmFibGUgdGhlIGZvbGxvd2luZyBhcyB0aGUgcmVuZGVyZXJzIGFyZSB1cGRhdGVkIHRvIGlu
Y2x1ZGUgc3BlZWNoIFVJLgorICAgIGNhc2UgUkFOR0U6CisgICAgY2FzZSBFTUFJTDoKKyAgICBj
YXNlIFVSTDoKKyAgICBjYXNlIENPTE9SOgorICAgIGNhc2UgREFURToKKyAgICBjYXNlIERBVEVU
SU1FOgorICAgIGNhc2UgREFURVRJTUVMT0NBTDoKKyAgICBjYXNlIE1PTlRIOgorICAgIGNhc2Ug
VElNRToKKyAgICBjYXNlIFdFRUs6CisgICAgKi8KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCBmZGYwNmRiMDAzYTQ1YzJhNmJhZGE1MGI1ZTg2
YmZiOTYzZjcxNjljLi41YmNmMDFmMTRkN2I5ZmYzYzNhM2JiYzJiYWZmYjk3MTYyNWM1ZGIzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTEwNSw2ICsxMDUsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc051bWJlckZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE5VTUJFUjsgfQog
ICAgIGJvb2wgaXNFbWFpbEZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IEVNQUlMOyB9
CiAgICAgYm9vbCBpc1VybEZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFVSTDsgfQor
I2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgdmlydHVhbCBib29sIGlzU3BlZWNoRW5hYmxl
ZCgpIGNvbnN0OworI2VuZGlmICAgIAogCiAgICAgYm9vbCBjaGVja2VkKCkgY29uc3QgeyByZXR1
cm4gbV9jaGVja2VkOyB9CiAgICAgdm9pZCBzZXRDaGVja2VkKGJvb2wsIGJvb2wgc2VuZENoYW5n
ZUV2ZW50ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVz
LmggYi9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAppbmRleCA3MzE0ZmJhZDMzZThiNjdi
M2FkNTUzNDcwYjljZGUyMDI3MjI5Y2ZhLi4yNzFiZDgzOTM4ZDgwNGY0OTAxNzlhYjI5YjA3ZjM5
MTYxYTk2NDFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaApAQCAtNDcsNyArNDcsNyBAQCB0eXBlZGVm
IHVuc2lnbmVkIENvbnRyb2xTdGF0ZXM7CiAvLyBNdXN0IGZvbGxvdyBDU1NWYWx1ZUtleXdvcmRz
LmluIG9yZGVyCiBlbnVtIENvbnRyb2xQYXJ0IHsKICAgICBOb0NvbnRyb2xQYXJ0LCBDaGVja2Jv
eFBhcnQsIFJhZGlvUGFydCwgUHVzaEJ1dHRvblBhcnQsIFNxdWFyZUJ1dHRvblBhcnQsIEJ1dHRv
blBhcnQsCi0gICAgQnV0dG9uQmV2ZWxQYXJ0LCBEZWZhdWx0QnV0dG9uUGFydCwgSW5uZXJTcGlu
QnV0dG9uUGFydCwgTGlzdEJ1dHRvblBhcnQsIExpc3Rib3hQYXJ0LCBMaXN0SXRlbVBhcnQsCisg
ICAgQnV0dG9uQmV2ZWxQYXJ0LCBEZWZhdWx0QnV0dG9uUGFydCwgSW5uZXJTcGluQnV0dG9uUGFy
dCwgSW5wdXRTcGVlY2hCdXR0b25QYXJ0LCBMaXN0QnV0dG9uUGFydCwgTGlzdGJveFBhcnQsIExp
c3RJdGVtUGFydCwKICAgICBNZWRpYUZ1bGxzY3JlZW5CdXR0b25QYXJ0LCBNZWRpYU11dGVCdXR0
b25QYXJ0LCBNZWRpYVBsYXlCdXR0b25QYXJ0LCBNZWRpYVNlZWtCYWNrQnV0dG9uUGFydCwgCiAg
ICAgTWVkaWFTZWVrRm9yd2FyZEJ1dHRvblBhcnQsIE1lZGlhUmV3aW5kQnV0dG9uUGFydCwgTWVk
aWFSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uUGFydCwgTWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1
dHRvblBhcnQsCiAgICAgTWVkaWFTbGlkZXJQYXJ0LCBNZWRpYVNsaWRlclRodW1iUGFydCwgTWVk
aWFWb2x1bWVTbGlkZXJDb250YWluZXJQYXJ0LCBNZWRpYVZvbHVtZVNsaWRlclBhcnQsIE1lZGlh
Vm9sdW1lU2xpZGVyVGh1bWJQYXJ0LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggMmRiZmI5ZjZmNTBjOWVlY2Y5MDdiMDJjNTE5
N2Q3ZjM0OTllYWJiZi4uZGEzMjgzY2Y0YmNkMjZkZmZhYmUxMTg5ZTRhODZiYWM0MzE5Y2Q5NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
Y3BwCkBAIC0xLDYgKzEsNyBAQAogLyoqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA4
IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNo
bW9iaWxlLmNvbS8pIAorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4OCw5ICsyODksMTMgQEAgYm9v
bCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICAvLyBJZiB3ZSBmb3VuZCBhIHNwaW4gYnV0dG9uLCB3
ZSdyZSBkb25lLgogICAgIGlmIChtX291dGVyU3BpbkJ1dHRvbiAmJiByZXN1bHQuaW5uZXJOb2Rl
KCkgPT0gbV9vdXRlclNwaW5CdXR0b24pCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIC8vIElm
IHdlJ3JlIG5vdCBhIHNlYXJjaCBmaWVsZCwgb3Igd2UgYWxyZWFkeSBmb3VuZCB0aGUgcmVzdWx0
cyBvciBjYW5jZWwgYnV0dG9ucywgd2UncmUgZG9uZS4KKyAgICAvLyBJZiB3ZSdyZSBub3QgYSBz
ZWFyY2ggZmllbGQsIG9yIHdlIGFscmVhZHkgZm91bmQgdGhlIHNwZWVjaCwgcmVzdWx0cyBvciBj
YW5jZWwgYnV0dG9ucywgd2UncmUgZG9uZS4KICAgICBpZiAoIW1faW5uZXJCbG9jayB8fCByZXN1
bHQuaW5uZXJOb2RlKCkgPT0gbV9yZXN1bHRzQnV0dG9uIHx8IHJlc3VsdC5pbm5lck5vZGUoKSA9
PSBtX2NhbmNlbEJ1dHRvbikKICAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKElOUFVU
X1NQRUVDSCkKKyAgICBpZiAobV9pbm5lckJsb2NrICYmIG1fc3BlZWNoQnV0dG9uICYmIHJlc3Vs
dC5pbm5lck5vZGUoKSA9PSBtX3NwZWVjaEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIHRydWU7Cisj
ZW5kaWYKIAogICAgIE5vZGUqIGlubmVyTm9kZSA9IDA7CiAgICAgUmVuZGVyQm94KiBpbm5lckJs
b2NrUmVuZGVyZXIgPSBtX2lubmVyQmxvY2stPnJlbmRlckJveCgpOwpAQCAtMzAzLDYgKzMwOCwx
OSBAQCBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bm9kZUF0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdAogICAgIGlmIChtX3Jlc3VsdHNCdXR0b24gJiYg
bV9yZXN1bHRzQnV0dG9uLT5yZW5kZXJlcigpICYmIHhQb3MgPCB0ZXh0TGVmdCkKICAgICAgICAg
aW5uZXJOb2RlID0gbV9yZXN1bHRzQnV0dG9uLmdldCgpOwogCisjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKKyAgICBpZiAoIWlubmVyTm9kZSAmJiBtX3NwZWVjaEJ1dHRvbiAmJiBtX3NwZWVjaEJ1
dHRvbi0+cmVuZGVyZXIoKSkgeworICAgICAgICBpbnQgYnV0dG9uTGVmdCA9IHRleHRMZWZ0ICsg
aW5uZXJUZXh0UmVuZGVyZXItPndpZHRoKCk7CisgICAgICAgIGlmIChtX2NhbmNlbEJ1dHRvbikg
eworICAgICAgICAgICAgUmVuZGVyQm94KiBjYW5jZWxSZW5kZXJlciA9IG1fY2FuY2VsQnV0dG9u
LT5yZW5kZXJCb3goKTsKKyAgICAgICAgICAgIGNhbmNlbFJlbmRlcmVyLT5jYWxjV2lkdGgoKTsK
KyAgICAgICAgICAgIGJ1dHRvbkxlZnQgKz0gY2FuY2VsUmVuZGVyZXItPndpZHRoKCkgKyBjYW5j
ZWxSZW5kZXJlci0+bWFyZ2luTGVmdCgpICsgY2FuY2VsUmVuZGVyZXItPm1hcmdpblJpZ2h0KCk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHhQb3MgPiBidXR0b25MZWZ0KQorICAgICAgICAgICAg
aW5uZXJOb2RlID0gbV9zcGVlY2hCdXR0b24uZ2V0KCk7CisgICAgfQorI2VuZGlmCisKICAgICBp
ZiAoIWlubmVyTm9kZSkgewogICAgICAgICBpbnQgdGV4dFJpZ2h0ID0gdGV4dExlZnQgKyBpbm5l
clRleHRSZW5kZXJlci0+d2lkdGgoKTsKICAgICAgICAgaWYgKG1fY2FuY2VsQnV0dG9uICYmIG1f
Y2FuY2VsQnV0dG9uLT5yZW5kZXJlcigpICYmIHhQb3MgPiB0ZXh0UmlnaHQpCkBAIC0zMzksOCAr
MzU3LDIwIEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpmb3J3YXJkRXZlbnQo
RXZlbnQqIGV2ZW50KQogCiAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gaW5uZXJUZXh0UmVu
ZGVyZXItPmFic29sdXRlVG9Mb2NhbChzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpLT5h
YnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlLCB0cnVlKTsKICAgICBpbnQgdGV4dFJpZ2h0ID0gaW5u
ZXJUZXh0UmVuZGVyZXItPmJvcmRlckJveFJlY3QoKS5yaWdodCgpOworI2lmIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCisgICAgaW50IGNhbmNlbFJpZ2h0ID0gdGV4dFJpZ2h0OworICAgIGlmIChtX2Nh
bmNlbEJ1dHRvbiAmJiBtX2NhbmNlbEJ1dHRvbi0+cmVuZGVyQm94KCkpIHsKKyAgICAgICAgUmVu
ZGVyQm94KiBjYW5jZWxSZW5kZXJlciA9IG1fY2FuY2VsQnV0dG9uLT5yZW5kZXJCb3goKTsKKyAg
ICAgICAgY2FuY2VsUmlnaHQgKz0gY2FuY2VsUmVuZGVyZXItPndpZHRoKCkgKyBjYW5jZWxSZW5k
ZXJlci0+bWFyZ2luTGVmdCgpICsgY2FuY2VsUmVuZGVyZXItPm1hcmdpblJpZ2h0KCk7CisgICAg
fQorI2VuZGlmCisKICAgICBpZiAobV9yZXN1bHRzQnV0dG9uICYmIGxvY2FsUG9pbnQueCgpIDwg
aW5uZXJUZXh0UmVuZGVyZXItPmJvcmRlckJveFJlY3QoKS54KCkpCiAgICAgICAgIG1fcmVzdWx0
c0J1dHRvbi0+ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKKyAgICBlbHNlIGlmIChtX3NwZWVjaEJ1dHRvbiAmJiBsb2NhbFBvaW50LngoKSA+IGNh
bmNlbFJpZ2h0KQorICAgICAgICBtX3NwZWVjaEJ1dHRvbi0+ZGVmYXVsdEV2ZW50SGFuZGxlcihl
dmVudCk7CisjZW5kaWYKICAgICBlbHNlIGlmIChtX2NhbmNlbEJ1dHRvbiAmJiBsb2NhbFBvaW50
LngoKSA+IHRleHRSaWdodCkKICAgICAgICAgbV9jYW5jZWxCdXR0b24tPmRlZmF1bHRFdmVudEhh
bmRsZXIoZXZlbnQpOwogICAgIGVsc2UgaWYgKG1fb3V0ZXJTcGluQnV0dG9uICYmIGxvY2FsUG9p
bnQueCgpID4gdGV4dFJpZ2h0KQpAQCAtMzcwLDYgKzQwMCwxMSBAQCB2b2lkIFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNv
bnN0IFJlbgogICAgIGlmIChSZW5kZXJPYmplY3QqIHNwaW5SZW5kZXJlciA9IG1fb3V0ZXJTcGlu
QnV0dG9uID8gbV9vdXRlclNwaW5CdXR0b24tPnJlbmRlcmVyKCkgOiAwKQogICAgICAgICBzcGlu
UmVuZGVyZXItPnNldFN0eWxlKGNyZWF0ZU91dGVyU3BpbkJ1dHRvblN0eWxlKCkpOwogCisjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiBzcGVlY2hSZW5kZXJl
ciA9IG1fc3BlZWNoQnV0dG9uID8gbV9zcGVlY2hCdXR0b24tPnJlbmRlcmVyKCkgOiAwKQorICAg
ICAgICBzcGVlY2hSZW5kZXJlci0+c2V0U3R5bGUoY3JlYXRlU3BlZWNoQnV0dG9uU3R5bGUoc3R5
bGUoKSkpOworI2VuZGlmCisKICAgICBzZXRIYXNPdmVyZmxvd0NsaXAoZmFsc2UpOwogfQogCkBA
IC0zOTcsOSArNDMyLDE5IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjYXBz
TG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKQogICAgIH0KIH0KIAorYm9vbCBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6Omhhc0NvbnRyb2xDbGlwKCkgY29uc3QKK3sKKyAgICBib29sIGNsaXAg
PSBtX2NhbmNlbEJ1dHRvbjsKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIGlmIChtX3Nw
ZWVjaEJ1dHRvbikKKyAgICAgICAgY2xpcCA9IHRydWU7CisjZW5kaWYKKyAgICByZXR1cm4gY2xp
cDsKK30KKwogSW50UmVjdCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNvbnRyb2xDbGlw
UmVjdChpbnQgdHgsIGludCB0eSkgY29uc3QKIHsKLSAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGdl
dCBjYWxsZWQgZm9yIHNlYXJjaCBpbnB1dHMuCisgICAgLy8gVGhpcyBzaG91bGQgb25seSBnZXQg
Y2FsbGVkIGZvciBzZWFyY2ggJiBzcGVlY2ggaW5wdXRzLgogICAgIEFTU0VSVChoYXNDb250cm9s
Q2xpcCgpKTsKIAogICAgIEludFJlY3QgY2xpcFJlY3QgPSBJbnRSZWN0KG1faW5uZXJCbG9jay0+
cmVuZGVyQm94KCktPmZyYW1lUmVjdCgpKTsKQEAgLTQyMSw2ICs0NjYsMTMgQEAgaW50IFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6dGV4dEJsb2NrV2lkdGgoKSBjb25zdAogICAgICAgICB3
aWR0aCAtPSBjYW5jZWxSZW5kZXJlci0+d2lkdGgoKSArIGNhbmNlbFJlbmRlcmVyLT5tYXJnaW5M
ZWZ0KCkgKyBjYW5jZWxSZW5kZXJlci0+bWFyZ2luUmlnaHQoKTsKICAgICB9CiAKKyNpZiBFTkFC
TEUoSU5QVVRfU1BFRUNIKQorICAgIGlmIChSZW5kZXJCb3gqIHNwZWVjaFJlbmRlcmVyID0gbV9z
cGVlY2hCdXR0b24gPyBtX3NwZWVjaEJ1dHRvbi0+cmVuZGVyQm94KCkgOiAwKSB7CisgICAgICAg
IHNwZWVjaFJlbmRlcmVyLT5jYWxjV2lkdGgoKTsKKyAgICAgICAgd2lkdGggLT0gc3BlZWNoUmVu
ZGVyZXItPndpZHRoKCkgKyBzcGVlY2hSZW5kZXJlci0+bWFyZ2luTGVmdCgpICsgc3BlZWNoUmVu
ZGVyZXItPm1hcmdpblJpZ2h0KCk7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gd2lkdGgg
LSBkZWNvcmF0aW9uV2lkdGhSaWdodCgpOwogfQogCkBAIC00NzksNiArNTMxLDEyIEBAIGludCBS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aChmbG9hdCBj
aGFyV2lkdGgpIGNvbnN0CiAgICAgICAgIHJlc3VsdCArPSBjYW5jZWxSZW5kZXJlci0+Ym9yZGVy
TGVmdCgpICsgY2FuY2VsUmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKwogICAgICAgICAgICAgICAg
ICAgY2FuY2VsUmVuZGVyZXItPnBhZGRpbmdMZWZ0KCkgKyBjYW5jZWxSZW5kZXJlci0+cGFkZGlu
Z1JpZ2h0KCk7CiAKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIGlmIChSZW5kZXJCb3gq
IHNwZWVjaFJlbmRlcmVyID0gbV9zcGVlY2hCdXR0b24gPyBtX3NwZWVjaEJ1dHRvbi0+cmVuZGVy
Qm94KCkgOiAwKSB7CisgICAgICAgIHJlc3VsdCArPSBzcGVlY2hSZW5kZXJlci0+Ym9yZGVyTGVm
dCgpICsgc3BlZWNoUmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKworICAgICAgICAgICAgICAgICAg
c3BlZWNoUmVuZGVyZXItPnBhZGRpbmdMZWZ0KCkgKyBzcGVlY2hSZW5kZXJlci0+cGFkZGluZ1Jp
Z2h0KCk7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNTE0LDEy
ICs1NzIsMjggQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmFkanVzdENvbnRy
b2xIZWlnaHRCYXNlZE9uTGluZUhlaWdodChpbnQgbGluZUgKICAgICAgICAgbGluZUhlaWdodCA9
IG1heChsaW5lSGVpZ2h0LCBjYW5jZWxSZW5kZXJlci0+aGVpZ2h0KCkpOwogICAgIH0KIAorI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgaWYgKFJlbmRlckJveCogc3BlZWNoUmVuZGVyZXIg
PSBtX3NwZWVjaEJ1dHRvbiA/IG1fc3BlZWNoQnV0dG9uLT5yZW5kZXJCb3goKSA6IDApIHsKKyAg
ICAgICAgdG9SZW5kZXJCbG9jayhzcGVlY2hSZW5kZXJlciktPmNhbGNIZWlnaHQoKTsKKyAgICAg
ICAgc2V0SGVpZ2h0KG1heChoZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgIHNwZWVjaFJlbmRl
cmVyLT5ib3JkZXJUb3AoKSArIHNwZWVjaFJlbmRlcmVyLT5ib3JkZXJCb3R0b20oKSArCisgICAg
ICAgICAgICAgICAgICBzcGVlY2hSZW5kZXJlci0+cGFkZGluZ1RvcCgpICsgc3BlZWNoUmVuZGVy
ZXItPnBhZGRpbmdCb3R0b20oKSArCisgICAgICAgICAgICAgICAgICBzcGVlY2hSZW5kZXJlci0+
bWFyZ2luVG9wKCkgKyBzcGVlY2hSZW5kZXJlci0+bWFyZ2luQm90dG9tKCkpKTsKKyAgICAgICAg
bGluZUhlaWdodCA9IG1heChsaW5lSGVpZ2h0LCBzcGVlY2hSZW5kZXJlci0+aGVpZ2h0KCkpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgc2V0SGVpZ2h0KGhlaWdodCgpICsgbGluZUhlaWdodCk7CiB9
CiAKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVTdWJ0cmVlSWZOZWVk
ZWQoKQogewotICAgIGlmICghaW5wdXRFbGVtZW50KCktPmlzU2VhcmNoRmllbGQoKSkgeworICAg
IGJvb2wgY3JlYXRlU3VidHJlZSA9IGlucHV0RWxlbWVudCgpLT5pc1NlYXJjaEZpZWxkKCk7Cisj
aWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICBpZiAoaW5wdXRFbGVtZW50KCktPmlzU3BlZWNo
RW5hYmxlZCgpKQorICAgICAgICBjcmVhdGVTdWJ0cmVlID0gdHJ1ZTsKKyNlbmRpZgorICAgIGlm
ICghY3JlYXRlU3VidHJlZSkgewogICAgICAgICBSZW5kZXJUZXh0Q29udHJvbDo6Y3JlYXRlU3Vi
dHJlZUlmTmVlZGVkKG1faW5uZXJCbG9jay5nZXQoKSk7CiAgICAgICAgIGlmIChpbnB1dEVsZW1l
bnQoKS0+aGFzU3BpbkJ1dHRvbigpICYmICFtX291dGVyU3BpbkJ1dHRvbikgewogICAgICAgICAg
ICAgbV9vdXRlclNwaW5CdXR0b24gPSBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKG5vZGUoKSk7
CkBAIC01MzQsMjAgKzYwOCwzMSBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
Y3JlYXRlU3VidHJlZUlmTmVlZGVkKCkKICAgICAgICAgbV9pbm5lckJsb2NrLT5hdHRhY2hJbm5l
ckVsZW1lbnQobm9kZSgpLCBjcmVhdGVJbm5lckJsb2NrU3R5bGUoc3R5bGUoKSksIHJlbmRlckFy
ZW5hKCkpOwogICAgIH0KIAotICAgIGlmICghbV9yZXN1bHRzQnV0dG9uKSB7Ci0gICAgICAgIC8v
IENyZWF0ZSB0aGUgc2VhcmNoIHJlc3VsdHMgYnV0dG9uIGVsZW1lbnQKLSAgICAgICAgbV9yZXN1
bHRzQnV0dG9uID0gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpOwotICAgICAgICBtX3Jlc3VsdHNCdXR0b24tPmF0dGFjaElubmVyRWxlbWVudChtX2lu
bmVyQmxvY2suZ2V0KCksIGNyZWF0ZVJlc3VsdHNCdXR0b25TdHlsZShtX2lubmVyQmxvY2stPnJl
bmRlcmVyKCktPnN0eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsKKyAgICBpZiAoaW5wdXRFbGVtZW50
KCktPmlzU2VhcmNoRmllbGQoKSkgeworICAgICAgICBpZiAoIW1fcmVzdWx0c0J1dHRvbikgewor
ICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBzZWFyY2ggcmVzdWx0cyBidXR0b24gZWxlbWVudC4K
KyAgICAgICAgICAgIG1fcmVzdWx0c0J1dHRvbiA9IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICAgICAgICAgIG1fcmVzdWx0c0J1dHRvbi0+
YXR0YWNoSW5uZXJFbGVtZW50KG1faW5uZXJCbG9jay5nZXQoKSwgY3JlYXRlUmVzdWx0c0J1dHRv
blN0eWxlKG1faW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSksIHJlbmRlckFyZW5hKCkp
OworICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gQ3JlYXRlIGlubmVyVGV4dCBlbGVtZW50IGJl
Zm9yZSBhZGRpbmcgdGhlIGNhbmNlbCBidXR0b24KKyAgICAvLyBDcmVhdGUgaW5uZXJUZXh0IGVs
ZW1lbnQgYmVmb3JlIGFkZGluZyB0aGUgb3RoZXIgYnV0dG9ucy4KICAgICBSZW5kZXJUZXh0Q29u
dHJvbDo6Y3JlYXRlU3VidHJlZUlmTmVlZGVkKG1faW5uZXJCbG9jay5nZXQoKSk7CiAKLSAgICBp
ZiAoIW1fY2FuY2VsQnV0dG9uKSB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgY2FuY2VsIGJ1dHRv
biBlbGVtZW50Ci0gICAgICAgIG1fY2FuY2VsQnV0dG9uID0gU2VhcmNoRmllbGRDYW5jZWxCdXR0
b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgICAgIG1fY2FuY2VsQnV0dG9uLT5h
dHRhY2hJbm5lckVsZW1lbnQobV9pbm5lckJsb2NrLmdldCgpLCBjcmVhdGVDYW5jZWxCdXR0b25T
dHlsZShtX2lubmVyQmxvY2stPnJlbmRlcmVyKCktPnN0eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsK
KyAgICBpZiAoaW5wdXRFbGVtZW50KCktPmlzU2VhcmNoRmllbGQoKSkgeworICAgICAgICBpZiAo
IW1fY2FuY2VsQnV0dG9uKSB7CisgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGNhbmNlbCBidXR0
b24gZWxlbWVudC4KKyAgICAgICAgICAgIG1fY2FuY2VsQnV0dG9uID0gU2VhcmNoRmllbGRDYW5j
ZWxCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBtX2NhbmNl
bEJ1dHRvbi0+YXR0YWNoSW5uZXJFbGVtZW50KG1faW5uZXJCbG9jay5nZXQoKSwgY3JlYXRlQ2Fu
Y2VsQnV0dG9uU3R5bGUobV9pbm5lckJsb2NrLT5yZW5kZXJlcigpLT5zdHlsZSgpKSwgcmVuZGVy
QXJlbmEoKSk7CisgICAgICAgIH0KICAgICB9CisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKyAg
ICBpZiAoaW5wdXRFbGVtZW50KCktPmlzU3BlZWNoRW5hYmxlZCgpICYmICFtX3NwZWVjaEJ1dHRv
bikgeworICAgICAgICAvLyBDcmVhdGUgdGhlIHNwZWVjaCBidXR0b24gZWxlbWVudC4KKyAgICAg
ICAgbV9zcGVlY2hCdXR0b24gPSBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KCkpOworICAgICAgICBtX3NwZWVjaEJ1dHRvbi0+YXR0YWNoSW5uZXJFbGVtZW50
KG1faW5uZXJCbG9jay5nZXQoKSwgY3JlYXRlU3BlZWNoQnV0dG9uU3R5bGUobV9pbm5lckJsb2Nr
LT5yZW5kZXJlcigpLT5zdHlsZSgpKSwgcmVuZGVyQXJlbmEoKSk7CisgICAgfQorI2VuZGlmCiB9
CiAKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp1cGRhdGVGcm9tRWxlbWVudCgp
CkBAIC02ODUsNiArNzcwLDE5IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6Y3JlYXRlT3V0ZXJTcGluQnV0dG9uU3R5bGUoCiAgICAgcmV0dXJu
IGJ1dHRvblN0eWxlLnJlbGVhc2UoKTsKIH0KIAorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCitQ
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0
ZVNwZWVjaEJ1dHRvblN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdAor
eworICAgIEFTU0VSVChub2RlKCktPmlzSFRNTEVsZW1lbnQoKSk7CisgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBidXR0b25TdHlsZSA9IGdldENhY2hlZFBzZXVkb1N0eWxlKElOUFVUX1NQRUVDSF9C
VVRUT04pOworICAgIGlmICghYnV0dG9uU3R5bGUpCisgICAgICAgIGJ1dHRvblN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIGlmIChzdGFydFN0eWxlKQorICAgICAgICBidXR0b25T
dHlsZS0+aW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7CisgICAgcmV0dXJuIGJ1dHRvblN0eWxlLnJl
bGVhc2UoKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
dXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0eSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhbmNl
bEJ1dHRvbi0+cmVuZGVyZXIoKSkKQEAgLTgyMyw2ICs5MjEsMTAgQEAgaW50IFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6Y2xpZW50UGFkZGluZ1JpZ2h0KCkgY29uc3QKIAogICAgIGlmIChS
ZW5kZXJCb3gqIGNhbmNlbFJlbmRlcmVyID0gbV9jYW5jZWxCdXR0b24gPyBtX2NhbmNlbEJ1dHRv
bi0+cmVuZGVyQm94KCkgOiAwKQogICAgICAgICBwYWRkaW5nICs9IGNhbmNlbFJlbmRlcmVyLT53
aWR0aCgpOworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgaWYgKFJlbmRlckJveCogc3Bl
ZWNoUmVuZGVyZXIgPSBtX3NwZWVjaEJ1dHRvbiA/IG1fc3BlZWNoQnV0dG9uLT5yZW5kZXJCb3go
KSA6IDApCisgICAgICAgIHBhZGRpbmcgKz0gc3BlZWNoUmVuZGVyZXItPndpZHRoKCk7CisjZW5k
aWYKIAogICAgIHJldHVybiBwYWRkaW5nOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAppbmRleCBkZmY5ZTVmOGM2NmExNGQ0MDc3NWY3MDE0
MjkwNjA2ZDUxN2U4NDljLi5hYjlmNzExYjViMDk5NDM0M2RhNjFmYTZjOWM4NDEyYWZkMWZkNmQx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
aApAQCAtMjksNiArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnB1dEVs
ZW1lbnQ7CitjbGFzcyBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDsKIGNsYXNzIFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDsKIGNsYXNzIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
bkVsZW1lbnQ7CiBjbGFzcyBTZWFyY2hQb3B1cE1lbnU7CkBAIC01OSw3ICs2MCw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBpbnQgcHJlZmVycmVkRGVjb3JhdGlvbldpZHRoUmlnaHQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCB7IHJldHVybiBt
X2NhbmNlbEJ1dHRvbjsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNDb250cm9sQ2xpcCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgSW50UmVjdCBjb250cm9sQ2xpcFJlY3QoaW50IHR4LCBpbnQgdHkpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KIApAQCAtOTgsNiArOTksOSBAQCBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IGNyZWF0ZVJlc3VsdHNCdXR0b25TdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHls
ZSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlQ2FuY2VsQnV0dG9u
U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0OwogICAgIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IGNyZWF0ZU91dGVyU3BpbkJ1dHRvblN0eWxlKCkgY29uc3Q7CisjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVT
cGVlY2hCdXR0b25TdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7Cisj
ZW5kaWYKIAogICAgIHZvaWQgdXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0eSgpIGNvbnN0Owog
ICAgIEVWaXNpYmlsaXR5IHZpc2liaWxpdHlGb3JDYW5jZWxCdXR0b24oKSBjb25zdDsKQEAgLTE0
Miw2ICsxNDYsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b25FbGVtZW50PiBtX3Jlc3VsdHNCdXR0b247CiAgICAgUmVmUHRyPFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uRWxlbWVudD4gbV9jYW5jZWxCdXR0b247CiAgICAgUmVmUHRyPFRleHRDb250cm9sSW5u
ZXJFbGVtZW50PiBtX291dGVyU3BpbkJ1dHRvbjsKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQor
ICAgIFJlZlB0cjxJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudD4gbV9zcGVlY2hCdXR0b247
CisjZW5kaWYKIAogICAgIFRpbWVyPFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZT4gbV9zZWFy
Y2hFdmVudFRpbWVyOwogICAgIFJlZlB0cjxTZWFyY2hQb3B1cE1lbnU+IG1fc2VhcmNoUG9wdXA7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggNGYzMjg5ZDZkODc5Y2NlZjUzMTJmZjcw
ZmYxOTNmNmM2ZWI3Yjk4ZC4uZmJlYTUxOTczY2ZmNmEyZTNhODQ5ZWNiMzgwMzAxMWRlY2Y1M2M0
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMjI4LDYgKzIyOCwxMCBAQCB2b2lk
IFJlbmRlclRoZW1lOjphZGp1c3RTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBFbAogICAgICAgICBjYXNlIFJhdGluZ0xldmVsSW5kaWNhdG9yUGFy
dDoKICAgICAgICAgICAgIHJldHVybiBhZGp1c3RNZXRlclN0eWxlKHNlbGVjdG9yLCBzdHlsZSwg
ZSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgICAgICBjYXNlIElucHV0
U3BlZWNoQnV0dG9uUGFydDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGp1c3QgdGhlIHNwZWVj
aCBidXR0b24ncyBzdHlsZSBhbmQgc2l6ZXMuCisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM1OCw2ICszNjIsMTAgQEAgYm9vbCBSZW5kZXJU
aGVtZTo6cGFpbnQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYgcGFpbnRJbmYKICAgICAgICAgICAgIHJldHVybiBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb24obywgcGFpbnRJbmZvLCByKTsKICAgICAgICAgY2FzZSBTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b25QYXJ0OgogICAgICAgICAgICAgcmV0dXJuIHBhaW50U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uKG8sIHBhaW50SW5mbywgcik7CisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICAg
ICAgY2FzZSBJbnB1dFNwZWVjaEJ1dHRvblBhcnQ6CisgICAgICAgICAgICAvLyBGSVhNRTogQWRk
IHBhaW50aW5nIGNvZGUgdG8gZHJhdyB0aGUgc3BlZWNoIGJ1dHRvbi4KKyNlbmRpZgogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDA2LDYgKzQxNCw5IEBA
IGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9yZGVyT25seShSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvCiAgICAgICAgIGNhc2UgU2VhcmNoRmllbGREZWNvcmF0
aW9uUGFydDoKICAgICAgICAgY2FzZSBTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydDoK
ICAgICAgICAgY2FzZSBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0OgorI2lmIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCisgICAgICAgIGNhc2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0OgorI2VuZGlm
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC00NTIsNiAr
NDYzLDkgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnREZWNvcmF0aW9ucyhSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFJlbmRlck9iamVjdDo6UGFpbnRJbmYKICAgICAgICAgY2FzZSBTZWFyY2hGaWVs
ZERlY29yYXRpb25QYXJ0OgogICAgICAgICBjYXNlIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0OgogICAgICAgICBjYXNlIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblBhcnQ6CisjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICAgICAgY2FzZSBJbnB1dFNwZWVjaEJ1dHRvblBhcnQ6
CisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDJj
NzIzMjgxNmU5OGY2NzI2NjZmYjEwMjQ1YTRlYzU4ZGI3NDRkMWMuLmMwNzE4ODVkMDEwZDM0YWY2
Y2VkNjQ0ZjViYWMzODNjY2YxMTM4MzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwNyw0ICszMDgsMjYgQEAgdm9pZCBTcGlu
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAg
IEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKwor
aW5saW5lIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50OjpJbnB1dEZpZWxkU3BlZWNoQnV0
dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBUZXh0Q29udHJvbElubmVyRWxl
bWVudChkb2N1bWVudCkKK3sKK30KKworUGFzc1JlZlB0cjxJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudD4gSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIG5ldyBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVu
dChkb2N1bWVudCk7Cit9CisKK3ZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIC8vIEZJWE1FOiBTdGFydCBz
cGVlY2ggcmVjb2duaXRpb24gaGVyZS4KKyAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihldmVudCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aCBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCmluZGV4IGVk
MTg4N2U3YzliMzQwYTRlMThjZDE4MjljOWVkODA2YWFkNDUzNjQuLjE4ODRhMzQ3OGU0ZmIxNTY0
Y2M3ZTQwZWVmMmYwMjRmYjJlMjdmYTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA0LDYgKzEwNSwyMCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9vblVwQnV0dG9uOwogfTsKIAorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKK2Ns
YXNzIElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50IDogcHVibGljIFRleHRDb250cm9sSW5u
ZXJFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOworCitwcml2YXRlOgorICAgIElucHV0RmllbGRT
cGVlY2hCdXR0b25FbGVtZW50KERvY3VtZW50Kik7Cit9OworCisjZW5kaWYgLy8gRU5BQkxFKElO
UFVUX1NQRUVDSCkKKwogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCAwODU4ZWMyMjQ4N2M3MDkz
YzJlNjJiNDQyZWM2NDY2MmIwYjM4N2I1Li5lOTVlMjQ4OTFmMDIwZTM2NDhlMjcwMTU2ZWVkYTM5
ZDUwZjJhZDE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZUNvbnN0YW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmgKQEAgLTc0LDcgKzc0LDcgQEAgZW51bSBQc2V1ZG9JZCB7CiAgICAgTUVESUFfQ09O
VFJPTFNfU0VFS19CQUNLX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfU0VFS19GT1JXQVJEX0JVVFRP
TiwgTUVESUFfQ09OVFJPTFNfRlVMTFNDUkVFTl9CVVRUT04sIE1FRElBX0NPTlRST0xTX1JFV0lO
RF9CVVRUT04sIAogICAgIE1FRElBX0NPTlRST0xTX1JFVFVSTl9UT19SRUFMVElNRV9CVVRUT04s
IE1FRElBX0NPTlRST0xTX1RPR0dMRV9DTE9TRURfQ0FQVElPTlNfQlVUVE9OLAogICAgIE1FRElB
X0NPTlRST0xTX1NUQVRVU19ESVNQTEFZLCBTQ1JPTExCQVJfVEhVTUIsIFNDUk9MTEJBUl9CVVRU
T04sIFNDUk9MTEJBUl9UUkFDSywgU0NST0xMQkFSX1RSQUNLX1BJRUNFLCBTQ1JPTExCQVJfQ09S
TkVSLCBSRVNJWkVSLAotICAgIElOUFVUX0xJU1RfQlVUVE9OLCBJTk5FUl9TUElOX0JVVFRPTiwg
T1VURVJfU1BJTl9CVVRUT04sIFZJU0lURURfTElOSywgUFJPR1JFU1NfQkFSX1ZBTFVFLAorICAg
IElOUFVUX0xJU1RfQlVUVE9OLCBJTlBVVF9TUEVFQ0hfQlVUVE9OLCBJTk5FUl9TUElOX0JVVFRP
TiwgT1VURVJfU1BJTl9CVVRUT04sIFZJU0lURURfTElOSywgUFJPR1JFU1NfQkFSX1ZBTFVFLAog
ICAgIE1FVEVSX0hPUklaT05UQUxfQkFSLCBNRVRFUl9IT1JJWk9OVEFMX09QVElNVU0sIE1FVEVS
X0hPUklaT05UQUxfU1VCT1BUSU1BTCwgTUVURVJfSE9SSVpPTlRBTF9FVkVOX0xFU1NfR09PRCwK
ICAgICBNRVRFUl9WRVJUSUNBTF9CQVIsIE1FVEVSX1ZFUlRJQ0FMX09QVElNVU0sIE1FVEVSX1ZF
UlRJQ0FMX1NVQk9QVElNQUwsIE1FVEVSX1ZFUlRJQ0FMX0VWRU5fTEVTU19HT09ELCAKICAgICBB
RlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lELAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59376</attachid>
            <date>2010-06-22 08:57:51 -0700</date>
            <delta_ts>2010-06-24 03:40:43 -0700</delta_ts>
            <desc>Addresses Kent &amp; Jeremy&apos;s comments</desc>
            <filename>bug-40925-20100622165748.patch</filename>
            <type>text/plain</type>
            <size>28675</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njk3ZmJiMWUxM2E4MjY3OWNkYWRlY2NjYWY2N2MxYjcwNGE1ZGQxMC4uZWM0OTYxNzI2M2NmYWI0
ZDc2OTM4MjRjN2UyYzZmMGZmZGM3MDdhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMC0wNi0yMiAgU2F0
aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHNwZWVjaCBidXR0b24gdG8gaW5wdXQg
ZWxlbWVudHMsIG5vIHJlbmRlcmluZyBvciBhY3Rpb25zIHlldC4KKworICAgICAgICBTcGVlY2gg
SW5wdXQ6IEFkZCBhIHNwZWVjaCBidXR0b24gdG8gdGV4dCBpbnB1dCBlbGVtZW50IChubyByZW5k
ZXJpbmcgb3IgYWN0aW9ucyB5ZXQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDkyNQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gV2lsbCBjcmVhdGUg
YSBsYXlvdXQgdGVzdCBpbiBhIHN1YnNlcXVlbnQgcGF0Y2guCisKKyAgICAgICAgKiBjc3MvQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKToKKyAgICAgICAgKFdl
YkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjopOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluOgorICAgICAgICAqIGNzcy9odG1sLmNzczoKKyAgICAgICAgKGlucHV0Ojotd2Vi
a2l0LWlucHV0LXNwZWVjaC1idXR0b24pOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
aXNTcGVlY2hFbmFibGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9UaGVtZVR5cGVzLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpub2RlQXRQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmZvcndhcmRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnN0eWxl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6aGFzQ29udHJvbENsaXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjpjb250cm9sQ2xpcFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjp0ZXh0QmxvY2tXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmFkanVzdENvbnRyb2xI
ZWlnaHRCYXNlZE9uTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6OmNyZWF0ZVN1YnRyZWVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZVNwZWVjaEJ1dHRvblN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y2xpZW50UGFk
ZGluZ1JpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lOjphZGp1c3RTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50Qm9y
ZGVyT25seSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnREZWNvcmF0aW9u
cyk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6SW5wdXRGaWVs
ZFNwZWVjaEJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3Bl
ZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKwogMjAxMC0w
Ni0yMSAgU2F0aXNoIFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWVNYXBwaW5ncy5oIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5n
cy5oCmluZGV4IGY2NDZiMjllNDMwMDk5MDY1NjUzOGRlZjdiZGU5MzcxZGI3Y2NjNjYuLjU5ZDA2
Mzk2ZjAyYzEwZjY1N2I4MGZmNWUwNmYyMTFjNjlmMDM1N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTM0NCw2ICszNDQsMTEgQEAgdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENvbnRyb2xQYXJ0IGUpCiAg
ICAgICAgIGNhc2UgQ2Fwc0xvY2tJbmRpY2F0b3JQYXJ0OgogICAgICAgICAgICAgbV92YWx1ZS5p
ZGVudCA9IENTU1ZhbHVlQ2Fwc0xvY2tJbmRpY2F0b3I7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBJbnB1dFNwZWVjaEJ1dHRvblBhcnQ6CisjaWYgRU5BQkxFKElOUFVUX1NQRUVD
SCkKKyAgICAgICAgICAgIG1fdmFsdWUuaWRlbnQgPSBDU1NWYWx1ZUlucHV0U3BlZWNoQnV0dG9u
OworI2VuZGlmCisgICAgICAgICAgICBicmVhazsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApp
bmRleCAzZmY5MzczZGRlNjY3NjcyNTU0OWRjODAyM2M4ZTk3OTk1MDYyMDg2Li5kZGYxNzM3MTE5
NmQ3MWM4OWQ3YjdmOThmNmI3MjhlOTgyZGRlY2QxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC01LDYg
KzUsNyBAQAogICogICAgICAgICAgICAgICAyMDAxLTIwMDMgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IERhdmlkIFNt
aXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTA3LDYg
KzEwOCwxMCBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRvVHlwZSB0eXBl
KQogICAgICAgICByZXR1cm4gRklMRV9VUExPQURfQlVUVE9OOwogICAgIGNhc2UgUHNldWRvSW5w
dXRQbGFjZWhvbGRlcjoKICAgICAgICAgcmV0dXJuIElOUFVUX1BMQUNFSE9MREVSOworI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCisgICAgY2FzZSBQc2V1ZG9JbnB1dFNwZWVjaEJ1dHRvbjoKKyAg
ICAgICAgcmV0dXJuIElOUFVUX1NQRUVDSF9CVVRUT047CisjZW5kaWYKICAgICBjYXNlIFBzZXVk
b1NsaWRlclRodW1iOgogICAgICAgICByZXR1cm4gU0xJREVSX1RIVU1COwogICAgIGNhc2UgUHNl
dWRvU2VhcmNoQ2FuY2VsQnV0dG9uOgpAQCAtMjgwLDYgKzI4NSw5IEBAIHN0YXRpYyBIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVk
b1R5cGVNYXAoCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGJlZm9yZSwg
KCJiZWZvcmUiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGNoZWNr
ZWQsICgiY2hlY2tlZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
ZmlsZVVwbG9hZEJ1dHRvbiwgKCItd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiIpKTsKKyNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5n
LCBpbnB1dFNwZWVjaEJ1dHRvbiwgKCItd2Via2l0LWlucHV0LXNwZWVjaC1idXR0b24iKSk7Cisj
ZW5kaWYKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZGVmYXVsdFN0cmlu
ZywgKCJkZWZhdWx0IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBk
aXNhYmxlZCwgKCJkaXNhYmxlZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgcmVhZE9ubHksICgicmVhZC1vbmx5IikpOwpAQCAtMzkwLDYgKzM5OCw5IEBAIHN0YXRp
YyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5h
bWVUb1BzZXVkb1R5cGVNYXAoCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChiZWZvcmUu
aW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvQmVmb3JlKTsKICAgICAgICAgbmFtZVRvUHNldWRv
VHlwZS0+c2V0KGNoZWNrZWQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZCk7CiAg
ICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmaWxlVXBsb2FkQnV0dG9uLmltcGwoKSwgQ1NT
U2VsZWN0b3I6OlBzZXVkb0ZpbGVVcGxvYWRCdXR0b24pOworI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChpbnB1dFNwZWVjaEJ1dHRvbi5pbXBs
KCksIENTU1NlbGVjdG9yOjpQc2V1ZG9JbnB1dFNwZWVjaEJ1dHRvbik7CisjZW5kaWYKICAgICAg
ICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGRlZmF1bHRTdHJpbmcuaW1wbCgpLCBDU1NTZWxlY3Rv
cjo6UHNldWRvRGVmYXVsdCk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChkaXNhYmxl
ZC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9EaXNhYmxlZCk7CiAgICAgICAgIG5hbWVUb1Bz
ZXVkb1R5cGUtPnNldChyZWFkT25seS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9SZWFkT25s
eSk7CkBAIC01MTksNiArNTMwLDkgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5
cGUoKSBjb25zdAogICAgIGNhc2UgUHNldWRvRmlsZVVwbG9hZEJ1dHRvbjoKICAgICBjYXNlIFBz
ZXVkb0lucHV0TGlzdEJ1dHRvbjoKICAgICBjYXNlIFBzZXVkb0lucHV0UGxhY2Vob2xkZXI6Cisj
aWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICBjYXNlIFBzZXVkb0lucHV0U3BlZWNoQnV0dG9u
OgorI2VuZGlmCiAgICAgY2FzZSBQc2V1ZG9Jbm5lclNwaW5CdXR0b246CiAgICAgY2FzZSBQc2V1
ZG9NZWRpYUNvbnRyb2xzUGFuZWw6CiAgICAgY2FzZSBQc2V1ZG9NZWRpYUNvbnRyb2xzTXV0ZUJ1
dHRvbjoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9XZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5oCmluZGV4IGY1YjU2ZWYzZWVlY2UzMDM1YzYwNDkxNTM3MTk0YzgxY2Fm
ZGZhODUuLmQ1NWZhZmNjMzcxYjE3ZTg4YWQzOGI2MjRlMmRhNTc2ODBiZjYwNWMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuaApAQCAtMTk2LDYgKzE5Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IFBzZXVkb01ldGVyVmVydGljYWxTdWJvcHRpbWFsLAogICAgICAgICAgICAgUHNldWRvTWV0ZXJW
ZXJ0aWNhbEV2ZW5MZXNzR29vZCwKICAgICAgICAgICAgIFBzZXVkb0lucHV0TGlzdEJ1dHRvbiwK
KyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgICAgICAgICAgUHNldWRvSW5wdXRTcGVlY2hC
dXR0b24sCisjZW5kaWYKICAgICAgICAgICAgIFBzZXVkb0lubmVyU3BpbkJ1dHRvbiwKICAgICAg
ICAgICAgIFBzZXVkb091dGVyU3BpbkJ1dHRvbiwKICAgICAgICAgICAgIFBzZXVkb1Byb2dyZXNz
QmFyVmFsdWUsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCAxNTQxODNiNTQ0NTgzZmU1YmY3
MjYyMzc2N2Y3ZGI1ZmUxMzNkNWMzLi5jZTk4OTA3OTgzMzI2Mzc3NGEzY2I5MmE0OGQ1MzljNDcz
MjlmZWI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBi
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTU2Niw2ICs1NjYsNyBAQCBidXR0
b24KIGJ1dHRvbi1iZXZlbAogZGVmYXVsdC1idXR0b24KIGlubmVyLXNwaW4tYnV0dG9uCitpbnB1
dC1zcGVlY2gtYnV0dG9uCiBsaXN0LWJ1dHRvbgogbGlzdGJveAogbGlzdGl0ZW0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL2h0bWwuY3NzIGIvV2ViQ29yZS9jc3MvaHRtbC5jc3MKaW5kZXggMTYz
MzRjZjI1MWRhNjdhNWFiN2FhYzM1NDgwMWIwMDEyOGFhNDE4OS4uZmFiYThiNzE3NDBiMTc4ZTBj
NjQzOTc5MTkzNjkyY2E0NWU1MjQxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MK
KysrIGIvV2ViQ29yZS9jc3MvaHRtbC5jc3MKQEAgLTM3Miw2ICszNzIsMTEgQEAgaW5wdXQ6Oi13
ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24gewogICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7
CiB9CiAKK2lucHV0Ojotd2Via2l0LWlucHV0LXNwZWVjaC1idXR0b24geworICAgIC13ZWJraXQt
YXBwZWFyYW5jZTogaW5wdXQtc3BlZWNoLWJ1dHRvbjsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7Cit9CisKIHRleHRhcmVhIHsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRhcmVhOwog
ICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vSW5w
dXRFbGVtZW50LmggYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAppbmRleCBkNDc3MDQ2NDRi
YWI5NzY2MTg4NDRkZjY2OTQyZWQ5ZWQzNjJmMGE1Li4xZDZjMzU2MWNlZmZhNjY5ODIyYzU3OTI4
Yzc4MjBkY2M0N2ZkNzI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAor
KysgYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaApAQCAtNDQsNiArNDQsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNTcGlu
QnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQorICAgIHZpcnR1YWwgYm9vbCBpc1NwZWVjaEVuYWJsZWQoKSBjb25zdCA9IDA7CisjZW5kaWYg
ICAgCiAKICAgICB2aXJ0dWFsIGJvb2wgc2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkg
Y29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVz
LmluIGIvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCA2MGQ1ZDczOTFi
NDgyOGNjM2RlZTE3NzhiODc5ZDAyYTgzNWY1ZWE5Li5iNDViYTllZGM2ZGJhN2Y3Zjc0ZGZlYmVm
ZDEwNDUyNGIzMjcwNTg1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5h
bWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTI1NSw2
ICsyNTUsNyBAQCBzaXplCiBzb3J0YWJsZQogc29ydGRpcmVjdGlvbgogc3Bhbgorc3BlZWNoCiBz
cGVsbGNoZWNrCiBzcmMKIHN0YW5kYnkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA3
ZGI5NjFlM2VjOWU1ZmY5MDE2MjNiODQyOWFjY2RiNzJiZTRjZDdmLi41ZWI4YTExMmI5NTg4YThj
NmNiNWExODI5NTYzOTUyZjJhOTFlNjZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBA
IC01LDYgKzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAg
ICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjgxNiw2ICsyODE3LDIwIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0
V2FwSW5wdXRGb3JtYXQoU3RyaW5nJiBtYXNrKQogfQogI2VuZGlmCiAKLQorI2lmIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzU3BlZWNoRW5hYmxlZCgpIGNv
bnN0Cit7CisgICAgc3dpdGNoIChpbnB1dFR5cGUoKSkgeworICAgIC8vIEZJWE1FOiBBZGQgc3Vw
cG9ydCBmb3IgUkFOR0UsIEVNQUlMLCBVUkwsIENPTE9SIGFuZCBEQVRFL1RJTUUgaW5wdXQgdHlw
ZXMuCisgICAgY2FzZSBURVhUOgorICAgIGNhc2UgUEFTU1dPUkQ6CisgICAgY2FzZSBTRUFSQ0g6
CisgICAgY2FzZSBOVU1CRVI6CisgICAgY2FzZSBURUxFUEhPTkU6CisgICAgICAgIHJldHVybiBo
YXNBdHRyaWJ1dGUoc3BlZWNoQXR0cik7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKyNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZmRmMDZk
YjAwM2E0NWMyYTZiYWRhNTBiNWU4NmJmYjk2M2Y3MTY5Yy4uNWJjZjAxZjE0ZDdiOWZmM2MzYTNi
YmMyYmFmZmI5NzE2MjVjNWRiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0xMDUsNiAr
MTA1LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNOdW1iZXJGaWVsZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBOVU1CRVI7IH0KICAgICBib29sIGlzRW1haWxGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBFTUFJTDsgfQogICAgIGJvb2wgaXNVcmxGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBVUkw7IH0KKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIHZpcnR1
YWwgYm9vbCBpc1NwZWVjaEVuYWJsZWQoKSBjb25zdDsKKyNlbmRpZiAgICAKIAogICAgIGJvb2wg
Y2hlY2tlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tlZDsgfQogICAgIHZvaWQgc2V0Q2hlY2tl
ZChib29sLCBib29sIHNlbmRDaGFuZ2VFdmVudCA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgK
aW5kZXggNzMxNGZiYWQzM2U4YjY3YjNhZDU1MzQ3MGI5Y2RlMjAyNzIyOWNmYS4uMjcxYmQ4Mzkz
OGQ4MDRmNDkwMTc5YWIyOWIwN2YzOTE2MWE5NjQxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9UaGVtZVR5cGVzLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBDb250cm9sU3RhdGVzOwogLy8gTXVzdCBm
b2xsb3cgQ1NTVmFsdWVLZXl3b3Jkcy5pbiBvcmRlcgogZW51bSBDb250cm9sUGFydCB7CiAgICAg
Tm9Db250cm9sUGFydCwgQ2hlY2tib3hQYXJ0LCBSYWRpb1BhcnQsIFB1c2hCdXR0b25QYXJ0LCBT
cXVhcmVCdXR0b25QYXJ0LCBCdXR0b25QYXJ0LAotICAgIEJ1dHRvbkJldmVsUGFydCwgRGVmYXVs
dEJ1dHRvblBhcnQsIElubmVyU3BpbkJ1dHRvblBhcnQsIExpc3RCdXR0b25QYXJ0LCBMaXN0Ym94
UGFydCwgTGlzdEl0ZW1QYXJ0LAorICAgIEJ1dHRvbkJldmVsUGFydCwgRGVmYXVsdEJ1dHRvblBh
cnQsIElubmVyU3BpbkJ1dHRvblBhcnQsIElucHV0U3BlZWNoQnV0dG9uUGFydCwgTGlzdEJ1dHRv
blBhcnQsIExpc3Rib3hQYXJ0LCBMaXN0SXRlbVBhcnQsCiAgICAgTWVkaWFGdWxsc2NyZWVuQnV0
dG9uUGFydCwgTWVkaWFNdXRlQnV0dG9uUGFydCwgTWVkaWFQbGF5QnV0dG9uUGFydCwgTWVkaWFT
ZWVrQmFja0J1dHRvblBhcnQsIAogICAgIE1lZGlhU2Vla0ZvcndhcmRCdXR0b25QYXJ0LCBNZWRp
YVJld2luZEJ1dHRvblBhcnQsIE1lZGlhUmV0dXJuVG9SZWFsdGltZUJ1dHRvblBhcnQsIE1lZGlh
VG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25QYXJ0LAogICAgIE1lZGlhU2xpZGVyUGFydCwgTWVk
aWFTbGlkZXJUaHVtYlBhcnQsIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyUGFydCwgTWVkaWFW
b2x1bWVTbGlkZXJQYXJ0LCBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDJkYmZi
OWY2ZjUwYzllZWNmOTA3YjAyYzUxOTdkN2YzNDk5ZWFiYmYuLmRhMzI4M2NmNGJjZDI2ZGZmYWJl
MTE4OWU0YTg2YmFjNDMxOWNkOTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qKgogICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqICAgICAgICAgICAoQykgMjAwOCBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKSAKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yODgsOSArMjg5LDEzIEBAIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0CiAgICAgLy8gSWYgd2Ug
Zm91bmQgYSBzcGluIGJ1dHRvbiwgd2UncmUgZG9uZS4KICAgICBpZiAobV9vdXRlclNwaW5CdXR0
b24gJiYgcmVzdWx0LmlubmVyTm9kZSgpID09IG1fb3V0ZXJTcGluQnV0dG9uKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAvLyBJZiB3ZSdyZSBub3QgYSBzZWFyY2ggZmllbGQsIG9yIHdlIGFs
cmVhZHkgZm91bmQgdGhlIHJlc3VsdHMgb3IgY2FuY2VsIGJ1dHRvbnMsIHdlJ3JlIGRvbmUuCisg
ICAgLy8gSWYgd2UncmUgbm90IGEgc2VhcmNoIGZpZWxkLCBvciB3ZSBhbHJlYWR5IGZvdW5kIHRo
ZSBzcGVlY2gsIHJlc3VsdHMgb3IgY2FuY2VsIGJ1dHRvbnMsIHdlJ3JlIGRvbmUuCiAgICAgaWYg
KCFtX2lubmVyQmxvY2sgfHwgcmVzdWx0LmlubmVyTm9kZSgpID09IG1fcmVzdWx0c0J1dHRvbiB8
fCByZXN1bHQuaW5uZXJOb2RlKCkgPT0gbV9jYW5jZWxCdXR0b24pCiAgICAgICAgIHJldHVybiB0
cnVlOworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgaWYgKG1faW5uZXJCbG9jayAmJiBt
X3NwZWVjaEJ1dHRvbiAmJiByZXN1bHQuaW5uZXJOb2RlKCkgPT0gbV9zcGVlY2hCdXR0b24pCisg
ICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAKICAgICBOb2RlKiBpbm5lck5vZGUgPSAwOwog
ICAgIFJlbmRlckJveCogaW5uZXJCbG9ja1JlbmRlcmVyID0gbV9pbm5lckJsb2NrLT5yZW5kZXJC
b3goKTsKQEAgLTMwMyw2ICszMDgsMTkgQEAgYm9vbCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBp
ZiAobV9yZXN1bHRzQnV0dG9uICYmIG1fcmVzdWx0c0J1dHRvbi0+cmVuZGVyZXIoKSAmJiB4UG9z
IDwgdGV4dExlZnQpCiAgICAgICAgIGlubmVyTm9kZSA9IG1fcmVzdWx0c0J1dHRvbi5nZXQoKTsK
IAorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgaWYgKCFpbm5lck5vZGUgJiYgbV9zcGVl
Y2hCdXR0b24gJiYgbV9zcGVlY2hCdXR0b24tPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaW50IGJ1
dHRvbkxlZnQgPSB0ZXh0TGVmdCArIGlubmVyVGV4dFJlbmRlcmVyLT53aWR0aCgpOworICAgICAg
ICBpZiAobV9jYW5jZWxCdXR0b24pIHsKKyAgICAgICAgICAgIFJlbmRlckJveCogY2FuY2VsUmVu
ZGVyZXIgPSBtX2NhbmNlbEJ1dHRvbi0+cmVuZGVyQm94KCk7CisgICAgICAgICAgICBjYW5jZWxS
ZW5kZXJlci0+Y2FsY1dpZHRoKCk7CisgICAgICAgICAgICBidXR0b25MZWZ0ICs9IGNhbmNlbFJl
bmRlcmVyLT53aWR0aCgpICsgY2FuY2VsUmVuZGVyZXItPm1hcmdpbkxlZnQoKSArIGNhbmNlbFJl
bmRlcmVyLT5tYXJnaW5SaWdodCgpOworICAgICAgICB9CisgICAgICAgIGlmICh4UG9zID4gYnV0
dG9uTGVmdCkKKyAgICAgICAgICAgIGlubmVyTm9kZSA9IG1fc3BlZWNoQnV0dG9uLmdldCgpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFpbm5lck5vZGUpIHsKICAgICAgICAgaW50IHRleHRS
aWdodCA9IHRleHRMZWZ0ICsgaW5uZXJUZXh0UmVuZGVyZXItPndpZHRoKCk7CiAgICAgICAgIGlm
IChtX2NhbmNlbEJ1dHRvbiAmJiBtX2NhbmNlbEJ1dHRvbi0+cmVuZGVyZXIoKSAmJiB4UG9zID4g
dGV4dFJpZ2h0KQpAQCAtMzM5LDggKzM1NywyMCBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6Zm9yd2FyZEV2ZW50KEV2ZW50KiBldmVudCkKIAogICAgIEZsb2F0UG9pbnQgbG9j
YWxQb2ludCA9IGlubmVyVGV4dFJlbmRlcmVyLT5hYnNvbHV0ZVRvTG9jYWwoc3RhdGljX2Nhc3Q8
TW91c2VFdmVudCo+KGV2ZW50KS0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSwgdHJ1ZSk7CiAg
ICAgaW50IHRleHRSaWdodCA9IGlubmVyVGV4dFJlbmRlcmVyLT5ib3JkZXJCb3hSZWN0KCkucmln
aHQoKTsKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIGludCBjYW5jZWxSaWdodCA9IHRl
eHRSaWdodDsKKyAgICBpZiAobV9jYW5jZWxCdXR0b24gJiYgbV9jYW5jZWxCdXR0b24tPnJlbmRl
ckJveCgpKSB7CisgICAgICAgIFJlbmRlckJveCogY2FuY2VsUmVuZGVyZXIgPSBtX2NhbmNlbEJ1
dHRvbi0+cmVuZGVyQm94KCk7CisgICAgICAgIGNhbmNlbFJpZ2h0ICs9IGNhbmNlbFJlbmRlcmVy
LT53aWR0aCgpICsgY2FuY2VsUmVuZGVyZXItPm1hcmdpbkxlZnQoKSArIGNhbmNlbFJlbmRlcmVy
LT5tYXJnaW5SaWdodCgpOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fcmVzdWx0c0J1dHRv
biAmJiBsb2NhbFBvaW50LngoKSA8IGlubmVyVGV4dFJlbmRlcmVyLT5ib3JkZXJCb3hSZWN0KCku
eCgpKQogICAgICAgICBtX3Jlc3VsdHNCdXR0b24tPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQp
OworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgZWxzZSBpZiAobV9zcGVlY2hCdXR0b24g
JiYgbG9jYWxQb2ludC54KCkgPiBjYW5jZWxSaWdodCkKKyAgICAgICAgbV9zcGVlY2hCdXR0b24t
PmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworI2VuZGlmCiAgICAgZWxzZSBpZiAobV9jYW5j
ZWxCdXR0b24gJiYgbG9jYWxQb2ludC54KCkgPiB0ZXh0UmlnaHQpCiAgICAgICAgIG1fY2FuY2Vs
QnV0dG9uLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKICAgICBlbHNlIGlmIChtX291dGVy
U3BpbkJ1dHRvbiAmJiBsb2NhbFBvaW50LngoKSA+IHRleHRSaWdodCkKQEAgLTM3MCw2ICs0MDAs
MTEgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW4KICAgICBpZiAoUmVuZGVyT2JqZWN0KiBzcGlu
UmVuZGVyZXIgPSBtX291dGVyU3BpbkJ1dHRvbiA/IG1fb3V0ZXJTcGluQnV0dG9uLT5yZW5kZXJl
cigpIDogMCkKICAgICAgICAgc3BpblJlbmRlcmVyLT5zZXRTdHlsZShjcmVhdGVPdXRlclNwaW5C
dXR0b25TdHlsZSgpKTsKIAorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgaWYgKFJlbmRl
ck9iamVjdCogc3BlZWNoUmVuZGVyZXIgPSBtX3NwZWVjaEJ1dHRvbiA/IG1fc3BlZWNoQnV0dG9u
LT5yZW5kZXJlcigpIDogMCkKKyAgICAgICAgc3BlZWNoUmVuZGVyZXItPnNldFN0eWxlKGNyZWF0
ZVNwZWVjaEJ1dHRvblN0eWxlKHN0eWxlKCkpKTsKKyNlbmRpZgorCiAgICAgc2V0SGFzT3ZlcmZs
b3dDbGlwKGZhbHNlKTsKIH0KIApAQCAtMzk3LDkgKzQzMiwxOSBAQCB2b2lkIFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCkKICAgICB9CiB9
CiAKK2Jvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpoYXNDb250cm9sQ2xpcCgpIGNv
bnN0Cit7CisgICAgYm9vbCBjbGlwID0gbV9jYW5jZWxCdXR0b247CisjaWYgRU5BQkxFKElOUFVU
X1NQRUVDSCkKKyAgICBpZiAobV9zcGVlY2hCdXR0b24pCisgICAgICAgIGNsaXAgPSB0cnVlOwor
I2VuZGlmCisgICAgcmV0dXJuIGNsaXA7Cit9CisKIEludFJlY3QgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjpjb250cm9sQ2xpcFJlY3QoaW50IHR4LCBpbnQgdHkpIGNvbnN0CiB7Ci0gICAg
Ly8gVGhpcyBzaG91bGQgb25seSBnZXQgY2FsbGVkIGZvciBzZWFyY2ggaW5wdXRzLgorICAgIC8v
IFRoaXMgc2hvdWxkIG9ubHkgZ2V0IGNhbGxlZCBmb3Igc2VhcmNoICYgc3BlZWNoIGlucHV0cy4K
ICAgICBBU1NFUlQoaGFzQ29udHJvbENsaXAoKSk7CiAKICAgICBJbnRSZWN0IGNsaXBSZWN0ID0g
SW50UmVjdChtX2lubmVyQmxvY2stPnJlbmRlckJveCgpLT5mcmFtZVJlY3QoKSk7CkBAIC00MjEs
NiArNDY2LDEzIEBAIGludCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnRleHRCbG9ja1dp
ZHRoKCkgY29uc3QKICAgICAgICAgd2lkdGggLT0gY2FuY2VsUmVuZGVyZXItPndpZHRoKCkgKyBj
YW5jZWxSZW5kZXJlci0+bWFyZ2luTGVmdCgpICsgY2FuY2VsUmVuZGVyZXItPm1hcmdpblJpZ2h0
KCk7CiAgICAgfQogCisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICBpZiAoUmVuZGVyQm94
KiBzcGVlY2hSZW5kZXJlciA9IG1fc3BlZWNoQnV0dG9uID8gbV9zcGVlY2hCdXR0b24tPnJlbmRl
ckJveCgpIDogMCkgeworICAgICAgICBzcGVlY2hSZW5kZXJlci0+Y2FsY1dpZHRoKCk7CisgICAg
ICAgIHdpZHRoIC09IHNwZWVjaFJlbmRlcmVyLT53aWR0aCgpICsgc3BlZWNoUmVuZGVyZXItPm1h
cmdpbkxlZnQoKSArIHNwZWVjaFJlbmRlcmVyLT5tYXJnaW5SaWdodCgpOworICAgIH0KKyNlbmRp
ZgorCiAgICAgcmV0dXJuIHdpZHRoIC0gZGVjb3JhdGlvbldpZHRoUmlnaHQoKTsKIH0KIApAQCAt
NDc5LDYgKzUzMSwxMiBAQCBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpwcmVmZXJy
ZWRDb250ZW50V2lkdGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdAogICAgICAgICByZXN1bHQgKz0g
Y2FuY2VsUmVuZGVyZXItPmJvcmRlckxlZnQoKSArIGNhbmNlbFJlbmRlcmVyLT5ib3JkZXJSaWdo
dCgpICsKICAgICAgICAgICAgICAgICAgIGNhbmNlbFJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpICsg
Y2FuY2VsUmVuZGVyZXItPnBhZGRpbmdSaWdodCgpOwogCisjaWYgRU5BQkxFKElOUFVUX1NQRUVD
SCkKKyAgICBpZiAoUmVuZGVyQm94KiBzcGVlY2hSZW5kZXJlciA9IG1fc3BlZWNoQnV0dG9uID8g
bV9zcGVlY2hCdXR0b24tPnJlbmRlckJveCgpIDogMCkgeworICAgICAgICByZXN1bHQgKz0gc3Bl
ZWNoUmVuZGVyZXItPmJvcmRlckxlZnQoKSArIHNwZWVjaFJlbmRlcmVyLT5ib3JkZXJSaWdodCgp
ICsKKyAgICAgICAgICAgICAgICAgIHNwZWVjaFJlbmRlcmVyLT5wYWRkaW5nTGVmdCgpICsgc3Bl
ZWNoUmVuZGVyZXItPnBhZGRpbmdSaWdodCgpOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTUxNCwxMiArNTcyLDI4IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjphZGp1c3RDb250cm9sSGVpZ2h0QmFzZWRPbkxpbmVIZWlnaHQoaW50IGxpbmVI
CiAgICAgICAgIGxpbmVIZWlnaHQgPSBtYXgobGluZUhlaWdodCwgY2FuY2VsUmVuZGVyZXItPmhl
aWdodCgpKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgIGlmIChSZW5k
ZXJCb3gqIHNwZWVjaFJlbmRlcmVyID0gbV9zcGVlY2hCdXR0b24gPyBtX3NwZWVjaEJ1dHRvbi0+
cmVuZGVyQm94KCkgOiAwKSB7CisgICAgICAgIHRvUmVuZGVyQmxvY2soc3BlZWNoUmVuZGVyZXIp
LT5jYWxjSGVpZ2h0KCk7CisgICAgICAgIHNldEhlaWdodChtYXgoaGVpZ2h0KCksCisgICAgICAg
ICAgICAgICAgICBzcGVlY2hSZW5kZXJlci0+Ym9yZGVyVG9wKCkgKyBzcGVlY2hSZW5kZXJlci0+
Ym9yZGVyQm90dG9tKCkgKworICAgICAgICAgICAgICAgICAgc3BlZWNoUmVuZGVyZXItPnBhZGRp
bmdUb3AoKSArIHNwZWVjaFJlbmRlcmVyLT5wYWRkaW5nQm90dG9tKCkgKworICAgICAgICAgICAg
ICAgICAgc3BlZWNoUmVuZGVyZXItPm1hcmdpblRvcCgpICsgc3BlZWNoUmVuZGVyZXItPm1hcmdp
bkJvdHRvbSgpKSk7CisgICAgICAgIGxpbmVIZWlnaHQgPSBtYXgobGluZUhlaWdodCwgc3BlZWNo
UmVuZGVyZXItPmhlaWdodCgpKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHNldEhlaWdodChoZWln
aHQoKSArIGxpbmVIZWlnaHQpOwogfQogCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6Y3JlYXRlU3VidHJlZUlmTmVlZGVkKCkKIHsKLSAgICBpZiAoIWlucHV0RWxlbWVudCgpLT5p
c1NlYXJjaEZpZWxkKCkpIHsKKyAgICBib29sIGNyZWF0ZVN1YnRyZWUgPSBpbnB1dEVsZW1lbnQo
KS0+aXNTZWFyY2hGaWVsZCgpOworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgaWYgKGlu
cHV0RWxlbWVudCgpLT5pc1NwZWVjaEVuYWJsZWQoKSkKKyAgICAgICAgY3JlYXRlU3VidHJlZSA9
IHRydWU7CisjZW5kaWYKKyAgICBpZiAoIWNyZWF0ZVN1YnRyZWUpIHsKICAgICAgICAgUmVuZGVy
VGV4dENvbnRyb2w6OmNyZWF0ZVN1YnRyZWVJZk5lZWRlZChtX2lubmVyQmxvY2suZ2V0KCkpOwog
ICAgICAgICBpZiAoaW5wdXRFbGVtZW50KCktPmhhc1NwaW5CdXR0b24oKSAmJiAhbV9vdXRlclNw
aW5CdXR0b24pIHsKICAgICAgICAgICAgIG1fb3V0ZXJTcGluQnV0dG9uID0gU3BpbkJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShub2RlKCkpOwpAQCAtNTM0LDIwICs2MDgsMzEgQEAgdm9pZCBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZVN1YnRyZWVJZk5lZWRlZCgpCiAgICAgICAgIG1f
aW5uZXJCbG9jay0+YXR0YWNoSW5uZXJFbGVtZW50KG5vZGUoKSwgY3JlYXRlSW5uZXJCbG9ja1N0
eWxlKHN0eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsKICAgICB9CiAKLSAgICBpZiAoIW1fcmVzdWx0
c0J1dHRvbikgewotICAgICAgICAvLyBDcmVhdGUgdGhlIHNlYXJjaCByZXN1bHRzIGJ1dHRvbiBl
bGVtZW50Ci0gICAgICAgIG1fcmVzdWx0c0J1dHRvbiA9IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
bkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICAgICAgbV9yZXN1bHRzQnV0dG9uLT5h
dHRhY2hJbm5lckVsZW1lbnQobV9pbm5lckJsb2NrLmdldCgpLCBjcmVhdGVSZXN1bHRzQnV0dG9u
U3R5bGUobV9pbm5lckJsb2NrLT5yZW5kZXJlcigpLT5zdHlsZSgpKSwgcmVuZGVyQXJlbmEoKSk7
CisgICAgaWYgKGlucHV0RWxlbWVudCgpLT5pc1NlYXJjaEZpZWxkKCkpIHsKKyAgICAgICAgaWYg
KCFtX3Jlc3VsdHNCdXR0b24pIHsKKyAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgc2VhcmNoIHJl
c3VsdHMgYnV0dG9uIGVsZW1lbnQuCisgICAgICAgICAgICBtX3Jlc3VsdHNCdXR0b24gPSBTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgICAg
ICAgICBtX3Jlc3VsdHNCdXR0b24tPmF0dGFjaElubmVyRWxlbWVudChtX2lubmVyQmxvY2suZ2V0
KCksIGNyZWF0ZVJlc3VsdHNCdXR0b25TdHlsZShtX2lubmVyQmxvY2stPnJlbmRlcmVyKCktPnN0
eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIC8vIENyZWF0
ZSBpbm5lclRleHQgZWxlbWVudCBiZWZvcmUgYWRkaW5nIHRoZSBjYW5jZWwgYnV0dG9uCisgICAg
Ly8gQ3JlYXRlIGlubmVyVGV4dCBlbGVtZW50IGJlZm9yZSBhZGRpbmcgdGhlIG90aGVyIGJ1dHRv
bnMuCiAgICAgUmVuZGVyVGV4dENvbnRyb2w6OmNyZWF0ZVN1YnRyZWVJZk5lZWRlZChtX2lubmVy
QmxvY2suZ2V0KCkpOwogCi0gICAgaWYgKCFtX2NhbmNlbEJ1dHRvbikgewotICAgICAgICAvLyBD
cmVhdGUgdGhlIGNhbmNlbCBidXR0b24gZWxlbWVudAotICAgICAgICBtX2NhbmNlbEJ1dHRvbiA9
IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAg
ICAgICBtX2NhbmNlbEJ1dHRvbi0+YXR0YWNoSW5uZXJFbGVtZW50KG1faW5uZXJCbG9jay5nZXQo
KSwgY3JlYXRlQ2FuY2VsQnV0dG9uU3R5bGUobV9pbm5lckJsb2NrLT5yZW5kZXJlcigpLT5zdHls
ZSgpKSwgcmVuZGVyQXJlbmEoKSk7CisgICAgaWYgKGlucHV0RWxlbWVudCgpLT5pc1NlYXJjaEZp
ZWxkKCkpIHsKKyAgICAgICAgaWYgKCFtX2NhbmNlbEJ1dHRvbikgeworICAgICAgICAgICAgLy8g
Q3JlYXRlIHRoZSBjYW5jZWwgYnV0dG9uIGVsZW1lbnQuCisgICAgICAgICAgICBtX2NhbmNlbEJ1
dHRvbiA9IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkp
OworICAgICAgICAgICAgbV9jYW5jZWxCdXR0b24tPmF0dGFjaElubmVyRWxlbWVudChtX2lubmVy
QmxvY2suZ2V0KCksIGNyZWF0ZUNhbmNlbEJ1dHRvblN0eWxlKG1faW5uZXJCbG9jay0+cmVuZGVy
ZXIoKS0+c3R5bGUoKSksIHJlbmRlckFyZW5hKCkpOworICAgICAgICB9CiAgICAgfQorI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCisgICAgaWYgKGlucHV0RWxlbWVudCgpLT5pc1NwZWVjaEVuYWJs
ZWQoKSAmJiAhbV9zcGVlY2hCdXR0b24pIHsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBzcGVlY2gg
YnV0dG9uIGVsZW1lbnQuCisgICAgICAgIG1fc3BlZWNoQnV0dG9uID0gSW5wdXRGaWVsZFNwZWVj
aEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKKyAgICAgICAgbV9zcGVlY2hCdXR0
b24tPmF0dGFjaElubmVyRWxlbWVudChtX2lubmVyQmxvY2suZ2V0KCksIGNyZWF0ZVNwZWVjaEJ1
dHRvblN0eWxlKG1faW5uZXJCbG9jay0+cmVuZGVyZXIoKS0+c3R5bGUoKSksIHJlbmRlckFyZW5h
KCkpOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQpAQCAtNjg1LDYgKzc3MCwxOSBAQCBQYXNzUmVmUHRyPFJl
bmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZU91dGVyU3BpbkJ1
dHRvblN0eWxlKAogICAgIHJldHVybiBidXR0b25TdHlsZS5yZWxlYXNlKCk7CiB9CiAKKyNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVTcGVlY2hCdXR0b25TdHlsZShjb25zdCBSZW5kZXJTdHls
ZSogc3RhcnRTdHlsZSkgY29uc3QKK3sKKyAgICBBU1NFUlQobm9kZSgpLT5pc0hUTUxFbGVtZW50
KCkpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gYnV0dG9uU3R5bGUgPSBnZXRDYWNoZWRQc2V1
ZG9TdHlsZShJTlBVVF9TUEVFQ0hfQlVUVE9OKTsKKyAgICBpZiAoIWJ1dHRvblN0eWxlKQorICAg
ICAgICBidXR0b25TdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBpZiAoc3RhcnRT
dHlsZSkKKyAgICAgICAgYnV0dG9uU3R5bGUtPmluaGVyaXRGcm9tKHN0YXJ0U3R5bGUpOworICAg
IHJldHVybiBidXR0b25TdHlsZS5yZWxlYXNlKCk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZUNhbmNlbEJ1dHRvblZpc2liaWxpdHkoKSBjb25z
dAogewogICAgIGlmICghbV9jYW5jZWxCdXR0b24tPnJlbmRlcmVyKCkpCkBAIC04MjMsNiArOTIx
LDEwIEBAIGludCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNsaWVudFBhZGRpbmdSaWdo
dCgpIGNvbnN0CiAKICAgICBpZiAoUmVuZGVyQm94KiBjYW5jZWxSZW5kZXJlciA9IG1fY2FuY2Vs
QnV0dG9uID8gbV9jYW5jZWxCdXR0b24tPnJlbmRlckJveCgpIDogMCkKICAgICAgICAgcGFkZGlu
ZyArPSBjYW5jZWxSZW5kZXJlci0+d2lkdGgoKTsKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQor
ICAgIGlmIChSZW5kZXJCb3gqIHNwZWVjaFJlbmRlcmVyID0gbV9zcGVlY2hCdXR0b24gPyBtX3Nw
ZWVjaEJ1dHRvbi0+cmVuZGVyQm94KCkgOiAwKQorICAgICAgICBwYWRkaW5nICs9IHNwZWVjaFJl
bmRlcmVyLT53aWR0aCgpOworI2VuZGlmCiAKICAgICByZXR1cm4gcGFkZGluZzsKIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggZGZm
OWU1ZjhjNjZhMTRkNDA3NzVmNzAxNDI5MDYwNmQ1MTdlODQ5Yy4uYWI5ZjcxMWI1YjA5OTQzNDNk
YTYxZmE2YzljODQxMmFmZDFmZDZkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSW5wdXRFbGVtZW50OworY2xhc3MgSW5wdXRGaWVsZFNwZWVjaEJ1dHRv
bkVsZW1lbnQ7CiBjbGFzcyBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ7CiBjbGFzcyBT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OwogY2xhc3MgU2VhcmNoUG9wdXBNZW51OwpA
QCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgaW50IHByZWZlcnJlZERl
Y29yYXRpb25XaWR0aFJpZ2h0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGhhc0NvbnRyb2xD
bGlwKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxCdXR0b247IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aGFzQ29udHJvbENsaXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFJlY3QgY29udHJvbENsaXBS
ZWN0KGludCB0eCwgaW50IHR5KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTk4LDYgKzk5LDkgQEAgcHJpdmF0ZToKICAg
ICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVSZXN1bHRzQnV0dG9uU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IGNyZWF0ZUNhbmNlbEJ1dHRvblN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxl
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVPdXRlclNwaW5CdXR0
b25TdHlsZSgpIGNvbnN0OworI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gY3JlYXRlU3BlZWNoQnV0dG9uU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUq
IHN0YXJ0U3R5bGUpIGNvbnN0OworI2VuZGlmCiAKICAgICB2b2lkIHVwZGF0ZUNhbmNlbEJ1dHRv
blZpc2liaWxpdHkoKSBjb25zdDsKICAgICBFVmlzaWJpbGl0eSB2aXNpYmlsaXR5Rm9yQ2FuY2Vs
QnV0dG9uKCkgY29uc3Q7CkBAIC0xNDIsNiArMTQ2LDkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudD4gbV9yZXN1bHRzQnV0dG9uOwogICAgIFJl
ZlB0cjxTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ+IG1fY2FuY2VsQnV0dG9uOwogICAg
IFJlZlB0cjxUZXh0Q29udHJvbElubmVyRWxlbWVudD4gbV9vdXRlclNwaW5CdXR0b247CisjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKKyAgICBSZWZQdHI8SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVs
ZW1lbnQ+IG1fc3BlZWNoQnV0dG9uOworI2VuZGlmCiAKICAgICBUaW1lcjxSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU+IG1fc2VhcmNoRXZlbnRUaW1lcjsKICAgICBSZWZQdHI8U2VhcmNoUG9w
dXBNZW51PiBtX3NlYXJjaFBvcHVwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IDRm
MzI4OWQ2ZDg3OWNjZWY1MzEyZmY3MGZmMTkzZjZjNmViN2I5OGQuLmZiZWE1MTk3M2NmZjZhMmUz
YTg0OWVjYjM4MDMwMTFkZWNmNTNjNDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAg
LTIyOCw2ICsyMjgsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZTo6YWRqdXN0U3R5bGUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWwKICAgICAgICAgY2FzZSBS
YXRpbmdMZXZlbEluZGljYXRvclBhcnQ6CiAgICAgICAgICAgICByZXR1cm4gYWRqdXN0TWV0ZXJT
dHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOwogI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1NQRUVD
SCkKKyAgICAgICAgY2FzZSBJbnB1dFNwZWVjaEJ1dHRvblBhcnQ6CisgICAgICAgICAgICAvLyBG
SVhNRTogQWRqdXN0IHRoZSBzcGVlY2ggYnV0dG9uJ3Mgc3R5bGUgYW5kIHNpemVzLgorI2VuZGlm
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0zNTgsNiAr
MzYyLDEwIEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KFJlbmRlck9iamVjdCogbywgY29uc3Qg
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mCiAgICAgICAgICAgICByZXR1cm4gcGFp
bnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKG8sIHBhaW50SW5mbywgcik7CiAgICAgICAg
IGNhc2UgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydDoKICAgICAgICAgICAgIHJldHVybiBw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihvLCBwYWludEluZm8sIHIpOworI2lmIEVOQUJM
RShJTlBVVF9TUEVFQ0gpCisgICAgICAgIGNhc2UgSW5wdXRTcGVlY2hCdXR0b25QYXJ0OgorICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCBwYWludGluZyBjb2RlIHRvIGRyYXcgdGhlIHNwZWVjaCBi
dXR0b24uCisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTQwNiw2ICs0MTQsOSBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHko
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbwogICAgICAgICBj
YXNlIFNlYXJjaEZpZWxkRGVjb3JhdGlvblBhcnQ6CiAgICAgICAgIGNhc2UgU2VhcmNoRmllbGRS
ZXN1bHRzRGVjb3JhdGlvblBhcnQ6CiAgICAgICAgIGNhc2UgU2VhcmNoRmllbGRSZXN1bHRzQnV0
dG9uUGFydDoKKyNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQorICAgICAgICBjYXNlIElucHV0U3Bl
ZWNoQnV0dG9uUGFydDoKKyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtNDUyLDYgKzQ2Myw5IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50RGVj
b3JhdGlvbnMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mCiAg
ICAgICAgIGNhc2UgU2VhcmNoRmllbGREZWNvcmF0aW9uUGFydDoKICAgICAgICAgY2FzZSBTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydDoKICAgICAgICAgY2FzZSBTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b25QYXJ0OgorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgICAgIGNhc2Ug
SW5wdXRTcGVlY2hCdXR0b25QYXJ0OgorI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcAppbmRleCAyYzcyMzI4MTZlOThmNjcyNjY2ZmIxMDI0NWE0ZWM1OGRiNzQ0
ZDFjLi5mMGQxNDc2MzJlMzczYTFiOTUwMjZkMjQxMjIzMWMyZDBlNDIyZDQxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMDcs
NCArMzA4LDI2IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihldmVudCk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2lmIEVO
QUJMRShJTlBVVF9TUEVFQ0gpCisKK2lubGluZSBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVu
dDo6SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorICAg
IDogVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoZG9jdW1lbnQpCit7Cit9CisKK1Bhc3NSZWZQdHI8
SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ+IElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVt
ZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQpKTsKK30KKwordm9pZCBJ
bnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCit7CisgICAgLy8gRklYTUU6IFN0YXJ0IHNwZWVjaCByZWNvZ25pdGlvbiBoZXJlLgor
ICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggZWQxODg3ZTdjOWIzNDBhNGUxOGNkMTgyOWM5
ZWQ4MDZhYWQ0NTM2NC4uMTg4NGEzNDc4ZTRmYjE1NjRjYzdlNDBlZWYyZjAyNGZiMmUyN2ZhMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMDQsNiArMTA1LDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX29uVXBCdXR0b247CiB9Owog
CisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKworY2xhc3MgSW5wdXRGaWVsZFNwZWVjaEJ1dHRv
bkVsZW1lbnQgOiBwdWJsaWMgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
Kik7CisKK3ByaXZhdGU6CisgICAgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQoRG9jdW1l
bnQqKTsKK307CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQorCiB9IC8vIG5hbWVz
cGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlQ29uc3RhbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oCmluZGV4IDA4NThlYzIyNDg3YzcwOTNjMmU2MmI0NDJlYzY0NjYyYjBiMzg3YjUu
LmU5NWUyNDg5MWYwMjBlMzY0OGUyNzAxNTZlZWRhMzlkNTBmMmFkMTggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzQsNyArNzQsNyBA
QCBlbnVtIFBzZXVkb0lkIHsKICAgICBNRURJQV9DT05UUk9MU19TRUVLX0JBQ0tfQlVUVE9OLCBN
RURJQV9DT05UUk9MU19TRUVLX0ZPUldBUkRfQlVUVE9OLCBNRURJQV9DT05UUk9MU19GVUxMU0NS
RUVOX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfUkVXSU5EX0JVVFRPTiwgCiAgICAgTUVESUFfQ09O
VFJPTFNfUkVUVVJOX1RPX1JFQUxUSU1FX0JVVFRPTiwgTUVESUFfQ09OVFJPTFNfVE9HR0xFX0NM
T1NFRF9DQVBUSU9OU19CVVRUT04sCiAgICAgTUVESUFfQ09OVFJPTFNfU1RBVFVTX0RJU1BMQVks
IFNDUk9MTEJBUl9USFVNQiwgU0NST0xMQkFSX0JVVFRPTiwgU0NST0xMQkFSX1RSQUNLLCBTQ1JP
TExCQVJfVFJBQ0tfUElFQ0UsIFNDUk9MTEJBUl9DT1JORVIsIFJFU0laRVIsCi0gICAgSU5QVVRf
TElTVF9CVVRUT04sIElOTkVSX1NQSU5fQlVUVE9OLCBPVVRFUl9TUElOX0JVVFRPTiwgVklTSVRF
RF9MSU5LLCBQUk9HUkVTU19CQVJfVkFMVUUsCisgICAgSU5QVVRfTElTVF9CVVRUT04sIElOUFVU
X1NQRUVDSF9CVVRUT04sIElOTkVSX1NQSU5fQlVUVE9OLCBPVVRFUl9TUElOX0JVVFRPTiwgVklT
SVRFRF9MSU5LLCBQUk9HUkVTU19CQVJfVkFMVUUsCiAgICAgTUVURVJfSE9SSVpPTlRBTF9CQVIs
IE1FVEVSX0hPUklaT05UQUxfT1BUSU1VTSwgTUVURVJfSE9SSVpPTlRBTF9TVUJPUFRJTUFMLCBN
RVRFUl9IT1JJWk9OVEFMX0VWRU5fTEVTU19HT09ELAogICAgIE1FVEVSX1ZFUlRJQ0FMX0JBUiwg
TUVURVJfVkVSVElDQUxfT1BUSU1VTSwgTUVURVJfVkVSVElDQUxfU1VCT1BUSU1BTCwgTUVURVJf
VkVSVElDQUxfRVZFTl9MRVNTX0dPT0QsIAogICAgIEFGVEVSX0xBU1RfSU5URVJOQUxfUFNFVURP
SUQsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>