<?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>43163</bug_id>
          
          <creation_ts>2010-07-28 17:40:57 -0700</creation_ts>
          <short_desc>Add a CF-style base type (WKTypeRef) as a base for polymorphic functions</short_desc>
          <delta_ts>2010-07-28 21:52:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>257479</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-28 17:40:57 -0700</bug_when>
    <thetext>Add a CF-style base type (WKTypeRef) as a base for polymorphic functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257481</commentid>
    <comment_count>1</comment_count>
      <attachid>62900</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-28 17:41:52 -0700</bug_when>
    <thetext>Created attachment 62900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257483</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 17:44:10 -0700</bug_when>
    <thetext>Attachment 62900 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/API/C/WKType.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:54:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:61:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:62:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:69:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:77:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:124:  Extra space before last semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 7 in 54 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257484</commentid>
    <comment_count>3</comment_count>
      <attachid>62900</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-28 17:47:26 -0700</bug_when>
    <thetext>Comment on attachment 62900
Patch

&gt; +    virtual Type type() const { return TypeArray; }

&gt; +    virtual Type type() const { return TypeString; }

&gt; +    virtual Type type() const { return TypeURL; }

&gt; +    virtual Type type() const { return TypeBackForwardList; }

&gt; +    virtual Type type() const { return TypeBackForwardListItem; }

&gt; +    virtual Type type() const { return TypeContext; }

&gt; +    virtual Type type() const { return TypeFramePolicyListener; }

&gt; +    virtual Type type() const { return TypeFrame; }

&gt; +    virtual Type type() const { return TypeNavigationData; }

&gt; +    virtual Type type() const { return TypePageNamespace; }

&gt; +    virtual Type type() const { return TypePage; }

&gt; +    virtual Type type() const { return TypePreferences; }

&gt; +    virtual Type type() const { return TypeBundleFrame; }

&gt; +    virtual Type type() const { return TypeBundlePage; }

Making this private may catch some callers accidentally calling the virtual function on something already known to be a WebArray.

&gt; +    operator APIType() { return reinterpret_cast&lt;APIType&gt;(m_impl.get()); }

Doesn&apos;t static_cast work for this? If not, why not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257491</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-28 18:00:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 62900 [details])
&gt; &gt; +    virtual Type type() const { return TypeArray; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeString; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeURL; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeBackForwardList; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeBackForwardListItem; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeContext; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeFramePolicyListener; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeFrame; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeNavigationData; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypePageNamespace; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypePage; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypePreferences; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeBundleFrame; }
&gt; 
&gt; &gt; +    virtual Type type() const { return TypeBundlePage; }
&gt; 
&gt; Making this private may catch some callers accidentally calling the virtual function on something already known to be a WebArray.

Will do.

&gt; &gt; +    operator APIType() { return reinterpret_cast&lt;APIType&gt;(m_impl.get()); }
&gt; 
&gt; Doesn&apos;t static_cast work for this? If not, why not?

/Volumes/Data/Users/weinig/Code/webkit/OpenSource/WebKit2/UIProcess/API/C/WKAPICast.h:91: error: invalid static_cast from type &apos;WebKit::WebString*&apos; to type &apos;OpaqueWKStringRef*&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257545</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-28 21:52:57 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/64253.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62900</attachid>
            <date>2010-07-28 17:41:52 -0700</date>
            <delta_ts>2010-07-28 17:47:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>typeRef.diff</filename>
            <type>text/plain</type>
            <size>47671</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDI0NikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTE0IEBACisyMDEwLTA3LTI4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2gg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzE2MworICAgICAg
