<?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>129084</bug_id>
          
          <creation_ts>2014-02-19 23:06:32 -0800</creation_ts>
          <short_desc>m_ancestorDisabledState should never be unknown</short_desc>
          <delta_ts>2014-02-20 22:34:53 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>129035</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>982697</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-19 23:06:32 -0800</bug_when>
    <thetext>In order to resolve the bug 129035, we need to be notified whenever form control element&apos;s disabled-ness changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982708</commentid>
    <comment_count>1</comment_count>
      <attachid>224723</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-19 23:51:56 -0800</bug_when>
    <thetext>Created attachment 224723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982709</commentid>
    <comment_count>2</comment_count>
      <attachid>224724</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-19 23:53:32 -0800</bug_when>
    <thetext>Created attachment 224724
Reverted erroneous xcworkspace chagnes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983007</commentid>
    <comment_count>3</comment_count>
      <attachid>224724</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-20 15:28:53 -0800</bug_when>
    <thetext>Comment on attachment 224724
Reverted erroneous xcworkspace chagnes

View in context: https://bugs.webkit.org/attachment.cgi?id=224724&amp;action=review

Ok with the idea but I have some questions when you have time.

&gt; Source/WebCore/html/HTMLFieldSetElement.cpp:77
&gt; +        document().removeDisabledFieldsetElement();

Don&apos;t you also need this on document destruction?

&gt; Source/WebCore/html/HTMLFieldSetElement.cpp:89
&gt; +        updateFromControlElementsAncestorDisabledStateUnder(control, thisFieldsetIsDisabled);

I am not following this. This loop will go over all the HTMLElements under the FieldSet. updateFromControlElementsAncestorDisabledStateUnder will again traverse the tree looking for any HTMLFormControlElement.
Aren&apos;t we traversing twice?

&gt; Source/WebCore/html/HTMLFieldSetElement.cpp:104
&gt; +    while ((legend = Traversal&lt;HTMLLegendElement&gt;::nextSibling(legend)))

I am not following here, why do check only the siblings instead of the whole tree after legend?