ICBBZGQgYSBDRi1zdHlsZSBiYXNlIHR5cGUgKFdLVHlwZVJlZikgYXMgYSBiYXNlIGZvciBwb2x5
bW9ycGhpYyBmdW5jdGlvbnMuCisKKyAgICAgICAgLSBBZGQgZmlyc3QgcG9seW1vcnBoaWMgZnVu
Y3Rpb24sIFdLR2V0VHlwZUlELgorICAgICAgICAtIEFkZCBmdW5jdGlvbnMgdG8gZWFjaCBXSyB0
eXBlIHRvIGdldCB0aGVpciByZXNwZWN0aXZlIFR5cGVJRHMuCisgICAgICAgIC0gQWRkcyBXZWJV
UkwgdG8gY29tcGxlbWVudCBXZWJTdHJpbmcuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0
Lmg6CisgICAgICAgIChXZWJLaXQ6OkFQSU9iamVjdDo6KToKKyAgICAgICAgKFdlYktpdDo6QVBJ
T2JqZWN0Ojp+QVBJT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvSW1tdXRhYmxlQXJyYXkuaDoK
KyAgICAgICAgKFdlYktpdDo6SW1tdXRhYmxlQXJyYXk6OnR5cGUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJTdHJpbmcuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RyaW5nOjp0eXBlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViVVJMLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVUkw6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTDo6dHlwZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTDo6aXNOdWxsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMOjppc0VtcHR5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMOjpzdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkw6
OldlYlVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAgICAg
ICAoV2ViS2l0OjpQcm94eWluZ1JlZlB0cjo6UHJveHlpbmdSZWZQdHIpOgorICAgICAgICAoV2Vi
S2l0OjpQcm94eWluZ1JlZlB0cjo6b3BlcmF0b3IgQVBJVHlwZSk6CisgICAgICAgICh0b1JlZik6
CisgICAgICAgICh0b1VSTFJlZik6CisgICAgICAgICh0b0NvcGllZFVSTFJlZik6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQXJyYXkuY3BwOgorICAgICAgICAoV0tBcnJheUdldFR5cGVJ
RCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQXJyYXkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV0tCYWNrRm9yd2Fy
ZExpc3RHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJk
TGlzdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwOgorICAgICAgICAoV0tCYWNrRm9yd2FyZExpc3RJdGVtR2V0VHlwZUlEKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLQmFzZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0R2V0VHlwZUlEKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUu
Y3BwOgorICAgICAgICAoV0tGcmFtZUdldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcDoKKyAgICAgICAgKFdLRnJhbWVQb2xpY3lMaXN0ZW5lckdldFR5cGVJRCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmNwcDoKKyAgICAgICAgKFdLTmF2
aWdhdGlvbkRhdGFHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05hdmln
YXRpb25EYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAg
ICAgIChXS1BhZ2VHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZU5hbWVzcGFjZUdldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZU5hbWVzcGFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRUeXBlSUQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLU3RyaW5nLmNwcDoKKyAgICAgICAgKFdLU3RyaW5nR2V0VHlwZUlEKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tTdHJpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tU
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXS0dldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tV
UkwuY3BwOgorICAgICAgICAoV0tVUkxHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1VSTC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd2luL1dLVmlldy5jcHA6Cisg
ICAgICAgIChXS1ZpZXdHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd2luL1dL
Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eTo6dHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6dHlwZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OldlYk5h
dmlnYXRpb25EYXRhOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFj
ZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlTmFtZXNwYWNlOjp0eXBlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjp0eXBlKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZUdldFR5cGVJRCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHA6Cisg
ICAgICAgIChXS0J1bmRsZUZyYW1lR2V0VHlwZUlEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRs
ZVBhZ2VHZXRUeXBlSUQpOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50KToK
KyAgICAgICAgKFdLQnVuZGxlUGFnZVNldExvYWRlckNsaWVudCk6CisgICAgICAgIChXS0J1bmRs
ZVBhZ2VTZXRVSUNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnR5cGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnR5cGUp
OgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwogMjAxMC0wNy0yOCAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCkBAIC0xMDQsMTAgKzIxNSwxMCBAQAogICAgICAgICBQYXRjaCBmb3IgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMDk3CiAgICAgICAgIE1ha2UgYWxsIG9i
amVjdHMgaW4gdGhlIFdlYktpdDIgQVBJIGluaGVyaXQgZnJvbSBhIHNpbmdsZSBiYXNlIGNsYXNz
CiAKLSAgICAgICAgLSBBZGRzIGFuIEFQSU9iamVjdCBiYXNlIGNsYXNzIGZvciBhbGwgb2JqZWN0
cyB3aGljaCBjYW4gZ2V0IHZlbmRlciB0aHJvdWdoCisgICAgICAgIC0gQWRkcyBhbiBBUElPYmpl
Y3QgYmFzZSBjbGFzcyBmb3IgYWxsIG9iamVjdHMgd2hpY2ggb25lIGNhbiBnZXQgdGhyb3VnaAog
ICAgICAgICAgIHRoZSBDIEFQSSB0byBpbmhlcml0IGZyb20uCiAgICAgICAgIC0gQWRkcyBhIFdl
YlN0cmluZyBjbGFzcyB3aGljaCB3cmFwcyBXZWJDb3JlOjpTdHJpbmcgZm9yIG5vdy4gSSBhbSBu
b3QgdG9vIGZvbmQgb2YKLSAgICAgICAgICB0aGlzIHNvbHV0aW9uLCBzbyB3ZSBjb250aW51ZSBz
aG91bGQgaXRlcmF0ZSBvbiBpdC4KKyAgICAgICAgICB0aGlzIHNvbHV0aW9uLCBzbyB3ZSBzaG91
bGQgY29udGludWUgdG8gaXRlcmF0ZSBvbiBpdC4KICAgICAgICAgLSBUaGlzIGlzIGEgZmlyc3Qg
c3RlcCB0b3dhcmQgbWFrZSBhIENGLXN0eWxlIGJhc2UgdHlwZSAoZWcuIENGVHlwZVJlZikgZm9y
IHRoZSBDLUFQSS4KIAogICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDogQWRkZWQuCkluZGV4
OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAkocmV2aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL1NoYXJlZC9BUElPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsMzkgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBBUElPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxBUElPYmplY3Q+IHsKK3B1
YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICAvLyBCYXNlIHR5cGVzCisgICAgICAgIFR5
cGVBcnJheSwKKyAgICAgICAgVHlwZVN0cmluZywKKyAgICAgICAgVHlwZVVSTCwKKyAgICAgICAg
CisgICAgICAgIC8vIFVJUHJvY2VzcyB0eXBlcworICAgICAgICBUeXBlQmFja0ZvcndhcmRMaXN0
LAorICAgICAgICBUeXBlQmFja0ZvcndhcmRMaXN0SXRlbSwKKyAgICAgICAgVHlwZUNvbnRleHQs
CisgICAgICAgIFR5cGVGcmFtZSwKKyAgICAgICAgVHlwZUZyYW1lUG9saWN5TGlzdGVuZXIsCisg
ICAgICAgIFR5cGVOYXZpZ2F0aW9uRGF0YSwKKyAgICAgICAgVHlwZVBhZ2UsCisgICAgICAgIFR5
cGVQYWdlTmFtZXNwYWNlLAorICAgICAgICBUeXBlUHJlZmVyZW5jZXMsCisKKyAgICAgICAgLy8g
QnVuZGxlIHR5cGVzCisgICAgICAgIFR5cGVCdW5kbGUsCisgICAgICAgIFR5cGVCdW5kbGVGcmFt
ZSwKKyAgICAgICAgVHlwZUJ1bmRsZVBhZ2UsCisgICAgICAgIAorICAgICAgICAvLyBQbGF0Zm9y
bSBzcGVjaWZpYworICAgICAgICBUeXBlVmlldworICAgIH07CisKKyAgICB2aXJ0dWFsIH5BUElP
YmplY3QoKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0g
MDsKKwogcHJvdGVjdGVkOgogICAgIEFQSU9iamVjdCgpCiAgICAgewpJbmRleDogV2ViS2l0Mi9T
aGFyZWQvSW1tdXRhYmxlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9JbW11
dGFibGVBcnJheS5oCShyZXZpc2lvbiA2NDIzMikKKysrIFdlYktpdDIvU2hhcmVkL0ltbXV0YWJs
ZUFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIH0K
ICAgICB+SW1tdXRhYmxlQXJyYXkoKTsKIAorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gVHlwZUFycmF5OyB9CisKICAgICBjb25zdCB2b2lkKiBhdChzaXplX3QgaSkgeyBB
U1NFUlQoaSA8IG1fc2l6ZSk7IHJldHVybiBtX2VudHJpZXNbaV07IH0KICAgICBzaXplX3Qgc2l6
ZSgpIHsgcmV0dXJuIG1fc2l6ZTsgfQogCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJTdHJpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJTdHJpbmcuaAkocmV2aXNpb24gNjQy
MzIpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDEs
NiArNDEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU3RyaW5n
KHN0cmluZykpOwogICAgIH0KIAorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gVHlwZVN0cmluZzsgfQorCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5pc051bGwoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmlzRW1wdHkoKTsgfQogCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJVUkwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJVUkwuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
U2hhcmVkL1dlYlVSTC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJVUkxfaAorI2RlZmluZSBXZWJVUkxfaAorCisjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBXZWJVUkwgLSBBbiBz
dHJpbmcgYXJyYXkgdHlwZSBzdWl0YWJsZSBmb3IgdmVuZGluZyB0byBhbiBBUEkuCisKK2NsYXNz
IFdlYlVSTCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlVSTD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgc3RyaW5nKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJVUkwoc3RyaW5nKSk7CisgICAgfQorCisg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlVVJMOyB9CisKKyAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzTnVsbCgpOyB9CisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXNFbXB0eSgpOyB9CisKKyAgICBj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9
CisKK3ByaXZhdGU6CisgICAgV2ViVVJMKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgc3RyaW5nKQor
ICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKKyAgICB7CisgICAgfQorCisgICAgV2ViQ29yZTo6
U3RyaW5nIG1fc3RyaW5nOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJVUkxfaApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgJKHJl
dmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIH0KICAgICB+V2Vi
QmFja0ZvcndhcmRMaXN0KCk7CiAKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFR5cGVCYWNrRm9yd2FyZExpc3Q7IH0KKwogICAgIHZvaWQgYWRkSXRlbShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKik7CiAgICAgdm9pZCBnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Kik7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgJ
KHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgfldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKIAorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gVHlwZUJhY2tGb3J3YXJkTGlzdEl0ZW07IH0KKwogICAgIHVpbnQ2NF90
IGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbUlEOyB9CiAKICAgICB2b2lkIHNldE9yaWdp
bmFsVVJMKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgb3JpZ2luYWxVUkwpIHsgbV9vcmlnaW5hbFVS
TCA9IG9yaWdpbmFsVVJMOyB9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShyZXZpc2lvbiA2
NDIzMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAKICAgICB+V2ViQ29udGV4dCgpOwogCisgICAgdmly
dHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlQ29udGV4dDsgfQorCiAgICAgdm9p
ZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQqKTsKIAogICAgIFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwoKSBjb25zdCB7IHJldHVy
biBtX3Byb2Nlc3NNb2RlbDsgfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDggQEAgcHVibGljOgogICAgIH0KICAgICB+V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5KCk7CiAKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGVGcmFt
ZVBvbGljeUxpc3RlbmVyOyB9CisKICAgICB2b2lkIHVzZSgpOwogICAgIHZvaWQgZG93bmxvYWQo
KTsKICAgICB2b2lkIGlnbm9yZSgpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAko
cmV2aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogICAgIH0KICAgICB+V2ViRnJh
bWVQcm94eSgpOwogCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBl
RnJhbWU7IH0KKwogICAgIGVudW0gTG9hZFN0YXRlIHsKICAgICAgICAgTG9hZFN0YXRlUHJvdmlz
aW9uYWwsCiAgICAgICAgIExvYWRTdGF0ZUNvbW1pdHRlZCwKSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL1dlYk5hdmlnYXRpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTmF2aWdhdGlvbkRhdGEuaAkocmV2aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJOYXZpZ2F0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgfldlYk5hdmlnYXRpb25EYXRhKCk7CiAKKyAgICB2aXJ0dWFsIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGVOYXZpZ2F0aW9uRGF0YTsgfQorCiAgICAgV2Vi
Q29yZTo6U3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50aXRsZTsgfQogICAg
IFdlYkNvcmU6OlN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnVybDsgfQogCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5oCShyZXZpc2lvbiA2NDIzMikKKysr
IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNiArNDYsOCBAQCBwdWJsaWM6CiAKICAgICB+V2ViUGFnZU5hbWVzcGFjZSgpOwogCisgICAg
dmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlUGFnZU5hbWVzcGFjZTsgfQor
CiAgICAgV2ViUGFnZVByb3h5KiBjcmVhdGVXZWJQYWdlKCk7ICAgIAogCiAgICAgV2ViQ29udGV4
dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFdlYlBhZ2VOYW1l
c3BhY2UqLCB1aW50NjRfdCBwYWdlSUQpOwogICAgIH5XZWJQYWdlUHJveHkoKTsKIAorICAgIHZp
cnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZVBhZ2U7IH0KKwogICAgIHVpbnQ2
NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBXZWJGcmFtZVBy
b3h5KiB3ZWJGcmFtZSh1aW50NjRfdCkgY29uc3Q7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZl
cmVuY2VzLmgJKHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVy
ZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIH5XZWJQcmVmZXJlbmNlcygpOwogCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBUeXBlUHJlZmVyZW5jZXM7IH0KKwogICAgIHZvaWQgYWRkQ29udGV4dChXZWJDb250
ZXh0Kik7CiAgICAgdm9pZCByZW1vdmVDb250ZXh0KFdlYkNvbnRleHQqKTsKIApJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNsdWRlICJXS1BhZ2UuaCIKICNpbmNsdWRlICJX
ZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyVHlwZXMuaD4KIAogI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQpA
QCAtNTAsMjAgKzUxLDIyIEBAIGNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViU3RyaW5n
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBUElUeXBlPiBzdHJ1Y3QgQVBJVHlwZUluZm8geyB9Owor
dGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tUeXBlUmVmPiAgICAgICAgICAgICAgICAg
ICAgICAgIHsgdHlwZWRlZiBBUElPYmplY3QqIEltcGxUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQVBJVHlwZUluZm88V0tGcmFtZVJlZj4gICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRl
ZiBXZWJGcmFtZVByb3h5KiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJ
bmZvPFdLUGFnZVJlZj4gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV2ViUGFnZVBy
b3h5KiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLQ29udGV4
dFJlZj4gICAgICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV2ViQ29udGV4dCogSW1wbFR5cGU7
IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElUeXBlSW5mbzxXS1BhZ2VOYW1lc3BhY2VSZWY+ICAg
ICAgICAgICAgICAgeyB0eXBlZGVmIFdlYlBhZ2VOYW1lc3BhY2UqIEltcGxUeXBlOyB9OwogdGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmPiAgICAg
ICAgIHsgdHlwZWRlZiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqIEltcGxUeXBlOyB9Owog
dGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tQcmVmZXJlbmNlc1JlZj4gICAgICAgICAg
ICAgICAgIHsgdHlwZWRlZiBXZWJQcmVmZXJlbmNlcyogSW1wbFR5cGU7IH07Ci10ZW1wbGF0ZTw+
IHN0cnVjdCBBUElUeXBlSW5mbzxXS1N0cmluZ1JlZj4gICAgICAgICAgICAgICAgICAgICAgeyB0
eXBlZGVmIFdlYktpdDo6V2ViU3RyaW5nKiBJbXBsVHlwZTsgfTsKLXRlbXBsYXRlPD4gc3RydWN0
IEFQSVR5cGVJbmZvPFdLVVJMUmVmPiAgICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGVkZWYg
V2ViS2l0OjpXZWJTdHJpbmcqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlw
ZUluZm88V0tTdHJpbmdSZWY+ICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJTdHJp
bmcqIEltcGxUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tVUkxSZWY+
ICAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXZWJVUkwqIEltcGxUeXBlOyB9Owog
dGVtcGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tOYXZpZ2F0aW9uRGF0YVJlZj4gICAgICAg
ICAgICAgIHsgdHlwZWRlZiBXZWJOYXZpZ2F0aW9uRGF0YSogSW1wbFR5cGU7IH07CiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBUElUeXBlSW5mbzxXS0FycmF5UmVmPiAgICAgICAgICAgICAgICAgICAgICAg
eyB0eXBlZGVmIEltbXV0YWJsZUFycmF5KiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0
IEFQSVR5cGVJbmZvPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gICAgICAgICB7IHR5cGVkZWYg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogSW1wbFR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
UElUeXBlSW5mbzxXS0JhY2tGb3J3YXJkTGlzdFJlZj4gICAgICAgICAgICAgeyB0eXBlZGVmIFdl
YkJhY2tGb3J3YXJkTGlzdCogSW1wbFR5cGU7IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEltcGxU
eXBlPiBzdHJ1Y3QgSW1wbFR5cGVJbmZvIHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBl
SW5mbzxBUElPYmplY3QqPiAgICAgICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV0tUeXBlUmVm
IEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88V2ViRnJhbWVQcm94
eSo+ICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLRnJhbWVSZWYgQVBJVHlwZTsgfTsKIHRl
bXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5mbzxXZWJQYWdlUHJveHkqPiAgICAgICAgICAgICAg
ICAgICB7IHR5cGVkZWYgV0tQYWdlUmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJ
bXBsVHlwZUluZm88V2ViQ29udGV4dCo+ICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdL
Q29udGV4dFJlZiBBUElUeXBlOyB9OwpAQCAtNzEsMjMgKzc0LDI0IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEltcGxUeXBlSW5mbzxXZWJQYWdlTmEKIHRlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5m
bzxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkqPiAgICB7IHR5cGVkZWYgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88
V2ViUHJlZmVyZW5jZXMqPiAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLUHJlZmVyZW5jZXNS
ZWYgQVBJVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5mbzxXZWJTdHJpbmcq
PiAgICAgICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV0tTdHJpbmdSZWYgQVBJVHlwZTsgfTsK
K3RlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5mbzxXZWJVUkwqPiAgICAgICAgICAgICAgICAg
ICAgICAgICB7IHR5cGVkZWYgV0tVUkxSZWYgQVBJVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0
IEltcGxUeXBlSW5mbzxXZWJOYXZpZ2F0aW9uRGF0YSo+ICAgICAgICAgICAgICB7IHR5cGVkZWYg
V0tOYXZpZ2F0aW9uRGF0YVJlZiBBUElUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5
cGVJbmZvPEltbXV0YWJsZUFycmF5Kj4gICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0FycmF5
UmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88V2ViQmFja0Zv
cndhcmRMaXN0SXRlbSo+ICAgICAgICAgeyB0eXBlZGVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZiBBUElUeXBlOyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYkJhY2tGb3J3
YXJkTGlzdCo+ICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0JhY2tGb3J3YXJkTGlzdFJlZiBBUElU
eXBlOyB9OwogCi1jbGFzcyBXZWJTdHJpbmdBZGFwdG9yIHsKK3RlbXBsYXRlPHR5cGVuYW1lIElt
cGxUeXBlLCB0eXBlbmFtZSBBUElUeXBlID0gdHlwZW5hbWUgSW1wbFR5cGVJbmZvPEltcGxUeXBl
Kj46OkFQSVR5cGU+CitjbGFzcyBQcm94eWluZ1JlZlB0ciB7CiBwdWJsaWM6Ci0gICAgV2ViU3Ry
aW5nQWRhcHRvcihQYXNzUmVmUHRyPFdlYlN0cmluZz4gaW1wbCkKKyAgICBQcm94eWluZ1JlZlB0
cihQYXNzUmVmUHRyPEltcGxUeXBlPiBpbXBsKQogICAgICAgICA6IG1faW1wbChpbXBsKQogICAg
IHsKICAgICB9CiAKLSAgICBvcGVyYXRvciBXS1N0cmluZ1JlZigpIHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8V0tTdHJpbmdSZWY+KG1faW1wbC5nZXQoKSk7IH0KLSAgICBvcGVyYXRvciBXS1VS
TFJlZigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tVUkxSZWY+KG1faW1wbC5nZXQoKSk7
IH0KKyAgICBvcGVyYXRvciBBUElUeXBlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElU
eXBlPihtX2ltcGwuZ2V0KCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYlN0cmluZz4g
bV9pbXBsOworICAgIFJlZlB0cjxJbXBsVHlwZT4gbV9pbXBsOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkBAIC0xMDgsMTYgKzExMiwxNiBAQCBpbmxpbmUgdHlwZW5hbWUgV2ViS2l0OjpJ
bXBsVHlwZUluZm88VD46CiAKIC8qIFNwZWNpYWwgY2FzZXMuICovCiAKLWlubGluZSBXZWJLaXQ6
OldlYlN0cmluZ0FkYXB0b3IgdG9SZWYoV2ViQ29yZTo6U3RyaW5nSW1wbCogc3RyaW5nKQoraW5s
aW5lIFdlYktpdDo6UHJveHlpbmdSZWZQdHI8V2ViS2l0OjpXZWJTdHJpbmc+IHRvUmVmKFdlYkNv
cmU6OlN0cmluZ0ltcGwqIHN0cmluZykKIHsKICAgICBXZWJDb3JlOjpTdHJpbmdJbXBsKiBpbXBs
ID0gc3RyaW5nID8gc3RyaW5nIDogV2ViQ29yZTo6U3RyaW5nSW1wbDo6ZW1wdHkoKTsKLSAgICBy
ZXR1cm4gV2ViS2l0OjpXZWJTdHJpbmdBZGFwdG9yKFdlYktpdDo6V2ViU3RyaW5nOjpjcmVhdGUo
V2ViQ29yZTo6U3RyaW5nKGltcGwpKSk7CisgICAgcmV0dXJuIFdlYktpdDo6UHJveHlpbmdSZWZQ
dHI8V2ViS2l0OjpXZWJTdHJpbmc+KFdlYktpdDo6V2ViU3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6
U3RyaW5nKGltcGwpKSk7CiB9CiAKLWlubGluZSBXZWJLaXQ6OldlYlN0cmluZ0FkYXB0b3IgdG9V
UkxSZWYoV2ViQ29yZTo6U3RyaW5nSW1wbCogc3RyaW5nKQoraW5saW5lIFdlYktpdDo6UHJveHlp
bmdSZWZQdHI8V2ViS2l0OjpXZWJVUkw+IHRvVVJMUmVmKFdlYkNvcmU6OlN0cmluZ0ltcGwqIHN0
cmluZykKIHsKICAgICBXZWJDb3JlOjpTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nID8gc3RyaW5n
IDogV2ViQ29yZTo6U3RyaW5nSW1wbDo6ZW1wdHkoKTsKLSAgICByZXR1cm4gV2ViS2l0OjpXZWJT
dHJpbmdBZGFwdG9yKFdlYktpdDo6V2ViU3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6U3RyaW5nKGlt
cGwpKSkgICA7CisgICAgcmV0dXJuIFdlYktpdDo6UHJveHlpbmdSZWZQdHI8V2ViS2l0OjpXZWJV
Ukw+KFdlYktpdDo6V2ViVVJMOjpjcmVhdGUoV2ViQ29yZTo6U3RyaW5nKGltcGwpKSkgICA7CiB9
CiAKIGlubGluZSBXS1N0cmluZ1JlZiB0b0NvcGllZFJlZihjb25zdCBXZWJDb3JlOjpTdHJpbmcm
IHN0cmluZykKQEAgLTEzMCw4ICsxMzQsMTMgQEAgaW5saW5lIFdLU3RyaW5nUmVmIHRvQ29waWVk
UmVmKGNvbnN0IFdlYgogaW5saW5lIFdLVVJMUmVmIHRvQ29waWVkVVJMUmVmKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYgc3RyaW5nKQogewogICAgIFdlYkNvcmU6OlN0cmluZ0ltcGwqIGltcGwgPSBz
dHJpbmcuaW1wbCgpID8gc3RyaW5nLmltcGwoKSA6IFdlYkNvcmU6OlN0cmluZ0ltcGw6OmVtcHR5
KCk7Ci0gICAgUmVmUHRyPFdlYktpdDo6V2ViU3RyaW5nPiB3ZWJTdHJpbmcgPSBXZWJLaXQ6Oldl
YlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OlN0cmluZyhpbXBsKSk7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8V0tVUkxSZWY+KHdlYlN0cmluZy5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsK
KyAgICBSZWZQdHI8V2ViS2l0OjpXZWJVUkw+IHdlYlVSTCA9IFdlYktpdDo6V2ViVVJMOjpjcmVh
dGUoV2ViQ29yZTo6U3RyaW5nKGltcGwpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
S1VSTFJlZj4od2ViVVJMLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworfQorCitpbmxpbmUgV0tU
eXBlSUQgdG9SZWYoV2ViS2l0OjpBUElPYmplY3Q6OlR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8V0tUeXBlSUQ+KHR5cGUpOwogfQogCiBpbmxpbmUgV0tGcmFtZU5hdmlnYXRp
b25UeXBlIHRvV0soV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgdHlwZSkKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQXJyYXkuY3BwCShyZXZpc2lvbiA2NDIzMikKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwxMSBAQAog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitXS1R5cGVJRCBXS0FycmF5R2V0VHlwZUlEKCkK
K3sKKyAgICByZXR1cm4gdG9SZWYoQVBJT2JqZWN0OjpUeXBlQXJyYXkpOworfQorCiBjb25zdCB2
b2lkKiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBhcnJheVJlZiwgc2l6ZV90IGlu
ZGV4KQogewogICAgIHJldHVybiB0b1dLKGFycmF5UmVmKS0+YXQoaW5kZXgpOwpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQXJyYXkuaAkocmV2aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAKIGV4
dGVybiAiQyIgewogI2VuZGlmCiAKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0FycmF5R2V0VHlwZUlE
KCk7CisKIFdLX0VYUE9SVCBjb25zdCB2b2lkKiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJh
eVJlZiBhcnJheSwgc2l6ZV90IGluZGV4KTsKIFdLX0VYUE9SVCBzaXplX3QgV0tBcnJheUdldFNp
emUoV0tBcnJheVJlZiBhcnJheSk7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QmFja0ZvcndhcmRMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0JhY2tGb3J3YXJkTGlzdC5jcHAJKHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCwxMSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitXS1R5cGVJRCBXS0JhY2tG
b3J3YXJkTGlzdEdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvUmVmKEFQSU9iamVjdDo6VHlw
ZUJhY2tGb3J3YXJkTGlzdCk7Cit9CisKIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBXS0JhY2tG
b3J3YXJkTGlzdEdldEN1cnJlbnRJdGVtKFdLQmFja0ZvcndhcmRMaXN0UmVmIGxpc3RSZWYpCiB7
CiAgICAgcmV0dXJuIHRvUmVmKHRvV0sobGlzdFJlZiktPmN1cnJlbnRJdGVtKCkpOwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdC5oCShyZXZpc2lvbiA2
NDIzMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1dL
X0VYUE9SVCBXS1R5cGVJRCBXS0JhY2tGb3J3YXJkTGlzdEdldFR5cGVJRCgpOworCiBXS19FWFBP
UlQgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0Q3VycmVudEl0
ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7CiBXS19FWFBPUlQgV0tCYWNrRm9yd2FyZExp
c3RJdGVtUmVmIFdLQmFja0ZvcndhcmRMaXN0R2V0QmFja0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RS
ZWYgbGlzdCk7CiBXS19FWFBPUlQgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIFdLQmFja0Zvcndh
cmRMaXN0R2V0Rm9yd2FyZEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RSZWYgbGlzdCk7CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAJ
KHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMTEgQEAKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIAorV0tUeXBlSUQgV0tCYWNrRm9yd2FyZExpc3RJdGVtR2V0VHlw
ZUlEKCkKK3sKKyAgICByZXR1cm4gdG9SZWYoQVBJT2JqZWN0OjpUeXBlQmFja0ZvcndhcmRMaXN0
SXRlbSk7Cit9CisKIFdLVVJMUmVmIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlPcmlnaW5hbFVS
TChXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKIHsKICAgICByZXR1cm4gdG9Db3Bp
ZWRVUkxSZWYodG9XSyhpdGVtUmVmKS0+b3JpZ2luYWxVUkwoKSk7CkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaAkocmV2aXNpb24gNjQy
MzIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAor
V0tfRVhQT1JUIFdLVHlwZUlEIFdLQmFja0ZvcndhcmRMaXN0SXRlbUdldFR5cGVJRCgpOworCiBX
S19FWFBPUlQgV0tVUkxSZWYgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weU9yaWdpbmFsVVJMKFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKTsKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1Db3B5VVJMKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKTsKIFdL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0bGUoV0tCYWNr
Rm9yd2FyZExpc3RJdGVtUmVmIGl0ZW0pOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYXNlLmgJ
KHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDkgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZVdp
bi5oPgogI2VuZGlmCiAKK3R5cGVkZWYgdWludDMyX3QgV0tUeXBlSUQ7CisKK3R5cGVkZWYgc3Ry
dWN0IE9wYXF1ZVdLVHlwZVJlZiogV0tUeXBlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tB
cnJheVJlZiogV0tBcnJheVJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZiogV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlV0tCYWNrRm9yd2FyZExpc3RSZWYqIFdLQmFja0ZvcndhcmRMaXN0UmVmOwpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiA2NDIzMikKKysrIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDExIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK1dLVHlwZUlEIFdLQ29udGV4
dEdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvUmVmKEFQSU9iamVjdDo6VHlwZUNvbnRleHQp
OworfQorCiBXS0NvbnRleHRSZWYgV0tDb250ZXh0Q3JlYXRlKCkKIHsKICAgICBSZWZQdHI8V2Vi
Q29udGV4dD4gY29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShXZWJDb3JlOjpTdHJpbmcoKSk7
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkocmV2aXNpb24gNjQyMzIpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNiArNDIsOCBAQCBzdHJ1Y3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgewogfTsK
IHR5cGVkZWYgc3RydWN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IFdLQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50OwogCitXS19FWFBPUlQgV0tUeXBlSUQgV0tDb250ZXh0R2V0VHlw
ZUlEKCk7CisKIFdLX0VYUE9SVCBXS0NvbnRleHRSZWYgV0tDb250ZXh0Q3JlYXRlKCk7CiBXS19F
WFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgo
V0tTdHJpbmdSZWYgcGF0aCk7CiBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dEdldFNo
YXJlZFByb2Nlc3NDb250ZXh0KCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Zy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNw
cAkocmV2aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsMTEgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIAorV0tUeXBlSUQgV0tGcmFtZUdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvUmVm
KEFQSU9iamVjdDo6VHlwZUZyYW1lKTsKK30KKwogYm9vbCBXS0ZyYW1lSXNNYWluRnJhbWUoV0tG
cmFtZVJlZiBmcmFtZVJlZikKIHsKICAgICByZXR1cm4gdG9XSyhmcmFtZVJlZiktPmlzTWFpbkZy
YW1lKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCShyZXZpc2lvbiA2NDIzMikK
KysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsOCBAQCBlbnVtIFdLRnJhbWVMb2FkU3RhdGUgewogfTsKIHR5cGVkZWYgZW51bSBX
S0ZyYW1lTG9hZFN0YXRlIFdLRnJhbWVMb2FkU3RhdGU7CiAKK1dLX0VYUE9SVCBXS1R5cGVJRCBX
S0ZyYW1lR2V0VHlwZUlEKCk7CisgCiBXS19FWFBPUlQgYm9vbCBXS0ZyYW1lSXNNYWluRnJhbWUo
V0tGcmFtZVJlZiBmcmFtZSk7CiBXS19FWFBPUlQgV0tGcmFtZUxvYWRTdGF0ZSBXS0ZyYW1lR2V0
RnJhbWVMb2FkU3RhdGUoV0tGcmFtZVJlZiBmcmFtZSk7CiBXS19FWFBPUlQgV0tVUkxSZWYgV0tG
cmFtZUNvcHlQcm92aXNpb25hbFVSTChXS0ZyYW1lUmVmIGZyYW1lKTsKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAkocmV2aXNp
b24gNjQyMzIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxMSBAQAogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogCitXS1R5cGVJRCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJHZXRUeXBlSUQoKQor
eworICAgIHJldHVybiB0b1JlZihBUElPYmplY3Q6OlR5cGVGcmFtZVBvbGljeUxpc3RlbmVyKTsK
K30KKwogdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UoV0tGcmFtZVBvbGljeUxpc3RlbmVy
UmVmIHBvbGljeUxpc3RlbmVyUmVmKQogewogICAgIHRvV0socG9saWN5TGlzdGVuZXJSZWYpLT51
c2UoKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5l
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lM
aXN0ZW5lci5oCShyZXZpc2lvbiA2NDIzMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
RnJhbWVQb2xpY3lMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBACiBl
eHRlcm4gIkMiIHsKICNlbmRpZgogCitXS19FWFBPUlQgV0tUeXBlSUQgV0tGcmFtZVBvbGljeUxp
c3RlbmVyR2V0VHlwZUlEKCk7CisKIFdLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5l
clVzZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgcG9saWN5TGlzdGVuZXIpOwogV0tfRVhQT1JU
IHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQoV0tGcmFtZVBvbGljeUxpc3RlbmVy
UmVmIHBvbGljeUxpc3RlbmVyKTsKIFdLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5l
cklnbm9yZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgcG9saWN5TGlzdGVuZXIpOwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAJKHJldmlzaW9u
IDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDExIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKK1dLVHlwZUlEIFdLTmF2aWdhdGlvbkRhdGFHZXRUeXBlSUQoKQoreworICAgIHJldHVy
biB0b1JlZihBUElPYmplY3Q6OlR5cGVOYXZpZ2F0aW9uRGF0YSk7Cit9CisKIFdLU3RyaW5nUmVm
IFdLTmF2aWdhdGlvbkRhdGFDb3B5VGl0bGUoV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9u
RGF0YVJlZikKIHsKICAgICByZXR1cm4gdG9Db3BpZWRSZWYodG9XSyhuYXZpZ2F0aW9uRGF0YVJl
ZiktPnRpdGxlKCkpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9u
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlv
bkRhdGEuaAkocmV2aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05h
dmlnYXRpb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAKIGV4dGVybiAi
QyIgewogI2VuZGlmCiAKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS05hdmlnYXRpb25EYXRhR2V0VHlw
ZUlEKCk7CisKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05hdmlnYXRpb25EYXRhQ29weVRpdGxl
KFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEpOwogV0tfRVhQT1JUIFdLVVJMUmVm
IFdLTmF2aWdhdGlvbkRhdGFDb3B5VVJMKFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRh
dGEpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDY0MjMy
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNiArMzYsMTEgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAorV0tUeXBlSUQg
V0tQYWdlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9SZWYoQVBJT2JqZWN0OjpUeXBlUGFn
ZSk7Cit9CisKIFdLUGFnZU5hbWVzcGFjZVJlZiBXS1BhZ2VHZXRQYWdlTmFtZXNwYWNlKFdLUGFn
ZVJlZiBwYWdlUmVmKQogewogICAgIHJldHVybiB0b1JlZih0b1dLKHBhZ2VSZWYpLT5wYWdlTmFt
ZXNwYWNlKCkpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDY0MjMy
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OSw2ICsxNDksNyBAQCBzdHJ1Y3QgV0tQYWdlSGlzdG9yeUNsaWVudCB7CiB9OwogdHlwZWRl
ZiBzdHJ1Y3QgV0tQYWdlSGlzdG9yeUNsaWVudCBXS1BhZ2VIaXN0b3J5Q2xpZW50OwogCitXS19F
WFBPUlQgV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiAKIFdLX0VYUE9SVCBXS1BhZ2VOYW1l
c3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjZShXS1BhZ2VSZWYgcGFnZSk7CiAKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcAkocmV2aXNpb24g
NjQyMzIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYW1lc3BhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiwxMSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCitXS1R5cGVJRCBXS1BhZ2VOYW1lc3BhY2VHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0
b1JlZihBUElPYmplY3Q6OlR5cGVQYWdlTmFtZXNwYWNlKTsKK30KKwogV0tQYWdlTmFtZXNwYWNl
UmVmIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShXS0NvbnRleHRSZWYgb3duZXJDb250ZXh0UmVmKQog
ewogICAgIHJldHVybiB0b1JlZih0b1dLKG93bmVyQ29udGV4dFJlZiktPmNyZWF0ZVBhZ2VOYW1l
c3BhY2UoKSk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYW1lc3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYW1lc3BhY2Uu
aAkocmV2aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYW1l
c3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogZXh0ZXJuICJDIiB7CiAj
ZW5kaWYKIAorV0tfRVhQT1JUIFdLVHlwZUlEIFdLUGFnZU5hbWVzcGFjZUdldFR5cGVJRCgpOwor
CiBXS19FWFBPUlQgV0tQYWdlTmFtZXNwYWNlUmVmIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShXS0Nv
bnRleHRSZWYgb3duZXJDb250ZXh0KTsKIAogV0tfRVhQT1JUIFdLQ29udGV4dFJlZiBXS1BhZ2VO
YW1lc3BhY2VHZXRDb250ZXh0KFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlKTsKSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiA2
NDIzMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiwxMSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owog
CitXS1R5cGVJRCBXS1ByZWZlcmVuY2VzR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9SZWYo
QVBJT2JqZWN0OjpUeXBlUHJlZmVyZW5jZXMpOworfQorCiBXS1ByZWZlcmVuY2VzUmVmIFdLUHJl
ZmVyZW5jZXNDcmVhdGUoKQogewogICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5j
ZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiA2NDIzMikKKysrIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQAog
ZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorV0tfRVhQT1JUIFdLVHlwZUlEIFdLUHJlZmVyZW5jZXNH
ZXRUeXBlSUQoKTsKKwogV0tfRVhQT1JUIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0Ny
ZWF0ZSgpOwogV0tfRVhQT1JUIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJlbmNlc0NyZWF0ZUNv
cHkoV0tQcmVmZXJlbmNlc1JlZik7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
U3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1N0cmlu
Zy5jcHAJKHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTdHJp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNywxMyBAQAogCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLU3RyaW5n
R2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9SZWYoQVBJT2JqZWN0OjpUeXBlU3RyaW5nKTsK
K30KKwogV0tTdHJpbmdSZWYgV0tTdHJpbmdSZXRhaW4oV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQog
ewogICAgIHRvV0soc3RyaW5nUmVmKS0+cmVmKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
U3RyaW5nLmgJKHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tT
dHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQAogZXh0ZXJuICJDIiB7CiAj
ZW5kaWYKIAorV0tfRVhQT1JUIFdLVHlwZUlEIFdLU3RyaW5nR2V0VHlwZUlEKCk7CisKIFdLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS1N0cmluZ1JldGFpbihXS1N0cmluZ1JlZiBzdHJpbmcpOwogV0tf
RVhQT1JUIHZvaWQgV0tTdHJpbmdSZWxlYXNlKFdLU3RyaW5nUmVmIHN0cmluZyk7CiAKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tUeXBlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLVHlwZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiV0tUeXBlLmgiCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIK
KyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tU
eXBlSUQgV0tHZXRUeXBlSUQoV0tUeXBlUmVmIHR5cGVSZWYpCit7CisgICAgcmV0dXJuIHRvUmVm
KHRvV0sodHlwZVJlZiktPnR5cGUoKSk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1R5cGUu
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVHlwZS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1R5cGVfaAor
I2RlZmluZSBXS1R5cGVfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQg
V0tHZXRUeXBlSUQoV0tUeXBlUmVmIHR5cGUpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNl
bmRpZgorCisjZW5kaWYgLyogV0tUeXBlX2ggKi8KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VS
TC5jcHAJKHJldmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVUkwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNywxMyBAQAogCiAjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLVVJMR2V0VHlw
ZUlEKCkKK3sKKyAgICByZXR1cm4gdG9SZWYoQVBJT2JqZWN0OjpUeXBlVVJMKTsKK30KKwogV0tV
UkxSZWYgV0tVUkxSZXRhaW4oV0tVUkxSZWYgVVJMUmVmKQogewogICAgIHRvV0soVVJMUmVmKS0+
cmVmKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1VSTC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVVJMLmgJKHJldmlzaW9uIDY0MjMyKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsOCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorV0tfRVhQT1JUIFdLVHlwZUlEIFdLVVJM
R2V0VHlwZUlEKCk7CisKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS1VSTFJldGFpbihXS1VSTFJlZiBV
UkwpOwogV0tfRVhQT1JUIHZvaWQgV0tVUkxSZWxlYXNlKFdLVVJMUmVmIFVSTCk7CiAKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS93aW4vV0tWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvd2luL1dLVmlldy5jcHAJKHJldmlzaW9uIDY0MjMyKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3dpbi9XS1ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCwxMSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCitXS1R5cGVJRCBXS1ZpZXdH
ZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b1JlZihBUElPYmplY3Q6OlR5cGVWaWV3KTsKK30K
KwogV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShSRUNUIHJlY3QsIFdLUGFnZU5hbWVzcGFjZVJlZiBw
YWdlTmFtZXNwYWNlUmVmLCBIV05EIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPFdlYlZpZXc+
IHZpZXcgPSBXZWJWaWV3OjpjcmVhdGUocmVjdCwgdG9XSyhwYWdlTmFtZXNwYWNlUmVmKSwgaG9z
dFdpbmRvdyk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvd2luL1dLVmlldy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS93aW4vV0tWaWV3LmgJKHJldmlzaW9uIDY0
MjMyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3dpbi9XS1ZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsOCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorV0tfRVhQT1JUIFdL
VHlwZUlEIFdLVmlld0dldFR5cGVJRCgpOworCiBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0Ny
ZWF0ZShSRUNUIHJlY3QsIFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlLCBIV05EIGhv
c3RXaW5kb3cpOwogCiBXS19FWFBPUlQgSFdORCBXS1ZpZXdHZXRXaW5kb3coV0tWaWV3UmVmIHZp
ZXcpOwpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDY0MjMyKQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw2ICsyNDQsOSBAQAogCQlCQ0Q1OTgwMDExMkI1N0JF
MDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTk3RkUxMTJCNTdCRTAwRUM4QzIzIC8qIFdlYlByZWZl
cmVuY2VzLmNwcCAqLzsgfTsKIAkJQkNENTk4QUMxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZl
cmVuY2VzU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRDU5OEFBMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggKi87
IH07CiAJCUJDRDU5OEFEMTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDU5OEFC
MTEyQjdGREYwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmNwcCAqLzsgfTsKKwkJQkNE
Qjg1ODIxMjAwRUM1NzAwNzI1NEJFIC8qIFdLVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNEQjg1ODAxMjAwRUM1NzAwNzI1NEJFIC8qIFdLVHlw
ZS5oICovOyB9OworCQlCQ0RCODU4MzEyMDBFQzU3MDA3MjU0QkUgLyogV0tUeXBlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREI4NTgxMTIwMEVD
NTcwMDcyNTRCRSAvKiBXS1R5cGUuY3BwICovOyB9OworCQlCQ0RCODZDMTEyMDBGQjk3MDA3MjU0
QkUgLyogV2ViVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0RCODZDMDEyMDBGQjk3MDA3MjU0QkUgLyogV2ViVVJMLmggKi87IH07CiAJCUJDREUw
NTlCMTFDREE4QUUwMEU0MUFGMSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREUwNTk5MTFD
REE4QUUwMEU0MUFGMSAvKiBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLzsgfTsK
IAkJQkNERTA1OUMxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0RFMDU5QTExQ0RBOEFFMDBFNDFBRjEgLyogV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50
LmNwcCAqLzsgfTsKIAkJQkNFRTk2NkMxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk2NkEx
MTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3BwICovOyB9OwpAQCAtNTM3LDYgKzU0MCw5
IEBACiAJCUJDRDU5N0ZFMTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcmVmZXJlbmNlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDU5OEFBMTEyQjdGREYwMEVDOEMyMyAvKiBX
ZWJQcmVmZXJlbmNlc1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlByZWZlcmVuY2VzU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNENTk4
QUIxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzU3RvcmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDREI4NTgwMTIwMEVDNTcwMDcyNTRCRSAvKiBXS1R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDREI4NTgxMTIwMEVDNTcwMDcyNTRCRSAvKiBXS1R5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tUeXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNEQjg2QzAxMjAwRkI5NzAwNzI1NEJFIC8qIFdl
YlVSTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNERTA1OTkxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNERTA1OUExMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0VFOTY2QTExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdHRhY2htZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OSw2ICs3NTUsNyBAQAogCQkJCUJDMTExQjVBMTEyRjYy
ODIwMDMzN0JBQiAvKiBtYWMgKi8sCiAJCQkJQkNGMDRDOEMxMUZGOUI3RDAwRjg2QTU4IC8qIEFQ
SU9iamVjdC5oICovLAogCQkJCUJDRjA0QzhFMTFGRjlGNkUwMEY4NkE1OCAvKiBXZWJTdHJpbmcu
aCAqLywKKwkJCQlCQ0RCODZDMDEyMDBGQjk3MDA3MjU0QkUgLyogV2ViVVJMLmggKi8sCiAJCQkJ
MUE2RjlGOEUxMUUxM0VGQzAwREIxMzcxIC8qIENvbW1hbmRMaW5lLmggKi8sCiAJCQkJQkM2NDY5
NkQxMURCRTYwMzAwNjQ1NUIwIC8qIEltbXV0YWJsZUFycmF5LmNwcCAqLywKIAkJCQlCQzY0Njk2
RTExREJFNjAzMDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuaCAqLywKQEAgLTk2OCw2ICs5NzUs
OCBAQAogCQkJCUJDRDU5N0NFMTEyQjU2QUMwMEVDOEMyMyAvKiBXS1ByZWZlcmVuY2VzLmggKi8s
CiAJCQkJQkMyMEVCQUYxMTZFRUIwODAwMDk0QTUwIC8qIFdLU3RyaW5nLmNwcCAqLywKIAkJCQlC
QzIwRUJBRTExNkVFQjA4MDAwOTRBNTAgLyogV0tTdHJpbmcuaCAqLywKKwkJCQlCQ0RCODU4MTEy
MDBFQzU3MDA3MjU0QkUgLyogV0tUeXBlLmNwcCAqLywKKwkJCQlCQ0RCODU4MDEyMDBFQzU3MDA3
MjU0QkUgLyogV0tUeXBlLmggKi8sCiAJCQkJQkMyMEVCQjMxMTZFRUY3QTAwMDk0QTUwIC8qIFdL
VVJMLmNwcCAqLywKIAkJCQlCQzIwRUJCMjExNkVFRjdBMDAwOTRBNTAgLyogV0tVUkwuaCAqLywK
IAkJCSk7CkBAIC0xMzA2LDYgKzEzMTUsOCBAQAogCQkJCTFBRTQ5NzY4MTFGRjY1OEUwMDQ4QjQ2
NCAvKiBOUEpTT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU0OTg3ODExRkY3RkFBMDA0
OEI0NjQgLyogSlNOUE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDlBNDkxMUZGQThD
RTAwNDhCNDY0IC8qIEpTTlBNZXRob2QuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDREI4NTgyMTIw
MEVDNTcwMDcyNTRCRSAvKiBXS1R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDREI4NkMxMTIw
MEZCOTcwMDcyNTRCRSAvKiBXZWJVUkwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTUwNiw2ICsxNTE3
LDcgQEAKIAkJCQkxQUU0OTc2OTExRkY2NThFMDA0OEI0NjQgLyogTlBKU09iamVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUU0OTg3OTExRkY3RkFBMDA0OEI0NjQgLyogSlNOUE9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUU0OUE0QTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1l
dGhvZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0RCODU4MzEyMDBFQzU3MDA3MjU0QkUgLyog
V0tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCShyZXZpc2lvbiA2NDIzMikK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDExIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKK1dLVHlwZUlEIFdLQnVuZGxlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9SZWYo
QVBJT2JqZWN0OjpUeXBlQnVuZGxlKTsKK30KKwogdm9pZCBXS0J1bmRsZVNldENsaWVudChXS0J1
bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlQ2xpZW50ICogd2tDbGllbnQpCiB7CiAgICAgaWYg
KHdrQ2xpZW50ICYmICF3a0NsaWVudC0+dmVyc2lvbikKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oCShyZXZpc2lvbiA2NDIz
MikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBAIHN0cnVjdCBXS0J1bmRsZUNsaWVudCB7
CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVDbGllbnQgV0tCdW5kbGVDbGllbnQ7CiAKK1dL
X0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUdldFR5cGVJRCgpOworCiBXS19FWFBPUlQgdm9pZCBX
S0J1bmRsZVNldENsaWVudChXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlQ2xpZW50ICogY2xp
ZW50KTsKIAogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQb3N0TWVzc2FnZShXS0J1bmRsZVJlZiBi
dW5kbGUsIFdLU3RyaW5nUmVmIG1lc3NhZ2UpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAkocmV2
aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDExIEBACiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKK1dLVHlwZUlE
IFdLQnVuZGxlRnJhbWVHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b1JlZihBUElPYmplY3Q6
OlR5cGVCdW5kbGVGcmFtZSk7Cit9CisKIGJvb2wgV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiB7CiAgICAgcmV0dXJuIHRvV0soZnJhbWVSZWYpLT5p
c01haW5GcmFtZSgpOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5oCShyZXZpc2lvbiA2NDIzMikKKysrIFdl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1dL
X0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUZyYW1lR2V0VHlwZUlEKCk7CisKIFdLX0VYUE9SVCBi
b29sIFdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKTsKIFdL
X0VYUE9SVCBXS0FycmF5UmVmIFdLQnVuZGxlRnJhbWVDb3B5Q2hpbGRGcmFtZXMoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSk7CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA2NDIzMikK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxOSArMzMsMjQgQEAKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAotdm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0b3JDbGllbnQoV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVudCAqIHdrQ2xpZW50KQorV0tUeXBl
SUQgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9SZWYoQVBJT2JqZWN0
OjpUeXBlQnVuZGxlUGFnZSk7Cit9CisKK3ZvaWQgV0tCdW5kbGVQYWdlU2V0RWRpdG9yQ2xpZW50
KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQqIHdrQ2xp
ZW50KQogewogICAgIGlmICh3a0NsaWVudCAmJiAhd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAg
IHRvV0socGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCh3a0Ns
aWVudCk7CiB9CiAKLXZvaWQgV0tCdW5kbGVQYWdlU2V0TG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFn
ZVJlZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQgKiB3a0NsaWVudCkKK3ZvaWQg
V0tCdW5kbGVQYWdlU2V0TG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnQqIHdrQ2xpZW50KQogewogICAgIGlmICh3a0NsaWVudCAmJiAh
d2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHRvV0socGFnZVJlZiktPmluaXRpYWxpemVJbmpl
Y3RlZEJ1bmRsZUxvYWRlckNsaWVudCh3a0NsaWVudCk7CiB9CiAKLXZvaWQgV0tCdW5kbGVQYWdl
U2V0VUlDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZVVJQ2xpZW50
ICogd2tDbGllbnQpCit2b2lkIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFdLQnVuZGxlUGFnZVJl
ZiBwYWdlUmVmLCBXS0J1bmRsZVBhZ2VVSUNsaWVudCogd2tDbGllbnQpCiB7CiAgICAgaWYgKHdr
Q2xpZW50ICYmICF3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgdG9XSyhwYWdlUmVmKS0+aW5p
dGlhbGl6ZUluamVjdGVkQnVuZGxlVUlDbGllbnQod2tDbGllbnQpOwpJbmRleDogV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
aAkocmV2aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsOCBAQCBz
dHJ1Y3QgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50IHsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS0J1
bmRsZVBhZ2VFZGl0b3JDbGllbnQgV0tCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OwogCitXS19FWFBP
UlQgV0tUeXBlSUQgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCk7CisKIFdLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlUGFnZVNldEVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0
TG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGll
bnQqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VTZXRVSUNsaWVudChXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlVUlDbGllbnQqIGNsaWVudCk7CkluZGV4OiBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHJldmlzaW9uIDY0MjMyKQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NiArNTIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnJhbWU+IGNyZWF0
ZVN1YmZyYW1lKFdlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CiAgICAgfldlYkZyYW1lKCk7CiAKKyAgICB2
aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGVCdW5kbGVGcmFtZTsgfQorCiAg
ICAgLy8gQ2FsbGVkIHdoZW4gdGhlIEZyYW1lTG9hZGVyQ2xpZW50IChhbmQgdGhlcmVmb3JlIHRo
ZSBXZWJDb3JlOjpGcmFtZSkgaXMgYmVpbmcgdG9ybiBkb3duLgogICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwogCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiA2
NDIzMikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNiArNjYsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
UGFnZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmll
d1NpemUsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBEcmF3aW5nQXJlYTo6VHlwZSk7CiAg
ICAgfldlYlBhZ2UoKTsKIAorICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
VHlwZUJ1bmRsZVBhZ2U7IH0KKwogICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIFdlYkNvcmU6OlBh
Z2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9CkluZGV4OiBXZWJLaXQyL3dp
bi9XZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
agkocmV2aXNpb24gNjQyMzIpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNDQwLDYgKzQ0MCwxMCBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVk
XFdlYlN0cmluZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cU2hhcmVkXFdlYlVSTC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KIAkJCTxG
aWx0ZXINCiAJCQkJTmFtZT0iQ29yZUlQQ1N1cHBvcnQiDQogCQkJCT4NCkBAIC0xMTM1LDYgKzEx
MzksMTQgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQorCQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tUeXBlLmNwcCINCisJCQkJCQk+DQorCQkJ
CQk8L0ZpbGU+DQorCQkJCQk8RmlsZQ0KKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNz
XEFQSVxDXFdLVHlwZS5oIg0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQog
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tVUkwuY3BwIg0KIAkJCQkJ
CT4NCiAJCQkJCTwvRmlsZT4NCg==
</data>
<flag name="review"
          id="51156"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>