&gt; Source/WebCore/html/HTMLFormControlElement.cpp:118
&gt; +void HTMLFormControlElement::setAncestorDisabled(bool isDisabled)
&gt;  {
&gt; -    m_ancestorDisabledState = AncestorDisabledStateUnknown;
&gt; -    disabledAttributeChanged();
&gt; +    ASSERT(computeIsDisabledByFieldsetAncestor() == isDisabled);

Shouldn&apos;t this be updateIsAncestorDisabled() called without arguments disabledAttributeChanged().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983030</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-20 16:26:22 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 224724 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224724&amp;action=review
&gt; 
&gt; Ok with the idea but I have some questions when you have time.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLFieldSetElement.cpp:77
&gt; &gt; +        document().removeDisabledFieldsetElement();
&gt; 
&gt; Don&apos;t you also need this on document destruction?

We don&apos;t because all fieldset elements would have been removed at that point.

&gt; &gt; Source/WebCore/html/HTMLFieldSetElement.cpp:89
&gt; &gt; +        updateFromControlElementsAncestorDisabledStateUnder(control, thisFieldsetIsDisabled);
&gt; 
&gt; I am not following this. This loop will go over all the HTMLElements under the FieldSet. updateFromControlElementsAncestorDisabledStateUnder will again traverse the tree looking for any HTMLFormControlElement.
&gt; Aren&apos;t we traversing twice?

Here, I&apos;m traversing over all child elements, and then for each child node and its descendants we update its internals states. We can&apos;t call updateFromControlElementsAncestorDisabledStateUnder on this here because we need to call it with isDisabled set to false when the child is the first legend element we saw.

&gt; &gt; Source/WebCore/html/HTMLFieldSetElement.cpp:104
&gt; &gt; +    while ((legend = Traversal&lt;HTMLLegendElement&gt;::nextSibling(legend)))
&gt; 
&gt; I am not following here, why do check only the siblings instead of the whole tree after legend?

See my change log description:
Update disabled-ness of form controls under child legend elements because controls aren&apos;t disabled in the first legend element, and adding or removing child elements may have changed the first legend element.

Removing or adding child nodes DO NOT change disabled-ness of elements outside of the new and the old first legend element.

&gt; &gt; Source/WebCore/html/HTMLFormControlElement.cpp:118
&gt; &gt; +void HTMLFormControlElement::setAncestorDisabled(bool isDisabled)
&gt; &gt;  {
&gt; &gt; -    m_ancestorDisabledState = AncestorDisabledStateUnknown;
&gt; &gt; -    disabledAttributeChanged();
&gt; &gt; +    ASSERT(computeIsDisabledByFieldsetAncestor() == isDisabled);
&gt; 
&gt; Shouldn&apos;t this be updateIsAncestorDisabled() called without arguments disabledAttributeChanged().

I don&apos;t understand what you&apos;re saying here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983067</commentid>
    <comment_count>5</comment_count>
      <attachid>224818</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-20 18:49:10 -0800</bug_when>
    <thetext>Created attachment 224818
Updated per review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983117</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-20 22:34:53 -0800</bug_when>
    <thetext>Committed r164475: &lt;http://trac.webkit.org/changeset/164475&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224723</attachid>
            <date>2014-02-19 23:51:56 -0800</date>
            <delta_ts>2014-02-19 23:53:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129084-20140219235223.patch</filename>
            <type>text/plain</type>
            <size>26259</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDQx
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAy
LTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIG1fYW5jZXN0
b3JEaXNhYmxlZFN0YXRlIHNob3VsZCBuZXZlciBiZSB1bmtub3duCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkwODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC54Y3dvcmtzcGFjZS94Y3No
YXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWU6CisKIDIwMTQtMDItMTggIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtD
TWFrZV0gRml4IGphdmFzY3JpcHRjb3JlIHRlc3QgZmFpbGluZ3MgYnkgdGhlIGpzQ1N0YWNrIGJy
YW5jaCBtZXJnZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NDE2KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTQtMDIt
MTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgbV9hbmNlc3Rv
ckRpc2FibGVkU3RhdGUgc2hvdWxkIG5ldmVyIGJlIHVua25vd24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTA4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIHJlc29sdmUgdGhlIGJ1
ZyAxMjkwMzUsIGEgdGV4dCBmb3JtIGNvbnRyb2wgZWxlbWVudHMgbmVlZHMgdG8gc3luY2hyb25v
dXNseSBjaGFuZ2UKKyAgICAgICAgaXRzIGlubmVyIHRleHQgZWxlbWVudCdzIGVkaXRhYmlsaXR5
IGJ5IHNldHRpbmcgb3IgdW5zZXR0aW5nIGNvbnRlbnRlZGl0YWJsZSBjb250ZW50IGF0dHJpYnV0
ZS4KKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIHdlIGNvdWxkIG5vdCBkbyB0aGlzIGJlY2F1
c2UgZWRpdGFiaWxpdHkgb2YgYSB0ZXh0IGZvcm0gY29udHJvbCBkZXBlbmRlbnQgb24KKyAgICAg
ICAgaXRzIGRpc2FibGVkLW5lc3Mgd2hpY2ggd2FzIG9ubHkgY29tcHV0ZWQgbGF6aWx5IHZpYSB1
cGRhdGVBbmNlc3RvckRpc2FibGVkU3RhdGUoKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2Vz
IEhUTUxGaWVsZFNldEVsZW1lbnQgYW5kIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQgdXBkYXRlIHRo
aXMgc3RhdGUgc3luY2hyb25vdXNseS4KKyAgICAgICAgVG8gYXZvaWQgTyhrKSBET00gdHJhdmVy
c2FsLCB3aGVyZSBrIGlzIHRoZSBkZXB0aCBvZiB0aGUgdHJlZSwgaW4gaW5zZXJ0ZWRJbnRvIGFu
ZCByZW1vdmVkRnJvbSBvZgorICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IG9uIG1vc3Qg
cGFnZXMsIGEgbmV3IGRvY3VtZW50LWxldmVsIGZsYWcsIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1l
bnRzQ291bnQsCisgICAgICAgIGhhcyBiZWVuIGFkZGVkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhl
IGRvY3VtZW50IGNvbnRhaW5zIGFueSBkaXNhYmxlZCBmaWVsZHNldCBvciBub3QuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGlzYWJsZWQtMi5odG1sCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OkRvY3VtZW50KTogSW5pdGlhbGl6ZXMgbmV3bHkgYWRkZWQgbV9kaXNhYmxlZEZpZWxkc2V0RWxl
bWVudHNDb3VudC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpoYXNEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmFkZERpc2FibGVkRmllbGRzZXRFbGVtZW50KTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQp
OiBBZGRlZC4KKworICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp1cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0b3JEaXNhYmxlZFN0
YXRlVW5kZXIpOiBBZGRlZC4gVXBkYXRlcyBzdGFydE5vZGUgYW5kIGl0cworICAgICAgICBkZXNj
ZW5kZW50cycgYW5jZXN0b3IgZGlzYWJsZWQgZmxhZy4gV2UgZG9uJ3QgdXBkYXRlIGNvbnRyb2xz
IHVuZGVyIGFub3RoZXIgZGlzYWJsZWQgZmllbGRzZXQKKyAgICAgICAgc2luY2UgZGlzYWJsZWQt
bmVzcyBvZiB0aG9zZSBjb250cm9scyBhcmVuJ3QgYWZmZWN0ZWQgYnkgc3RhcnROb2RlLgorCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNo
YW5nZWQpOiBDYWxsIGFkZERpc2FibGVkRmllbGRzZXRFbGVtZW50IGFuZAorICAgICAgICByZW1v
dmVEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCB0byB1cGRhdGUgdGhlIGZsYWcgb24gdGhlIG93bmVy
IGRvY3VtZW50LiBBbHNvIGVuYWJsZSBmb3JtIGNvbnRyb2wKKyAgICAgICAgZWxlbWVudHMgdW5k
ZXIgdGhlIGZpcnN0IGxlZ2VuZCBlbGVtZW50IGFuZCBkaXNhYmxlIG9yIGVuYWJsZSBvdGhlciBk
ZXNjZW5kZW50IGZvcm0gY29udHJvbHMgaW4KKyAgICAgICAgYWNjb3JkYW5jZSB3aXRoIHRoZSBw
cmVzZW5jZSBvZiBkaXNhYmxlZCBjb250ZW50IGF0dHJpYnV0ZS4KKworICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZpZWxkU2V0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKTogVXBkYXRlIGRpc2FibGVk
LW5lc3Mgb2YgZm9ybSBjb250cm9scyB1bmRlcgorICAgICAgICBjaGlsZCBsZWdlbmQgZWxlbWVu
dHMgYmVjYXVzZSBjb250cm9scyBhcmVuJ3QgZGlzYWJsZWQgaW4gdGhlIGZpcnN0IGxlZ2VuZCBl
bGVtZW50LCBhbmQgYWRkaW5nIG9yCisgICAgICAgIHJlbW92aW5nIGNoaWxkIGVsZW1lbnRzIG1h
eSBoYXZlIGNoYW5nZWQgdGhlIGZpcnN0IGxlZ2VuZCBlbGVtZW50LgorCisgICAgICAgIChXZWJD
b3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudCk6IFVwZGF0ZSB0
aGUgZmxhZyBvbiB0aGUgb3duZXIgZG9jdW1lbnQuCisgICAgICAgICogaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50Lmg6CisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6SFRNTEZvcm1Db250
cm9sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpj
b21wdXRlSXNEaXNhYmxlZEJ5RmllbGRzZXRBbmNlc3Rvcik6IFJldHVybnMgYm9vbGVhbiBpbnN0
ZWFkIG9mCisgICAgICAgIHVwZGF0aW5nIG1fYW5jZXN0b3JEaXNhYmxlZFN0YXRlIGludGVybmFs
bHkuIEFsc28gcmVuYW1lZCBmcm9tIHVwZGF0ZUFuY2VzdG9yRGlzYWJsZWRTdGF0ZS4KKworICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QW5jZXN0b3JEaXNhYmxl
ZCk6IFJlcGxhY2VkIGFuY2VzdG9yRGlzYWJsZWRTdGF0ZVdhc0NoYW5nZWQuCisgICAgICAgIFRo
aXMgZnVuY3Rpb24gdXBkYXRlcyBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0IGFuZCBjYWxs
cyBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQgYXMgbmVlZGVkLgorCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG8pOiBVcGRhdGUgbV9kaXNhYmxl
ZEJ5QW5jZXN0b3JGaWVsZHNldCBpZiB0aGVyZSBpcworICAgICAgICBhIHBvc3NpYmlsaXR5IChp
LmUuIHRoZSBkb2N1bWVudCBjb250YWlucyBhbnkgZGlzYWJsZWQgZmllbGRzZXQgZWxlbWVudCkg
dGhhdCB0aGlzIGZvcm0gY29udHJvbAorICAgICAgICBpcyBpbnNlcnRlZCB1bmRlciBhIGRpc2Fi
bGVkIGZpZWxkc2V0IGVsZW1lbnQuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OnJlbW92ZWRGcm9tKTogSWYgdGhpcyBmb3JtIGNvbnRyb2wgZWxlbWVudCBpcyBu
b3QgZGlzYWJsZWQgYnkKKyAgICAgICAgYSBmaWVsZHNldCBhbmNlc3RvciwgdGhlbiB0aGVyZSBp
cyBub3RoaW5nIHRvIGRvLiBJZiBpdCBpcywgdGhlbiBjaGVjayB0byBzZWUgaWYgdGhlIGVsZW1l
bnQgaXMKKyAgICAgICAgc3RpbGwgZGlzYWJsZWQgbm93IHRoYXQgd2UndmUgbG9zdCBzb21lIGFu
Y2VzdG9ycy4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6aXNE
aXNhYmxlZEZvcm1Db250cm9sKTogTm8gbG9uZ2VyIHVwZGF0ZXMgbV9hbmNlc3RvckRpc2FibGVk
U3RhdGUKKyAgICAgICAgbGF6aWx5IHNpbmNlIG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQg
aXMgbmV2ZXIgYW1iaWd1b3VzIG5vdy4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oOgorCiAyMDE0LTAyLTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5nOiBNYWtlIEdyYXBoaWNzTGF5ZXIncyBvZmZz
ZXRGcm9tUmVuZGVyZXIgc3VicGl4ZWwgcG9zaXRpb24gYmFzZWQuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDE2NDQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMiw2ICs1MDIsNyBAQCBEb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVCiAgICAgLCBtX2lucHV0Q3Vyc29yKEVtcHR5SW5w
dXRDdXJzb3I6OmNyZWF0ZSgpKQogI2VuZGlmCiAgICAgLCBtX2RpZEFzc29jaWF0ZUZvcm1Db250
cm9sc1RpbWVyKHRoaXMsICZEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJG
aXJlZCkKKyAgICAsIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQoMCkKICAgICAsIG1f
aGFzSW5qZWN0ZWRQbHVnSW5zU2NyaXB0KGZhbHNlKQogICAgICwgbV9yZW5kZXJUcmVlQmVpbmdE
ZXN0cm95ZWQoZmFsc2UpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTY0
NDAxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMzgsNiArMTIzOCw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBkaWRBc3NvY2lh
dGVGb3JtQ29udHJvbChFbGVtZW50Kik7CisgICAgYm9vbCBoYXNEaXNhYmxlZEZpZWxkc2V0RWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQ7IH0K
KyAgICB2b2lkIGFkZERpc2FibGVkRmllbGRzZXRFbGVtZW50KCkgeyBtX2Rpc2FibGVkRmllbGRz
ZXRFbGVtZW50c0NvdW50Kys7IH0KKyAgICB2b2lkIHJlbW92ZURpc2FibGVkRmllbGRzZXRFbGVt
ZW50KCkgeyBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50LS07IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDAp
IG92ZXJyaWRlOwogCkBAIC0xNjc1LDYgKzE2NzgsNyBAQCBwcml2YXRlOgogCiAgICAgVGltZXI8
RG9jdW1lbnQ+IG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXI7CiAgICAgSGFzaFNldDxS
ZWZQdHI8RWxlbWVudD4+IG1fYXNzb2NpYXRlZEZvcm1Db250cm9sczsKKyAgICB1bnNpZ25lZCBt
X2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50OwogCiAgICAgYm9vbCBtX2hhc0luamVjdGVk
UGx1Z0luc1NjcmlwdDsKICAgICBib29sIG1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNjQ0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSwyNSArNDksNzAgQEAgUGFzc1JlZlB0cjxIVE1MRmllbGRT
ZXRFbGVtZW50PiBIVE1MRmllbAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEZpZWxkU2V0
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCi12b2lkIEhUTUxGaWVsZFNl
dEVsZW1lbnQ6OmludmFsaWRhdGVEaXNhYmxlZFN0YXRlVW5kZXIoRWxlbWVudCogYmFzZSkKK3N0
YXRpYyB2b2lkIHVwZGF0ZUZyb21Db250cm9sRWxlbWVudHNBbmNlc3RvckRpc2FibGVkU3RhdGVV
bmRlcihIVE1MRWxlbWVudCYgc3RhcnROb2RlLCBib29sIGlzRGlzYWJsZWQpCiB7Ci0gICAgZm9y
IChhdXRvJiBjb250cm9sIDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEZvcm1Db250cm9sRWxlbWVu
dD4oKmJhc2UpKQotICAgICAgICBjb250cm9sLmFuY2VzdG9yRGlzYWJsZWRTdGF0ZVdhc0NoYW5n
ZWQoKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9sOworICAgIGlmIChpc0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQoc3RhcnROb2RlKSkKKyAgICAgICAgY29udHJvbCA9ICZ0b0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQoc3RhcnROb2RlKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRy
b2wgPSBUcmF2ZXJzYWw8SFRNTEZvcm1Db250cm9sRWxlbWVudD46OmZpcnN0V2l0aGluKCZzdGFy
dE5vZGUpOworICAgIHdoaWxlIChjb250cm9sKSB7CisgICAgICAgIGNvbnRyb2wtPnNldEFuY2Vz
dG9yRGlzYWJsZWQoaXNEaXNhYmxlZCk7CisgICAgICAgIGlmIChpc0hUTUxGaWVsZFNldEVsZW1l
bnQoY29udHJvbCkgJiYgY29udHJvbC0+aGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cikpCisgICAg
ICAgICAgICBjb250cm9sID0gVHJhdmVyc2FsPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+OjpuZXh0
U2tpcHBpbmdDaGlsZHJlbihjb250cm9sLCAmc3RhcnROb2RlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29udHJvbCA9IFRyYXZlcnNhbDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pjo6bmV4
dChjb250cm9sLCAmc3RhcnROb2RlKTsKKyAgICB9CiB9CiAKIHZvaWQgSFRNTEZpZWxkU2V0RWxl
bWVudDo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKICAgICAvLyBUaGlzIGVsZW1lbnQg
bXVzdCBiZSB1cGRhdGVkIGJlZm9yZSB0aGUgc3R5bGUgb2Ygbm9kZXMgaW4gaXRzIHN1YnRyZWUg
Z2V0cyByZWNhbGN1bGF0ZWQuCiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWRB
dHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgaW52YWxpZGF0ZURpc2FibGVkU3RhdGVVbmRlcih0aGlz
KTsKKworICAgIGJvb2wgdGhpc0ZpZWxkc2V0SXNEaXNhYmxlZCA9IGhhc0F0dHJpYnV0ZShkaXNh
YmxlZEF0dHIpOworICAgIGlmICh0aGlzRmllbGRzZXRJc0Rpc2FibGVkKQorICAgICAgICBkb2N1
bWVudCgpLmFkZERpc2FibGVkRmllbGRzZXRFbGVtZW50KCk7CisgICAgZWxzZQorICAgICAgICBk
b2N1bWVudCgpLnJlbW92ZURpc2FibGVkRmllbGRzZXRFbGVtZW50KCk7CisKKyAgICBpZiAoZGlz
YWJsZWRCeUFuY2VzdG9yRmllbGRzZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBo
YXNTZWVuRmlyc3RMZWdlbmRFbGVtZW50ID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBjb250cm9s
IDogY2hpbGRyZW5PZlR5cGU8SFRNTEVsZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoIWhh
c1NlZW5GaXJzdExlZ2VuZEVsZW1lbnQgJiYgaXNIVE1MTGVnZW5kRWxlbWVudChjb250cm9sKSkg
eworICAgICAgICAgICAgaGFzU2VlbkZpcnN0TGVnZW5kRWxlbWVudCA9IHRydWU7CisgICAgICAg
ICAgICB1cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0b3JEaXNhYmxlZFN0YXRlVW5kZXIo
Y29udHJvbCwgZmFsc2UgLyogaXNEaXNhYmxlZCAqLyk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorICAgICAgICB1cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0b3JEaXNh
YmxlZFN0YXRlVW5kZXIoY29udHJvbCwgdGhpc0ZpZWxkc2V0SXNEaXNhYmxlZCk7CisgICAgfQog
fQogCiB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYgY2hhbmdlKQogewogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjaGFuZ2UpOworICAgIGlmICghaGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cikpCisg
ICAgICAgIHJldHVybjsKKworICAgIEhUTUxMZWdlbmRFbGVtZW50KiBsZWdlbmQgPSBUcmF2ZXJz
YWw8SFRNTExlZ2VuZEVsZW1lbnQ+OjpmaXJzdENoaWxkKHRoaXMpOworICAgIGlmICghbGVnZW5k
KQorICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIGxlZ2VuZCA6IGNoaWxkcmVuT2ZU
eXBlPEhUTUxMZWdlbmRFbGVtZW50PigqdGhpcykpCi0gICAgICAgIGludmFsaWRhdGVEaXNhYmxl
ZFN0YXRlVW5kZXIoJmxlZ2VuZCk7CisgICAgdXBkYXRlRnJvbUNvbnRyb2xFbGVtZW50c0FuY2Vz
dG9yRGlzYWJsZWRTdGF0ZVVuZGVyKCpsZWdlbmQsIGZhbHNlIC8qIGlzRGlzYWJsZWQgKi8pOwor
ICAgIHdoaWxlICgobGVnZW5kID0gVHJhdmVyc2FsPEhUTUxMZWdlbmRFbGVtZW50Pjo6bmV4dFNp
YmxpbmcobGVnZW5kKSkpCisgICAgICAgIHVwZGF0ZUZyb21Db250cm9sRWxlbWVudHNBbmNlc3Rv
ckRpc2FibGVkU3RhdGVVbmRlcigqbGVnZW5kLCB0cnVlKTsKK30KKwordm9pZCBIVE1MRmllbGRT
ZXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCit7
CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQob2xkRG9j
dW1lbnQpOworICAgIGlmIChoYXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKSkgeworICAgICAgICBp
ZiAob2xkRG9jdW1lbnQpCisgICAgICAgICAgICBvbGREb2N1bWVudC0+cmVtb3ZlRGlzYWJsZWRG
aWVsZHNldEVsZW1lbnQoKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hZGREaXNhYmxlZEZpZWxkc2V0
RWxlbWVudCgpOworICAgIH0KIH0KIAogYm9vbCBIVE1MRmllbGRTZXRFbGVtZW50OjpzdXBwb3J0
c0ZvY3VzKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5oCShyZXZpc2lvbiAxNjQ0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVs
ZFNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
SFRNTEZpZWxkU2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1M
Rm9ybUVsZW1lbnQqKTsKQEAgLTUyLDkgKzUxLDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFBhc3NSZWY8UmVu
ZGVyU3R5bGU+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9y
bUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlY2FsY1dp
bGxWYWxpZGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KSBv
dmVycmlkZTsKIAotICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGVEaXNhYmxlZFN0YXRlVW5kZXIo
RWxlbWVudCopOwogICAgIHZvaWQgcmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQoKSBjb25zdDsKIAog
ICAgIG11dGFibGUgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+IG1fYXNzb2NpYXRlZEVs
ZW1lbnRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNjQ0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEUKICAgICAsIG1faXNSZWFkT25s
eShmYWxzZSkKICAgICAsIG1faXNSZXF1aXJlZChmYWxzZSkKICAgICAsIG1fdmFsdWVNYXRjaGVz
UmVuZGVyZXIoZmFsc2UpCi0gICAgLCBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZShBbmNlc3RvckRp
c2FibGVkU3RhdGVVbmtub3duKQorICAgICwgbV9kaXNhYmxlZEJ5QW5jZXN0b3JGaWVsZHNldChm
YWxzZSkKICAgICAsIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlKFVua25vd24pCiAgICAgLCBtX3dp
bGxWYWxpZGF0ZUluaXRpYWxpemVkKGZhbHNlKQogICAgICwgbV93aWxsVmFsaWRhdGUodHJ1ZSkK
QEAgLTk5LDI1ICs5OSwyNyBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcm1Ob1Zh
bGlkCiAgICAgcmV0dXJuIGZhc3RIYXNBdHRyaWJ1dGUoZm9ybW5vdmFsaWRhdGVBdHRyKTsKIH0K
IAotdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVBbmNlc3RvckRpc2FibGVkU3Rh
dGUoKSBjb25zdAorYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpjb21wdXRlSXNEaXNhYmxl
ZEJ5RmllbGRzZXRBbmNlc3RvcigpIGNvbnN0CiB7CiAgICAgRWxlbWVudCogcHJldmlvdXNBbmNl
c3RvciA9IG51bGxwdHI7CiAgICAgZm9yIChFbGVtZW50KiBhbmNlc3RvciA9IHBhcmVudEVsZW1l
bnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudEVsZW1lbnQoKSkgewog
ICAgICAgICBpZiAoaXNIVE1MRmllbGRTZXRFbGVtZW50KGFuY2VzdG9yKSAmJiBhbmNlc3Rvci0+
aGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cikpIHsKICAgICAgICAgICAgIEhUTUxGaWVsZFNldEVs
ZW1lbnQmIGZpZWxkU2V0QW5jZXN0b3IgPSB0b0hUTUxGaWVsZFNldEVsZW1lbnQoKmFuY2VzdG9y
KTsKICAgICAgICAgICAgIGJvb2wgaXNJbkZpcnN0TGVnZW5kID0gcHJldmlvdXNBbmNlc3RvciAm
JiBpc0hUTUxMZWdlbmRFbGVtZW50KHByZXZpb3VzQW5jZXN0b3IpICYmIHByZXZpb3VzQW5jZXN0
b3IgPT0gZmllbGRTZXRBbmNlc3Rvci5sZWdlbmQoKTsKLSAgICAgICAgICAgIG1fYW5jZXN0b3JE
aXNhYmxlZFN0YXRlID0gaXNJbkZpcnN0TGVnZW5kID8gQW5jZXN0b3JEaXNhYmxlZFN0YXRlRW5h
YmxlZCA6IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZURpc2FibGVkOwotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgcmV0dXJuICFpc0luRmlyc3RMZWdlbmQ7CiAgICAgICAgIH0KICAgICAg
ICAgcHJldmlvdXNBbmNlc3RvciA9IGFuY2VzdG9yOwogICAgIH0KLSAgICBtX2FuY2VzdG9yRGlz
YWJsZWRTdGF0ZSA9IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZUVuYWJsZWQ7CisgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmFuY2VzdG9yRGlzYWJsZWRT
dGF0ZVdhc0NoYW5nZWQoKQordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBbmNlc3Rv
ckRpc2FibGVkKGJvb2wgaXNEaXNhYmxlZCkKIHsKLSAgICBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0
ZSA9IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZVVua25vd247Ci0gICAgZGlzYWJsZWRBdHRyaWJ1dGVD
aGFuZ2VkKCk7CisgICAgQVNTRVJUKGNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFuY2VzdG9y
KCkgPT0gaXNEaXNhYmxlZCk7CisgICAgYm9vbCBvbGRWYWx1ZSA9IG1fZGlzYWJsZWRCeUFuY2Vz
dG9yRmllbGRzZXQ7CisgICAgbV9kaXNhYmxlZEJ5QW5jZXN0b3JGaWVsZHNldCA9IGlzRGlzYWJs
ZWQ7CisgICAgaWYgKG9sZFZhbHVlICE9IG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQpCisg
ICAgICAgIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC0yMzEsNyArMjMzLDggQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJO
b2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSA9IEFu
Y2VzdG9yRGlzYWJsZWRTdGF0ZVVua25vd247CisgICAgaWYgKGRvY3VtZW50KCkuaGFzRGlzYWJs
ZWRGaWVsZHNldEVsZW1lbnQoKSkKKyAgICAgICAgc2V0QW5jZXN0b3JEaXNhYmxlZChjb21wdXRl
SXNEaXNhYmxlZEJ5RmllbGRzZXRBbmNlc3RvcigpKTsKICAgICBtX2RhdGFMaXN0QW5jZXN0b3JT
dGF0ZSA9IFVua25vd247CiAgICAgc2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygpOwogICAgIEhU
TUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwpAQCAtMjQyLDcgKzI0NSw4
IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTEYKIHZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9p
bnQpCiB7CiAgICAgbV92YWxpZGF0aW9uTWVzc2FnZSA9IG51bGxwdHI7Ci0gICAgbV9hbmNlc3Rv
ckRpc2FibGVkU3RhdGUgPSBBbmNlc3RvckRpc2FibGVkU3RhdGVVbmtub3duOworICAgIGlmICht
X2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0KQorICAgICAgICBzZXRBbmNlc3RvckRpc2FibGVk
KGNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFuY2VzdG9yKCkpOwogICAgIG1fZGF0YUxpc3RB
bmNlc3RvclN0YXRlID0gVW5rbm93bjsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5z
ZXJ0aW9uUG9pbnQpOwogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5z
ZXJ0aW9uUG9pbnQpOwpAQCAtMjcyLDE0ICsyNzYsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmRpc3BhdGNoRm9yCiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aXNEaXNh
YmxlZEZvcm1Db250cm9sKCkgY29uc3QKIHsKLSAgICBpZiAobV9kaXNhYmxlZCkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBpZiAobV9hbmNlc3RvckRpc2FibGVkU3RhdGUgPT0gQW5jZXN0
b3JEaXNhYmxlZFN0YXRlVW5rbm93bikKLSAgICAgICAgdXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0
YXRlKCk7Ci0gICAgaWYgKG1fYW5jZXN0b3JEaXNhYmxlZFN0YXRlID09IEFuY2VzdG9yRGlzYWJs
ZWRTdGF0ZURpc2FibGVkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gSFRNTEVs
ZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOworICAgIHJldHVybiBtX2Rpc2FibGVkIHx8
IG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQ7CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24gMTY0NDAxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9ybU1ldGhvZChjb25zdCBTdHJpbmcm
KTsKICAgICBib29sIGZvcm1Ob1ZhbGlkYXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIGFuY2VzdG9y
RGlzYWJsZWRTdGF0ZVdhc0NoYW5nZWQoKTsKKyAgICB2b2lkIHNldEFuY2VzdG9yRGlzYWJsZWQo
Ym9vbCBpc0Rpc2FibGVkKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIHsgfQogCkBAIC0x
MjAsNiArMTIwLDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmLCBIVE1MRm9ybUVs
ZW1lbnQqKTsKIAorICAgIGJvb2wgZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQoKSBjb25zdCB7
IHJldHVybiBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0OyB9CisKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7CkBAIC0xNTQs
NyArMTU2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVh
bEZvcm0oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0QnV0dG9u
Rm9yRm9ybSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkRm9ybUNv
bnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVBbmNlc3RvckRp
c2FibGVkU3RhdGUoKSBjb25zdDsKKworICAgIGJvb2wgY29tcHV0ZUlzRGlzYWJsZWRCeUZpZWxk
c2V0QW5jZXN0b3IoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQmIGFzSFRNTEVs
ZW1lbnQoKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiAqdGhpczsgfQogICAgIHZpcnR1YWwgY29u
c3QgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgYXNIVE1MRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuICp0aGlzOyB9CkBAIC0xNjUsOSArMTY4LDggQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNSZWFkT25seSA6IDE7CiAgICAgYm9vbCBtX2lzUmVxdWlyZWQgOiAxOwogICAg
IGJvb2wgbV92YWx1ZU1hdGNoZXNSZW5kZXJlciA6IDE7CisgICAgYm9vbCBtX2Rpc2FibGVkQnlB
bmNlc3RvckZpZWxkc2V0IDogMTsKIAotICAgIGVudW0gQW5jZXN0b3JEaXNhYmxlZFN0YXRlIHsg
QW5jZXN0b3JEaXNhYmxlZFN0YXRlVW5rbm93biwgQW5jZXN0b3JEaXNhYmxlZFN0YXRlRW5hYmxl
ZCwgQW5jZXN0b3JEaXNhYmxlZFN0YXRlRGlzYWJsZWQgfTsKLSAgICBtdXRhYmxlIEFuY2VzdG9y
RGlzYWJsZWRTdGF0ZSBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZTsKICAgICBlbnVtIERhdGFMaXN0
QW5jZXN0b3JTdGF0ZSB7IFVua25vd24sIEluc2lkZURhdGFMaXN0LCBOb3RJbnNpZGVEYXRhTGlz
dCB9OwogICAgIG11dGFibGUgZW51bSBEYXRhTGlzdEFuY2VzdG9yU3RhdGUgbV9kYXRhTGlzdEFu
Y2VzdG9yU3RhdGU7CiAKSW5kZXg6IFdlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJlZGRhdGEveGNz
Y2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Lnhjd29ya3Nw
YWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkocmV2aXNpb24g
MTY0NDAxKQorKysgV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxs
IFNvdXJjZS54Y3NjaGVtZQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogICAgICAg
PEJ1aWxkQWN0aW9uRW50cmllcz4KICAgICAgICAgIDxCdWlsZEFjdGlvbkVudHJ5CiAgICAgICAg
ICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgotICAgICAgICAgICAgYnVpbGRGb3JSdW5uaW5n
ID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUnVubmluZyA9ICJOTyIKICAgICAgICAgICAg
IGJ1aWxkRm9yUHJvZmlsaW5nID0gIllFUyIKICAgICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5n
ID0gIllFUyIKICAgICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6aW5nID0gIllFUyI+CkBAIC0zOSw3
ICszOSw3IEBACiAgICAgICAgICA8L0J1aWxkQWN0aW9uRW50cnk+CiAgICAgICAgICA8QnVpbGRB
Y3Rpb25FbnRyeQogICAgICAgICAgICAgYnVpbGRGb3JUZXN0aW5nID0gIllFUyIKLSAgICAgICAg
ICAgIGJ1aWxkRm9yUnVubmluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvclJ1bm5pbmcg
PSAiTk8iCiAgICAgICAgICAgICBidWlsZEZvclByb2ZpbGluZyA9ICJZRVMiCiAgICAgICAgICAg
ICBidWlsZEZvckFyY2hpdmluZyA9ICJZRVMiCiAgICAgICAgICAgICBidWlsZEZvckFuYWx5emlu
ZyA9ICJZRVMiPgpAQCAtNTMsNyArNTMsNyBAQAogICAgICAgICAgPC9CdWlsZEFjdGlvbkVudHJ5
PgogICAgICAgICAgPEJ1aWxkQWN0aW9uRW50cnkKICAgICAgICAgICAgIGJ1aWxkRm9yVGVzdGlu
ZyA9ICJZRVMiCi0gICAgICAgICAgICBidWlsZEZvclJ1bm5pbmcgPSAiWUVTIgorICAgICAgICAg
ICAgYnVpbGRGb3JSdW5uaW5nID0gIk5PIgogICAgICAgICAgICAgYnVpbGRGb3JQcm9maWxpbmcg
PSAiWUVTIgogICAgICAgICAgICAgYnVpbGRGb3JBcmNoaXZpbmcgPSAiWUVTIgogICAgICAgICAg
ICAgYnVpbGRGb3JBbmFseXppbmcgPSAiWUVTIj4KQEAgLTY3LDcgKzY3LDcgQEAKICAgICAgICAg
IDwvQnVpbGRBY3Rpb25FbnRyeT4KICAgICAgICAgIDxCdWlsZEFjdGlvbkVudHJ5CiAgICAgICAg
ICAgICBidWlsZEZvclRlc3RpbmcgPSAiWUVTIgotICAgICAgICAgICAgYnVpbGRGb3JSdW5uaW5n
ID0gIllFUyIKKyAgICAgICAgICAgIGJ1aWxkRm9yUnVubmluZyA9ICJOTyIKICAgICAgICAgICAg
IGJ1aWxkRm9yUHJvZmlsaW5nID0gIllFUyIKICAgICAgICAgICAgIGJ1aWxkRm9yQXJjaGl2aW5n
ID0gIllFUyIKICAgICAgICAgICAgIGJ1aWxkRm9yQW5hbHl6aW5nID0gIllFUyI+CkBAIC04MSw3
ICs4MSw3IEBACiAgICAgICAgICA8L0J1aWxkQWN0aW9uRW50cnk+CiAgICAgICAgICA8QnVpbGRB
Y3Rpb25FbnRyeQogICAgICAgICAgICAgYnVpbGRGb3JUZXN0aW5nID0gIllFUyIKLSAgICAgICAg
ICAgIGJ1aWxkRm9yUnVubmluZyA9ICJZRVMiCisgICAgICAgICAgICBidWlsZEZvclJ1bm5pbmcg
PSAiTk8iCiAgICAgICAgICAgICBidWlsZEZvclByb2ZpbGluZyA9ICJZRVMiCiAgICAgICAgICAg
ICBidWlsZEZvckFyY2hpdmluZyA9ICJZRVMiCiAgICAgICAgICAgICBidWlsZEZvckFuYWx5emlu
ZyA9ICJZRVMiPgpAQCAtOTUsNyArOTUsNyBAQAogICAgICAgICAgPC9CdWlsZEFjdGlvbkVudHJ5
PgogICAgICAgICAgPEJ1aWxkQWN0aW9uRW50cnkKICAgICAgICAgICAgIGJ1aWxkRm9yVGVzdGlu
ZyA9ICJZRVMiCi0gICAgICAgICAgICBidWlsZEZvclJ1bm5pbmcgPSAiWUVTIgorICAgICAgICAg
ICAgYnVpbGRGb3JSdW5uaW5nID0gIk5PIgogICAgICAgICAgICAgYnVpbGRGb3JQcm9maWxpbmcg
PSAiWUVTIgogICAgICAgICAgICAgYnVpbGRGb3JBcmNoaXZpbmcgPSAiWUVTIgogICAgICAgICAg
ICAgYnVpbGRGb3JBbmFseXppbmcgPSAiWUVTIj4KQEAgLTExNiw2ICsxMTYsMTUgQEAKICAgICAg
IGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyI+CiAgICAgICA8VGVzdGFibGVzPgogICAgICAg
PC9UZXN0YWJsZXM+CisgICAgICA8TWFjcm9FeHBhbnNpb24+CisgICAgICAgICA8QnVpbGRhYmxl
UmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisg
ICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjkzNDA5OTRBMDg1NDBDQUUwMDdGM0JD
OCIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiRHVtcFJlbmRlclRyZWUiCisgICAgICAg
ICAgICBCbHVlcHJpbnROYW1lID0gIkR1bXBSZW5kZXJUcmVlIgorICAgICAgICAgICAgUmVmZXJl
bmNlZENvbnRhaW5lciA9ICJjb250YWluZXI6VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qIj4KKyAgICAgICAgIDwvQnVpbGRhYmxlUmVmZXJlbmNlPgorICAgICAg
PC9NYWNyb0V4cGFuc2lvbj4KICAgIDwvVGVzdEFjdGlvbj4KICAgIDxMYXVuY2hBY3Rpb24KICAg
ICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91bmRhdGlv
bi5EZWJ1Z2dlci5MTERCIgpAQCAtMTI2LDkgKzEzNSwyNSBAQAogICAgICAgaWdub3Jlc1BlcnNp
c3RlbnRTdGF0ZU9uTGF1bmNoID0gIllFUyIKICAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5n
ID0gIllFUyIKICAgICAgIGFsbG93TG9jYXRpb25TaW11bGF0aW9uID0gIllFUyI+Ci0gICAgICA8
UGF0aFJ1bm5hYmxlCi0gICAgICAgICBGaWxlUGF0aCA9ICIvQXBwbGljYXRpb25zL1NhZmFyaS5h
cHAvQ29udGVudHMvTWFjT1MvU2FmYXJpRm9yV2ViS2l0RGV2ZWxvcG1lbnQiPgotICAgICAgPC9Q
YXRoUnVubmFibGU+CisgICAgICA8QnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgICAgICAg
PEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJw
cmltYXJ5IgorICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICI5MzQwOTk0QTA4NTQw
Q0FFMDA3RjNCQzgiCisgICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIkR1bXBSZW5kZXJUcmVl
IgorICAgICAgICAgICAgQmx1ZXByaW50TmFtZSA9ICJEdW1wUmVuZGVyVHJlZSIKKyAgICAgICAg
ICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlRvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5j
ZT4KKyAgICAgIDwvQnVpbGRhYmxlUHJvZHVjdFJ1bm5hYmxlPgorICAgICAgPENvbW1hbmRMaW5l
QXJndW1lbnRzPgorICAgICAgICAgPENvbW1hbmRMaW5lQXJndW1lbnQKKyAgICAgICAgICAgIGFy
Z3VtZW50ID0gIi4uLy4uL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQt
ZGlzYWJsZWQuaHRtbCIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAg
PC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAgICAgICAgPENvbW1hbmRMaW5lQXJndW1lbnQKKyAg
ICAgICAgICAgIGFyZ3VtZW50ID0gIi4uLy4uL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRz
ZXQvdmFsaWRhdGlvbi1pbi1maWVsZHNldC5odG1sIgorICAgICAgICAgICAgaXNFbmFibGVkID0g
Ik5PIj4KKyAgICAgICAgIDwvQ29tbWFuZExpbmVBcmd1bWVudD4KKyAgICAgIDwvQ29tbWFuZExp
bmVBcmd1bWVudHM+CiAgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+CiAgICAgICA8L0FkZGl0aW9u
YWxPcHRpb25zPgogICAgPC9MYXVuY2hBY3Rpb24+CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjQ0MTYp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxNC0wMi0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSBzaG91bGQgbmV2ZXIgYmUgdW5rbm93bgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MDg0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbW9yZSB0ZXN0
IGNhc2VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1kaXNhYmxl
ZC0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0
LWRpc2FibGVkLTIuaHRtbDoKKwogMjAxNC0wMi0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBmaWVsZHNldDpkaXNhYmxlZCBmaWVsZHNldCA+IGxlZ2VuZDpm
aXJzdC1jaGlsZCBpbnB1dCBzaG91bGQgYmUgZGlzYWJsZWQKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGlzYWJsZWQtMi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1kaXNhYmxl
ZC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTY0NDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC1kaXNhYmxlZC0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTUsNiArMTUsMjUgQEAgUEFTUyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dElu
c2lkZUZpcgogUEFTUyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZVNlY29uZExlZ2Vu
ZCIpIGlzIGZhbHNlCiBQQVNTIGlzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlTmVzdGVk
Rmlyc3RMZWdlbmQiKSBpcyBmYWxzZQogUEFTUyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dElu
c2lkZUZpcnN0TGVnZW5kV2l0aERpc2FibGVkT3V0ZXJGaWVsZHNldCIpIGlzIGZhbHNlCisKK2Nv
bnRlbnREb2N1bWVudCA9IGNyZWF0ZUlmcmFtZSgpOworZmllbGRzZXQgPSBjb250ZW50RG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTsgY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZmllbGRzZXQpOworUEFTUyBpbnB1dCA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpOyBmaWVsZHNldC5hcHBlbmRDaGlsZChpbnB1dCk7IGlzSW5wdXREaXNhYmxl
ZChpbnB1dCkgaXMgZmFsc2UKK1BBU1MgZmllbGRzZXQuZGlzYWJsZWQgPSB0cnVlOyBpc0lucHV0
RGlzYWJsZWQoaW5wdXQpIGlzIHRydWUKK1BBU1MgY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoaW5wdXQpOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIGlzIGZhbHNlCitQQVNTIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIGlzIGZh
bHNlCitQQVNTIGZpZWxkc2V0LmFwcGVuZENoaWxkKGlucHV0KTsgaXNJbnB1dERpc2FibGVkKGlu
cHV0KSBpcyB0cnVlCitmaWVsZHNldDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaWVsZHNl
dCIpOyBmaWVsZHNldDIuZGlzYWJsZWQgPSB0cnVlCitpbnB1dDIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpbnB1dCIpOyBmaWVsZHNldDIuYXBwZW5kQ2hpbGQoaW5wdXQyKQorUEFTUyBjb250
ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaWVsZHNldDIpOyBpc0lucHV0RGlzYWJsZWQo
aW5wdXQyKSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZmllbGRzZXQp
OyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIGlzIHRydWUKKworc2V0RGlzYWJsZWRPbkFsbEZpZWxk
c2V0cyh0cnVlKQorUEFTUyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dE91dHNpZGVMZWdlbmQi
KSBpcyB0cnVlCitQQVNTIGlzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlRmlyc3RMZWdl
bmQiKSBpcyBmYWxzZQorUEFTUyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZVNlY29u
ZExlZ2VuZCIpIGlzIHRydWUKK1BBU1MgaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdXRJbnNpZGVO
ZXN0ZWRGaXJzdExlZ2VuZCIpIGlzIGZhbHNlCitQQVNTIGlzSW5wdXREaXNhYmxlZEJ5SWQoImlu
cHV0SW5zaWRlRmlyc3RMZWdlbmRXaXRoRGlzYWJsZWRPdXRlckZpZWxkc2V0IikgaXMgdHJ1ZQog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWRpc2FibGVkLTIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWRp
c2FibGVkLTIuaHRtbAkocmV2aXNpb24gMTY0NDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9maWVsZHNldC9maWVsZHNldC1kaXNhYmxlZC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4
LDExICsxOCwxNCBAQCBpbnB1dDpkaXNhYmxlZCB7IGNvbG9yOiAjNjY2OyB9CiAKIGRlc2NyaXB0
aW9uKCJBZGRpdGlvbmFsIHRlc3RzIGZvciBmaWVsZHNldCBlbGVtZW50IGRpc2FibGluZyBkZXNj
ZW5kZW50IGlucHV0IGVsZW1lbnRzIik7CiAKLWZ1bmN0aW9uIGlzSW5wdXREaXNhYmxlZEJ5SWQo
aWQpIHsKLSAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CitmdW5j
dGlvbiBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIHsKICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHls
ZShpbnB1dCkuY29sb3IgPT0gJ3JnYigxMDIsIDEwMiwgMTAyKSc7CiB9CiAKK2Z1bmN0aW9uIGlz
SW5wdXREaXNhYmxlZEJ5SWQoaWQpIHsKKyAgICByZXR1cm4gaXNJbnB1dERpc2FibGVkKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGlkKSk7Cit9CisKIHNob3VsZEJlVHJ1ZSgnaXNJbnB1dERpc2Fi
bGVkQnlJZCgiaW5wdXRPdXRzaWRlTGVnZW5kIiknKTsKIHNob3VsZEJlRmFsc2UoJ2lzSW5wdXRE
aXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlRmlyc3RMZWdlbmQiKScpOwogc2hvdWxkQmVUcnVlKCdp
c0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZVNlY29uZExlZ2VuZCIpJyk7CkBAIC0zMCw3
ICszMyw3IEBAIHNob3VsZEJlRmFsc2UoJ2lzSW5wdXREaXNhYmxlZEJ5SWQoImlucHUKIHNob3Vs
ZEJlVHJ1ZSgnaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdXRJbnNpZGVGaXJzdExlZ2VuZFdpdGhE
aXNhYmxlZE91dGVyRmllbGRzZXQiKScpOwogCiBmdW5jdGlvbiBzZXREaXNhYmxlZE9uQWxsRmll
bGRzZXRzKHZhbHVlKSB7Ci0gICAgdmFyIGZpZWxkc2V0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJ2ZpZWxkc2V0Jyk7CisgICAgdmFyIGZpZWxkc2V0cyA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJyNjb250YWluZXIgPiBmaWVsZHNldCwgYm9keSA+IGZpZWxkc2V0Jyk7CiAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBmaWVsZHNldHMubGVuZ3RoOyBpKyspCiAgICAgICAgIGZpZWxk
c2V0c1tpXS5kaXNhYmxlZCA9IHZhbHVlOwogfQpAQCAtNDMsNiArNDYsNDAgQEAgc2hvdWxkQmVG
YWxzZSgnaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdQogc2hvdWxkQmVGYWxzZSgnaXNJbnB1dERp
c2FibGVkQnlJZCgiaW5wdXRJbnNpZGVOZXN0ZWRGaXJzdExlZ2VuZCIpJyk7CiBzaG91bGRCZUZh
bHNlKCdpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZUZpcnN0TGVnZW5kV2l0aERpc2Fi
bGVkT3V0ZXJGaWVsZHNldCIpJyk7CiAKK2Z1bmN0aW9uIGNyZWF0ZUlmcmFtZSgpIHsKKyAgICB2
YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAg
aWZyYW1lLmNvbnRlbnREb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ2JvZHkgc3R5bGUnKS5jbG9uZU5vZGUodHJ1ZSkpOworICAgIHJldHVybiBpZnJhbWUu
Y29udGVudERvY3VtZW50OworfQorCitmdW5jdGlvbiBpbnNlcnROZXdGaWVsZHNldEludG9Cb2R5
KGNvbnRlbnREb2N1bWVudCkgeworICAgIGZpZWxkc2V0ID0gY29udGVudERvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImZpZWxkc2V0Iik7CisgICAgY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZmllbGRzZXQpOworICAgIHJldHVybiBmaWVsZHNldDsKK30KKworZGVidWcoJycpOworZXZh
bEFuZExvZygnY29udGVudERvY3VtZW50ID0gY3JlYXRlSWZyYW1lKCk7Jyk7CitldmFsQW5kTG9n
KCdmaWVsZHNldCA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpOyBj
b250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaWVsZHNldCk7Jyk7CitzaG91bGRCZUZh
bHNlKCdpbnB1dCA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyBmaWVs
ZHNldC5hcHBlbmRDaGlsZChpbnB1dCk7IGlzSW5wdXREaXNhYmxlZChpbnB1dCknKTsKK3Nob3Vs
ZEJlVHJ1ZSgnZmllbGRzZXQuZGlzYWJsZWQgPSB0cnVlOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQp
Jyk7CitzaG91bGRCZUZhbHNlKCdjb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1
dCk7IGlzSW5wdXREaXNhYmxlZChpbnB1dCknKTsKK3Nob3VsZEJlRmFsc2UoJ2RvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpJyk7CitzaG91bGRC
ZVRydWUoJ2ZpZWxkc2V0LmFwcGVuZENoaWxkKGlucHV0KTsgaXNJbnB1dERpc2FibGVkKGlucHV0
KScpOworZXZhbEFuZExvZygnZmllbGRzZXQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmll
bGRzZXQiKTsgZmllbGRzZXQyLmRpc2FibGVkID0gdHJ1ZScpOworZXZhbEFuZExvZygnaW5wdXQy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsgZmllbGRzZXQyLmFwcGVuZENoaWxk
KGlucHV0MiknKTsKK3Nob3VsZEJlVHJ1ZSgnY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZmllbGRzZXQyKTsgaXNJbnB1dERpc2FibGVkKGlucHV0MiknKTsKK3Nob3VsZEJlVHJ1ZSgn
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaWVsZHNldCk7IGlzSW5wdXREaXNhYmxlZChpbnB1
dCknKTsKKworZGVidWcoJycpOworZXZhbEFuZExvZygnc2V0RGlzYWJsZWRPbkFsbEZpZWxkc2V0
cyh0cnVlKScpOworc2hvdWxkQmVUcnVlKCdpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dE91dHNp
ZGVMZWdlbmQiKScpOworc2hvdWxkQmVGYWxzZSgnaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdXRJ
bnNpZGVGaXJzdExlZ2VuZCIpJyk7CitzaG91bGRCZVRydWUoJ2lzSW5wdXREaXNhYmxlZEJ5SWQo
ImlucHV0SW5zaWRlU2Vjb25kTGVnZW5kIiknKTsKK3Nob3VsZEJlRmFsc2UoJ2lzSW5wdXREaXNh
YmxlZEJ5SWQoImlucHV0SW5zaWRlTmVzdGVkRmlyc3RMZWdlbmQiKScpOworc2hvdWxkQmVUcnVl
KCdpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZUZpcnN0TGVnZW5kV2l0aERpc2FibGVk
T3V0ZXJGaWVsZHNldCIpJyk7CisKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXIn
KS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogCiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224724</attachid>
            <date>2014-02-19 23:53:32 -0800</date>
            <delta_ts>2014-02-20 18:49:08 -0800</delta_ts>
            <desc>Reverted erroneous xcworkspace chagnes</desc>
            <filename>bug-129084-20140219235359.patch</filename>
            <type>text/plain</type>
            <size>21729</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDQxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE0LTAyLTE5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIG1fYW5jZXN0b3JEaXNhYmxlZFN0
YXRlIHNob3VsZCBuZXZlciBiZSB1bmtub3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkwODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byByZXNvbHZlIHRoZSBidWcgMTI5MDM1LCBh
IHRleHQgZm9ybSBjb250cm9sIGVsZW1lbnRzIG5lZWRzIHRvIHN5bmNocm9ub3VzbHkgY2hhbmdl
CisgICAgICAgIGl0cyBpbm5lciB0ZXh0IGVsZW1lbnQncyBlZGl0YWJpbGl0eSBieSBzZXR0aW5n
IG9yIHVuc2V0dGluZyBjb250ZW50ZWRpdGFibGUgY29udGVudCBhdHRyaWJ1dGUuCisgICAgICAg
IEJlZm9yZSB0aGlzIHBhdGNoLCB3ZSBjb3VsZCBub3QgZG8gdGhpcyBiZWNhdXNlIGVkaXRhYmls
aXR5IG9mIGEgdGV4dCBmb3JtIGNvbnRyb2wgZGVwZW5kZW50IG9uCisgICAgICAgIGl0cyBkaXNh
YmxlZC1uZXNzIHdoaWNoIHdhcyBvbmx5IGNvbXB1dGVkIGxhemlseSB2aWEgdXBkYXRlQW5jZXN0
b3JEaXNhYmxlZFN0YXRlKCkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBIVE1MRmllbGRT
ZXRFbGVtZW50IGFuZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IHVwZGF0ZSB0aGlzIHN0YXRlIHN5
bmNocm9ub3VzbHkuCisgICAgICAgIFRvIGF2b2lkIE8oaykgRE9NIHRyYXZlcnNhbCwgd2hlcmUg
ayBpcyB0aGUgZGVwdGggb2YgdGhlIHRyZWUsIGluIGluc2VydGVkSW50byBhbmQgcmVtb3ZlZEZy
b20gb2YKKyAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCBvbiBtb3N0IHBhZ2VzLCBhIG5l
dyBkb2N1bWVudC1sZXZlbCBmbGFnLCBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50LAor
ICAgICAgICBoYXMgYmVlbiBhZGRlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBkb2N1bWVudCBj
b250YWlucyBhbnkgZGlzYWJsZWQgZmllbGRzZXQgb3Igbm90LgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWRpc2FibGVkLTIuaHRtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6
IEluaXRpYWxpemVzIG5ld2x5IGFkZGVkIG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291bnQu
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aGFzRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjphZGREaXNhYmxlZEZpZWxkc2V0RWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnJlbW92ZURpc2FibGVkRmllbGRzZXRFbGVtZW50KTogQWRkZWQuCisK
KyAgICAgICAgKiBodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dXBkYXRlRnJvbUNvbnRyb2xFbGVtZW50c0FuY2VzdG9yRGlzYWJsZWRTdGF0ZVVuZGVyKTog
QWRkZWQuIFVwZGF0ZXMgc3RhcnROb2RlIGFuZCBpdHMKKyAgICAgICAgZGVzY2VuZGVudHMnIGFu
Y2VzdG9yIGRpc2FibGVkIGZsYWcuIFdlIGRvbid0IHVwZGF0ZSBjb250cm9scyB1bmRlciBhbm90
aGVyIGRpc2FibGVkIGZpZWxkc2V0CisgICAgICAgIHNpbmNlIGRpc2FibGVkLW5lc3Mgb2YgdGhv
c2UgY29udHJvbHMgYXJlbid0IGFmZmVjdGVkIGJ5IHN0YXJ0Tm9kZS4KKworICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZpZWxkU2V0RWxlbWVudDo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKTogQ2Fs
bCBhZGREaXNhYmxlZEZpZWxkc2V0RWxlbWVudCBhbmQKKyAgICAgICAgcmVtb3ZlRGlzYWJsZWRG
aWVsZHNldEVsZW1lbnQgdG8gdXBkYXRlIHRoZSBmbGFnIG9uIHRoZSBvd25lciBkb2N1bWVudC4g
QWxzbyBlbmFibGUgZm9ybSBjb250cm9sCisgICAgICAgIGVsZW1lbnRzIHVuZGVyIHRoZSBmaXJz
dCBsZWdlbmQgZWxlbWVudCBhbmQgZGlzYWJsZSBvciBlbmFibGUgb3RoZXIgZGVzY2VuZGVudCBm
b3JtIGNvbnRyb2xzIGluCisgICAgICAgIGFjY29yZGFuY2Ugd2l0aCB0aGUgcHJlc2VuY2Ugb2Yg
ZGlzYWJsZWQgY29udGVudCBhdHRyaWJ1dGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVs
ZFNldEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6IFVwZGF0ZSBkaXNhYmxlZC1uZXNzIG9mIGZv
cm0gY29udHJvbHMgdW5kZXIKKyAgICAgICAgY2hpbGQgbGVnZW5kIGVsZW1lbnRzIGJlY2F1c2Ug
Y29udHJvbHMgYXJlbid0IGRpc2FibGVkIGluIHRoZSBmaXJzdCBsZWdlbmQgZWxlbWVudCwgYW5k
IGFkZGluZyBvcgorICAgICAgICByZW1vdmluZyBjaGlsZCBlbGVtZW50cyBtYXkgaGF2ZSBjaGFu
Z2VkIHRoZSBmaXJzdCBsZWdlbmQgZWxlbWVudC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTEZp
ZWxkU2V0RWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOiBVcGRhdGUgdGhlIGZsYWcgb24g
dGhlIG93bmVyIGRvY3VtZW50LgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5o
OgorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZUlzRGlz
YWJsZWRCeUZpZWxkc2V0QW5jZXN0b3IpOiBSZXR1cm5zIGJvb2xlYW4gaW5zdGVhZCBvZgorICAg
ICAgICB1cGRhdGluZyBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSBpbnRlcm5hbGx5LiBBbHNvIHJl
bmFtZWQgZnJvbSB1cGRhdGVBbmNlc3RvckRpc2FibGVkU3RhdGUuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEFuY2VzdG9yRGlzYWJsZWQpOiBSZXBsYWNl
ZCBhbmNlc3RvckRpc2FibGVkU3RhdGVXYXNDaGFuZ2VkLgorICAgICAgICBUaGlzIGZ1bmN0aW9u
IHVwZGF0ZXMgbV9kaXNhYmxlZEJ5QW5jZXN0b3JGaWVsZHNldCBhbmQgY2FsbHMgZGlzYWJsZWRB
dHRyaWJ1dGVDaGFuZ2VkIGFzIG5lZWRlZC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1D
b250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKTogVXBkYXRlIG1fZGlzYWJsZWRCeUFuY2VzdG9y
RmllbGRzZXQgaWYgdGhlcmUgaXMKKyAgICAgICAgYSBwb3NzaWJpbGl0eSAoaS5lLiB0aGUgZG9j
dW1lbnQgY29udGFpbnMgYW55IGRpc2FibGVkIGZpZWxkc2V0IGVsZW1lbnQpIHRoYXQgdGhpcyBm
b3JtIGNvbnRyb2wKKyAgICAgICAgaXMgaW5zZXJ0ZWQgdW5kZXIgYSBkaXNhYmxlZCBmaWVsZHNl
dCBlbGVtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpy
ZW1vdmVkRnJvbSk6IElmIHRoaXMgZm9ybSBjb250cm9sIGVsZW1lbnQgaXMgbm90IGRpc2FibGVk
IGJ5CisgICAgICAgIGEgZmllbGRzZXQgYW5jZXN0b3IsIHRoZW4gdGhlcmUgaXMgbm90aGluZyB0
byBkby4gSWYgaXQgaXMsIHRoZW4gY2hlY2sgdG8gc2VlIGlmIHRoZSBlbGVtZW50IGlzCisgICAg
ICAgIHN0aWxsIGRpc2FibGVkIG5vdyB0aGF0IHdlJ3ZlIGxvc3Qgc29tZSBhbmNlc3RvcnMuCisK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3Jt
Q29udHJvbCk6IE5vIGxvbmdlciB1cGRhdGVzIG1fYW5jZXN0b3JEaXNhYmxlZFN0YXRlCisgICAg
ICAgIGxhemlseSBzaW5jZSBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0IGlzIG5ldmVyIGFt
YmlndW91cyBub3cuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoK
KwogMjAxNC0wMi0xOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFN1YnBpeGVsIHJlbmRlcmluZzogTWFrZSBHcmFwaGljc0xheWVyJ3Mgb2Zmc2V0RnJvbVJlbmRl
cmVyIHN1YnBpeGVsIHBvc2l0aW9uIGJhc2VkLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAxNjQ0MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAyLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgVQogICAgICwgbV9pbnB1dEN1cnNvcihFbXB0eUlucHV0Q3Vyc29yOjpj
cmVhdGUoKSkKICNlbmRpZgogICAgICwgbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lcih0
aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCisgICAg
LCBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50KDApCiAgICAgLCBtX2hhc0luamVjdGVk
UGx1Z0luc1NjcmlwdChmYWxzZSkKICAgICAsIG1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKGZh
bHNlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE2NDQwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM4LDYgKzEy
MzgsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRy
b2woRWxlbWVudCopOworICAgIGJvb2wgaGFzRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50OyB9CisgICAgdm9pZCBh
ZGREaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpIHsgbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHND
b3VudCsrOyB9CisgICAgdm9pZCByZW1vdmVEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpIHsgbV9k
aXNhYmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudC0tOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBvdmVycmlkZTsK
IApAQCAtMTY3NSw2ICsxNjc4LDcgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPERvY3VtZW50PiBt
X2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyOwogICAgIEhhc2hTZXQ8UmVmUHRyPEVsZW1l
bnQ+PiBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHM7CisgICAgdW5zaWduZWQgbV9kaXNhYmxlZEZp
ZWxkc2V0RWxlbWVudHNDb3VudDsKIAogICAgIGJvb2wgbV9oYXNJbmplY3RlZFBsdWdJbnNTY3Jp
cHQ7CiAgICAgYm9vbCBtX3JlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTY0NDA3KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDksMjUgKzQ5LDcwIEBAIFBhc3NSZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4g
SFRNTEZpZWwKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGaWVsZFNldEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAotdm9pZCBIVE1MRmllbGRTZXRFbGVtZW50Ojpp
bnZhbGlkYXRlRGlzYWJsZWRTdGF0ZVVuZGVyKEVsZW1lbnQqIGJhc2UpCitzdGF0aWMgdm9pZCB1
cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0b3JEaXNhYmxlZFN0YXRlVW5kZXIoSFRNTEVs
ZW1lbnQmIHN0YXJ0Tm9kZSwgYm9vbCBpc0Rpc2FibGVkKQogewotICAgIGZvciAoYXV0byYgY29u
dHJvbCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCpiYXNlKSkK
LSAgICAgICAgY29udHJvbC5hbmNlc3RvckRpc2FibGVkU3RhdGVXYXNDaGFuZ2VkKCk7CisgICAg
SFRNTEZvcm1Db250cm9sRWxlbWVudCogY29udHJvbDsKKyAgICBpZiAoaXNIVE1MRm9ybUNvbnRy
b2xFbGVtZW50KHN0YXJ0Tm9kZSkpCisgICAgICAgIGNvbnRyb2wgPSAmdG9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50KHN0YXJ0Tm9kZSk7CisgICAgZWxzZQorICAgICAgICBjb250cm9sID0gVHJhdmVy
c2FsPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+OjpmaXJzdFdpdGhpbigmc3RhcnROb2RlKTsKKyAg
ICB3aGlsZSAoY29udHJvbCkgeworICAgICAgICBjb250cm9sLT5zZXRBbmNlc3RvckRpc2FibGVk
KGlzRGlzYWJsZWQpOworICAgICAgICBpZiAoaXNIVE1MRmllbGRTZXRFbGVtZW50KGNvbnRyb2wp
ICYmIGNvbnRyb2wtPmhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpKQorICAgICAgICAgICAgY29u
dHJvbCA9IFRyYXZlcnNhbDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pjo6bmV4dFNraXBwaW5nQ2hp
bGRyZW4oY29udHJvbCwgJnN0YXJ0Tm9kZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
bnRyb2wgPSBUcmF2ZXJzYWw8SFRNTEZvcm1Db250cm9sRWxlbWVudD46Om5leHQoY29udHJvbCwg
JnN0YXJ0Tm9kZSk7CisgICAgfQogfQogCiB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmRpc2Fi
bGVkQXR0cmlidXRlQ2hhbmdlZCgpCiB7CiAgICAgLy8gVGhpcyBlbGVtZW50IG11c3QgYmUgdXBk
YXRlZCBiZWZvcmUgdGhlIHN0eWxlIG9mIG5vZGVzIGluIGl0cyBzdWJ0cmVlIGdldHMgcmVjYWxj
dWxhdGVkLgogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc2FibGVkQXR0cmlidXRlQ2hh
bmdlZCgpOwotICAgIGludmFsaWRhdGVEaXNhYmxlZFN0YXRlVW5kZXIodGhpcyk7CisKKyAgICBi
b29sIHRoaXNGaWVsZHNldElzRGlzYWJsZWQgPSBoYXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKTsK
KyAgICBpZiAodGhpc0ZpZWxkc2V0SXNEaXNhYmxlZCkKKyAgICAgICAgZG9jdW1lbnQoKS5hZGRE
aXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQoKS5y
ZW1vdmVEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpOworCisgICAgaWYgKGRpc2FibGVkQnlBbmNl
c3RvckZpZWxkc2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgaGFzU2VlbkZpcnN0
TGVnZW5kRWxlbWVudCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgY29udHJvbCA6IGNoaWxkcmVu
T2ZUeXBlPEhUTUxFbGVtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKCFoYXNTZWVuRmlyc3RM
ZWdlbmRFbGVtZW50ICYmIGlzSFRNTExlZ2VuZEVsZW1lbnQoY29udHJvbCkpIHsKKyAgICAgICAg
ICAgIGhhc1NlZW5GaXJzdExlZ2VuZEVsZW1lbnQgPSB0cnVlOworICAgICAgICAgICAgdXBkYXRl
RnJvbUNvbnRyb2xFbGVtZW50c0FuY2VzdG9yRGlzYWJsZWRTdGF0ZVVuZGVyKGNvbnRyb2wsIGZh
bHNlIC8qIGlzRGlzYWJsZWQgKi8pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgdXBkYXRlRnJvbUNvbnRyb2xFbGVtZW50c0FuY2VzdG9yRGlzYWJsZWRTdGF0ZVVu
ZGVyKGNvbnRyb2wsIHRoaXNGaWVsZHNldElzRGlzYWJsZWQpOworICAgIH0KIH0KIAogdm9pZCBI
VE1MRmllbGRTZXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNo
YW5nZSkKIHsKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlKTsKKyAgICBpZiAoIWhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpKQorICAgICAgICByZXR1
cm47CisKKyAgICBIVE1MTGVnZW5kRWxlbWVudCogbGVnZW5kID0gVHJhdmVyc2FsPEhUTUxMZWdl
bmRFbGVtZW50Pjo6Zmlyc3RDaGlsZCh0aGlzKTsKKyAgICBpZiAoIWxlZ2VuZCkKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgZm9yIChhdXRvJiBsZWdlbmQgOiBjaGlsZHJlbk9mVHlwZTxIVE1MTGVn
ZW5kRWxlbWVudD4oKnRoaXMpKQotICAgICAgICBpbnZhbGlkYXRlRGlzYWJsZWRTdGF0ZVVuZGVy
KCZsZWdlbmQpOworICAgIHVwZGF0ZUZyb21Db250cm9sRWxlbWVudHNBbmNlc3RvckRpc2FibGVk
U3RhdGVVbmRlcigqbGVnZW5kLCBmYWxzZSAvKiBpc0Rpc2FibGVkICovKTsKKyAgICB3aGlsZSAo
KGxlZ2VuZCA9IFRyYXZlcnNhbDxIVE1MTGVnZW5kRWxlbWVudD46Om5leHRTaWJsaW5nKGxlZ2Vu
ZCkpKQorICAgICAgICB1cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0b3JEaXNhYmxlZFN0
YXRlVW5kZXIoKmxlZ2VuZCwgdHJ1ZSk7Cit9CisKK3ZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50KQoreworICAgIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKKyAg
ICBpZiAoaGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cikpIHsKKyAgICAgICAgaWYgKG9sZERvY3Vt
ZW50KQorICAgICAgICAgICAgb2xkRG9jdW1lbnQtPnJlbW92ZURpc2FibGVkRmllbGRzZXRFbGVt
ZW50KCk7CisgICAgICAgIGRvY3VtZW50KCkuYWRkRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKTsK
KyAgICB9CiB9CiAKIGJvb2wgSFRNTEZpZWxkU2V0RWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAkocmV2
aXNpb24gMTY0NDAxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgcHVibGljOgogICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGVk
QXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEhUTUxGaWVsZFNl
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50
Kik7CkBAIC01Miw5ICs1MSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZWNhbGNXaWxsVmFsaWRhdGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRGlzYWJsZWRTdGF0ZVVuZGVyKEVsZW1lbnQqKTsK
ICAgICB2b2lkIHJlZnJlc2hFbGVtZW50c0lmTmVlZGVkKCkgY29uc3Q7CiAKICAgICBtdXRhYmxl
IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiBtX2Fzc29jaWF0ZWRFbGVtZW50czsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAko
cmV2aXNpb24gMTY0NDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpIVE1MRm9ybUNvbnRyb2xFCiAgICAgLCBtX2lzUmVhZE9ubHkoZmFsc2UpCiAg
ICAgLCBtX2lzUmVxdWlyZWQoZmFsc2UpCiAgICAgLCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZh
bHNlKQotICAgICwgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUoQW5jZXN0b3JEaXNhYmxlZFN0YXRl
VW5rbm93bikKKyAgICAsIG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQoZmFsc2UpCiAgICAg
LCBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZShVbmtub3duKQogICAgICwgbV93aWxsVmFsaWRhdGVJ
bml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fd2lsbFZhbGlkYXRlKHRydWUpCkBAIC05OSwyNSAr
OTksMjcgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpmb3JtTm9WYWxpZAogICAgIHJl
dHVybiBmYXN0SGFzQXR0cmlidXRlKGZvcm1ub3ZhbGlkYXRlQXR0cik7CiB9CiAKLXZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRlKCkgY29uc3QK
K2Jvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZUlzRGlzYWJsZWRCeUZpZWxkc2V0
QW5jZXN0b3IoKSBjb25zdAogewogICAgIEVsZW1lbnQqIHByZXZpb3VzQW5jZXN0b3IgPSBudWxs
cHRyOwogICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3IgPSBwYXJlbnRFbGVtZW50KCk7IGFuY2Vz
dG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgaWYg
KGlzSFRNTEZpZWxkU2V0RWxlbWVudChhbmNlc3RvcikgJiYgYW5jZXN0b3ItPmhhc0F0dHJpYnV0
ZShkaXNhYmxlZEF0dHIpKSB7CiAgICAgICAgICAgICBIVE1MRmllbGRTZXRFbGVtZW50JiBmaWVs
ZFNldEFuY2VzdG9yID0gdG9IVE1MRmllbGRTZXRFbGVtZW50KCphbmNlc3Rvcik7CiAgICAgICAg
ICAgICBib29sIGlzSW5GaXJzdExlZ2VuZCA9IHByZXZpb3VzQW5jZXN0b3IgJiYgaXNIVE1MTGVn
ZW5kRWxlbWVudChwcmV2aW91c0FuY2VzdG9yKSAmJiBwcmV2aW91c0FuY2VzdG9yID09IGZpZWxk
U2V0QW5jZXN0b3IubGVnZW5kKCk7Ci0gICAgICAgICAgICBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0
ZSA9IGlzSW5GaXJzdExlZ2VuZCA/IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZUVuYWJsZWQgOiBBbmNl
c3RvckRpc2FibGVkU3RhdGVEaXNhYmxlZDsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiAhaXNJbkZpcnN0TGVnZW5kOwogICAgICAgICB9CiAgICAgICAgIHByZXZpb3Vz
QW5jZXN0b3IgPSBhbmNlc3RvcjsKICAgICB9Ci0gICAgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUg
PSBBbmNlc3RvckRpc2FibGVkU3RhdGVFbmFibGVkOworICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphbmNlc3RvckRpc2FibGVkU3RhdGVXYXNDaGFu
Z2VkKCkKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QW5jZXN0b3JEaXNhYmxlZChi
b29sIGlzRGlzYWJsZWQpCiB7Ci0gICAgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUgPSBBbmNlc3Rv
ckRpc2FibGVkU3RhdGVVbmtub3duOwotICAgIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwor
ICAgIEFTU0VSVChjb21wdXRlSXNEaXNhYmxlZEJ5RmllbGRzZXRBbmNlc3RvcigpID09IGlzRGlz
YWJsZWQpOworICAgIGJvb2wgb2xkVmFsdWUgPSBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0
OworICAgIG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQgPSBpc0Rpc2FibGVkOworICAgIGlm
IChvbGRWYWx1ZSAhPSBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0KQorICAgICAgICBkaXNh
YmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQpAQCAtMjMxLDcgKzIzMyw4IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6ZGlkTW92ZVRvTmUKIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0
aW9uUG9pbnQpCiB7Ci0gICAgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUgPSBBbmNlc3RvckRpc2Fi
bGVkU3RhdGVVbmtub3duOworICAgIGlmIChkb2N1bWVudCgpLmhhc0Rpc2FibGVkRmllbGRzZXRF
bGVtZW50KCkpCisgICAgICAgIHNldEFuY2VzdG9yRGlzYWJsZWQoY29tcHV0ZUlzRGlzYWJsZWRC
eUZpZWxkc2V0QW5jZXN0b3IoKSk7CiAgICAgbV9kYXRhTGlzdEFuY2VzdG9yU3RhdGUgPSBVbmtu
b3duOwogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICBIVE1MRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKQEAgLTI0Miw3ICsyNDUsOCBAQCBOb2RlOjpJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxGCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewogICAg
IG1fdmFsaWRhdGlvbk1lc3NhZ2UgPSBudWxscHRyOwotICAgIG1fYW5jZXN0b3JEaXNhYmxlZFN0
YXRlID0gQW5jZXN0b3JEaXNhYmxlZFN0YXRlVW5rbm93bjsKKyAgICBpZiAobV9kaXNhYmxlZEJ5
QW5jZXN0b3JGaWVsZHNldCkKKyAgICAgICAgc2V0QW5jZXN0b3JEaXNhYmxlZChjb21wdXRlSXNE
aXNhYmxlZEJ5RmllbGRzZXRBbmNlc3RvcigpKTsKICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0
ZSA9IFVua25vd247CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50
KTsKICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50
KTsKQEAgLTI3MiwxNCArMjc2LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNw
YXRjaEZvcgogCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZGlzYWJsZWQpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgaWYgKG1fYW5jZXN0b3JEaXNhYmxlZFN0YXRlID09IEFuY2VzdG9yRGlzYWJsZWRT
dGF0ZVVua25vd24pCi0gICAgICAgIHVwZGF0ZUFuY2VzdG9yRGlzYWJsZWRTdGF0ZSgpOwotICAg
IGlmIChtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSA9PSBBbmNlc3RvckRpc2FibGVkU3RhdGVEaXNh
YmxlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc0Rp
c2FibGVkRm9ybUNvbnRyb2woKTsKKyAgICByZXR1cm4gbV9kaXNhYmxlZCB8fCBtX2Rpc2FibGVk
QnlBbmNlc3RvckZpZWxkc2V0OwogfQogCiBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6Omlz
UmVxdWlyZWQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmgJKHJldmlzaW9uIDE2NDQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEZvcm1NZXRob2QoY29uc3QgU3RyaW5nJik7CiAgICAgYm9v
bCBmb3JtTm9WYWxpZGF0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBhbmNlc3RvckRpc2FibGVkU3Rh
dGVXYXNDaGFuZ2VkKCk7CisgICAgdm9pZCBzZXRBbmNlc3RvckRpc2FibGVkKGJvb2wgaXNEaXNh
YmxlZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSB7IH0KIApAQCAtMTIwLDYgKzEyMCw4
IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAK
KyAgICBib29sIGRpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0KCkgY29uc3QgeyByZXR1cm4gbV9k
aXNhYmxlZEJ5QW5jZXN0b3JGaWVsZHNldDsgfQorCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwpAQCAtMTU0LDcgKzE1Niw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBIVE1MRm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVu
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRl
KCkgY29uc3Q7CisKKyAgICBib29sIGNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFuY2VzdG9y
KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50JiBhc0hUTUxFbGVtZW50KCkgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gKnRoaXM7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQmIGFzSFRNTEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiAqdGhpczsgfQpAQCAtMTY1LDkgKzE2OCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
UmVhZE9ubHkgOiAxOwogICAgIGJvb2wgbV9pc1JlcXVpcmVkIDogMTsKICAgICBib29sIG1fdmFs
dWVNYXRjaGVzUmVuZGVyZXIgOiAxOworICAgIGJvb2wgbV9kaXNhYmxlZEJ5QW5jZXN0b3JGaWVs
ZHNldCA6IDE7CiAKLSAgICBlbnVtIEFuY2VzdG9yRGlzYWJsZWRTdGF0ZSB7IEFuY2VzdG9yRGlz
YWJsZWRTdGF0ZVVua25vd24sIEFuY2VzdG9yRGlzYWJsZWRTdGF0ZUVuYWJsZWQsIEFuY2VzdG9y
RGlzYWJsZWRTdGF0ZURpc2FibGVkIH07Ci0gICAgbXV0YWJsZSBBbmNlc3RvckRpc2FibGVkU3Rh
dGUgbV9hbmNlc3RvckRpc2FibGVkU3RhdGU7CiAgICAgZW51bSBEYXRhTGlzdEFuY2VzdG9yU3Rh
dGUgeyBVbmtub3duLCBJbnNpZGVEYXRhTGlzdCwgTm90SW5zaWRlRGF0YUxpc3QgfTsKICAgICBt
dXRhYmxlIGVudW0gRGF0YUxpc3RBbmNlc3RvclN0YXRlIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRl
OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjQ0MTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMi0xOSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSBz
aG91bGQgbmV2ZXIgYmUgdW5rbm93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI5MDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbW9yZSB0ZXN0IGNhc2VzLgorCisgICAgICAgICogZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC1kaXNhYmxlZC0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWRpc2FibGVkLTIuaHRtbDoKKwogMjAxNC0w
Mi0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBmaWVsZHNl
dDpkaXNhYmxlZCBmaWVsZHNldCA+IGxlZ2VuZDpmaXJzdC1jaGlsZCBpbnB1dCBzaG91bGQgYmUg
ZGlzYWJsZWQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQt
ZGlzYWJsZWQtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9maWVsZHNldC9maWVsZHNldC1kaXNhYmxlZC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTY0NDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1kaXNh
YmxlZC0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsMjUgQEAgUEFT
UyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZUZpcgogUEFTUyBpc0lucHV0RGlzYWJs
ZWRCeUlkKCJpbnB1dEluc2lkZVNlY29uZExlZ2VuZCIpIGlzIGZhbHNlCiBQQVNTIGlzSW5wdXRE
aXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlTmVzdGVkRmlyc3RMZWdlbmQiKSBpcyBmYWxzZQogUEFT
UyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZUZpcnN0TGVnZW5kV2l0aERpc2FibGVk
T3V0ZXJGaWVsZHNldCIpIGlzIGZhbHNlCisKK2NvbnRlbnREb2N1bWVudCA9IGNyZWF0ZUlmcmFt
ZSgpOworZmllbGRzZXQgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQi
KTsgY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZmllbGRzZXQpOworUEFTUyBpbnB1
dCA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyBmaWVsZHNldC5hcHBl
bmRDaGlsZChpbnB1dCk7IGlzSW5wdXREaXNhYmxlZChpbnB1dCkgaXMgZmFsc2UKK1BBU1MgZmll
bGRzZXQuZGlzYWJsZWQgPSB0cnVlOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIGlzIHRydWUKK1BB
U1MgY29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOyBpc0lucHV0RGlzYWJs
ZWQoaW5wdXQpIGlzIGZhbHNlCitQQVNTIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQp
OyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIGlzIGZhbHNlCitQQVNTIGZpZWxkc2V0LmFwcGVuZENo
aWxkKGlucHV0KTsgaXNJbnB1dERpc2FibGVkKGlucHV0KSBpcyB0cnVlCitmaWVsZHNldDIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpOyBmaWVsZHNldDIuZGlzYWJsZWQgPSB0
cnVlCitpbnB1dDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyBmaWVsZHNldDIu
YXBwZW5kQ2hpbGQoaW5wdXQyKQorUEFTUyBjb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChmaWVsZHNldDIpOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQyKSBpcyB0cnVlCitQQVNTIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZmllbGRzZXQpOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIGlz
IHRydWUKKworc2V0RGlzYWJsZWRPbkFsbEZpZWxkc2V0cyh0cnVlKQorUEFTUyBpc0lucHV0RGlz
YWJsZWRCeUlkKCJpbnB1dE91dHNpZGVMZWdlbmQiKSBpcyB0cnVlCitQQVNTIGlzSW5wdXREaXNh
YmxlZEJ5SWQoImlucHV0SW5zaWRlRmlyc3RMZWdlbmQiKSBpcyBmYWxzZQorUEFTUyBpc0lucHV0
RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZVNlY29uZExlZ2VuZCIpIGlzIHRydWUKK1BBU1MgaXNJ
bnB1dERpc2FibGVkQnlJZCgiaW5wdXRJbnNpZGVOZXN0ZWRGaXJzdExlZ2VuZCIpIGlzIGZhbHNl
CitQQVNTIGlzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlRmlyc3RMZWdlbmRXaXRoRGlz
YWJsZWRPdXRlckZpZWxkc2V0IikgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxk
c2V0L2ZpZWxkc2V0LWRpc2FibGVkLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWRpc2FibGVkLTIuaHRtbAkocmV2aXNpb24gMTY0
NDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1kaXNhYmxl
ZC0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4LDExICsxOCwxNCBAQCBpbnB1dDpkaXNhYmxl
ZCB7IGNvbG9yOiAjNjY2OyB9CiAKIGRlc2NyaXB0aW9uKCJBZGRpdGlvbmFsIHRlc3RzIGZvciBm
aWVsZHNldCBlbGVtZW50IGRpc2FibGluZyBkZXNjZW5kZW50IGlucHV0IGVsZW1lbnRzIik7CiAK
LWZ1bmN0aW9uIGlzSW5wdXREaXNhYmxlZEJ5SWQoaWQpIHsKLSAgICB2YXIgaW5wdXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CitmdW5jdGlvbiBpc0lucHV0RGlzYWJsZWQoaW5wdXQp
IHsKICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShpbnB1dCkuY29sb3IgPT0gJ3JnYigxMDIs
IDEwMiwgMTAyKSc7CiB9CiAKK2Z1bmN0aW9uIGlzSW5wdXREaXNhYmxlZEJ5SWQoaWQpIHsKKyAg
ICByZXR1cm4gaXNJbnB1dERpc2FibGVkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSk7Cit9
CisKIHNob3VsZEJlVHJ1ZSgnaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdXRPdXRzaWRlTGVnZW5k
IiknKTsKIHNob3VsZEJlRmFsc2UoJ2lzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlRmly
c3RMZWdlbmQiKScpOwogc2hvdWxkQmVUcnVlKCdpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dElu
c2lkZVNlY29uZExlZ2VuZCIpJyk7CkBAIC0zMCw3ICszMyw3IEBAIHNob3VsZEJlRmFsc2UoJ2lz
SW5wdXREaXNhYmxlZEJ5SWQoImlucHUKIHNob3VsZEJlVHJ1ZSgnaXNJbnB1dERpc2FibGVkQnlJ
ZCgiaW5wdXRJbnNpZGVGaXJzdExlZ2VuZFdpdGhEaXNhYmxlZE91dGVyRmllbGRzZXQiKScpOwog
CiBmdW5jdGlvbiBzZXREaXNhYmxlZE9uQWxsRmllbGRzZXRzKHZhbHVlKSB7Ci0gICAgdmFyIGZp
ZWxkc2V0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ZpZWxkc2V0Jyk7CisgICAgdmFy
IGZpZWxkc2V0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNjb250YWluZXIgPiBmaWVs
ZHNldCwgYm9keSA+IGZpZWxkc2V0Jyk7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWVsZHNl
dHMubGVuZ3RoOyBpKyspCiAgICAgICAgIGZpZWxkc2V0c1tpXS5kaXNhYmxlZCA9IHZhbHVlOwog
fQpAQCAtNDMsNiArNDYsNDAgQEAgc2hvdWxkQmVGYWxzZSgnaXNJbnB1dERpc2FibGVkQnlJZCgi
aW5wdQogc2hvdWxkQmVGYWxzZSgnaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdXRJbnNpZGVOZXN0
ZWRGaXJzdExlZ2VuZCIpJyk7CiBzaG91bGRCZUZhbHNlKCdpc0lucHV0RGlzYWJsZWRCeUlkKCJp
bnB1dEluc2lkZUZpcnN0TGVnZW5kV2l0aERpc2FibGVkT3V0ZXJGaWVsZHNldCIpJyk7CiAKK2Z1
bmN0aW9uIGNyZWF0ZUlmcmFtZSgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaWZyYW1lIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5l
cicpLmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5oZWFk
LmFwcGVuZENoaWxkKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHkgc3R5bGUnKS5jbG9uZU5v
ZGUodHJ1ZSkpOworICAgIHJldHVybiBpZnJhbWUuY29udGVudERvY3VtZW50OworfQorCitmdW5j
dGlvbiBpbnNlcnROZXdGaWVsZHNldEludG9Cb2R5KGNvbnRlbnREb2N1bWVudCkgeworICAgIGZp
ZWxkc2V0ID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7CisgICAg
Y29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZmllbGRzZXQpOworICAgIHJldHVybiBm
aWVsZHNldDsKK30KKworZGVidWcoJycpOworZXZhbEFuZExvZygnY29udGVudERvY3VtZW50ID0g
Y3JlYXRlSWZyYW1lKCk7Jyk7CitldmFsQW5kTG9nKCdmaWVsZHNldCA9IGNvbnRlbnREb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpOyBjb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChmaWVsZHNldCk7Jyk7CitzaG91bGRCZUZhbHNlKCdpbnB1dCA9IGNvbnRlbnREb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyBmaWVsZHNldC5hcHBlbmRDaGlsZChpbnB1dCk7IGlz
SW5wdXREaXNhYmxlZChpbnB1dCknKTsKK3Nob3VsZEJlVHJ1ZSgnZmllbGRzZXQuZGlzYWJsZWQg
PSB0cnVlOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpJyk7CitzaG91bGRCZUZhbHNlKCdjb250ZW50
RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7IGlzSW5wdXREaXNhYmxlZChpbnB1dCkn
KTsKK3Nob3VsZEJlRmFsc2UoJ2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOyBpc0lu
cHV0RGlzYWJsZWQoaW5wdXQpJyk7CitzaG91bGRCZVRydWUoJ2ZpZWxkc2V0LmFwcGVuZENoaWxk
KGlucHV0KTsgaXNJbnB1dERpc2FibGVkKGlucHV0KScpOworZXZhbEFuZExvZygnZmllbGRzZXQy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTsgZmllbGRzZXQyLmRpc2FibGVk
ID0gdHJ1ZScpOworZXZhbEFuZExvZygnaW5wdXQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW5wdXQiKTsgZmllbGRzZXQyLmFwcGVuZENoaWxkKGlucHV0MiknKTsKK3Nob3VsZEJlVHJ1ZSgn
Y29udGVudERvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZmllbGRzZXQyKTsgaXNJbnB1dERpc2Fi
bGVkKGlucHV0MiknKTsKK3Nob3VsZEJlVHJ1ZSgnZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChm
aWVsZHNldCk7IGlzSW5wdXREaXNhYmxlZChpbnB1dCknKTsKKworZGVidWcoJycpOworZXZhbEFu
ZExvZygnc2V0RGlzYWJsZWRPbkFsbEZpZWxkc2V0cyh0cnVlKScpOworc2hvdWxkQmVUcnVlKCdp
c0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dE91dHNpZGVMZWdlbmQiKScpOworc2hvdWxkQmVGYWxz
ZSgnaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdXRJbnNpZGVGaXJzdExlZ2VuZCIpJyk7CitzaG91
bGRCZVRydWUoJ2lzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlU2Vjb25kTGVnZW5kIikn
KTsKK3Nob3VsZEJlRmFsc2UoJ2lzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlTmVzdGVk
Rmlyc3RMZWdlbmQiKScpOworc2hvdWxkQmVUcnVlKCdpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1
dEluc2lkZUZpcnN0TGVnZW5kV2l0aERpc2FibGVkT3V0ZXJGaWVsZHNldCIpJyk7CisKIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwog
CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224818</attachid>
            <date>2014-02-20 18:49:10 -0800</date>
            <delta_ts>2014-02-20 19:32:04 -0800</delta_ts>
            <desc>Updated per review comments</desc>
            <filename>bug-129084-20140220184940.patch</filename>
            <type>text/plain</type>
            <size>24447</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDQ2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBACisyMDE0LTAyLTIwICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIG1fYW5jZXN0b3JEaXNhYmxlZFN0
YXRlIHNob3VsZCBuZXZlciBiZSB1bmtub3duCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkwODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbiBvcmRlciB0byByZXNvbHZlIHRoZSBidWcgMTI5MDM1LCBh
IHRleHQgZm9ybSBjb250cm9sIGVsZW1lbnRzIG5lZWRzIHRvIHN5bmNocm9ub3VzbHkgY2hhbmdl
CisgICAgICAgIGl0cyBpbm5lciB0ZXh0IGVsZW1lbnQncyBlZGl0YWJpbGl0eSBieSBzZXR0aW5n
IG9yIHVuc2V0dGluZyBjb250ZW50ZWRpdGFibGUgY29udGVudCBhdHRyaWJ1dGUuCisgICAgICAg
IEJlZm9yZSB0aGlzIHBhdGNoLCB3ZSBjb3VsZCBub3QgZG8gdGhpcyBiZWNhdXNlIGVkaXRhYmls
aXR5IG9mIGEgdGV4dCBmb3JtIGNvbnRyb2wgZGVwZW5kZW50IG9uCisgICAgICAgIGl0cyBkaXNh
YmxlZC1uZXNzIHdoaWNoIHdhcyBvbmx5IGNvbXB1dGVkIGxhemlseSB2aWEgdXBkYXRlQW5jZXN0
b3JEaXNhYmxlZFN0YXRlKCkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBIVE1MRmllbGRT
ZXRFbGVtZW50IGFuZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IHVwZGF0ZSB0aGlzIHN0YXRlIHN5
bmNocm9ub3VzbHkuCisgICAgICAgIFRvIGF2b2lkIE8oaykgRE9NIHRyYXZlcnNhbCwgd2hlcmUg
ayBpcyB0aGUgZGVwdGggb2YgdGhlIHRyZWUsIGluIGluc2VydGVkSW50byBhbmQgcmVtb3ZlZEZy
b20gb2YKKyAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCBvbiBtb3N0IHBhZ2VzLCBhIG5l
dyBkb2N1bWVudC1sZXZlbCBmbGFnLCBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50LAor
ICAgICAgICBoYXMgYmVlbiBhZGRlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBkb2N1bWVudCBj
b250YWlucyBhbnkgZGlzYWJsZWQgZmllbGRzZXQgb3Igbm90LgorCisgICAgICAgIEFsc28gcmVu
YW1lZCB0aGUgbWlzbGVhZGluZ2x5IG5hbWVkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCB0byBk
aXNhYmxlZFN0YXRlQ2hhbmdlZCwgYW5kIGFkZGVkCisgICAgICAgIG5ldyBmdW5jdGlvbiBvZiB0
aGUgc2FtZSBuYW1lIChkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQpIHRvIGJlIHVzZWQgYnkgSFRN
TEZpZWxkU2V0RWxlbWVudAorICAgICAgICBmb3Iga2VlcGluZyB0aGUgZG9jdW1lbnQtbGV2ZWwg
ZmxhZyB1cC10by1kYXRlIHVwb24gZGlzYWJsZWQgYXR0cmlidXRlIGNoYW5nZXMuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGlzYWJsZWQtMi5odG1sCisK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OkRvY3VtZW50KTogSW5pdGlhbGl6ZXMgbmV3bHkgYWRkZWQgbV9kaXNhYmxlZEZpZWxkc2V0RWxl
bWVudHNDb3VudC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOiBBc3Nl
cnQgdGhhdCB3ZSd2ZSBkb25lIGhvdXNlIGtlZXBpbmcgcmlnaHQuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzRGlzYWJsZWRGaWVsZHNl
dEVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGREaXNhYmxl
ZEZpZWxkc2V0RWxlbWVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJl
bW92ZURpc2FibGVkRmllbGRzZXRFbGVtZW50KTogQWRkZWQuCisKKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZpZWxkU2V0RWxl
bWVudDo6fkhUTUxGaWVsZFNldEVsZW1lbnQpOiBSZW1vdmVzIGl0c2VsZiBmcm9tIHRoZSBvd25l
ciBkb2N1bWVudC4KKworICAgICAgICAoV2ViQ29yZTo6dXBkYXRlRnJvbUNvbnRyb2xFbGVtZW50
c0FuY2VzdG9yRGlzYWJsZWRTdGF0ZVVuZGVyKTogQWRkZWQuIFVwZGF0ZXMgc3RhcnROb2RlIGFu
ZAorICAgICAgICBpdHMgZGVzY2VuZGFudHMnIGFuY2VzdG9yIGRpc2FibGVkIGZsYWcuIFdlIGRv
bid0IHVwZGF0ZSBjb250cm9scyB1bmRlciBhbm90aGVyIGRpc2FibGVkCisgICAgICAgIGZpZWxk
c2V0IGVsZW1lbnQgc2luY2UgZGlzYWJsZWQtbmVzcyBvZiB0aG9zZSBjb250cm9scyBhcmVuJ3Qg
YWZmZWN0ZWQgYnkgc3RhcnROb2RlLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRF
bGVtZW50OjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQpOiBDYWxsIGFkZERpc2FibGVkRmllbGRz
ZXRFbGVtZW50IGFuZAorICAgICAgICByZW1vdmVEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCB0byB1
cGRhdGUgdGhlIG93bmVyIGRvY3VtZW50J3MgZmxhZy4KKworICAgICAgICAoV2ViQ29yZTo6SFRN
TEZpZWxkU2V0RWxlbWVudDo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQpOiBSZW5hbWVkIGZyb20gZGlz
YWJsZWRBdHRyaWJ1dGVDaGFuZ2VkLiAKKyAgICAgICAgRW5hYmxlIGZvcm0gY29udHJvbCBlbGVt
ZW50cyB1bmRlciB0aGUgZmlyc3QgbGVnZW5kIGVsZW1lbnQgYW5kIGRpc2FibGUgb3IgZW5hYmxl
IG90aGVyCisgICAgICAgIGRlc2NlbmRlbnQgZm9ybSBjb250cm9scyBpbiBhY2NvcmRhbmNlIHdp
dGggdGhlIHByZXNlbmNlIG9mIGRpc2FibGVkIGNvbnRlbnQgYXR0cmlidXRlLgorCisgICAgICAg
IChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOiBVcGRhdGUg
ZGlzYWJsZWQtbmVzcyBvZiBmb3JtIGNvbnRyb2xzIHVuZGVyCisgICAgICAgIGNoaWxkIGxlZ2Vu
ZCBlbGVtZW50cyBiZWNhdXNlIGNvbnRyb2xzIGFyZW4ndCBkaXNhYmxlZCBpbiB0aGUgZmlyc3Qg
bGVnZW5kIGVsZW1lbnQsIGFuZCBhZGRpbmcKKyAgICAgICAgb3IgcmVtb3ZpbmcgY2hpbGQgZWxl
bWVudHMgbWF5IGhhdmUgY2hhbmdlZCB0aGUgZmlyc3QgbGVnZW5kIGVsZW1lbnQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KTog
VXBkYXRlIHRoZSBmbGFnIG9uIHRoZSBvd25lciBkb2N1bWVudC4KKyAgICAgICAgKiBodG1sL0hU
TUxGaWVsZFNldEVsZW1lbnQuaDoKKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFuY2VzdG9yKTogUmV0dXJucyBib29s
ZWFuIGluc3RlYWQgb2YKKyAgICAgICAgdXBkYXRpbmcgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUg
aW50ZXJuYWxseS4gQWxzbyByZW5hbWVkIGZyb20gdXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRl
LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRBbmNlc3Rv
ckRpc2FibGVkKTogUmVwbGFjZWQgYW5jZXN0b3JEaXNhYmxlZFN0YXRlV2FzQ2hhbmdlZC4KKyAg
ICAgICAgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQg
YW5kIGNhbGxzIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCBhcyBuZWVkZWQuCisKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc2FibGVkQXR0cmlidXRlQ2hhbmdl
ZCk6IEFkZGVkLiBDYWxscyBkaXNhYmxlZFN0YXRlQ2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc2FibGVkU3RhdGVDaGFuZ2VkKTogUmVuYW1lZCBm
cm9tIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZC4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTEZv
cm1Db250cm9sRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKTogVXBkYXRlIG1fZGlzYWJsZWRCeUFuY2Vz
dG9yRmllbGRzZXQgaWYgdGhlcmUgaXMKKyAgICAgICAgYSBwb3NzaWJpbGl0eSAoaS5lLiB0aGUg
ZG9jdW1lbnQgY29udGFpbnMgYW55IGRpc2FibGVkIGZpZWxkc2V0IGVsZW1lbnQpIHRoYXQgdGhp
cyBmb3JtIGNvbnRyb2wKKyAgICAgICAgaXMgaW5zZXJ0ZWQgdW5kZXIgYSBkaXNhYmxlZCBmaWVs
ZHNldCBlbGVtZW50LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50
OjpyZW1vdmVkRnJvbSk6IElmIHRoaXMgZm9ybSBjb250cm9sIGVsZW1lbnQgaXMgbm90IGRpc2Fi
bGVkIGJ5CisgICAgICAgIGEgZmllbGRzZXQgYW5jZXN0b3IsIHRoZW4gdGhlcmUgaXMgbm90aGlu
ZyB0byBkby4gSWYgaXQgaXMsIHRoZW4gY2hlY2sgdG8gc2VlIGlmIHRoZSBlbGVtZW50IGlzCisg
ICAgICAgIHN0aWxsIGRpc2FibGVkIG5vdyB0aGF0IHdlJ3ZlIGxvc3Qgc29tZSBhbmNlc3RvcnMu
CisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzRGlzYWJsZWRG
b3JtQ29udHJvbCk6IE5vIGxvbmdlciB1cGRhdGVzIG1fYW5jZXN0b3JEaXNhYmxlZFN0YXRlCisg
ICAgICAgIGxhemlseSBzaW5jZSBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0IGlzIG5ldmVy
IGFtYmlndW91cyBub3cuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc2FibGVkQnlB
bmNlc3RvckZpZWxkc2V0KTogQWRkZWQuCisKIDIwMTQtMDItMjAgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgdGhlIGltYWdlIGNvbnRyb2xzIHNldHRp
bmcgdG8gU2V0dGluZ3MuaW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24g
MTY0NDAxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAyLDYgKzUwMiw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IFUKICAgICAsIG1faW5wdXRDdXJzb3IoRW1wdHlJbnB1dEN1cnNvcjo6Y3JlYXRlKCkpCiAj
ZW5kaWYKICAgICAsIG1fZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXIodGhpcywgJkRvY3Vt
ZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVkKQorICAgICwgbV9kaXNhYmxl
ZEZpZWxkc2V0RWxlbWVudHNDb3VudCgwKQogICAgICwgbV9oYXNJbmplY3RlZFBsdWdJbnNTY3Jp
cHQoZmFsc2UpCiAgICAgLCBtX3JlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZChmYWxzZSkKIHsKQEAg
LTU3Miw2ICs1NzMsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBBU1NFUlQoIW1faW5Q
YWdlQ2FjaGUpOwogICAgIEFTU0VSVChtX3Jhbmdlcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCgh
bV9wYXJlbnRUcmVlU2NvcGUpOworICAgIEFTU0VSVCghbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVu
dHNDb3VudCk7CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJ
T1MpCiAgICAgbV9kZXZpY2VNb3Rpb25DbGllbnQtPmRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0
cm95ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxNjQ0MDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzOCw2ICsx
MjM4LDkgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGRpZEFzc29jaWF0ZUZvcm1Db250
cm9sKEVsZW1lbnQqKTsKKyAgICBib29sIGhhc0Rpc2FibGVkRmllbGRzZXRFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudDsgfQorICAgIHZvaWQg
YWRkRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKSB7IG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRz
Q291bnQrKzsgfQorICAgIHZvaWQgcmVtb3ZlRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKSB7IEFT
U0VSVChtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50KTsgbV9kaXNhYmxlZEZpZWxkc2V0
RWxlbWVudHNDb3VudC0tOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2ln
bmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBvdmVycmlkZTsKIApAQCAtMTY3NSw2ICsx
Njc4LDcgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPERvY3VtZW50PiBtX2RpZEFzc29jaWF0ZUZv
cm1Db250cm9sc1RpbWVyOwogICAgIEhhc2hTZXQ8UmVmUHRyPEVsZW1lbnQ+PiBtX2Fzc29jaWF0
ZWRGb3JtQ29udHJvbHM7CisgICAgdW5zaWduZWQgbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHND
b3VudDsKIAogICAgIGJvb2wgbV9oYXNJbmplY3RlZFBsdWdJbnNTY3JpcHQ7CiAgICAgYm9vbCBt
X3JlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRmllbGRTZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTY0NDA3KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMzAg
KzQ0LDg4IEBAIGlubGluZSBIVE1MRmllbGRTZXRFbGVtZW50OjpIVE1MRmllbGRTZXQKICAgICBB
U1NFUlQoaGFzVGFnTmFtZShmaWVsZHNldFRhZykpOwogfQogCitIVE1MRmllbGRTZXRFbGVtZW50
Ojp+SFRNTEZpZWxkU2V0RWxlbWVudCgpCit7CisgICAgaWYgKGhhc0F0dHJpYnV0ZShkaXNhYmxl
ZEF0dHIpKQorICAgICAgICBkb2N1bWVudCgpLnJlbW92ZURpc2FibGVkRmllbGRzZXRFbGVtZW50
KCk7Cit9CisKIFBhc3NSZWZQdHI8SFRNTEZpZWxkU2V0RWxlbWVudD4gSFRNTEZpZWxkU2V0RWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SFRNTEZpZWxkU2V0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkpOwogfQogCi12b2lk
IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmludmFsaWRhdGVEaXNhYmxlZFN0YXRlVW5kZXIoRWxlbWVu
dCogYmFzZSkKK3N0YXRpYyB2b2lkIHVwZGF0ZUZyb21Db250cm9sRWxlbWVudHNBbmNlc3RvckRp
c2FibGVkU3RhdGVVbmRlcihIVE1MRWxlbWVudCYgc3RhcnROb2RlLCBib29sIGlzRGlzYWJsZWQp
CiB7Ci0gICAgZm9yIChhdXRvJiBjb250cm9sIDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTEZvcm1D
b250cm9sRWxlbWVudD4oKmJhc2UpKQotICAgICAgICBjb250cm9sLmFuY2VzdG9yRGlzYWJsZWRT
dGF0ZVdhc0NoYW5nZWQoKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBjb250cm9sOwor
ICAgIGlmIChpc0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoc3RhcnROb2RlKSkKKyAgICAgICAgY29u
dHJvbCA9ICZ0b0hUTUxGb3JtQ29udHJvbEVsZW1lbnQoc3RhcnROb2RlKTsKKyAgICBlbHNlCisg
ICAgICAgIGNvbnRyb2wgPSBUcmF2ZXJzYWw8SFRNTEZvcm1Db250cm9sRWxlbWVudD46OmZpcnN0
V2l0aGluKCZzdGFydE5vZGUpOworICAgIHdoaWxlIChjb250cm9sKSB7CisgICAgICAgIGNvbnRy
b2wtPnNldEFuY2VzdG9yRGlzYWJsZWQoaXNEaXNhYmxlZCk7CisgICAgICAgIC8vIERvbid0IGNh
bGwgc2V0QW5jZXN0b3JEaXNhYmxlZChmYWxzZSkgb24gZm9ybSBjb250b3JscyBpbnNpZGUgZGlz
YWJsZWQgZmllbGRzZXRzLgorICAgICAgICBpZiAoaXNIVE1MRmllbGRTZXRFbGVtZW50KGNvbnRy
b2wpICYmIGNvbnRyb2wtPmhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpKQorICAgICAgICAgICAg
Y29udHJvbCA9IFRyYXZlcnNhbDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Pjo6bmV4dFNraXBwaW5n
Q2hpbGRyZW4oY29udHJvbCwgJnN0YXJ0Tm9kZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGNvbnRyb2wgPSBUcmF2ZXJzYWw8SFRNTEZvcm1Db250cm9sRWxlbWVudD46Om5leHQoY29udHJv
bCwgJnN0YXJ0Tm9kZSk7CisgICAgfQogfQogCiB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmRp
c2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpCiB7Ci0gICAgLy8gVGhpcyBlbGVtZW50IG11c3QgYmUg
dXBkYXRlZCBiZWZvcmUgdGhlIHN0eWxlIG9mIG5vZGVzIGluIGl0cyBzdWJ0cmVlIGdldHMgcmVj
YWxjdWxhdGVkLgorICAgIGlmIChoYXNBdHRyaWJ1dGUoZGlzYWJsZWRBdHRyKSkKKyAgICAgICAg
ZG9jdW1lbnQoKS5hZGREaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpOworICAgIGVsc2UKKyAgICAg
ICAgZG9jdW1lbnQoKS5yZW1vdmVEaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpOworCiAgICAgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgaW52
YWxpZGF0ZURpc2FibGVkU3RhdGVVbmRlcih0aGlzKTsKK30KKwordm9pZCBIVE1MRmllbGRTZXRF
bGVtZW50OjpkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpCit7CisgICAgLy8gVGhpcyBlbGVtZW50IG11
c3QgYmUgdXBkYXRlZCBiZWZvcmUgdGhlIHN0eWxlIG9mIG5vZGVzIGluIGl0cyBzdWJ0cmVlIGdl
dHMgcmVjYWxjdWxhdGVkLgorICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc2FibGVkU3Rh
dGVDaGFuZ2VkKCk7CisKKyAgICBpZiAoZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYm9vbCB0aGlzRmllbGRzZXRJc0Rpc2FibGVkID0gaGFzQXR0
cmlidXRlKGRpc2FibGVkQXR0cik7CisgICAgYm9vbCBoYXNTZWVuRmlyc3RMZWdlbmRFbGVtZW50
ID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBjb250cm9sIDogY2hpbGRyZW5PZlR5cGU8SFRNTEVs
ZW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoIWhhc1NlZW5GaXJzdExlZ2VuZEVsZW1lbnQg
JiYgaXNIVE1MTGVnZW5kRWxlbWVudChjb250cm9sKSkgeworICAgICAgICAgICAgaGFzU2VlbkZp
cnN0TGVnZW5kRWxlbWVudCA9IHRydWU7CisgICAgICAgICAgICB1cGRhdGVGcm9tQ29udHJvbEVs
ZW1lbnRzQW5jZXN0b3JEaXNhYmxlZFN0YXRlVW5kZXIoY29udHJvbCwgZmFsc2UgLyogaXNEaXNh
YmxlZCAqLyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICB1cGRh
dGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0b3JEaXNhYmxlZFN0YXRlVW5kZXIoY29udHJvbCwg
dGhpc0ZpZWxkc2V0SXNEaXNhYmxlZCk7CisgICAgfQogfQogCiB2b2lkIEhUTUxGaWVsZFNldEVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogICAg
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIGlm
ICghaGFzQXR0cmlidXRlKGRpc2FibGVkQXR0cikpCisgICAgICAgIHJldHVybjsKIAotICAgIGZv
ciAoYXV0byYgbGVnZW5kIDogY2hpbGRyZW5PZlR5cGU8SFRNTExlZ2VuZEVsZW1lbnQ+KCp0aGlz
KSkKLSAgICAgICAgaW52YWxpZGF0ZURpc2FibGVkU3RhdGVVbmRlcigmbGVnZW5kKTsKKyAgICBI
VE1MTGVnZW5kRWxlbWVudCogbGVnZW5kID0gVHJhdmVyc2FsPEhUTUxMZWdlbmRFbGVtZW50Pjo6
Zmlyc3RDaGlsZCh0aGlzKTsKKyAgICBpZiAoIWxlZ2VuZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHRoZSBmaXJzdCBsZWdlbmQgZWxlbWVudCAoaW4gd2hp
Y2ggZm9ybSBjb250b3JscyBhcmUgbm90IGRpc2FibGVkIGJ5IHRoaXMgZWxlbWVudCkgY2hhbmdp
bmcgaGVyZS4KKyAgICB1cGRhdGVGcm9tQ29udHJvbEVsZW1lbnRzQW5jZXN0b3JEaXNhYmxlZFN0
YXRlVW5kZXIoKmxlZ2VuZCwgZmFsc2UgLyogaXNEaXNhYmxlZCAqLyk7CisgICAgd2hpbGUgKChs
ZWdlbmQgPSBUcmF2ZXJzYWw8SFRNTExlZ2VuZEVsZW1lbnQ+OjpuZXh0U2libGluZyhsZWdlbmQp
KSkKKyAgICAgICAgdXBkYXRlRnJvbUNvbnRyb2xFbGVtZW50c0FuY2VzdG9yRGlzYWJsZWRTdGF0
ZVVuZGVyKCpsZWdlbmQsIHRydWUpOworfQorCit2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKK3sKKyAgICBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChvbGREb2N1bWVudCk7CisgICAg
aWYgKGhhc0F0dHJpYnV0ZShkaXNhYmxlZEF0dHIpKSB7CisgICAgICAgIGlmIChvbGREb2N1bWVu
dCkKKyAgICAgICAgICAgIG9sZERvY3VtZW50LT5yZW1vdmVEaXNhYmxlZEZpZWxkc2V0RWxlbWVu
dCgpOworICAgICAgICBkb2N1bWVudCgpLmFkZERpc2FibGVkRmllbGRzZXRFbGVtZW50KCk7Cisg
ICAgfQogfQogCiBib29sIEhUTUxGaWVsZFNldEVsZW1lbnQ6OnN1cHBvcnRzRm9jdXMoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgJKHJldmlz
aW9uIDE2NDQwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MiwxOSArNDIsMjEgQEAgcHVibGljOgogICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGVk
QXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEhUTUxGaWVsZFNl
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50
Kik7CisgICAgfkhUTUxGaWVsZFNldEVsZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Vu
dW1lcmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0
eWxlPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250
cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZWNhbGNXaWxsVmFs
aWRhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAK
LSAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRGlzYWJsZWRTdGF0ZVVuZGVyKEVsZW1lbnQqKTsK
ICAgICB2b2lkIHJlZnJlc2hFbGVtZW50c0lmTmVlZGVkKCkgY29uc3Q7CiAKICAgICBtdXRhYmxl
IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiBtX2Fzc29jaWF0ZWRFbGVtZW50czsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAko
cmV2aXNpb24gMTY0NDA3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpIVE1MRm9ybUNvbnRyb2xFCiAgICAgLCBtX2lzUmVhZE9ubHkoZmFsc2UpCiAg
ICAgLCBtX2lzUmVxdWlyZWQoZmFsc2UpCiAgICAgLCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZh
bHNlKQotICAgICwgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUoQW5jZXN0b3JEaXNhYmxlZFN0YXRl
VW5rbm93bikKKyAgICAsIG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQoZmFsc2UpCiAgICAg
LCBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZShVbmtub3duKQogICAgICwgbV93aWxsVmFsaWRhdGVJ
bml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fd2lsbFZhbGlkYXRlKHRydWUpCkBAIC05OSwyNSAr
OTksMjcgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpmb3JtTm9WYWxpZAogICAgIHJl
dHVybiBmYXN0SGFzQXR0cmlidXRlKGZvcm1ub3ZhbGlkYXRlQXR0cik7CiB9CiAKLXZvaWQgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRlKCkgY29uc3QK
K2Jvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y29tcHV0ZUlzRGlzYWJsZWRCeUZpZWxkc2V0
QW5jZXN0b3IoKSBjb25zdAogewogICAgIEVsZW1lbnQqIHByZXZpb3VzQW5jZXN0b3IgPSBudWxs
cHRyOwogICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3IgPSBwYXJlbnRFbGVtZW50KCk7IGFuY2Vz
dG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgaWYg
KGlzSFRNTEZpZWxkU2V0RWxlbWVudChhbmNlc3RvcikgJiYgYW5jZXN0b3ItPmhhc0F0dHJpYnV0
ZShkaXNhYmxlZEF0dHIpKSB7CiAgICAgICAgICAgICBIVE1MRmllbGRTZXRFbGVtZW50JiBmaWVs
ZFNldEFuY2VzdG9yID0gdG9IVE1MRmllbGRTZXRFbGVtZW50KCphbmNlc3Rvcik7CiAgICAgICAg
ICAgICBib29sIGlzSW5GaXJzdExlZ2VuZCA9IHByZXZpb3VzQW5jZXN0b3IgJiYgaXNIVE1MTGVn
ZW5kRWxlbWVudChwcmV2aW91c0FuY2VzdG9yKSAmJiBwcmV2aW91c0FuY2VzdG9yID09IGZpZWxk
U2V0QW5jZXN0b3IubGVnZW5kKCk7Ci0gICAgICAgICAgICBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0
ZSA9IGlzSW5GaXJzdExlZ2VuZCA/IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZUVuYWJsZWQgOiBBbmNl
c3RvckRpc2FibGVkU3RhdGVEaXNhYmxlZDsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIHJldHVybiAhaXNJbkZpcnN0TGVnZW5kOwogICAgICAgICB9CiAgICAgICAgIHByZXZpb3Vz
QW5jZXN0b3IgPSBhbmNlc3RvcjsKICAgICB9Ci0gICAgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUg
PSBBbmNlc3RvckRpc2FibGVkU3RhdGVFbmFibGVkOworICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjphbmNlc3RvckRpc2FibGVkU3RhdGVXYXNDaGFu
Z2VkKCkKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QW5jZXN0b3JEaXNhYmxlZChi
b29sIGlzRGlzYWJsZWQpCiB7Ci0gICAgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUgPSBBbmNlc3Rv
ckRpc2FibGVkU3RhdGVVbmtub3duOwotICAgIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOwor
ICAgIEFTU0VSVChjb21wdXRlSXNEaXNhYmxlZEJ5RmllbGRzZXRBbmNlc3RvcigpID09IGlzRGlz
YWJsZWQpOworICAgIGJvb2wgb2xkVmFsdWUgPSBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0
OworICAgIG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQgPSBpc0Rpc2FibGVkOworICAgIGlm
IChvbGRWYWx1ZSAhPSBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0KQorICAgICAgICBkaXNh
YmxlZFN0YXRlQ2hhbmdlZCgpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCkBAIC0xNTQsNiArMTU2LDExIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cGFyc2VBdHRyaWIKIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZEF0
dHJpYnV0ZUNoYW5nZWQoKQogeworICAgIGRpc2FibGVkU3RhdGVDaGFuZ2VkKCk7Cit9CisKK3Zv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKQorewogICAg
IHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKICAgICBkaWRBZmZlY3RTZWxlY3RvcihBZmZl
Y3RlZFNlbGVjdG9yRGlzYWJsZWQgfCBBZmZlY3RlZFNlbGVjdG9yRW5hYmxlZCk7CiAgICAgaWYg
KHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNBcHBlYXJhbmNlKCkpCkBAIC0y
MzEsNyArMjM4LDggQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaWRNb3ZlVG9OZQog
CiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBt
X2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSA9IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZVVua25vd247Cisg
ICAgaWYgKGRvY3VtZW50KCkuaGFzRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKSkKKyAgICAgICAg
c2V0QW5jZXN0b3JEaXNhYmxlZChjb21wdXRlSXNEaXNhYmxlZEJ5RmllbGRzZXRBbmNlc3Rvcigp
KTsKICAgICBtX2RhdGFMaXN0QW5jZXN0b3JTdGF0ZSA9IFVua25vd247CiAgICAgc2V0TmVlZHNX
aWxsVmFsaWRhdGVDaGVjaygpOwogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0
aW9uUG9pbnQpOwpAQCAtMjQyLDcgKzI1MCw4IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlv
blJlcXVlc3QgSFRNTEYKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVtb3ZlZEZyb20o
Q29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgbV92YWxpZGF0aW9uTWVzc2Fn
ZSA9IG51bGxwdHI7Ci0gICAgbV9hbmNlc3RvckRpc2FibGVkU3RhdGUgPSBBbmNlc3RvckRpc2Fi
bGVkU3RhdGVVbmtub3duOworICAgIGlmIChtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0KQor
ICAgICAgICBzZXRBbmNlc3RvckRpc2FibGVkKGNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFu
Y2VzdG9yKCkpOwogICAgIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlID0gVW5rbm93bjsKICAgICBI
VE1MRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwogICAgIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cmVtb3ZlZEZyb20oaW5zZXJ0aW9uUG9pbnQpOwpAQCAtMjcyLDE0ICsyODEs
NyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9yCiAKIGJvb2wgSFRN
TEZvcm1Db250cm9sRWxlbWVudDo6aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3QKIHsKLSAg
ICBpZiAobV9kaXNhYmxlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAobV9hbmNl
c3RvckRpc2FibGVkU3RhdGUgPT0gQW5jZXN0b3JEaXNhYmxlZFN0YXRlVW5rbm93bikKLSAgICAg
ICAgdXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRlKCk7Ci0gICAgaWYgKG1fYW5jZXN0b3JEaXNh
YmxlZFN0YXRlID09IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZURpc2FibGVkKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
OworICAgIHJldHVybiBtX2Rpc2FibGVkIHx8IG1fZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQ7
CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2
aXNpb24gMTY0NDAxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Rm9ybU1ldGhvZChjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGZvcm1Ob1ZhbGlkYXRlKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIGFuY2VzdG9yRGlzYWJsZWRTdGF0ZVdhc0NoYW5nZWQoKTsKKyAg
ICB2b2lkIHNldEFuY2VzdG9yRGlzYWJsZWQoYm9vbCBpc0Rpc2FibGVkKTsKIAogICAgIHZpcnR1
YWwgdm9pZCByZXNldCgpIHsgfQogCkBAIC0xMjAsOSArMTIwLDEyIEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAKKyAgICBib29sIGRpc2FibGVk
QnlBbmNlc3RvckZpZWxkc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZEJ5QW5jZXN0b3JG
aWVsZHNldDsgfQorCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVk
QXR0cmlidXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdl
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSYpIG92ZXJyaWRlOwpAQCAtMTU0LDcgKzE1Nyw4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBIVE1MRm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIGlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgdXBkYXRlQW5jZXN0b3JEaXNhYmxlZFN0YXRlKCkgY29uc3Q7CisKKyAgICBi
b29sIGNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFuY2VzdG9yKCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIEhUTUxFbGVtZW50JiBhc0hUTUxFbGVtZW50KCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1
cm4gKnRoaXM7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGFz
SFRNTEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiAqdGhpczsgfQpAQCAt
MTY1LDkgKzE2OSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUmVhZE9ubHkgOiAxOwogICAg
IGJvb2wgbV9pc1JlcXVpcmVkIDogMTsKICAgICBib29sIG1fdmFsdWVNYXRjaGVzUmVuZGVyZXIg
OiAxOworICAgIGJvb2wgbV9kaXNhYmxlZEJ5QW5jZXN0b3JGaWVsZHNldCA6IDE7CiAKLSAgICBl
bnVtIEFuY2VzdG9yRGlzYWJsZWRTdGF0ZSB7IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZVVua25vd24s
IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZUVuYWJsZWQsIEFuY2VzdG9yRGlzYWJsZWRTdGF0ZURpc2Fi
bGVkIH07Ci0gICAgbXV0YWJsZSBBbmNlc3RvckRpc2FibGVkU3RhdGUgbV9hbmNlc3RvckRpc2Fi
bGVkU3RhdGU7CiAgICAgZW51bSBEYXRhTGlzdEFuY2VzdG9yU3RhdGUgeyBVbmtub3duLCBJbnNp
ZGVEYXRhTGlzdCwgTm90SW5zaWRlRGF0YUxpc3QgfTsKICAgICBtdXRhYmxlIGVudW0gRGF0YUxp
c3RBbmNlc3RvclN0YXRlIG1fZGF0YUxpc3RBbmNlc3RvclN0YXRlOwogCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNjQ0MTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxNC0wMi0xOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KKworICAgICAgICBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSBzaG91bGQgbmV2ZXIgYmUgdW5r
bm93bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5
MDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgbW9yZSB0ZXN0IGNhc2VzLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9maWVsZHNldC9maWVs
ZHNldC1kaXNhYmxlZC0yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2ZpZWxk
c2V0L2ZpZWxkc2V0LWRpc2FibGVkLTIuaHRtbDoKKwogMjAxNC0wMi0xOSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBmaWVsZHNldDpkaXNhYmxlZCBmaWVsZHNl
dCA+IGxlZ2VuZDpmaXJzdC1jaGlsZCBpbnB1dCBzaG91bGQgYmUgZGlzYWJsZWQKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvZmllbGRzZXQvZmllbGRzZXQtZGlzYWJsZWQtMi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVs
ZHNldC1kaXNhYmxlZC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTY0NDA3KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1kaXNhYmxlZC0yLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsMjUgQEAgUEFTUyBpc0lucHV0RGlzYWJsZWRC
eUlkKCJpbnB1dEluc2lkZUZpcgogUEFTUyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lk
ZVNlY29uZExlZ2VuZCIpIGlzIGZhbHNlCiBQQVNTIGlzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0
SW5zaWRlTmVzdGVkRmlyc3RMZWdlbmQiKSBpcyBmYWxzZQogUEFTUyBpc0lucHV0RGlzYWJsZWRC
eUlkKCJpbnB1dEluc2lkZUZpcnN0TGVnZW5kV2l0aERpc2FibGVkT3V0ZXJGaWVsZHNldCIpIGlz
IGZhbHNlCisKK2NvbnRlbnREb2N1bWVudCA9IGNyZWF0ZUlmcmFtZSgpOworZmllbGRzZXQgPSBj
b250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTsgY29udGVudERvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZmllbGRzZXQpOworUEFTUyBpbnB1dCA9IGNvbnRlbnREb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyBmaWVsZHNldC5hcHBlbmRDaGlsZChpbnB1dCk7IGlz
SW5wdXREaXNhYmxlZChpbnB1dCkgaXMgZmFsc2UKK1BBU1MgZmllbGRzZXQuZGlzYWJsZWQgPSB0
cnVlOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIGlzIHRydWUKK1BBU1MgY29udGVudERvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIGlzIGZhbHNl
CitQQVNTIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOyBpc0lucHV0RGlzYWJsZWQo
aW5wdXQpIGlzIGZhbHNlCitQQVNTIGZpZWxkc2V0LmFwcGVuZENoaWxkKGlucHV0KTsgaXNJbnB1
dERpc2FibGVkKGlucHV0KSBpcyB0cnVlCitmaWVsZHNldDIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJmaWVsZHNldCIpOyBmaWVsZHNldDIuZGlzYWJsZWQgPSB0cnVlCitpbnB1dDIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOyBmaWVsZHNldDIuYXBwZW5kQ2hpbGQoaW5wdXQy
KQorUEFTUyBjb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaWVsZHNldDIpOyBpc0lu
cHV0RGlzYWJsZWQoaW5wdXQyKSBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZmllbGRzZXQpOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIGlzIHRydWUKKworc2V0RGlzYWJs
ZWRPbkFsbEZpZWxkc2V0cyh0cnVlKQorUEFTUyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dE91
dHNpZGVMZWdlbmQiKSBpcyB0cnVlCitQQVNTIGlzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0SW5z
aWRlRmlyc3RMZWdlbmQiKSBpcyBmYWxzZQorUEFTUyBpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1
dEluc2lkZVNlY29uZExlZ2VuZCIpIGlzIHRydWUKK1BBU1MgaXNJbnB1dERpc2FibGVkQnlJZCgi
aW5wdXRJbnNpZGVOZXN0ZWRGaXJzdExlZ2VuZCIpIGlzIGZhbHNlCitQQVNTIGlzSW5wdXREaXNh
YmxlZEJ5SWQoImlucHV0SW5zaWRlRmlyc3RMZWdlbmRXaXRoRGlzYWJsZWRPdXRlckZpZWxkc2V0
IikgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0L2ZpZWxkc2V0LWRpc2Fi
bGVkLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpZWxkc2V0
L2ZpZWxkc2V0LWRpc2FibGVkLTIuaHRtbAkocmV2aXNpb24gMTY0NDA3KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9maWVsZHNldC9maWVsZHNldC1kaXNhYmxlZC0yLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTE4LDExICsxOCwxNCBAQCBpbnB1dDpkaXNhYmxlZCB7IGNvbG9yOiAjNjY2OyB9
CiAKIGRlc2NyaXB0aW9uKCJBZGRpdGlvbmFsIHRlc3RzIGZvciBmaWVsZHNldCBlbGVtZW50IGRp
c2FibGluZyBkZXNjZW5kZW50IGlucHV0IGVsZW1lbnRzIik7CiAKLWZ1bmN0aW9uIGlzSW5wdXRE
aXNhYmxlZEJ5SWQoaWQpIHsKLSAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZChpZCk7CitmdW5jdGlvbiBpc0lucHV0RGlzYWJsZWQoaW5wdXQpIHsKICAgICByZXR1cm4gZ2V0
Q29tcHV0ZWRTdHlsZShpbnB1dCkuY29sb3IgPT0gJ3JnYigxMDIsIDEwMiwgMTAyKSc7CiB9CiAK
K2Z1bmN0aW9uIGlzSW5wdXREaXNhYmxlZEJ5SWQoaWQpIHsKKyAgICByZXR1cm4gaXNJbnB1dERp
c2FibGVkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSk7Cit9CisKIHNob3VsZEJlVHJ1ZSgn
aXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdXRPdXRzaWRlTGVnZW5kIiknKTsKIHNob3VsZEJlRmFs
c2UoJ2lzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlRmlyc3RMZWdlbmQiKScpOwogc2hv
dWxkQmVUcnVlKCdpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZVNlY29uZExlZ2VuZCIp
Jyk7CkBAIC0zMCw3ICszMyw3IEBAIHNob3VsZEJlRmFsc2UoJ2lzSW5wdXREaXNhYmxlZEJ5SWQo
ImlucHUKIHNob3VsZEJlVHJ1ZSgnaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdXRJbnNpZGVGaXJz
dExlZ2VuZFdpdGhEaXNhYmxlZE91dGVyRmllbGRzZXQiKScpOwogCiBmdW5jdGlvbiBzZXREaXNh
YmxlZE9uQWxsRmllbGRzZXRzKHZhbHVlKSB7Ci0gICAgdmFyIGZpZWxkc2V0cyA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ZpZWxkc2V0Jyk7CisgICAgdmFyIGZpZWxkc2V0cyA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNjb250YWluZXIgPiBmaWVsZHNldCwgYm9keSA+IGZpZWxk
c2V0Jyk7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWVsZHNldHMubGVuZ3RoOyBpKyspCiAg
ICAgICAgIGZpZWxkc2V0c1tpXS5kaXNhYmxlZCA9IHZhbHVlOwogfQpAQCAtNDMsNiArNDYsNDAg
QEAgc2hvdWxkQmVGYWxzZSgnaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdQogc2hvdWxkQmVGYWxz
ZSgnaXNJbnB1dERpc2FibGVkQnlJZCgiaW5wdXRJbnNpZGVOZXN0ZWRGaXJzdExlZ2VuZCIpJyk7
CiBzaG91bGRCZUZhbHNlKCdpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZUZpcnN0TGVn
ZW5kV2l0aERpc2FibGVkT3V0ZXJGaWVsZHNldCIpJyk7CiAKK2Z1bmN0aW9uIGNyZWF0ZUlmcmFt
ZSgpIHsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpLmFwcGVuZENoaWxkKGlm
cmFtZSk7CisgICAgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHkgc3R5bGUnKS5jbG9uZU5vZGUodHJ1ZSkpOworICAgIHJl
dHVybiBpZnJhbWUuY29udGVudERvY3VtZW50OworfQorCitmdW5jdGlvbiBpbnNlcnROZXdGaWVs
ZHNldEludG9Cb2R5KGNvbnRlbnREb2N1bWVudCkgeworICAgIGZpZWxkc2V0ID0gY29udGVudERv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7CisgICAgY29udGVudERvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZmllbGRzZXQpOworICAgIHJldHVybiBmaWVsZHNldDsKK30KKworZGVi
dWcoJycpOworZXZhbEFuZExvZygnY29udGVudERvY3VtZW50ID0gY3JlYXRlSWZyYW1lKCk7Jyk7
CitldmFsQW5kTG9nKCdmaWVsZHNldCA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJm
aWVsZHNldCIpOyBjb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaWVsZHNldCk7Jyk7
CitzaG91bGRCZUZhbHNlKCdpbnB1dCA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
bnB1dCIpOyBmaWVsZHNldC5hcHBlbmRDaGlsZChpbnB1dCk7IGlzSW5wdXREaXNhYmxlZChpbnB1
dCknKTsKK3Nob3VsZEJlVHJ1ZSgnZmllbGRzZXQuZGlzYWJsZWQgPSB0cnVlOyBpc0lucHV0RGlz
YWJsZWQoaW5wdXQpJyk7CitzaG91bGRCZUZhbHNlKCdjb250ZW50RG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChpbnB1dCk7IGlzSW5wdXREaXNhYmxlZChpbnB1dCknKTsKK3Nob3VsZEJlRmFsc2Uo
J2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXQpOyBpc0lucHV0RGlzYWJsZWQoaW5wdXQp
Jyk7CitzaG91bGRCZVRydWUoJ2ZpZWxkc2V0LmFwcGVuZENoaWxkKGlucHV0KTsgaXNJbnB1dERp
c2FibGVkKGlucHV0KScpOworZXZhbEFuZExvZygnZmllbGRzZXQyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZmllbGRzZXQiKTsgZmllbGRzZXQyLmRpc2FibGVkID0gdHJ1ZScpOworZXZhbEFu
ZExvZygnaW5wdXQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsgZmllbGRzZXQy
LmFwcGVuZENoaWxkKGlucHV0MiknKTsKK3Nob3VsZEJlVHJ1ZSgnY29udGVudERvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZmllbGRzZXQyKTsgaXNJbnB1dERpc2FibGVkKGlucHV0MiknKTsKK3No
b3VsZEJlVHJ1ZSgnZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaWVsZHNldCk7IGlzSW5wdXRE
aXNhYmxlZChpbnB1dCknKTsKKworZGVidWcoJycpOworZXZhbEFuZExvZygnc2V0RGlzYWJsZWRP
bkFsbEZpZWxkc2V0cyh0cnVlKScpOworc2hvdWxkQmVUcnVlKCdpc0lucHV0RGlzYWJsZWRCeUlk
KCJpbnB1dE91dHNpZGVMZWdlbmQiKScpOworc2hvdWxkQmVGYWxzZSgnaXNJbnB1dERpc2FibGVk
QnlJZCgiaW5wdXRJbnNpZGVGaXJzdExlZ2VuZCIpJyk7CitzaG91bGRCZVRydWUoJ2lzSW5wdXRE
aXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlU2Vjb25kTGVnZW5kIiknKTsKK3Nob3VsZEJlRmFsc2Uo
J2lzSW5wdXREaXNhYmxlZEJ5SWQoImlucHV0SW5zaWRlTmVzdGVkRmlyc3RMZWdlbmQiKScpOwor
c2hvdWxkQmVUcnVlKCdpc0lucHV0RGlzYWJsZWRCeUlkKCJpbnB1dEluc2lkZUZpcnN0TGVnZW5k
V2l0aERpc2FibGVkT3V0ZXJGaWVsZHNldCIpJyk7CisKIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogCiA8L3NjcmlwdD4K
</data>
<flag name="review"
          id="248930"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>