<?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>124307</bug_id>
          
          <creation_ts>2013-11-13 13:43:50 -0800</creation_ts>
          <short_desc>Rename ImmutableArray to API::Array</short_desc>
          <delta_ts>2013-11-13 14:03:03 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philn</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>950339</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-13 13:43:50 -0800</bug_when>
    <thetext>Rename ImmutableArray to API::Array</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950341</commentid>
    <comment_count>1</comment_count>
      <attachid>216851</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-13 13:48:45 -0800</bug_when>
    <thetext>Created attachment 216851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950343</commentid>
    <comment_count>2</comment_count>
      <attachid>216851</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-11-13 13:51:00 -0800</bug_when>
    <thetext>Comment on attachment 216851
Patch

Man, this looks so much better in a separate namespace!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950344</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-13 13:51:51 -0800</bug_when>
    <thetext>Attachment 216851 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/API/Cocoa/WKRemoteObjectCoder.mm&apos;, u&apos;Source/WebKit2/Shared/API/c/WKArray.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/WKContextMenuItem.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/WKDictionary.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/WKMutableArray.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/WKRenderObject.cpp&apos;, u&apos;Source/WebKit2/Shared/API/c/WKSharedAPICast.h&apos;, u&apos;Source/WebKit2/Shared/API/c/mac/WKWebArchive.cpp&apos;, u&apos;Source/WebKit2/Shared/APIArray.cpp&apos;, u&apos;Source/WebKit2/Shared/APIArray.h&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSArray.h&apos;, u&apos;Source/WebKit2/Shared/Cocoa/WKNSArray.mm&apos;, u&apos;Source/WebKit2/Shared/ImmutableArray.cpp&apos;, u&apos;Source/WebKit2/Shared/ImmutableArray.h&apos;, u&apos;Source/WebKit2/Shared/ImmutableDictionary.cpp&apos;, u&apos;Source/WebKit2/Shared/ImmutableDictionary.h&apos;, u&apos;Source/WebKit2/Shared/SecurityOriginData.cpp&apos;, u&apos;Source/WebKit2/Shared/UserMessageCoders.h&apos;, u&apos;Source/WebKit2/Shared/WebArchive.cpp&apos;, u&apos;Source/WebKit2/Shared/WebArchive.h&apos;, u&apos;Source/WebKit2/Shared/WebContextMenuItem.cpp&apos;, u&apos;Source/WebKit2/Shared/WebContextMenuItem.h&apos;, u&apos;Source/WebKit2/Shared/WebOpenPanelParameters.cpp&apos;, u&apos;Source/WebKit2/Shared/WebOpenPanelParameters.h&apos;, u&apos;Source/WebKit2/Shared/WebRenderLayer.cpp&apos;, u&apos;Source/WebKit2/Shared/WebRenderLayer.h&apos;, u&apos;Source/WebKit2/Shared/WebRenderObject.cpp&apos;, u&apos;Source/WebKit2/Shared/WebRenderObject.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKBackForwardListRef.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKOpenPanelParameters.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/WKPage.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/mac/WKContextPrivateMac.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/Cocoa/WKBackForwardList.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKBrowsingContextGroup.mm&apos;, u&apos;Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/Notifications/WebNotificationManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.cpp&apos;, u&apos;Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.cpp&apos;, u&apos;Source/WebKit2/UIProcess/Plugins/PlugInAutoStartProvider.h&apos;, u&apos;Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.cpp&apos;, u&apos;Source/WebKit2/UIProcess/Plugins/WebPluginSiteDataManager.h&apos;, u&apos;Source/WebKit2/UIProcess/StatisticsRequest.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebApplicationCacheManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebBackForwardList.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebBackForwardList.h&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.h&apos;, u&apos;Source/WebKit2/UIProcess/WebContextClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebContextClient.h&apos;, u&apos;Source/WebKit2/UIProcess/WebCookieManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebCookieManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebFindClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebFindClient.h&apos;, u&apos;Source/WebKit2/UIProcess/WebFrameProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebKeyValueStorageManager.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebKeyValueStorageManager.h&apos;, u&apos;Source/WebKit2/UIProcess/WebLoaderClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebMediaCacheManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebOpenPanelResultListenerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageContextMenuClient.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageGroup.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageGroup.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebResourceCacheManagerProxy.cpp&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundle.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleBackForwardListItem.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebFrame.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebFrame.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.h&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/API/C/WKPage.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/Shared/API/c/WKSharedAPICast.h:119:  More than one command on the same line  [whitespace/newline] [4]
Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 80 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>950350</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-13 14:03:03 -0800</bug_when>
    <thetext>Committed r159234: &lt;http://trac.webkit.org/changeset/159234&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216851</attachid>
            <date>2013-11-13 13:48:45 -0800</date>
            <delta_ts>2013-11-13 13:50:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124307-20131113134844.patch</filename>
            <type>text/plain</type>
            <size>134737</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjAyYTk0NjE0NjAyZjU4
YzU2MTRjNWY4ZTVlZTNiNmFmNmE2MDE0YS4uNTI0YTI4OWVkNGFhNzliYjk4MGZjN2JlMDU0ZDdh
ZWE4NDhiNzI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4NyBAQAogMjAxMy0xMS0xMyAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJlbmFtZSBJbW11
dGFibGVBcnJheSB0byBBUEk6OkFycmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjQzMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5t
bToKKyAgICAgICAgKGVuc3VyZU9iamVjdFN0cmVhbSk6CisgICAgICAgICgtW1dLUmVtb3RlT2Jq
ZWN0RGVjb2RlciBpbml0V2l0aEludGVyZmFjZTpyb290T2JqZWN0RGljdGlvbmFyeTpXZWJLaXQ6
Ol0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0FycmF5LmNwcDoKKyAgICAgICAgKFdLQXJy
YXlHZXRUeXBlSUQpOgorICAgICAgICAoV0tBcnJheUNyZWF0ZSk6CisgICAgICAgIChXS0FycmF5
Q3JlYXRlQWRvcHRpbmdWYWx1ZXMpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0NvbnRleHRN
ZW51SXRlbS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHA6Cisg
ICAgICAgIChXS0RpY3Rpb25hcnlDb3B5S2V5cyk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
TXV0YWJsZUFycmF5LmNwcDoKKyAgICAgICAgKFdLTXV0YWJsZUFycmF5Q3JlYXRlKToKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV0tSZW5kZXJP
YmplY3RHZXRDaGlsZHJlbik6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2Fz
dC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0ltcGwpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9t
YWMvV0tXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdLV2ViQXJjaGl2ZUNvcHlTdWJyZXNvdXJj
ZXMpOgorICAgICAgICAoV0tXZWJBcmNoaXZlQ29weVN1YmZyYW1lQXJjaGl2ZXMpOgorICAgICAg
ICAqIFNoYXJlZC9BUElBcnJheS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSW1tdXRhYmxlQXJyYXkuY3BwLgorICAgICAgICAoQVBJOjpBcnJheTo6Y3JlYXRlKToKKyAg
ICAgICAgKEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KToKKyAgICAgICAgKEFQSTo6QXJy
YXk6OkFycmF5KToKKyAgICAgICAgKEFQSTo6QXJyYXk6On5BcnJheSk6CisgICAgICAgICogU2hh
cmVkL0FQSUFycmF5Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRh
YmxlQXJyYXkuaC4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV0tOU0FycmF5Lmg6CisgICAgICAg
ICh3cmFwcGVyKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV0tOU0FycmF5Lm1tOgorICAgICAg
ICAoLVtXS05TQXJyYXkgZGVhbGxvY10pOgorICAgICAgICAoLVtXS05TQXJyYXkgY291bnRdKToK
KyAgICAgICAgKC1bV0tOU0FycmF5IG9iamVjdEF0SW5kZXg6XSk6CisgICAgICAgICgtW1dLTlNB
cnJheSBBUEk6Ol0pOgorICAgICAgICAqIFNoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW1tdXRhYmxlRGljdGlvbmFyeTo6a2V5cyk6CisgICAgICAgICog
U2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGVyZm9ybUFQSUNhbGxiYWNrV2l0aFNl
Y3VyaXR5T3JpZ2luRGF0YVZlY3Rvcik6CisgICAgICAgICogU2hhcmVkL1VzZXJNZXNzYWdlQ29k
ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRW5jb2Rlcjo6YmFzZUVuY29kZSk6
CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZXNzYWdlRGVjb2Rlcjo6YmFzZURlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBcmNoaXZl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXJjaGl2ZTo6c3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXJjaGl2ZTo6c3ViZnJhbWVBcmNoaXZlcyk6CisgICAgICAgICogU2hhcmVkL1dlYkFy
Y2hpdmUuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW06OnN1Ym1lbnVJdGVtc0FzSW1tdXRhYmxlQXJyYXkpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
T3BlblBhbmVsUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5lbFBh
cmFtZXRlcnM6OmFjY2VwdE1JTUVUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk9wZW5QYW5l
bFBhcmFtZXRlcnM6OnNlbGVjdGVkRmlsZU5hbWVzKToKKyAgICAgICAgKiBTaGFyZWQvV2ViT3Bl
blBhbmVsUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6OldlYlJlbmRlckxheWVyKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6Om5l
Z2F0aXZlWk9yZGVyTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpub3Jt
YWxGbG93TGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpwb3NpdGl2ZVpP
cmRlckxpc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVu
ZGVyT2JqZWN0Ojp+V2ViUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6Y2hpbGRyZW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJPYmplY3Q6OmVsZW1lbnRDbGFzc05hbWVzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9t
YWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbToKKyAgICAgICAgKFdLQ29udGV4dEdldEluZm9Gb3JJ
bnN0YWxsZWRQbHVnSW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0Zv
cndhcmRMaXN0Lm1tOgorICAgICAgICAoLVtXS0JhY2tGb3J3YXJkTGlzdCBiYWNrTGlzdFdpdGhM
aW1pdDpdKToKKyAgICAgICAgKC1bV0tCYWNrRm9yd2FyZExpc3QgZm9yd2FyZExpc3RXaXRoTGlt
aXQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91
cC5tbToKKyAgICAgICAgKGNyZWF0ZVdLQXJyYXkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cG9wdWxhdGVDb3B5T2ZOb3RpZmljYXRp
b25QZXJtaXNzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9u
UG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVn
SW5BdXRvU3RhcnRQcm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc0FycmF5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6ZGlkR2V0U2l0ZXNXaXRoRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpblNpdGVEYXRhTWFuYWdlcjo6Y2xlYXJTaXRlRGF0
YSk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2Vy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U3RhdGlzdGljc1JlcXVlc3Q6OmNvbXBsZXRlZFJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJh
Y2tGb3J3YXJkTGlzdDo6YmFja0xpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdEFzSW1tdXRhYmxlQXJy
YXlXaXRoTGltaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OnNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjpwbHVnaW5JbmZvU3RvcmVEaWRMb2FkUGx1Z2lucyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dENsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRDbGllbnQ6OnBsdWdJbkluZm9ybWF0
aW9uQmVjYW1lQXZhaWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dENsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhD
b29raWVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZEdldERhdGFiYXNlc0J5T3JpZ2lu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZEdldERhdGFi
YXNlT3JpZ2lucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZpbmRDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGaW5kTWF0Y2hlc0NsaWVudDo6ZGlkRmluZFN0cmluZ01hdGNoZXMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGaW5kQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9y
YWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRpZEdldEtleVZhbHVlU3RvcmFnZU9y
aWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OmRpZEdldEhvc3RuYW1lc1dpdGhNZWRpYUNh
Y2hlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3Nl
RmlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6
OnNob3dDb250ZXh0TWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnRvU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VH
cm91cDo6YWRkVXNlclNjcmlwdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlbGF0ZWRQYWdlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkRmluZFN0cmluZ01hdGNoZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eS5jcHA6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwOgorICAg
ICAgICAoV0tCdW5kbGVDb3B5T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChjb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6Om9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGU6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZTo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y2hpbGRyZW4pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OmRpZEFzc29jaWF0ZUZv
cm1Db250cm9scyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmZlYXR1cmVzVXNlZEluUGFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpmaW5kTGFyZ2VzdEZyYW1lSW5GcmFtZVNldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNoaWxkRnJh
bWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnRyYWNrZWRSZXBhaW50UmVjdHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisKKzIwMTMtMTEtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KKwogICAgICAgICBSZW1vdmUgV2ViR3JhcGhpY3NDb250ZXh0CiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMDIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmlu
ZGV4IDM3NGQ2NjIwYTkzNTJkZjJkYWM4Y2Y1MWIyNzRmMWUwYjU0OWUxZDcuLjRkOWNiZDRkMTgy
OTk5NzJlYWIyMWE5YjFkM2MyZGFlOTdmMmE3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KQEAgLTI2LDcgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tSZW1vdGVPYmplY3RDb2Rlci5o
IgogCi0jaW1wb3J0ICJJbW11dGFibGVBcnJheS5oIgorI2ltcG9ydCAiQVBJQXJyYXkuaCIKICNp
bXBvcnQgIk11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW1wb3J0ICJXS1JlbW90ZU9iamVjdEludGVy
ZmFjZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJEYXRhLmgiCkBAIC01OSw3ICs1OSw3IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRPYmplY3Qo
V0tSZW1vdGVPYmplY3RFbmNvZGVyCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1JlbW90ZU9iamVjdEVu
Y29kZXIgewogICAgIFJlZlB0cjxNdXRhYmxlRGljdGlvbmFyeT4gX3Jvb3REaWN0aW9uYXJ5Owot
ICAgIEltbXV0YWJsZUFycmF5KiBfb2JqZWN0U3RyZWFtOworICAgIEFQSTo6QXJyYXkqIF9vYmpl
Y3RTdHJlYW07CiAKICAgICBNdXRhYmxlRGljdGlvbmFyeSogX2N1cnJlbnREaWN0aW9uYXJ5Owog
fQpAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVPYmplY3RTdHJlYW0oV0tSZW1v
dGVPYmplY3RFbmNvZGVyICplbmNvZGVyKQogICAgIGlmIChlbmNvZGVyLT5fb2JqZWN0U3RyZWFt
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IG9iamVjdFN0
cmVhbSA9IEltbXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8QVBJOjpBcnJheT4g
b2JqZWN0U3RyZWFtID0gQVBJOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZW5jb2Rlci0+X29iamVj
dFN0cmVhbSA9IG9iamVjdFN0cmVhbS5nZXQoKTsKIAogICAgIGVuY29kZXItPl9yb290RGljdGlv
bmFyeS0+c2V0KG9iamVjdFN0cmVhbUtleSwgb2JqZWN0U3RyZWFtLnJlbGVhc2UoKSk7CkBAIC0y
NjgsNyArMjY4LDcgQEAgc3RhdGljIE5TU3RyaW5nICplc2NhcGVLZXkoTlNTdHJpbmcgKmtleSkK
ICAgICBjb25zdCBJbW11dGFibGVEaWN0aW9uYXJ5KiBfcm9vdERpY3Rpb25hcnk7CiAgICAgY29u
c3QgSW1tdXRhYmxlRGljdGlvbmFyeSogX2N1cnJlbnREaWN0aW9uYXJ5OwogCi0gICAgY29uc3Qg
SW1tdXRhYmxlQXJyYXkqIF9vYmplY3RTdHJlYW07CisgICAgY29uc3QgQVBJOjpBcnJheSogX29i
amVjdFN0cmVhbTsKICAgICBzaXplX3QgX29iamVjdFN0cmVhbVBvc2l0aW9uOwogCiAgICAgTlNT
ZXQgKl9hbGxvd2VkQ2xhc3NlczsKQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgTlNTdHJpbmcg
KmVzY2FwZUtleShOU1N0cmluZyAqa2V5KQogICAgIF9yb290RGljdGlvbmFyeSA9IHJvb3RPYmpl
Y3REaWN0aW9uYXJ5OwogICAgIF9jdXJyZW50RGljdGlvbmFyeSA9IF9yb290RGljdGlvbmFyeTsK
IAotICAgIF9vYmplY3RTdHJlYW0gPSBfcm9vdERpY3Rpb25hcnktPmdldDxJbW11dGFibGVBcnJh
eT4ob2JqZWN0U3RyZWFtS2V5KTsKKyAgICBfb2JqZWN0U3RyZWFtID0gX3Jvb3REaWN0aW9uYXJ5
LT5nZXQ8QVBJOjpBcnJheT4ob2JqZWN0U3RyZWFtS2V5KTsKIAogICAgIHJldHVybiBzZWxmOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwCmluZGV4IDJkM2ExNjM1NWNi
YWI4ODZlMjVlZDk3YmEwYTZlYjZkMDk1M2Q5ZTEuLjMwZjk3ODFmMzE2NGQyZTU3ZmI2ZGRkZDlh
MjljZWM1MmQ5N2RmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAK
QEAgLTI2LDE0ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLQXJy
YXkuaCIKIAotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiQVBJQXJyYXku
aCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAog
V0tUeXBlSUQgV0tBcnJheUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEltbXV0YWJs
ZUFycmF5OjpBUElUeXBlKTsKKyAgICByZXR1cm4gdG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7
CiB9CiAKIFdLQXJyYXlSZWYgV0tBcnJheUNyZWF0ZShXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90
IG51bWJlck9mVmFsdWVzKQpAQCAtNDQsNyArNDQsNyBAQCBXS0FycmF5UmVmIFdLQXJyYXlDcmVh
dGUoV0tUeXBlUmVmKiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZhbHVlcykKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVzOyArK2kpCiAgICAgICAgIGVsZW1lbnRzLnVu
Y2hlY2tlZEFwcGVuZChjb25zdF9jYXN0PEFQSTo6T2JqZWN0Kj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
QVBJOjpPYmplY3QqPih2YWx1ZXNbaV0pKSk7CiAKLSAgICByZXR1cm4gdG9BUEkoSW1tdXRhYmxl
QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOworICAgIHJldHVy
biB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKGVsZW1lbnRzKSkubGVha1JlZigp
KTsKIH0KIAogV0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoV0tUeXBlUmVm
KiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZhbHVlcykKQEAgLTU1LDcgKzU1LDcgQEAgV0tBcnJh
eVJlZiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoV0tUeXBlUmVmKiB2YWx1ZXMsIHNpemVf
dCBudW1iZXJPZlZhbHVlcykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVmFs
dWVzOyArK2kpCiAgICAgICAgIGVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChhZG9wdFJlZihjb25z
dF9jYXN0PEFQSTo6T2JqZWN0Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgQVBJOjpPYmplY3QqPih2YWx1
ZXNbaV0pKSkpOwogCi0gICAgcmV0dXJuIHRvQVBJKEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3Rk
Ojptb3ZlKGVsZW1lbnRzKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoQVBJOjpBcnJh
eTo6Y3JlYXRlKHN0ZDo6bW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7CiB9CiAKIFdLVHlwZVJl
ZiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBhcnJheVJlZiwgc2l6ZV90IGluZGV4
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJ
dGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5j
cHAKaW5kZXggODY5ZDQ3YTczODVhMWEzMzBhZjMxYTYwY2RiM2UwNzQwZjQ0NGQxNS4uNGRhNzZk
ODdiYTExNjZjYTQ3NDI0NzllNjFlZjVjOTA1ODNkNmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0TWVudUl0ZW0uaCIKIAot
I2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1E
YXRhLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0RpY3Rpb25hcnkuY3BwCmluZGV4IGEzYmRjZjk4ZjU3MDQ1OGQ0MWY5NmJlNzkwNGEw
NDAzZDQzOTJlN2YuLmVmMDc1NTg2NjRkYTRlOTY3YjZkNjkzMGZhMjcyZDVlMGMzNTRlNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5Lmgi
CiAKLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAj
aW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
CkBAIC00OSw2ICs0OSw2IEBAIHNpemVfdCBXS0RpY3Rpb25hcnlHZXRTaXplKFdLRGljdGlvbmFy
eVJlZiBkaWN0aW9uYXJ5UmVmKQogCiBXS0FycmF5UmVmIFdLRGljdGlvbmFyeUNvcHlLZXlzKFdL
RGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5UmVmKQogewotICAgIFJlZlB0cjxJbW11dGFibGVBcnJh
eT4ga2V5cyA9IHRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+a2V5cygpOworICAgIFJlZlB0cjxBUEk6
OkFycmF5PiBrZXlzID0gdG9JbXBsKGRpY3Rpb25hcnlSZWYpLT5rZXlzKCk7CiAgICAgcmV0dXJu
IHRvQVBJKGtleXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXkuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLTXV0YWJsZUFycmF5LmNwcAppbmRleCAxYTYzN2QxN2E2NGEwZDNmZDI2
ZmY2Njg1MDQzY2E5YTZmYjUyNjZjLi5mMDY3ODJkYWUxMTU0Nzg4OTRlMjA5MWRlZGRjMDk4YmYz
N2MyMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxl
QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS011dGFibGVBcnJh
eS5jcHAKQEAgLTI2LDE0ICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldLTXV0YWJsZUFycmF5LmgiCiAKLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1
ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKIFdLTXV0YWJsZUFycmF5UmVmIFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkKIHsK
LSAgICByZXR1cm4gY29uc3RfY2FzdDxXS011dGFibGVBcnJheVJlZj4odG9BUEkoSW1tdXRhYmxl
QXJyYXk6OmNyZWF0ZSgpLmxlYWtSZWYoKSkpOworICAgIHJldHVybiBjb25zdF9jYXN0PFdLTXV0
YWJsZUFycmF5UmVmPih0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoKS5sZWFrUmVmKCkpKTsKIH0K
IAogdm9pZCBXS0FycmF5QXBwZW5kSXRlbShXS011dGFibGVBcnJheVJlZiBhcnJheVJlZiwgV0tU
eXBlUmVmIGl0ZW1SZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUmVuZGVy
T2JqZWN0LmNwcAppbmRleCAyYmM5NzI4Y2ZjNTg1NTMxMTFmNzkxOTE5MzJjODEyOWRhMDk5YWI1
Li44NjRiNmU3YWQ5OGRlNzUxZmFjZTVkZjZkZWM0YjZhYjUxYWJlM2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1JlbmRlck9iamVjdC5jcHAKQEAgLTc5LDUgKzc5LDUg
QEAgV0tSZWN0IFdLUmVuZGVyT2JqZWN0R2V0RnJhbWVSZWN0KFdLUmVuZGVyT2JqZWN0UmVmIHJl
bmRlck9iamVjdFJlZikKIAogV0tBcnJheVJlZiBXS1JlbmRlck9iamVjdEdldENoaWxkcmVuKFdL
UmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9J
bXBsKHJlbmRlck9iamVjdFJlZiktPmNoaWxkcmVuKCkuZ2V0KCkpOworICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+Y2hpbGRyZW4oKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKaW5kZXggZGMyZDlkNGI3Zjk5Mjk3
YjFlMDU3Yjg2YWI1NGVmMzIzMTRlYmRjZi4uMTQ4Zjg1NzBmZjY1YjU5NjgwNmE1ZTNjZWZmNDU3
NmY0MzFkNWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hh
cmVkQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaApAQCAtNTgsMTEgKzU4LDEzIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVu
dFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyU2NyaXB0VHlwZXMuaD4KIAorbmFtZXNw
YWNlIEFQSSB7CitjbGFzcyBBcnJheTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IEltbXV0YWJsZUFycmF5OwogY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKLWNsYXNzIE11dGFi
bGVBcnJheTsKIGNsYXNzIE11dGFibGVEaWN0aW9uYXJ5OwogY2xhc3MgT2JqQ09iamVjdEdyYXBo
OwogY2xhc3MgV2ViQXJjaGl2ZTsKQEAgLTg5LDcgKzkxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
SW1wbFR5cGU+IHN0cnVjdCBJbXBsVHlwZUluZm8geyB9OwogICAgIHRlbXBsYXRlPD4gc3RydWN0
IEFQSVR5cGVJbmZvPFRoZUFQSVR5cGU+IHsgdHlwZWRlZiBUaGVJbXBsVHlwZSogSW1wbFR5cGU7
IH07IFwKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88VGhlSW1wbFR5cGUqPiB7
IHR5cGVkZWYgVGhlQVBJVHlwZSBBUElUeXBlOyB9OwogCi1XS19BRERfQVBJX01BUFBJTkcoV0tB
cnJheVJlZiwgSW1tdXRhYmxlQXJyYXkpCitXS19BRERfQVBJX01BUFBJTkcoV0tBcnJheVJlZiwg
QVBJOjpBcnJheSkKIFdLX0FERF9BUElfTUFQUElORyhXS0Jvb2xlYW5SZWYsIFdlYkJvb2xlYW4p
CiBXS19BRERfQVBJX01BUFBJTkcoV0tDZXJ0aWZpY2F0ZUluZm9SZWYsIFdlYkNlcnRpZmljYXRl
SW5mbykKIFdLX0FERF9BUElfTUFQUElORyhXS0Nvbm5lY3Rpb25SZWYsIFdlYkNvbm5lY3Rpb24p
CkBAIC0xMTQsNyArMTE2LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVVJMUmVxdWVzdFJlZiwg
V2ViVVJMUmVxdWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS1VSTFJlc3BvbnNlUmVmLCBXZWJV
UkxSZXNwb25zZSkKIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJDb250ZW50VVJMUGF0dGVyblJl
ZiwgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBUElUeXBl
SW5mbzxXS011dGFibGVBcnJheVJlZj4geyB0eXBlZGVmIEltbXV0YWJsZUFycmF5KiBJbXBsVHlw
ZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJbmZvPFdLTXV0YWJsZUFycmF5UmVmPiB7
IHR5cGVkZWYgQVBJOjpBcnJheSogSW1wbFR5cGU7IH07CiAKICNpZiBQTEFURk9STShNQUMpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tXZWJBcmNoaXZlUmVmLCBXZWJBcmNoaXZlKQpAQCAtMTQyLDcg
KzE0NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBpbmxpbmUgdHlwZW5hbWUgQVBJVHlwZUlu
Zm88VD46OkltcGxUeXBlIHRvSW1wbChUIHQpCiB7CiAgICAgLy8gQW4gZXhhbXBsZSBvZiB0aGUg
Y29udmVyc2lvbnMgdGhhdCB0YWtlIHBsYWNlOgotICAgIC8vIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S0FycmF5KiAtPiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tBcnJheSAtPiBzdHJ1Y3QgT3BhcXVlV0tB
cnJheSAtPiBzdHJ1Y3QgT3BhcXVlV0tBcnJheSogLT4gSW1tdXRhYmxlQXJyYXkqCisgICAgLy8g
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLQXJyYXkqIC0+IGNvbnN0IHN0cnVjdCBPcGFxdWVXS0FycmF5
IC0+IHN0cnVjdCBPcGFxdWVXS0FycmF5IC0+IHN0cnVjdCBPcGFxdWVXS0FycmF5KiAtPiBBUEk6
OkFycmF5KgogICAgIAogICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
Pjo6dHlwZSBQb3RlbnRpYWxseUNvbnN0VmFsdWVUeXBlOwogICAgIHR5cGVkZWYgdHlwZW5hbWUg
c3RkOjpyZW1vdmVfY29uc3Q8UG90ZW50aWFsbHlDb25zdFZhbHVlVHlwZT46OnR5cGUgTm9uQ29u
c3RWYWx1ZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFj
L1dLV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvbWFjL1dLV2Vi
QXJjaGl2ZS5jcHAKaW5kZXggYzlkNGZlNjMxYWE2YTIwYjliMzVjYmU5ZTMzYjFlZjA3OTlkM2Iz
YS4uNjc3ODQ5ZTQzMmQ2ZjMyYTM1MzI3MDJiNjU4MzRmNWU1ZWZmNTFjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL21hYy9XS1dlYkFyY2hpdmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9tYWMvV0tXZWJBcmNoaXZlLmNwcApAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLV2ViQXJjaGl2ZS5oIgog
Ci0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQ
SUNhc3QuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKQEAgLTY3LDEzICs2NywxMyBA
QCBXS1dlYkFyY2hpdmVSZXNvdXJjZVJlZiBXS1dlYkFyY2hpdmVDb3B5TWFpblJlc291cmNlKFdL
V2ViQXJjaGl2ZVJlZiB3ZWJBcmNoaXZlUgogCiBXS0FycmF5UmVmIFdLV2ViQXJjaGl2ZUNvcHlT
dWJyZXNvdXJjZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7Ci0gICAgUmVmUHRy
PEltbXV0YWJsZUFycmF5PiBzdWJyZXNvdXJjZXMgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPnN1
YnJlc291cmNlcygpOworICAgIFJlZlB0cjxBUEk6OkFycmF5PiBzdWJyZXNvdXJjZXMgPSB0b0lt
cGwod2ViQXJjaGl2ZVJlZiktPnN1YnJlc291cmNlcygpOwogICAgIHJldHVybiB0b0FQSShzdWJy
ZXNvdXJjZXMucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tXZWJBcmNo
aXZlQ29weVN1YmZyYW1lQXJjaGl2ZXMoV0tXZWJBcmNoaXZlUmVmIHdlYkFyY2hpdmVSZWYpCiB7
Ci0gICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBzdWJmcmFtZUFyY2hpdmVzID0gdG9JbXBsKHdl
YkFyY2hpdmVSZWYpLT5zdWJmcmFtZUFyY2hpdmVzKCk7CisgICAgUmVmUHRyPEFQSTo6QXJyYXk+
IHN1YmZyYW1lQXJjaGl2ZXMgPSB0b0ltcGwod2ViQXJjaGl2ZVJlZiktPnN1YmZyYW1lQXJjaGl2
ZXMoKTsKICAgICByZXR1cm4gdG9BUEkoc3ViZnJhbWVBcmNoaXZlcy5yZWxlYXNlKCkubGVha1Jl
ZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUFycmF5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElBcnJheS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjliOTNl
MTM4OTg5MWM0ZmY3OWQ3MTQyOTA5YzQ4NmVlMTViZDE1MQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElBcnJheS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElBcnJheS5oIgorCisjaW5j
bHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBBUEkgeworCitQYXNzUmVmUHRyPEFycmF5
PiBBcnJheTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8T2Jq
ZWN0Pj4oKSk7Cit9CisKK1Bhc3NSZWZQdHI8QXJyYXk+IEFycmF5OjpjcmVhdGUoVmVjdG9yPFJl
ZlB0cjxPYmplY3Q+PiBlbGVtZW50cykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFycmF5
KHN0ZDo6bW92ZShlbGVtZW50cykpKTsKK30KKworUGFzc1JlZlB0cjxBcnJheT4gQXJyYXk6OmNy
ZWF0ZVN0cmluZ0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdzKQoreworICAgIFZl
Y3RvcjxSZWZQdHI8T2JqZWN0Pj4gZWxlbWVudHM7CisgICAgZWxlbWVudHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzdHJpbmdzLnNpemUoKSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmlu
ZyA6IHN0cmluZ3MpCisgICAgICAgIGVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXZWJLaXQ6Oldl
YlN0cmluZzo6Y3JlYXRlKHN0cmluZykpOworCisgICAgcmV0dXJuIGNyZWF0ZShzdGQ6Om1vdmUo
ZWxlbWVudHMpKTsKK30KKworQXJyYXk6OkFycmF5KFZlY3RvcjxSZWZQdHI8T2JqZWN0Pj4gZWxl
bWVudHMpCisgICAgOiBtX2VsZW1lbnRzKHN0ZDo6bW92ZShlbGVtZW50cykpCit7Cit9CisKK0Fy
cmF5Ojp+QXJyYXkoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElBcnJheS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSUFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBlMDkxNjI5ZWVkODgxZThkZmY2MDVjYTg2NTg5OGQ1
ZDIxZjZlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElBcnJh
eS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFQSUFycmF5X2gKKyNk
ZWZpbmUgQVBJQXJyYXlfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEFycmF5IEZJTkFMIDogcHVibGlj
IFR5cGVkT2JqZWN0PE9iamVjdDo6VHlwZTo6QXJyYXk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBcnJheT4gY3JlYXRlKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXk+
IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE9iamVjdD4+IGVsZW1lbnRzKTsKKworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEFycmF5PiBjcmVhdGVTdHJpbmdBcnJheShjb25zdCBWZWN0b3I8U3RyaW5nPiYp
OworCisgICAgdmlydHVhbCB+QXJyYXkoKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgVCogYXQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9lbGVtZW50c1tp
XS0+dHlwZSgpICE9IFQ6OkFQSVR5cGUpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fZWxlbWVudHNbaV0uZ2V0KCkpOworICAg
IH0KKworICAgIE9iamVjdCogYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHNb
aV0uZ2V0KCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHMu
c2l6ZSgpOyB9CisKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE9iamVjdD4+JiBlbGVtZW50cygp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KKyAgICBWZWN0b3I8UmVmUHRyPE9iamVjdD4+
JiBlbGVtZW50cygpIHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBBcnJheShWZWN0b3I8UmVmUHRyPE9iamVjdD4+IGVsZW1lbnRzKTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8T2JqZWN0Pj4gbV9lbGVtZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQor
CisjZW5kaWYgLy8gQVBJQXJyYXlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvY29hL1dLTlNBcnJheS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dLTlNBcnJh
eS5oCmluZGV4IDRiY2EyYWViNjZmM2E2N2EzYzNlNWY4M2RkN2QxNTJhMzNmNzJhMzcuLmYwNTFm
YzNmMDg5ODJiOTI3MDc4MTg1ODA2MDYwNzQ3ZTE0OTQ4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29jb2EvV0tOU0FycmF5LmgKQEAgLTI3LDExICsyNywxNCBAQAogCiAjaWYgV0tfQVBJX0VO
QUJMRUQKIAotI2ltcG9ydCAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbXBvcnQgIkFQSUFycmF5Lmgi
CiAjaW1wb3J0ICJXS09iamVjdC5oIgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWlubGluZSBOU0Fy
cmF5ICp3cmFwcGVyKEltbXV0YWJsZUFycmF5JiBhcnJheSkgeyBBU1NFUlQoW2FycmF5LndyYXBw
ZXIoKSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pOyByZXR1cm4gKE5TQXJyYXkgKilh
cnJheS53cmFwcGVyKCk7IH0KK2lubGluZSBOU0FycmF5ICp3cmFwcGVyKEFQSTo6QXJyYXkmIGFy
cmF5KQoreworICAgIEFTU0VSVChbYXJyYXkud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W05TQXJy
YXkgY2xhc3NdXSk7CisKKyAgICByZXR1cm4gKE5TQXJyYXkgKilhcnJheS53cmFwcGVyKCk7CiB9
CiAKIEBpbnRlcmZhY2UgV0tOU0FycmF5IDogTlNBcnJheSA8V0tPYmplY3Q+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tOU0FycmF5Lm1tIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0NvY29hL1dLTlNBcnJheS5tbQppbmRleCBhMTVhNGYyM2Y0ZDg2Y2QwNTY3ZDZk
OGVjZTVjMWM4NThmZTNjNWY2Li40YWZiNWZiMjg4MmEwMmUxMjA4OTY4MmI2OTA2YjM2ZGEzZTIy
YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV0tOU0FycmF5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9XS05TQXJyYXkubW0KQEAgLTI4LDE1
ICsyOCwxMyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKLQogQGltcGxlbWVudGF0aW9uIFdLTlNBcnJheSB7Ci0gICAgc3RkOjphbGlnbmVkX3N0b3Jh
Z2U8c2l6ZW9mKEltbXV0YWJsZUFycmF5KSwgc3RkOjphbGlnbm1lbnRfb2Y8SW1tdXRhYmxlQXJy
YXk+Ojp2YWx1ZT46OnR5cGUgX2FycmF5OworICAgIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVv
ZihBUEk6OkFycmF5KSwgc3RkOjphbGlnbm1lbnRfb2Y8QVBJOjpBcnJheT46OnZhbHVlPjo6dHlw
ZSBfYXJyYXk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
SW1tdXRhYmxlQXJyYXkqPigmX2FycmF5KS0+fkltbXV0YWJsZUFycmF5KCk7CisgICAgcmVpbnRl
cnByZXRfY2FzdDxBUEk6OkFycmF5Kj4oJl9hcnJheSktPn5BcnJheSgpOwogCiAgICAgW3N1cGVy
IGRlYWxsb2NdOwogfQpAQCAtNDUsMTIgKzQzLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKIC0gKE5TVUludGVnZXIpY291bnQKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJ
bW11dGFibGVBcnJheSo+KCZfYXJyYXkpLT5zaXplKCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8QVBJOjpBcnJheSo+KCZfYXJyYXkpLT5zaXplKCk7CiB9CiAKIC0gKGlkKW9iamVjdEF0
SW5kZXg6KE5TVUludGVnZXIpaQogewotICAgIEFQSTo6T2JqZWN0KiBvYmplY3QgPSByZWludGVy
cHJldF9jYXN0PEltbXV0YWJsZUFycmF5Kj4oJl9hcnJheSktPmF0KGkpOworICAgIEFQSTo6T2Jq
ZWN0KiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEFQSTo6QXJyYXkqPigmX2FycmF5KS0+YXQo
aSk7CiAgICAgcmV0dXJuIG9iamVjdCA/IG9iamVjdC0+d3JhcHBlcigpIDogW05TTnVsbCBudWxs
XTsKIH0KIApAQCAtNjUsNyArNjMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiAtIChB
UEk6Ok9iamVjdCYpX2FwaU9iamVjdAogewotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxB
UEk6Ok9iamVjdCo+KCZfYXJyYXkpOworICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxBUEk6
OkFycmF5Kj4oJl9hcnJheSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9JbW11dGFibGVBcnJheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRh
YmxlQXJyYXkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTMxZDk4NTgyNzRk
NGJhYmRlN2ZjOWQ5MDZiNmFlZjU2NGM1ODIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCi0KLSNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVBhc3NSZWZQdHI8SW1tdXRhYmxlQXJy
YXk+IEltbXV0YWJsZUFycmF5OjpjcmVhdGUoKQotewotICAgIHJldHVybiBjcmVhdGUoVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+KCkpOwotfQotCi1QYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5
PiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBlbGVt
ZW50cykKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltbXV0YWJsZUFycmF5KHN0ZDo6bW92
ZShlbGVtZW50cykpKTsKLX0KLQotUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gSW1tdXRhYmxl
QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdzKQot
ewotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBlbGVtZW50czsKLSAgICBlbGVtZW50
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0cmluZ3Muc2l6ZSgpKTsKLQotICAgIGZvciAoY29u
c3QgYXV0byYgc3RyaW5nIDogc3RyaW5ncykKLSAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBw
ZW5kKFdlYlN0cmluZzo6Y3JlYXRlKHN0cmluZykpOwotCi0gICAgcmV0dXJuIGNyZWF0ZShzdGQ6
Om1vdmUoZWxlbWVudHMpKTsKLX0KLQotSW1tdXRhYmxlQXJyYXk6OkltbXV0YWJsZUFycmF5KFZl
Y3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBlbGVtZW50cykKLSAgICA6IG1fZWxlbWVudHMoc3Rk
Ojptb3ZlKGVsZW1lbnRzKSkKLXsKLX0KLQotSW1tdXRhYmxlQXJyYXk6On5JbW11dGFibGVBcnJh
eSgpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1t
dXRhYmxlQXJyYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc4MjAzMzkzNzdh
NjU3YmZlMzc5N2M2NzFlYzY4NzUxNDBhZmZiZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXku
aAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIElt
bXV0YWJsZUFycmF5X2gKLSNkZWZpbmUgSW1tdXRhYmxlQXJyYXlfaAotCi0jaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LS8vIEltbXV0YWJsZUFycmF5IC0gQW4gaW1tdXRhYmxlIGFycmF5IHR5cGUgc3VpdGFibGUgZm9y
IHZlbmRpbmcgdG8gYW4gQVBJLgotCi1jbGFzcyBJbW11dGFibGVBcnJheSBGSU5BTCA6IHB1Ymxp
YyBBUEk6OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlOjpBcnJheT4gewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBjcmVhdGUoKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8QVBJOjpP
YmplY3Q+PiBlbGVtZW50cyk7Ci0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJh
eT4gY3JlYXRlU3RyaW5nQXJyYXkoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKLQotICAgIHZpcnR1
YWwgfkltbXV0YWJsZUFycmF5KCk7Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQq
IGF0KHNpemVfdCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1fZWxlbWVudHNbaV0tPnR5
cGUoKSAhPSBUOjpBUElUeXBlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2VsZW1lbnRzW2ldLmdldCgpKTsKLSAgICB9Ci0K
LSAgICBBUEk6Ok9iamVjdCogYXQoc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHNb
aV0uZ2V0KCk7IH0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHMu
c2l6ZSgpOyB9Ci0KLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4mIGVsZW1l
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQotICAgIFZlY3RvcjxSZWZQdHI8QVBJ
OjpPYmplY3Q+PiYgZWxlbWVudHMoKSB7IHJldHVybiBtX2VsZW1lbnRzOyB9Ci0KLXByb3RlY3Rl
ZDoKLSAgICBJbW11dGFibGVBcnJheShWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gZWxlbWVu
dHMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IG1fZWxlbWVudHM7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEltbXV0YWJsZUFycmF5X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmNwcAppbmRleCBmMzI3
Njg4MzU1NmZlNjQ1MDYxNWZhMWI3NmNmZmMxNmI1NDkzZGNjLi5lM2M3NmIyZGU3Mzc0NDUxOTg5
NjY5YzgzODFiNWNkZjVlOGQ5NzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
SW1tdXRhYmxlRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0
YWJsZURpY3Rpb25hcnkuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgogCi0jaW5jbHVkZSAiSW1tdXRhYmxl
QXJyYXkuaCIKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDEwICs0NCwxMCBAQCBJbW11dGFibGVEaWN0aW9u
YXJ5Ojp+SW1tdXRhYmxlRGljdGlvbmFyeSgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IEltbXV0YWJsZURpY3Rpb25hcnk6OmtleXMoKSBjb25zdAorUGFzc1JlZlB0cjxBUEk6
OkFycmF5PiBJbW11dGFibGVEaWN0aW9uYXJ5OjprZXlzKCkgY29uc3QKIHsKICAgICBpZiAobV9t
YXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOwor
ICAgICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKCk7CiAKICAgICBWZWN0b3I8UmVmUHRy
PEFQSTo6T2JqZWN0Pj4ga2V5czsKICAgICBrZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9t
YXAuc2l6ZSgpKTsKQEAgLTU1LDcgKzU1LDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
SW1tdXRhYmxlRGljdGlvbmFyeTo6a2V5cygpIGNvbnN0CiAgICAgZm9yIChjb25zdCBhdXRvJiBr
ZXkgOiBtX21hcC5rZXlzKCkpCiAgICAgICAgIGtleXMudW5jaGVja2VkQXBwZW5kKFdlYlN0cmlu
Zzo6Y3JlYXRlKGtleSkpOwogCi0gICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3Rk
Ojptb3ZlKGtleXMpKTsKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShr
ZXlzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9JbW11dGFibGVEaWN0aW9uYXJ5LmgKaW5kZXggMmVhN2QzZjViM2MwZGI5NzZhZjJhNjA3ZjEz
ZWVkNGVhNDZmZmE3ZS4uNjcyM2NiZTA2MDNiYzQ3ZWYzZTQ0NzE4NjkwNDAyY2NmZTYwYTczMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ltbXV0YWJsZURpY3Rpb25hcnkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5oCkBAIC0zMiw5
ICszMiwxMSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgQVBJ
IHsKK2NsYXNzIEFycmF5OworfQogCi1jbGFzcyBJbW11dGFibGVBcnJheTsKK25hbWVzcGFjZSBX
ZWJLaXQgewogCiAvLyBJbW11dGFibGVEaWN0aW9uYXJ5IC0gQW4gaW1tdXRhYmxlIGRpY3Rpb25h
cnkgdHlwZSBzdWl0YWJsZSBmb3IgdmVuZGluZyB0byBhbiBBUEkuCiAKQEAgLTgwLDcgKzgyLDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogICAgIH0KIAotICAg
IFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGtleXMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PEFQSTo6QXJyYXk+IGtleXMoKSBjb25zdDsKIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5
T3JpZ2luRGF0YS5jcHAKaW5kZXggMDAwMjJlMzU3YzZiZGM3MzczOGNjZDkzZDUwOWQ5NzIwODEw
OTg0Yy4uNTMwZWE0NTM0YWJjNmQ5M2NhOWU4ODI4NDQ4MTNmN2JlY2FiZTM5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTI2LDggKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIK
IAotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogCkBAIC04Nyw3ICs4Niw3IEBAIHZvaWQg
cGVyZm9ybUFQSUNhbGxiYWNrV2l0aFNlY3VyaXR5T3JpZ2luRGF0YVZlY3Rvcihjb25zdCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5ECiAgICAgICAgIHNlY3VyaXR5T3JpZ2lucy51bmNoZWNrZWRBcHBl
bmQoc3RkOjptb3ZlKG9yaWdpbikpOwogICAgIH0KIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2Fs
bGJhY2tXaXRoUmV0dXJuVmFsdWUoSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoc2Vj
dXJpdHlPcmlnaW5zKSkuZ2V0KCkpOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUoQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShzZWN1cml0eU9yaWdpbnMp
KS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAppbmRleCAxMTNhYTdhNTZiMjExMDE1NzEyMTNlNjk1ODEz
MGQ4YTllYjgxOGUwLi4yZDc5YTUyZDBjMTE3YWYzNzI0ODVkNjM1YzY4YzU3ODlhYzJjMTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaApAQCAtMjYsMTAgKzI2
LDEwIEBACiAjaWZuZGVmIFVzZXJNZXNzYWdlQ29kZXJzX2gKICNkZWZpbmUgVXNlck1lc3NhZ2VD
b2RlcnNfaAogCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBcmd1bWVudERlY29k
ZXIuaCIKICNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCi0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJJbW11dGFibGVE
aWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV2Vi
Q2VydGlmaWNhdGVJbmZvLmgiCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6QXJyYXk6IHsK
LSAgICAgICAgICAgIEltbXV0YWJsZUFycmF5KiBhcnJheSA9IHN0YXRpY19jYXN0PEltbXV0YWJs
ZUFycmF5Kj4obV9yb290KTsKKyAgICAgICAgICAgIEFQSTo6QXJyYXkqIGFycmF5ID0gc3RhdGlj
X2Nhc3Q8QVBJOjpBcnJheSo+KG1fcm9vdCk7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihhcnJheS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJyYXktPnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIGVuY29kZXIg
PDwgT3duZXIoYXJyYXktPmF0KGkpKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBlbmNvZGVyIDw8IE93bmVyKHJlbmRlck9iamVjdC0+ZWxlbWVudENsYXNzTmFtZXMo
KSk7CiAgICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+YWJzb2x1dGVQb3NpdGlv
bigpOwogICAgICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJPYmplY3QtPmZyYW1lUmVjdCgpOwot
ICAgICAgICAgICAgZW5jb2RlciA8PCBPd25lcihyZW5kZXJPYmplY3QtPmNoaWxkcmVuKCkuZ2V0
KCkpOworICAgICAgICAgICAgZW5jb2RlciA8PCBPd25lcihyZW5kZXJPYmplY3QtPmNoaWxkcmVu
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBB
UEk6Ok9iamVjdDo6VHlwZTo6VVJMOiB7CkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIHZlY3Rvci5hcHBlbmQoZWxlbWVudC5yZWxlYXNlKCkpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBJbW11dGFibGVBcnJheTo6Y3JlYXRl
KHN0ZDo6bW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IEFQSTo6QXJy
YXk6OmNyZWF0ZShzdGQ6Om1vdmUodmVjdG9yKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpEaWN0aW9uYXJ5OiB7CkBAIC00
MTksOCArNDE5LDggQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
b3NpdGl2ZVpPcmRlckxpc3RDb2RlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgY29kZXIubV9yb290ID0gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShzdGF0aWNf
cG9pbnRlcl9jYXN0PFdlYlJlbmRlck9iamVjdD4ocmVuZGVyZXIpLCBpc1JlZmxlY3Rpb24sIGlz
Q2xpcHBpbmcsIGlzQ2xpcHBlZCwgc3RhdGljX2Nhc3Q8V2ViUmVuZGVyTGF5ZXI6OkNvbXBvc2l0
aW5nTGF5ZXJUeXBlPihjb21wb3NpdGluZ0xheWVyVHlwZUFzVUludDMyKSwKLSAgICAgICAgICAg
ICAgICBhYnNvbHV0ZUJvdW5kaW5nQm94LCBzdGF0aWNfcG9pbnRlcl9jYXN0PEltbXV0YWJsZUFy
cmF5PihuZWdhdGl2ZVpPcmRlckxpc3QpLCBzdGF0aWNfcG9pbnRlcl9jYXN0PEltbXV0YWJsZUFy
cmF5Pihub3JtYWxGbG93TGlzdCksCi0gICAgICAgICAgICAgICAgc3RhdGljX3BvaW50ZXJfY2Fz
dDxJbW11dGFibGVBcnJheT4ocG9zaXRpdmVaT3JkZXJMaXN0KSk7CisgICAgICAgICAgICAgICAg
YWJzb2x1dGVCb3VuZGluZ0JveCwgc3RhdGljX3BvaW50ZXJfY2FzdDxBUEk6OkFycmF5PihuZWdh
dGl2ZVpPcmRlckxpc3QpLCBzdGF0aWNfcG9pbnRlcl9jYXN0PEFQSTo6QXJyYXk+KG5vcm1hbEZs
b3dMaXN0KSwKKyAgICAgICAgICAgICAgICBzdGF0aWNfcG9pbnRlcl9jYXN0PEFQSTo6QXJyYXk+
KHBvc2l0aXZlWk9yZGVyTGlzdCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6UmVuZGVyT2JqZWN0OiB7CkBAIC00NTAsNyAr
NDUwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlbi0+dHlwZSgpICE9IEFQSTo6T2JqZWN0OjpUeXBl
OjpBcnJheSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb2Rl
ci5tX3Jvb3QgPSBXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZShuYW1lLCBlbGVtZW50VGFnTmFtZSwg
ZWxlbWVudElELCBzdGF0aWNfcG9pbnRlcl9jYXN0PEltbXV0YWJsZUFycmF5PihlbGVtZW50Q2xh
c3NOYW1lcyksIGFic29sdXRlUG9zaXRpb24sIGZyYW1lUmVjdCwgc3RhdGljX3BvaW50ZXJfY2Fz
dDxJbW11dGFibGVBcnJheT4oY2hpbGRyZW4pKTsKKyAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9
IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKG5hbWUsIGVsZW1lbnRUYWdOYW1lLCBlbGVtZW50SUQs
IHN0YXRpY19wb2ludGVyX2Nhc3Q8QVBJOjpBcnJheT4oZWxlbWVudENsYXNzTmFtZXMpLCBhYnNv
bHV0ZVBvc2l0aW9uLCBmcmFtZVJlY3QsIHN0YXRpY19wb2ludGVyX2Nhc3Q8QVBJOjpBcnJheT4o
Y2hpbGRyZW4pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
QVBJOjpPYmplY3Q6OlR5cGU6OlVSTDogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmUuY3Bw
CmluZGV4IDUyODAxNmRiOTUyMDRhOTJkYTIzMTZlNTg5MmU0ZjM5ZGQ3ZGNjYWEuLjNlZTUzZTk4
YmY4YjlhZjFkNTI3NDc0NWY4NjYzM2U3NmFlZTZhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
QXJjaGl2ZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2lu
Y2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRl
ICJXZWJBcmNoaXZlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJBcmNo
aXZlPiBXZWJBcmNoaXZlOjpjcmVhdGUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2Us
IEltbXV0YWJsZUFycmF5KiBzdWJyZXNvdXJjZXMsIEltbXV0YWJsZUFycmF5KiBzdWJmcmFtZUFy
Y2hpdmVzKQorUGFzc1JlZlB0cjxXZWJBcmNoaXZlPiBXZWJBcmNoaXZlOjpjcmVhdGUoV2ViQXJj
aGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gc3VicmVz
b3VyY2VzLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHN1YmZyYW1lQXJjaGl2ZXMpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJBcmNoaXZlKG1haW5SZXNvdXJjZSwgc3VicmVzb3VyY2Vz
LCBzdWJmcmFtZUFyY2hpdmVzKSk7CiB9CkBAIC01OCw3ICs1OCw3IEBAIFBhc3NSZWZQdHI8V2Vi
QXJjaGl2ZT4gV2ViQXJjaGl2ZTo6Y3JlYXRlKFJhbmdlKiByYW5nZSkKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkFyY2hpdmUoTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKHJhbmdlKSkpOwog
fQogCi1XZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFdlYkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291
cmNlLCBJbW11dGFibGVBcnJheSogc3VicmVzb3VyY2VzLCBJbW11dGFibGVBcnJheSogc3ViZnJh
bWVBcmNoaXZlcykKK1dlYkFyY2hpdmU6OldlYkFyY2hpdmUoV2ViQXJjaGl2ZVJlc291cmNlKiBt
YWluUmVzb3VyY2UsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gc3VicmVzb3VyY2VzLCBQYXNzUmVm
UHRyPEFQSTo6QXJyYXk+IHN1YmZyYW1lQXJjaGl2ZXMpCiAgICAgOiBtX2NhY2hlZE1haW5SZXNv
dXJjZShtYWluUmVzb3VyY2UpCiAgICAgLCBtX2NhY2hlZFN1YnJlc291cmNlcyhzdWJyZXNvdXJj
ZXMpCiAgICAgLCBtX2NhY2hlZFN1YmZyYW1lQXJjaGl2ZXMoc3ViZnJhbWVBcmNoaXZlcykKQEAg
LTEwNCw3ICsxMDQsNyBAQCBXZWJBcmNoaXZlUmVzb3VyY2UqIFdlYkFyY2hpdmU6Om1haW5SZXNv
dXJjZSgpCiAgICAgcmV0dXJuIG1fY2FjaGVkTWFpblJlc291cmNlLmdldCgpOwogfQogCi1JbW11
dGFibGVBcnJheSogV2ViQXJjaGl2ZTo6c3VicmVzb3VyY2VzKCkKK0FQSTo6QXJyYXkqIFdlYkFy
Y2hpdmU6OnN1YnJlc291cmNlcygpCiB7CiAgICAgaWYgKCFtX2NhY2hlZFN1YnJlc291cmNlcykg
ewogICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc3VicmVzb3VyY2VzOwpAQCAt
MTEzLDEzICsxMTMsMTMgQEAgSW1tdXRhYmxlQXJyYXkqIFdlYkFyY2hpdmU6OnN1YnJlc291cmNl
cygpCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3VicmVzb3VyY2UgOiBtX2xlZ2FjeVdlYkFy
Y2hpdmUtPnN1YnJlc291cmNlcygpKQogICAgICAgICAgICAgc3VicmVzb3VyY2VzLnVuY2hlY2tl
ZEFwcGVuZChXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShzdWJyZXNvdXJjZSkpOwogCi0gICAg
ICAgIG1fY2FjaGVkU3VicmVzb3VyY2VzID0gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1v
dmUoc3VicmVzb3VyY2VzKSk7CisgICAgICAgIG1fY2FjaGVkU3VicmVzb3VyY2VzID0gQVBJOjpB
cnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShzdWJyZXNvdXJjZXMpKTsKICAgICB9CiAKICAgICByZXR1
cm4gbV9jYWNoZWRTdWJyZXNvdXJjZXMuZ2V0KCk7CiB9CiAKLUltbXV0YWJsZUFycmF5KiBXZWJB
cmNoaXZlOjpzdWJmcmFtZUFyY2hpdmVzKCkKK0FQSTo6QXJyYXkqIFdlYkFyY2hpdmU6OnN1YmZy
YW1lQXJjaGl2ZXMoKQogewogICAgIGlmICghbV9jYWNoZWRTdWJmcmFtZUFyY2hpdmVzKSB7CiAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBzdWJmcmFtZVdlYkFyY2hpdmVzOwpA
QCAtMTI4LDcgKzEyOCw3IEBAIEltbXV0YWJsZUFycmF5KiBXZWJBcmNoaXZlOjpzdWJmcmFtZUFy
Y2hpdmVzKCkKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdWJmcmFtZUFyY2hpdmUgOiBtX2xl
Z2FjeVdlYkFyY2hpdmUtPnN1YmZyYW1lQXJjaGl2ZXMoKSkKICAgICAgICAgICAgIHN1YmZyYW1l
V2ViQXJjaGl2ZXMudW5jaGVja2VkQXBwZW5kKFdlYkFyY2hpdmU6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxMZWdhY3lXZWJBcmNoaXZlKj4oc3ViZnJhbWVBcmNoaXZlLmdldCgpKSkpOwogCi0gICAgICAg
IG1fY2FjaGVkU3ViZnJhbWVBcmNoaXZlcyA9IEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3RkOjpt
b3ZlKHN1YmZyYW1lV2ViQXJjaGl2ZXMpKTsKKyAgICAgICAgbV9jYWNoZWRTdWJmcmFtZUFyY2hp
dmVzID0gQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShzdWJmcmFtZVdlYkFyY2hpdmVzKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIG1fY2FjaGVkU3ViZnJhbWVBcmNoaXZlcy5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZS5oCmluZGV4IDc2MjA3ZDQ2ZTMyZmZjOWU1OTdjZjc0YmUx
NWVlNjE3NDdlY2NmZGMuLmM3NWJhOTBiNTMwY2M1NDVhZDRkMjhiMmFmOThmMDY1NGZkMjI3M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmUuaApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNw
YWNlIEFQSSB7CitjbGFzcyBBcnJheTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TGVnYWN5V2ViQXJjaGl2ZTsKIGNsYXNzIFJhbmdlOwpAQCAtMzksNyArNDMsNiBAQCBjbGFzcyBS
YW5nZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEltbXV0YWJsZUFycmF5OwogY2xh
c3MgV2ViQXJjaGl2ZVJlc291cmNlOwogY2xhc3MgV2ViRGF0YTsKIApAQCAtNDcsMjggKzUwLDI4
IEBAIGNsYXNzIFdlYkFyY2hpdmUgOiBwdWJsaWMgQVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVj
dDo6VHlwZTo6V2ViQXJjaGl2ZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkFyY2hpdmUo
KTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkFyY2hpdmU+IGNyZWF0ZShXZWJBcmNoaXZl
UmVzb3VyY2UqIG1haW5SZXNvdXJjZSwgSW1tdXRhYmxlQXJyYXkqIHN1YnJlc291cmNlcywgSW1t
dXRhYmxlQXJyYXkqIHN1YmZyYW1lQXJjaGl2ZXMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkFyY2hpdmU+IGNyZWF0ZShXZWJBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJjZSwgUGFzc1Jl
ZlB0cjxBUEk6OkFycmF5PiBzdWJyZXNvdXJjZXMsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gc3Vi
ZnJhbWVBcmNoaXZlcyk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQXJjaGl2ZT4gY3JlYXRl
KFdlYkRhdGEqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJBcmNoaXZlPiBjcmVhdGUoUGFz
c1JlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlPik7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViQXJjaGl2ZT4gY3JlYXRlKFdlYkNvcmU6OlJhbmdlKik7CiAKICAgICBXZWJBcmNoaXZl
UmVzb3VyY2UqIG1haW5SZXNvdXJjZSgpOwotICAgIEltbXV0YWJsZUFycmF5KiBzdWJyZXNvdXJj
ZXMoKTsKLSAgICBJbW11dGFibGVBcnJheSogc3ViZnJhbWVBcmNoaXZlcygpOworICAgIEFQSTo6
QXJyYXkqIHN1YnJlc291cmNlcygpOworICAgIEFQSTo6QXJyYXkqIHN1YmZyYW1lQXJjaGl2ZXMo
KTsKIAogICAgIFBhc3NSZWZQdHI8V2ViRGF0YT4gZGF0YSgpOwogCiAgICAgV2ViQ29yZTo6TGVn
YWN5V2ViQXJjaGl2ZSogY29yZUxlZ2FjeVdlYkFyY2hpdmUoKTsKIAogcHJpdmF0ZToKLSAgICBX
ZWJBcmNoaXZlKFdlYkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlLCBJbW11dGFibGVBcnJh
eSogc3VicmVzb3VyY2VzLCBJbW11dGFibGVBcnJheSogc3ViZnJhbWVBcmNoaXZlcyk7CisgICAg
V2ViQXJjaGl2ZShXZWJBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJjZSwgUGFzc1JlZlB0cjxB
UEk6OkFycmF5PiBzdWJyZXNvdXJjZXMsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gc3ViZnJhbWVB
cmNoaXZlcyk7CiAgICAgV2ViQXJjaGl2ZShXZWJEYXRhKik7CiAgICAgV2ViQXJjaGl2ZShQYXNz
UmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU+KTsKIAogICAgIFJlZlB0cjxXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlPiBtX2xlZ2FjeVdlYkFyY2hpdmU7CiAgICAgUmVmUHRyPFdlYkFy
Y2hpdmVSZXNvdXJjZT4gbV9jYWNoZWRNYWluUmVzb3VyY2U7Ci0gICAgUmVmUHRyPEltbXV0YWJs
ZUFycmF5PiBtX2NhY2hlZFN1YnJlc291cmNlczsKLSAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+
IG1fY2FjaGVkU3ViZnJhbWVBcmNoaXZlczsKKyAgICBSZWZQdHI8QVBJOjpBcnJheT4gbV9jYWNo
ZWRTdWJyZXNvdXJjZXM7CisgICAgUmVmUHRyPEFQSTo6QXJyYXk+IG1fY2FjaGVkU3ViZnJhbWVB
cmNoaXZlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAppbmRleCBiMmU5MDVlOGU2NmRhZjE3ZGE0YWYw
YmM4Y2QyNmYxZDAxNjY1NDNkLi5hNmRmZGMxZGI4NzlmMTZkYTQ3YmY3ZDliYmYyZjhkYmEwMGUw
NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcApA
QCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCiAKLSNp
bmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZXh0TWVudUl0ZW0uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0z
OSw3ICszOSw3IEBAIFdlYkNvbnRleHRNZW51SXRlbTo6V2ViQ29udGV4dE1lbnVJdGVtKGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGRhdGEpCiB7CiB9CiAKLVBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVJdGVtPiBXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRp
dGxlLCBib29sIGVuYWJsZWQsIEltbXV0YWJsZUFycmF5KiBzdWJtZW51SXRlbXMpCitQYXNzUmVm
UHRyPFdlYkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiB0aXRsZSwgYm9vbCBlbmFibGVkLCBBUEk6OkFycmF5KiBzdWJtZW51SXRlbXMpCiB7
CiAgICAgc2l6ZV90IHNpemUgPSBzdWJtZW51SXRlbXMtPnNpemUoKTsKICAgICAKQEAgLTYxLDEw
ICs2MSwxMCBAQCBXZWJDb250ZXh0TWVudUl0ZW0qIFdlYkNvbnRleHRNZW51SXRlbTo6c2VwYXJh
dG9ySXRlbSgpCiAgICAgcmV0dXJuIHNlcGFyYXRvckl0ZW07CiB9CiAKLVBhc3NSZWZQdHI8SW1t
dXRhYmxlQXJyYXk+IFdlYkNvbnRleHRNZW51SXRlbTo6c3VibWVudUl0ZW1zQXNJbW11dGFibGVB
cnJheSgpIGNvbnN0CitQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IFdlYkNvbnRleHRNZW51SXRlbTo6
c3VibWVudUl0ZW1zQXNJbW11dGFibGVBcnJheSgpIGNvbnN0CiB7ICAgIAogICAgIGlmIChtX3dl
YkNvbnRleHRNZW51SXRlbURhdGEudHlwZSgpICE9IFdlYkNvcmU6OlN1Ym1lbnVUeXBlKQotICAg
ICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gQVBJ
OjpBcnJheTo6Y3JlYXRlKCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gc3Vi
bWVudUl0ZW1zOwogICAgIHN1Ym1lbnVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fd2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5zdWJtZW51KCkuc2l6ZSgpKTsKQEAgLTcyLDcgKzcyLDcgQEAg
UGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViQ29udGV4dE1lbnVJdGVtOjpzdWJtZW51SXRl
bXNBc0ltbXV0YWJsZUFycmF5KCkgY28KICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBtX3dl
YkNvbnRleHRNZW51SXRlbURhdGEuc3VibWVudSgpKQogICAgICAgICBzdWJtZW51SXRlbXMudW5j
aGVja2VkQXBwZW5kKFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGl0ZW0pKTsKIAotICAgIHJl
dHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShzdWJtZW51SXRlbXMpKTsKKyAg
ICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShzdWJtZW51SXRlbXMpKTsKIH0K
IAogQVBJOjpPYmplY3QqIFdlYkNvbnRleHRNZW51SXRlbTo6dXNlckRhdGEoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCmluZGV4IDlmNzNhYjRjN2Ey
OGMwZDI4MjU4MmY4YjUyZDlkOTQ1MGQzYWY5NWIuLmIwYTA0ZWQ1OTNhZjE0ZmY4ZDNkODExNDQ1
ODM2OTVmM2E4NTQ5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250
ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJ
dGVtLmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVz
cGFjZSBBUEkgeworY2xhc3MgQXJyYXk7Cit9CiAKLWNsYXNzIEltbXV0YWJsZUFycmF5OworbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNvbnRleHRNZW51SXRlbSA6IHB1YmxpYyBBUEk6
OlR5cGVkT2JqZWN0PEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZXh0TWVudUl0ZW0+IHsKIHB1Ymxp
YzoKQEAgLTQxLDEwICs0MywxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkNvbnRleHRNZW51SXRlbShkYXRhKSk7CiAgICAgfQotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGJvb2wgZW5hYmxlZCwgSW1tdXRhYmxlQXJyYXkqIHN1Ym1lbnVJdGVtcyk7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRs
ZSwgYm9vbCBlbmFibGVkLCBBUEk6OkFycmF5KiBzdWJtZW51SXRlbXMpOwogICAgIHN0YXRpYyBX
ZWJDb250ZXh0TWVudUl0ZW0qIHNlcGFyYXRvckl0ZW0oKTsKICAgICAKLSAgICBQYXNzUmVmUHRy
PEltbXV0YWJsZUFycmF5PiBzdWJtZW51SXRlbXNBc0ltbXV0YWJsZUFycmF5KCkgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBzdWJtZW51SXRlbXNBc0ltbXV0YWJsZUFycmF5KCkg
Y29uc3Q7CiAgICAgCiAgICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRVc2VyRGF0YShBUEk6Ok9iamVjdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwCmluZGV4IGMyZTFjYjJkYjI3ZTJjYjliMDkwYmQ0
Yjc4MGE0MTEzNzg5MzM5MTguLmQ4ODJjNTI1NDI5NjI5NmVmOTUyNzkzMWQ1Njg0Y2FkNzFiMjAy
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVy
cy5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgiCiAKLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgor
I2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC00OSw5ICs0OSw5IEBAIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6
On5XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6YWNjZXB0TUlNRVR5cGVzKCkgY29uc3QKK1Bh
c3NSZWZQdHI8QVBJOjpBcnJheT4gV2ViT3BlblBhbmVsUGFyYW1ldGVyczo6YWNjZXB0TUlNRVR5
cGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZVN0cmluZ0Fy
cmF5KG1fc2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzKTsKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6
Y3JlYXRlU3RyaW5nQXJyYXkobV9zZXR0aW5ncy5hY2NlcHRNSU1FVHlwZXMpOwogfQogCiAjaWYg
RU5BQkxFKE1FRElBX0NBUFRVUkUpCkBAIC02MSw5ICs2MSw5IEBAIFN0cmluZyBXZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzOjpjYXB0dXJlKCkgY29uc3QKIH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPElt
bXV0YWJsZUFycmF5PiBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzOjpzZWxlY3RlZEZpbGVOYW1lcygp
IGNvbnN0CitQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM6OnNl
bGVjdGVkRmlsZU5hbWVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNy
ZWF0ZVN0cmluZ0FycmF5KG1fc2V0dGluZ3Muc2VsZWN0ZWRGaWxlcyk7CisgICAgcmV0dXJuIEFQ
STo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KG1fc2V0dGluZ3Muc2VsZWN0ZWRGaWxlcyk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
T3BlblBhbmVsUGFyYW1ldGVycy5oCmluZGV4IGJkODViN2JlNTM5ZmYwMGY3NGUzZjFmOWM3MDBj
Nzg5Mjc5YTRkMTQuLmUyOWI1ZjA0Y2JlYWVjNWMwNzg3NzQyZjkwZTUxNjA3YWU0YTRmN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaApAQCAt
MzIsOSArMzIsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIEFQSSB7Citj
bGFzcyBBcnJheTsKK30KIAotY2xhc3MgSW1tdXRhYmxlQXJyYXk7CituYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViT3BlblBhbmVsUGFyYW1ldGVycyA6IHB1YmxpYyBBUEk6OlR5cGVkT2Jq
ZWN0PEFQSTo6T2JqZWN0OjpUeXBlOjpPcGVuUGFuZWxQYXJhbWV0ZXJzPiB7CiBwdWJsaWM6CkBA
IC00Miw4ICs0NCw4IEBAIHB1YmxpYzoKICAgICB+V2ViT3BlblBhbmVsUGFyYW1ldGVycygpOwog
CiAgICAgYm9vbCBhbGxvd011bHRpcGxlRmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdz
LmFsbG93c011bHRpcGxlRmlsZXM7IH0gCi0gICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
YWNjZXB0TUlNRVR5cGVzKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
c2VsZWN0ZWRGaWxlTmFtZXMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGFj
Y2VwdE1JTUVUeXBlcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gc2VsZWN0
ZWRGaWxlTmFtZXMoKSBjb25zdDsKICNpZiBFTkFCTEUoTUVESUFfQ0FQVFVSRSkKICAgICBTdHJp
bmcgY2FwdHVyZSgpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRl
ckxheWVyLmNwcAppbmRleCAyZGVkNzNhYTE1NGIyMjBmMmJiNjNjNGViZGEzNDZiMzA5NmYzMmYz
Li43OTBkNzYxOTcwOGRjN2RhNDllNjliNDQxNDM1Nzk5N2MwZmRkZDFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJSZW5kZXJMYXllci5oIgogCisjaW5jbHVkZSAiQVBJ
QXJyYXkuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpAQCAtNjAsNyArNjEsMTIgQEAgUGFzc1JlZlB0cjxX
ZWJSZW5kZXJMYXllcj4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViUmVuZGVyTGF5ZXIocm9vdExheWVyKSk7CiB9CiAKLVBh
c3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYlJlbmRlckxheWVyOjpjcmVhdGVBcnJheUZyb21M
YXllckxpc3QoVmVjdG9yPFJlbmRlckxheWVyKj4qIGxpc3QpCitQYXNzUmVmUHRyPFdlYlJlbmRl
ckxheWVyPiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlKFBhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0
PiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBpc0Ns
aXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1
dGVCb3VuZGluZ0JveCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBuZWdhdGl2ZVpPcmRlckxpc3Qs
IFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbm9ybWFsRmxvd0xpc3QsIFBhc3NSZWZQdHI8QVBJOjpB
cnJheT4gcG9zaXRpdmVaT3JkZXJMaXN0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
UmVuZGVyTGF5ZXIocmVuZGVyZXIsIGlzUmVmbGVjdGlvbiwgaXNDbGlwcGluZywgaXNDbGlwcGVk
LCB0eXBlLCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBuZWdhdGl2ZVpPcmRlckxpc3QsIG5vcm1hbEZs
b3dMaXN0LCBwb3NpdGl2ZVpPcmRlckxpc3QpKTsKK30KKworUGFzc1JlZlB0cjxBUEk6OkFycmF5
PiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3RvcjxSZW5kZXJM
YXllcio+KiBsaXN0KQogewogICAgIGlmICghbGlzdCB8fCAhbGlzdC0+c2l6ZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTcxLDcgKzc3LDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVB
cnJheT4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8UmVu
ZGUKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxheWVyIDogKmxpc3QpCiAgICAgICAgIGxheWVycy51
bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYobmV3IFdlYlJlbmRlckxheWVyKGxheWVyKSkpOwogCi0g
ICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKGxheWVycykpOworICAg
IHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKGxheWVycykpOwogfQogCiBXZWJS
ZW5kZXJMYXllcjo6V2ViUmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQpAQCAtMTE0LDQg
KzEyMCwxNyBAQCBXZWJSZW5kZXJMYXllcjo6V2ViUmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXIqIGxh
eWVyKQogICAgIG1fcG9zaXRpdmVaT3JkZXJMaXN0ID0gY3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0
KGxheWVyLT5wb3NaT3JkZXJMaXN0KCkpOwogfQogCitXZWJSZW5kZXJMYXllcjo6V2ViUmVuZGVy
TGF5ZXIoUGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IHJlbmRlcmVyLCBib29sIGlzUmVmbGVj
dGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5
cGUgdHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBQYXNzUmVmUHRy
PEFQSTo6QXJyYXk+IG5lZ2F0aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBu
b3JtYWxGbG93TGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBwb3NpdGl2ZVpPcmRlckxpc3Qp
CisgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV9pc1JlZmxlY3Rpb24oaXNSZWZs
ZWN0aW9uKQorICAgICwgbV9pc0NsaXBwaW5nKGlzQ2xpcHBpbmcpCisgICAgLCBtX2lzQ2xpcHBl
ZChpc0NsaXBwZWQpCisgICAgLCBtX2NvbXBvc2l0aW5nTGF5ZXJUeXBlKHR5cGUpCisgICAgLCBt
X2Fic29sdXRlQm91bmRpbmdCb3goYWJzb2x1dGVCb3VuZGluZ0JveCkKKyAgICAsIG1fbmVnYXRp
dmVaT3JkZXJMaXN0KG5lZ2F0aXZlWk9yZGVyTGlzdCkKKyAgICAsIG1fbm9ybWFsRmxvd0xpc3Qo
bm9ybWFsRmxvd0xpc3QpCisgICAgLCBtX3Bvc2l0aXZlWk9yZGVyTGlzdChwb3NpdGl2ZVpPcmRl
ckxpc3QpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUmVuZGVyTGF5ZXIuaAppbmRleCA4NjVjMTBiYjM5MTZkYWJmZmU0MjQzNjE5YmZmZTMzMzI3
Y2I3MmUxLi41YTBlY2I5Yjc4MmNiNGQ0OGJjYzBjZjc2NDY0MTFmNmFmMTlmYTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuaApAQCAtNDEsMTUgKzQxLDExIEBAIHB1Ymxp
YzoKICAgICBlbnVtIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHsgTm9uZSwgTm9ybWFsLCBUaWxlZCwg
TWVkaWEsIENvbnRhaW5lciB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5
ZXI+IGNyZWF0ZShXZWJQYWdlKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5
ZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVyZXIsIGJvb2wgaXNS
ZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBDb21wb3NpdGluZ0xh
eWVyVHlwZSB0eXBlLAotICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdC
b3gsIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IG5lZ2F0aXZlWk9yZGVyTGlzdCwgUGFzc1Jl
ZlB0cjxJbW11dGFibGVBcnJheT4gbm9ybWFsRmxvd0xpc3QsIFBhc3NSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IHBvc2l0aXZlWk9yZGVyTGlzdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViUmVuZGVyTGF5ZXIocmVuZGVyZXIsIGlzUmVmbGVjdGlvbiwgaXNDbGlwcGluZywg
aXNDbGlwcGVkLCB0eXBlLCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBuZWdhdGl2ZVpPcmRlckxpc3Qs
IG5vcm1hbEZsb3dMaXN0LCBwb3NpdGl2ZVpPcmRlckxpc3QpKTsKLSAgICB9CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9i
amVjdD4gcmVuZGVyZXIsIGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wg
aXNDbGlwcGVkLCBDb21wb3NpdGluZ0xheWVyVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0
ZUJvdW5kaW5nQm94LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5lZ2F0aXZlWk9yZGVyTGlzdCwg
UGFzc1JlZlB0cjxBUEk6OkFycmF5PiBub3JtYWxGbG93TGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFy
cmF5PiBwb3NpdGl2ZVpPcmRlckxpc3QpOwogCi0gICAgSW1tdXRhYmxlQXJyYXkqIG5lZ2F0aXZl
Wk9yZGVyTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVnYXRpdmVaT3JkZXJMaXN0LmdldCgpOyB9
Ci0gICAgSW1tdXRhYmxlQXJyYXkqIG5vcm1hbEZsb3dMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9u
b3JtYWxGbG93TGlzdC5nZXQoKTsgfQotICAgIEltbXV0YWJsZUFycmF5KiBwb3NpdGl2ZVpPcmRl
ckxpc3QoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aXZlWk9yZGVyTGlzdC5nZXQoKTsgfQorICAg
IEFQSTo6QXJyYXkqIG5lZ2F0aXZlWk9yZGVyTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVnYXRp
dmVaT3JkZXJMaXN0LmdldCgpOyB9CisgICAgQVBJOjpBcnJheSogbm9ybWFsRmxvd0xpc3QoKSBj
b25zdCB7IHJldHVybiBtX25vcm1hbEZsb3dMaXN0LmdldCgpOyB9CisgICAgQVBJOjpBcnJheSog
cG9zaXRpdmVaT3JkZXJMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGl2ZVpPcmRlckxpc3Qu
Z2V0KCk7IH0KIAogICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlcmVyLmdldCgpOyB9CiAgICAgYm9vbCBpc1JlZmxlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzUmVmbGVjdGlvbjsgfQpAQCAtNTksMjIgKzU1LDEwIEBAIHB1YmxpYzoKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3goKSBjb25zdCB7IHJldHVybiBtX2Fi
c29sdXRlQm91bmRpbmdCb3g7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJSZW5kZXJMYXllcihXZWJD
b3JlOjpSZW5kZXJMYXllciopOwotICAgIFdlYlJlbmRlckxheWVyKFBhc3NSZWZQdHI8V2ViUmVu
ZGVyT2JqZWN0PiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywg
Ym9vbCBpc0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHR5cGUsIFdlYkNvcmU6OkludFJl
Y3QgYWJzb2x1dGVCb3VuZGluZ0JveCwKLSAgICAgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJh
eT4gbmVnYXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBub3JtYWxG
bG93TGlzdCwgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gcG9zaXRpdmVaT3JkZXJMaXN0KQot
ICAgICAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCi0gICAgICAgICwgbV9pc1JlZmxlY3Rpb24o
aXNSZWZsZWN0aW9uKQotICAgICAgICAsIG1faXNDbGlwcGluZyhpc0NsaXBwaW5nKQotICAgICAg
ICAsIG1faXNDbGlwcGVkKGlzQ2xpcHBlZCkKLSAgICAgICAgLCBtX2NvbXBvc2l0aW5nTGF5ZXJU
eXBlKHR5cGUpCi0gICAgICAgICwgbV9hYnNvbHV0ZUJvdW5kaW5nQm94KGFic29sdXRlQm91bmRp
bmdCb3gpCi0gICAgICAgICwgbV9uZWdhdGl2ZVpPcmRlckxpc3QobmVnYXRpdmVaT3JkZXJMaXN0
KQotICAgICAgICAsIG1fbm9ybWFsRmxvd0xpc3Qobm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICwg
bV9wb3NpdGl2ZVpPcmRlckxpc3QocG9zaXRpdmVaT3JkZXJMaXN0KQotICAgIHsKLSAgICB9Cisg
ICAgZXhwbGljaXQgV2ViUmVuZGVyTGF5ZXIoV2ViQ29yZTo6UmVuZGVyTGF5ZXIqKTsKKyAgICBX
ZWJSZW5kZXJMYXllcihQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVyZXIsIGJvb2wg
aXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBDb21wb3NpdGlu
Z0xheWVyVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBQYXNzUmVm
UHRyPEFQSTo6QXJyYXk+IG5lZ2F0aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5
PiBub3JtYWxGbG93TGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBwb3NpdGl2ZVpPcmRlckxp
c3QpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNyZWF0ZUFycmF5
RnJvbUxheWVyTGlzdChWZWN0b3I8V2ViQ29yZTo6UmVuZGVyTGF5ZXIqPiopOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8
V2ViQ29yZTo6UmVuZGVyTGF5ZXIqPiopOwogCiAgICAgUmVmUHRyPFdlYlJlbmRlck9iamVjdD4g
bV9yZW5kZXJlcjsKICAgICBib29sIG1faXNSZWZsZWN0aW9uOwpAQCAtODMsOSArNjcsOSBAQCBw
cml2YXRlOgogICAgIENvbXBvc2l0aW5nTGF5ZXJUeXBlIG1fY29tcG9zaXRpbmdMYXllclR5cGU7
CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX2Fic29sdXRlQm91bmRpbmdCb3g7CiAKLSAgICBSZWZQ
dHI8SW1tdXRhYmxlQXJyYXk+IG1fbmVnYXRpdmVaT3JkZXJMaXN0OwotICAgIFJlZlB0cjxJbW11
dGFibGVBcnJheT4gbV9ub3JtYWxGbG93TGlzdDsKLSAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+
IG1fcG9zaXRpdmVaT3JkZXJMaXN0OworICAgIFJlZlB0cjxBUEk6OkFycmF5PiBtX25lZ2F0aXZl
Wk9yZGVyTGlzdDsKKyAgICBSZWZQdHI8QVBJOjpBcnJheT4gbV9ub3JtYWxGbG93TGlzdDsKKyAg
ICBSZWZQdHI8QVBJOjpBcnJheT4gbV9wb3NpdGl2ZVpPcmRlckxpc3Q7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAK
aW5kZXggYjBjYWQyYmUyNmU4MzM1YjZkYmQ5MzkxZjMwZDU0NjU1ODgxZGQwYS4uMjZkMWFmYTM5
NDQ1NDRjNGM4YmYwMWEzNjNmMjY1MDdjZjIxMmQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlJlbmRlck9iamVjdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJSZW5kZXJPYmplY3QuaCIKIAorI2luY2x1ZGUgIkFQSUFycmF5Lmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KQEAgLTU1LDYgKzU2LDExIEBAIFBhc3NSZWZQdHI8V2ViUmVuZGVy
T2JqZWN0PiBXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2ViUmVuZGVyT2JqZWN0KGNvbnRlbnRSZW5kZXJlciwgdHJ1ZSkpOwog
fQogCitQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gV2ViUmVuZGVyT2JqZWN0OjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBjb25zdCBT
dHJpbmcmIGVsZW1lbnRJRCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBlbGVtZW50Q2xhc3NOYW1l
cywgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbiwgV2ViQ29yZTo6SW50UmVjdCBm
cmFtZVJlY3QsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY2hpbGRyZW4pCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QobmFtZSwgZWxlbWVudFRhZ05hbWUsIGVsZW1l
bnRJRCwgZWxlbWVudENsYXNzTmFtZXMsIGFic29sdXRlUG9zaXRpb24sIGZyYW1lUmVjdCwgY2hp
bGRyZW4pKTsKK30KKwogV2ViUmVuZGVyT2JqZWN0OjpXZWJSZW5kZXJPYmplY3QoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgYm9vbCBzaG91bGRJbmNsdWRlRGVzY2VuZGFudHMpCiB7CiAgICAgbV9u
YW1lID0gcmVuZGVyZXItPnJlbmRlck5hbWUoKTsKQEAgLTcyLDcgKzc4LDcgQEAgV2ViUmVuZGVy
T2JqZWN0OjpXZWJSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBzaG91
bGRJbmNsdWRlRGVzY2UKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9
IGVsZW1lbnQtPmNsYXNzTmFtZXMoKS5zaXplKCk7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAg
ICAgICAgICAgIGNsYXNzTmFtZXMuYXBwZW5kKFdlYlN0cmluZzo6Y3JlYXRlKGVsZW1lbnQtPmNs
YXNzTmFtZXMoKVtpXSkpOwogCi0gICAgICAgICAgICAgICAgbV9lbGVtZW50Q2xhc3NOYW1lcyA9
IEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKGNsYXNzTmFtZXMpKTsKKyAgICAgICAg
ICAgICAgICBtX2VsZW1lbnRDbGFzc05hbWVzID0gQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92
ZShjbGFzc05hbWVzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTIs
NyArMTE4LDIyIEBAIFdlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGJvb2wgc2hvdWxkSW5jbHVkZURlc2NlCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBtX2NoaWxkcmVuID0gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoY2hpbGRy
ZW4pKTsKKyAgICBtX2NoaWxkcmVuID0gQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShjaGls
ZHJlbikpOworfQorCitXZWJSZW5kZXJPYmplY3Q6OldlYlJlbmRlck9iamVjdChjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudFRhZ05hbWUsIGNvbnN0IFN0cmluZyYgZWxl
bWVudElELCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3Jl
OjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwg
UGFzc1JlZlB0cjxBUEk6OkFycmF5PiBjaGlsZHJlbikKKyAgICA6IG1fY2hpbGRyZW4oY2hpbGRy
ZW4pCisgICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fZWxlbWVudFRhZ05hbWUoZWxlbWVudFRh
Z05hbWUpCisgICAgLCBtX2VsZW1lbnRJRChlbGVtZW50SUQpCisgICAgLCBtX2VsZW1lbnRDbGFz
c05hbWVzKGVsZW1lbnRDbGFzc05hbWVzKQorICAgICwgbV9hYnNvbHV0ZVBvc2l0aW9uKGFic29s
dXRlUG9zaXRpb24pCisgICAgLCBtX2ZyYW1lUmVjdChmcmFtZVJlY3QpCit7Cit9CisKK1dlYlJl
bmRlck9iamVjdDo6fldlYlJlbmRlck9iamVjdCgpCit7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCmluZGV4IDVhN2JlMDcz
MTQ5NGEwMmZhYzk3NmQ1MzAxMDEwNDA3MTg5NWUzMjguLjJhODU5MTUyNjFiNmI2Njc1MDNhNTA4
MGZhZWY1YjM0ZDk2NjkxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJS
ZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0
LmgKQEAgLTI2LDExICsyNiwxNSBAQAogI2lmbmRlZiBXZWJSZW5kZXJPYmplY3RfaAogI2RlZmlu
ZSBXZWJSZW5kZXJPYmplY3RfaAogCi0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitu
YW1lc3BhY2UgQVBJIHsKK2NsYXNzIEFycmF5OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgUmVuZGVyT2JqZWN0OwogfQpAQCAtNDcsNDEgKzUxLDI5IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QocmVuZGVyZXIsIGZhbHNl
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBjb25z
dCBTdHJpbmcmIGVsZW1lbnRJRCwKLSAgICAgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
ZWxlbWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdl
YkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBjaGls
ZHJlbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUmVuZGVyT2JqZWN0
KG5hbWUsIGVsZW1lbnRUYWdOYW1lLCBlbGVtZW50SUQsIGVsZW1lbnRDbGFzc05hbWVzLCBhYnNv
bHV0ZVBvc2l0aW9uLCBmcmFtZVJlY3QsIGNoaWxkcmVuKSk7Ci0gICAgfQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NS
ZWZQdHI8QVBJOjpBcnJheT4gZWxlbWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFi
c29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBQYXNzUmVmUHRyPEFQ
STo6QXJyYXk+IGNoaWxkcmVuKTsKIAotICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gY2hpbGRy
ZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CisgICAgdmlydHVhbCB+V2ViUmVuZGVy
T2JqZWN0KCk7CisKKyAgICBBUEk6OkFycmF5KiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hpbGRyZW4uZ2V0KCk7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgZWxlbWVudFRhZ05hbWUoKSBjb25zdCB7
IHJldHVybiBtX2VsZW1lbnRUYWdOYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRJRDsgfQotICAgIEltbXV0YWJsZUFycmF5KiBlbGVt
ZW50Q2xhc3NOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudENsYXNzTmFtZXMuZ2V0KCk7
IH0KKyAgICBBUEk6OkFycmF5KiBlbGVtZW50Q2xhc3NOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZWxlbWVudENsYXNzTmFtZXMuZ2V0KCk7IH0KICAgICBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0
ZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVBvc2l0aW9uOyB9CiAgICAgV2Vi
Q29yZTo6SW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdDsgfQog
CiBwcml2YXRlOgogICAgIFdlYlJlbmRlck9iamVjdChXZWJDb3JlOjpSZW5kZXJPYmplY3QqLCBi
b29sIHNob3VsZEluY2x1ZGVEZXNjZW5kYW50cyk7Ci0gICAgV2ViUmVuZGVyT2JqZWN0KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5n
JiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGVsZW1lbnRDbGFzc05hbWVz
LAotICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRSZWN0IGZyYW1lUmVjdCwgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gY2hpbGRyZW4pCi0g
ICAgICAgIDogbV9jaGlsZHJlbihjaGlsZHJlbikKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAg
ICAgICAgLCBtX2VsZW1lbnRUYWdOYW1lKGVsZW1lbnRUYWdOYW1lKQotICAgICAgICAsIG1fZWxl
bWVudElEKGVsZW1lbnRJRCkKLSAgICAgICAgLCBtX2VsZW1lbnRDbGFzc05hbWVzKGVsZW1lbnRD
bGFzc05hbWVzKQotICAgICAgICAsIG1fYWJzb2x1dGVQb3NpdGlvbihhYnNvbHV0ZVBvc2l0aW9u
KQotICAgICAgICAsIG1fZnJhbWVSZWN0KGZyYW1lUmVjdCkKLSAgICB7Ci0gICAgfQorICAgIFdl
YlJlbmRlck9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudFRh
Z05hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGVs
ZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJD
b3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBjaGlsZHJlbik7
CiAKLSAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IG1fY2hpbGRyZW47CisgICAgUmVmUHRyPEFQ
STo6QXJyYXk+IG1fY2hpbGRyZW47CiAKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBt
X2VsZW1lbnRUYWdOYW1lOwogICAgIFN0cmluZyBtX2VsZW1lbnRJRDsKLSAgICBSZWZQdHI8SW1t
dXRhYmxlQXJyYXk+IG1fZWxlbWVudENsYXNzTmFtZXM7CisgICAgUmVmUHRyPEFQSTo6QXJyYXk+
IG1fZWxlbWVudENsYXNzTmFtZXM7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9hYnNvbHV0ZVBv
c2l0aW9uOwogICAgIFdlYkNvcmU6OkludFJlY3QgbV9mcmFtZVJlY3Q7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0JhY2tGb3J3YXJkTGlzdFJlZi5j
cHAKaW5kZXggM2UwNjFjMTBiZjBmNmYxNGE0MDE5NmMwYTE4MWNmOGQ4ZDA2ZjNmMy4uZjVlOTlk
NmJmZGI3MmI5OGQzMTVjYjg5ODRiZWNhZTdiZTI2MmIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQmFja0ZvcndhcmRMaXN0UmVmLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tCYWNrRm9yd2Fy
ZExpc3RSZWYuaCIKIAorI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKaW5k
ZXggMjllY2Y1NDNiMDA1NmFjZGQ2OGM0MzA3OGQ1NzE2ZmU1YmQ5MzQzMS4uNjAxMzMwMDc1N2I2
ODMzYzA1M2JiNjYzMjc4NzgyN2Q4ZDU1NDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS09wZW5QYW5lbFBhcmFt
ZXRlcnMuaCIKIAotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiQVBJQXJy
YXkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxQYXJh
bWV0ZXJzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5k
ZXggMWU5ZGQ3MTNjODMxZDUxZjQ0NjU4NDE4Y2U2ZDgwNTA2MjFkODhkNS4uYTdjY2FmMTNkZjNi
MDdmZjUxYTEzYTAwNWU0MDk0NzU0YTM3NWFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXS1BhZ2UuaCIK
ICNpbmNsdWRlICJXS1BhZ2VQcml2YXRlLmgiCiAKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2lu
Y2x1ZGUgIlByaW50SW5mby5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldL
UGx1Z2luSW5mb3JtYXRpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQppbmRleCAxYzg4NTdjMDNhYzMw
N2UwYjY2Y2YxNTU2ODJmMTY1NjVkZDI1OGNjLi45OGJkMWEwMDhkM2FjMzRjNWFkNGY0YzlmN2M5
OTFkNWJkOTRkYTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
bWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLQ29udGV4dFByaXZhdGVNYWMuaCIKIAotI2ltcG9y
dCAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbXBvcnQgIkFQSUFycmF5LmgiCiAjaW1wb3J0ICJJbW11
dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW1wb3J0ICJQbHVnaW5JbmZvU3RvcmUuaCIKICNpbXBvcnQg
IlBsdWdpbkluZm9ybWF0aW9uLmgiCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV0tDb250ZXh0R2V0
SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLQ29udGV4
dEdldEluCiAgICAgZm9yIChjb25zdCBhdXRvJiBwbHVnaW46IHBsdWdpbnMpCiAgICAgICAgIHBs
dWdpbkluZm9EaWN0aW9uYXJpZXMudW5jaGVja2VkQXBwZW5kKGNyZWF0ZVBsdWdpbkluZm9ybWF0
aW9uRGljdGlvbmFyeShwbHVnaW4pKTsKIAotICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gYXJy
YXkgPSBJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShwbHVnaW5JbmZvRGljdGlvbmFy
aWVzKSk7CisgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gQVBJOjpBcnJheTo6Y3JlYXRl
KHN0ZDo6bW92ZShwbHVnaW5JbmZvRGljdGlvbmFyaWVzKSk7CiAKICAgICB0b0ltcGwoY29udGV4
dFJlZiktPnJlZigpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF4oKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0JhY2tGb3J3YXJkTGlzdC5tbQppbmRleCBhZjZkMzMyNDA1NjBhMTZhZjQzMmZmYTUyMmU1
NzI5YjBiMTYyMmQwLi5lYWU4YTcxOTE5NTA2OGViMjc2YjNmNGM5ZWQ4ZGI0ZWYzZWUyOGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0Zvcndh
cmRMaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNr
Rm9yd2FyZExpc3QubW0KQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIFdLQmFja0ZvcndhcmRMaXN0
SXRlbSAqdG9XS0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXQK
IAogLSAoTlNBcnJheSAqKWJhY2tMaXN0V2l0aExpbWl0OihOU1VJbnRlZ2VyKWxpbWl0CiB7Ci0g
ICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBsaXN0ID0gcmVpbnRlcnByZXRfY2FzdDxXZWJCYWNr
Rm9yd2FyZExpc3QqPigmX2xpc3QpLT5iYWNrTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQo
bGltaXQpOworICAgIFJlZlB0cjxBUEk6OkFycmF5PiBsaXN0ID0gcmVpbnRlcnByZXRfY2FzdDxX
ZWJCYWNrRm9yd2FyZExpc3QqPigmX2xpc3QpLT5iYWNrTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRo
TGltaXQobGltaXQpOwogICAgIGlmICghbGlzdCkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAt
OTMsNyArOTMsNyBAQCBzdGF0aWMgV0tCYWNrRm9yd2FyZExpc3RJdGVtICp0b1dLQmFja0Zvcndh
cmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdAogCiAtIChOU0FycmF5ICopZm9y
d2FyZExpc3RXaXRoTGltaXQ6KE5TVUludGVnZXIpbGltaXQKIHsKLSAgICBSZWZQdHI8SW1tdXRh
YmxlQXJyYXk+IGxpc3QgPSByZWludGVycHJldF9jYXN0PFdlYkJhY2tGb3J3YXJkTGlzdCo+KCZf
bGlzdCktPmZvcndhcmRMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdChsaW1pdCk7CisgICAg
UmVmUHRyPEFQSTo6QXJyYXk+IGxpc3QgPSByZWludGVycHJldF9jYXN0PFdlYkJhY2tGb3J3YXJk
TGlzdCo+KCZfbGlzdCktPmZvcndhcmRMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdChsaW1p
dCk7CiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRHcm91
cC5tbQppbmRleCAxNWE0ZWIwOTQ3N2JhZjNhNGY2YjNkNWRlMzA0MDA5Yjc4YWUyOTVhLi43ZTY2
MzEyODkzODA2YmE2OWUxMGVlZTc1ZWVkYzM0MzI1NDk5NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAu
bW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXAuaCIK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBQcml2YXRlLmgiCiAKLSNpbXBvcnQgIklt
bXV0YWJsZUFycmF5LmgiCisjaW1wb3J0ICJBUElBcnJheS5oIgogI2ltcG9ydCAiV0tBcnJheS5o
IgogI2ltcG9ydCAiV0tQYWdlR3JvdXAuaCIKICNpbXBvcnQgIldLUHJlZmVyZW5jZXMuaCIKQEAg
LTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gY3JlYXRlV0tB
cnJheShOU0FycmF5ICphcnJheSkKICAgICAgICAgICAgIHN0cmluZ3MudW5jaGVja2VkQXBwZW5k
KGFkb3B0UmVmKHRvSW1wbChXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYp
ZW50cnkpKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0b0FQSShJbW11dGFibGVBcnJheTo6Y3Jl
YXRlKHN0ZDo6bW92ZShzdHJpbmdzKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoQVBJ
OjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShzdHJpbmdzKSkubGVha1JlZigpKTsKIH0KIAogLSh2
b2lkKWFkZFVzZXJTdHlsZVNoZWV0OihOU1N0cmluZyAqKXNvdXJjZSBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwgd2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczooTlNBcnJheSAqKXdoaXRlbGlzdCBibGFj
a2xpc3RlZFVSTFBhdHRlcm5zOihOU0FycmF5ICopYmxhY2tsaXN0IG1haW5GcmFtZU9ubHk6KEJP
T0wpbWFpbkZyYW1lT25seQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHAKaW5kZXggZWM5MDVhOWVlYTI0Y2RkMDM4OTdiM2NhYWEwNjJiOGU3NTM0NThkZS4uN2Y3ZDBk
MmJlNWRlMjQyMjkzYTI3YjVmMTc4ZTdlOTJhZWEzMzE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAKLSNpbmNs
dWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAi
SW1tdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRl
ICJXZWJOb3RpZmljYXRpb24uaCIKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnBvcHVsYXRlQ29weU9mTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoSGFz
aE1hcDwKICAgICAgICAgcmV0dXJuOwogCiAgICAgcGVybWlzc2lvbnMuY2xlYXIoKTsKLSAgICBS
ZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGtub3duT3JpZ2lucyA9IGtub3duUGVybWlzc2lvbnMtPmtl
eXMoKTsKKyAgICBSZWZQdHI8QVBJOjpBcnJheT4ga25vd25PcmlnaW5zID0ga25vd25QZXJtaXNz
aW9ucy0+a2V5cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga25vd25PcmlnaW5zLT5z
aXplKCk7ICsraSkgewogICAgICAgICBXZWJTdHJpbmcqIG9yaWdpbiA9IGtub3duT3JpZ2lucy0+
YXQ8V2ViU3RyaW5nPihpKTsKICAgICAgICAgcGVybWlzc2lvbnMuc2V0KG9yaWdpbi0+c3RyaW5n
KCksIGtub3duUGVybWlzc2lvbnMtPmdldDxXZWJCb29sZWFuPihvcmlnaW4tPnN0cmluZygpKS0+
dmFsdWUoKSk7CkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm8KIH0K
IAogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5v
dGlmaWNhdGlvbnMoSW1tdXRhYmxlQXJyYXkqIGdsb2JhbE5vdGlmaWNhdGlvbklEcykKK3ZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9u
cyhBUEk6OkFycmF5KiBnbG9iYWxOb3RpZmljYXRpb25JRHMpCiB7CiAgICAgSGFzaE1hcDxXZWJQ
YWdlUHJveHkqLCBWZWN0b3I8dWludDY0X3Q+PiBwYWdlTm90aWZpY2F0aW9uSURzOwogICAgIApA
QCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92
aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBXZWJTCiAgICAgY29udGV4dCgp
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRp
ZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKG9yaWdpbi0+dG9TdHJpbmcoKSwgYWxsb3dlZCkp
OwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1v
dmVOb3RpZmljYXRpb25Qb2xpY2llcyhJbW11dGFibGVBcnJheSogb3JpZ2lucykKK3ZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBv
bGljaWVzKEFQSTo6QXJyYXkqIG9yaWdpbnMpCiB7CiAgICAgaWYgKCFjb250ZXh0KCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXgg
ZDgwMGE1MGQwZmNmMzg1ZDNjOTk4MjNjMmJmNjI2NjFkYTAyZjhjYi4uOGJkYTgzZWY4MzlkNTgz
Y2I4OTJkZTUyNTEyOTFhMGQ0MDNmNWE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmgKQEAgLTM2LDkgKzM2LDEyIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKK25hbWVzcGFjZSBBUEkgewor
Y2xhc3MgQXJyYXk7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBJbW11dGFibGVB
cnJheTsKIGNsYXNzIFdlYkNvbnRleHQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJT
ZWN1cml0eU9yaWdpbjsKQEAgLTYxLDkgKzY0LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcm92
aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogICAgIHZv
aWQgcHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7
Ci0gICAgdm9pZCBwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhJbW11dGFibGVBcnJheSog
bm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25z
KEFQSTo6QXJyYXkqIG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0
ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBXZWJTZWN1cml0eU9yaWdpbiosIGJvb2wgYWxsb3dl
ZCk7Ci0gICAgdm9pZCBwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEltbXV0
YWJsZUFycmF5KiBvcmlnaW5zKTsKKyAgICB2b2lkIHByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0
aW9uUG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucyk7CiAKICAgICB1c2luZyBBUEk6Ok9iamVj
dDo6cmVmOwogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvblByb3ZpZGVyLmNwcAppbmRleCA0YzEzZDJkMjVkNjc5ODY5Mzk2ZmEyY2Q2MzE5YTAzNmQ3
MjVhOTMxLi5jZWE3NDY5ZGUzOGUwYjBhZTU4ZDhhMGMwNjM1MTU5ZTYyMDEwYzI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKIAotI2lu
Y2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRl
ICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV2ViTm90aWZpY2F0aW9uLmgiCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBu
b3RpZmljCiAgICAgZm9yIChjb25zdCBhdXRvJiBub3RpZmljYXRpb25JRCA6IG5vdGlmaWNhdGlv
bklEcykKICAgICAgICAgYXJyYXlJRHMudW5jaGVja2VkQXBwZW5kKFdlYlVJbnQ2NDo6Y3JlYXRl
KG5vdGlmaWNhdGlvbklEKSk7CiAKLSAgICBtX2NsaWVudC5jbGVhck5vdGlmaWNhdGlvbnModG9B
UEkoSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoYXJyYXlJRHMpKS5nZXQoKSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmNsZWFyTm90aWZpY2F0aW9ucyh0b0FQ
SShBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKGFycmF5SURzKSkuZ2V0KCkpLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6YWRkTm90
aWZpY2F0aW9uTWFuYWdlcihXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkqIG1hbmFnZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3Rh
cnRQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5B
dXRvU3RhcnRQcm92aWRlci5jcHAKaW5kZXggZmQwZTFkOWVlN2UwMGZmNDI1NjdmMzA0YmVmMjc2
YWU1NTZkMTE3Ni4uMWQxYWJhNTNkZTM2Y2JiOTAwYTM2MzUxZGMzYTUwNTNmZWQyZDlhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0
UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJ
bkF1dG9TdGFydFByb3ZpZGVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgiCiAKLSNpbmNsdWRlICJJ
bW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiSW1tdXRh
YmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJD
b250ZXh0Q2xpZW50LmgiCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBQbHVnSW5BdXRvU3RhcnRQ
cm92aWRlcjo6c2V0QXV0b1N0YXJ0T3JpZ2luc1RhYmxlKEltbXV0YWJsZURpY3Rpb25hcnkmIHRh
YmwKICAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6UmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoaGFzaE1hcCkpOwogfQogCi12b2lk
IFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zQXJyYXkoSW1tdXRh
YmxlQXJyYXkmIG9yaWdpbkxpc3QpCit2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRB
dXRvU3RhcnRPcmlnaW5zQXJyYXkoQVBJOjpBcnJheSYgb3JpZ2luTGlzdCkKIHsKICAgICBtX2F1
dG9TdGFydE9yaWdpbnMuY2xlYXIoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgbGVuZ3RoID0g
b3JpZ2luTGlzdC5zaXplKCk7IGkgPCBsZW5ndGg7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmgK
aW5kZXggODdjODFmZTNhOTc2OGFkNTgyYjAzNDdhZTJkOTk2YjcxZjFlMWFiMy4uYTRiOTNlYWIz
Y2FlMjcxZDBmMDY4ZjhjYTMxOTZjYjBiNjk1MjNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5oCkBA
IC0zMyw5ICszMywxMiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBBcnJh
eTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEltbXV0YWJsZUFycmF5OwogY2xh
c3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKIGNsYXNzIFdlYkNvbnRleHQ7CiAKQEAgLTUyLDcgKzU1
LDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBhdXRv
U3RhcnRPcmlnaW5zVGFibGVDb3B5KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBdXRvU3RhcnRPcmln
aW5zVGFibGUoSW1tdXRhYmxlRGljdGlvbmFyeSYpOwotICAgIHZvaWQgc2V0QXV0b1N0YXJ0T3Jp
Z2luc0FycmF5KEltbXV0YWJsZUFycmF5Jik7CisgICAgdm9pZCBzZXRBdXRvU3RhcnRPcmlnaW5z
QXJyYXkoQVBJOjpBcnJheSYpOwogCiAgICAgUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCBhdXRv
U3RhcnRPcmlnaW5IYXNoZXNDb3B5KCkgY29uc3Q7CiAgICAgY29uc3QgUGx1Z0luQXV0b1N0YXJ0
T3JpZ2lucyYgYXV0b1N0YXJ0T3JpZ2lucygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b1N0YXJ0T3Jp
Z2luczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1dlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggYjk0NmY3OTI0MDJhZjRhZjQz
MjNlNmY2YmY5YTRmMWNhZjYxN2ZiNS4uOWFiY2M3NGU0YzI4NTM4ZDg3YjA3YzJiODM4NDhiODUw
OTdkZmM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotI2luY2x1ZGUgIkltbXV0YWJsZUFy
cmF5LmgiCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzTWFu
YWdlci5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgV2ViUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyOjpkaWRHZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRo
UmV0dXJuVmFsdWUoSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KHNpdGVzKS5nZXQo
KSk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkFy
cmF5OjpjcmVhdGVTdHJpbmdBcnJheShzaXRlcykuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBsdWdp
blNpdGVEYXRhTWFuYWdlcjo6Y2xlYXJTaXRlRGF0YShJbW11dGFibGVBcnJheSogc2l0ZXMsIHVp
bnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2VJblNlY29uZHMsIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBwcnBDYWxsYmFjaykKK3ZvaWQgV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyOjpjbGVh
clNpdGVEYXRhKEFQSTo6QXJyYXkqIHNpdGVzLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgbWF4
QWdlSW5TZWNvbmRzLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCiB7CiAg
ICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBwcnBDYWxsYmFjazsKICAgICBpZiAo
IW1fd2ViQ29udGV4dCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaAppbmRleCAwNjg3NDBhYTM2YTVk
ODJlZGU0OTYxOGI0MjliNDU2ZDhmMWU0NDk2Li44Y2I0ZDM2N2Y2YWJkNDU0OTAxMTc1ZGVmNWRl
MDI5YzFiYTg3YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9XZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaApAQCAtNTIsNyArNTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRTaXRlc1dpdGhEYXRhKFBhc3NSZWZQdHI8QXJyYXlDYWxsYmFj
az4pOwogICAgIHZvaWQgZGlkR2V0U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAgdm9pZCBjbGVhclNpdGVEYXRhKElt
bXV0YWJsZUFycmF5KiBzaXRlcywgdWludDY0X3QgZmxhZ3MsIHVpbnQ2NF90IG1heEFnZUluU2Vj
b25kcywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGNsZWFyU2l0ZURhdGEo
QVBJOjpBcnJheSogc2l0ZXMsIHVpbnQ2NF90IGZsYWdzLCB1aW50NjRfdCBtYXhBZ2VJblNlY29u
ZHMsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CiAgICAgdm9pZCBkaWRDbGVhclNpdGVEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCiAgICAgdm9pZCBkaWRHZXRTaXRlc1dpdGhEYXRhRm9y
U2luZ2xlUGx1Z2luKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1Jl
cXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNw
cAppbmRleCA5YjQ3NGJjYWViZjA2ZjIwMGE3YWIwMmRlZWRlYjNlYThmYTRjYTJjLi44ZWFhY2Zk
N2ZhMDViZGRjMTU1ZTNkZGYwNWE0NDRmNDgyYzRmZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzUmVxdWVzdC5oIgogCi0jaW5jbHVk
ZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIk11
dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KIApAQCAtOTEsNyAr
OTEsNyBAQCB2b2lkIFN0YXRpc3RpY3NSZXF1ZXN0Ojpjb21wbGV0ZWRSZXF1ZXN0KHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgU3RhdGlzdGljc0RhdAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHN0YXRpc3RpYyA6IGRhdGEud2ViQ29yZUNhY2hlU3RhdGlzdGljcykKICAgICAgICAgICAgIGNh
Y2hlU3RhdGlzdGljcy51bmNoZWNrZWRBcHBlbmQoY3JlYXRlRGljdGlvbmFyeUZyb21IYXNoTWFw
KHN0YXRpc3RpYykpOwogCi0gICAgICAgIG1fcmVzcG9uc2VEaWN0aW9uYXJ5LT5zZXQoIldlYkNv
cmVDYWNoZVN0YXRpc3RpY3MiLCBJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShjYWNo
ZVN0YXRpc3RpY3MpKS5nZXQoKSk7CisgICAgICAgIG1fcmVzcG9uc2VEaWN0aW9uYXJ5LT5zZXQo
IldlYkNvcmVDYWNoZVN0YXRpc3RpY3MiLCBBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKGNh
Y2hlU3RhdGlzdGljcykpLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAobV9vdXRzdGFuZGluZ1Jl
cXVlc3RzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5LmgKaW5kZXggMDRiZDJiOTljNDhj
ZWUzZjFlYzU5NjRkNGI1NGQ4NzMyYzhkZGI4Zi4uYzk3MzA1ZDAzMjZhODFlZjg4MWZiNWFmNmU1
MTEwYmRhMGU2NDFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkFw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5oCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKLSNp
bmNsdWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAKaW5kZXggZTQ1N2NkYzNjMDZkNzg1MDdhNjQ2NDljNDc4ODhhY2Y1NjkwMGZhZS4uOTUwNjJh
NzNiN2JiY2U5NzYwYmE0Njc0YWMwM2M2NzM3NzU1ZmMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKIAorI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMjAwLDE3ICsyMDEsMTcgQEAgaW50IFdlYkJhY2tGb3J3YXJkTGlzdDo6
Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZSAmJiBtX2hhc0N1cnJl
bnRJbmRleCA/IG1fZW50cmllcy5zaXplKCkgLSAobV9jdXJyZW50SW5kZXggKyAxKSA6IDA7CiB9
CiAKLVBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xp
c3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0KHVuc2lnbmVkIGxpbWl0KSBjb25zdAorUGFzc1Jl
ZlB0cjxBUEk6OkFycmF5PiBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0QXNJbW11dGFibGVB
cnJheVdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkgY29uc3QKIHsKICAgICBBU1NFUlQoIW1faGFz
Q3VycmVudEluZGV4IHx8IG1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKICAg
ICBpZiAoIW1fcGFnZSB8fCAhbV9oYXNDdXJyZW50SW5kZXgpCi0gICAgICAgIHJldHVybiBJbW11
dGFibGVBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUo
KTsKIAogICAgIHVuc2lnbmVkIGJhY2tMaXN0U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihi
YWNrTGlzdENvdW50KCkpOwogICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6Om1pbihiYWNrTGlzdFNp
emUsIGxpbWl0KTsKICAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiBJbW11dGFibGVBcnJh
eTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoKTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB2ZWN0b3I7CiAgICAgdmVjdG9yLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0yMjEsMTkgKzIyMiwxOSBAQCBQYXNzUmVmUHRyPElt
bXV0YWJsZUFycmF5PiBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0QXNJbW11dGFibGVBcnJh
eVdpdGhMaW1pdAogICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKG1fZW50cmllc1tpXS5n
ZXQoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3RkOjpt
b3ZlKHZlY3RvcikpOworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKHZl
Y3RvcikpOwogfQogCi1QYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJCYWNrRm9yd2FyZExp
c3Q6OmZvcndhcmRMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkg
Y29uc3QKK1Bhc3NSZWZQdHI8QVBJOjpBcnJheT4gV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJk
TGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQodW5zaWduZWQgbGltaXQpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFtX2hhc0N1cnJlbnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmll
cy5zaXplKCkpOwogCiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1faGFzQ3VycmVudEluZGV4KQotICAg
ICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gQVBJ
OjpBcnJheTo6Y3JlYXRlKCk7CiAKICAgICB1bnNpZ25lZCBzaXplID0gc3RkOjptaW4oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGZvcndhcmRMaXN0Q291bnQoKSksIGxpbWl0KTsKICAgICBpZiAoIXNp
emUpCi0gICAgICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKCk7CisgICAgICAgIHJl
dHVybiBBUEk6OkFycmF5OjpjcmVhdGUoKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmpl
Y3Q+PiB2ZWN0b3I7CiAgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBA
IC0yNDUsNyArMjQ2LDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViQmFja0Zvcndh
cmRMaXN0Ojpmb3J3YXJkTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGkKICAgICAgICAgdmVjdG9y
LnVuY2hlY2tlZEFwcGVuZChtX2VudHJpZXNbaV0uZ2V0KCkpOwogICAgIH0KIAotICAgIHJldHVy
biBJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZSh2ZWN0b3IpKTsKKyAgICByZXR1cm4g
QVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZSh2ZWN0b3IpKTsKIH0KIAogdm9pZCBXZWJCYWNr
Rm9yd2FyZExpc3Q6OmNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZExpc3QuaAppbmRleCAxMDgyNmQ5ZWQwZTRjZDMyZjhjZTYxMjNlMDgzZWViOTM1Njc0
ZTUxLi44MGM3MzMzNGE3NTk1ZWY4ZTA3NWMzNjFhZWNlNDE1NjFkYjYzNzE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oCkBAIC0yNyw3ICsyNyw2
IEBACiAjZGVmaW5lIFdlYkJhY2tGb3J3YXJkTGlzdF9oCiAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgpAQCAtNzAsOCArNjksOCBAQCBwdWJsaWM6CiAgICAgaW50IGJhY2tMaXN0Q291
bnQoKSBjb25zdDsKICAgICBpbnQgZm9yd2FyZExpc3RDb3VudCgpIGNvbnN0OwogCi0gICAgUGFz
c1JlZlB0cjxJbW11dGFibGVBcnJheT4gYmFja0xpc3RBc0ltbXV0YWJsZUFycmF5V2l0aExpbWl0
KHVuc2lnbmVkIGxpbWl0KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBm
b3J3YXJkTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQodW5zaWduZWQgbGltaXQpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gYmFja0xpc3RBc0ltbXV0YWJsZUFycmF5V2l0
aExpbWl0KHVuc2lnbmVkIGxpbWl0KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+
IGZvcndhcmRMaXN0QXNJbW11dGFibGVBcnJheVdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkgY29u
c3Q7CiAKICNpZiBVU0UoQ0YpCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUNGRGljdGlvbmFy
eVJlcHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5U2Vzc2lvblN0YXRlRmls
dGVyQ2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCmluZGV4IDkzZWNjY2IxZTU4ZTFkMWRjOWY2YjBhYzRkMjM5MDE5NGQ4
ZmNkM2UuLmRjZDdhMTYyZjMwOThmNTA3OTI2OWZiZDg4NWMzNjYxZjYyMWYwZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTI2LDkgKzI2LDkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAKKyNpbmNsdWRlICJBUElB
cnJheS5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFBy
b3h5TWVzc2FnZXMuaCIKLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIlNhbmRi
b3hFeHRlbnNpb24uaCIKQEAgLTEyMzEsNyArMTIzMSw3IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0
UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEltbXV0YWJsZURpY3Rpb25hcnkmIGRpY3Rpb25h
cnkpCiAgICAgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5zZXRBdXRvU3RhcnRPcmlnaW5zVGFi
bGUoZGljdGlvbmFyeSk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6c2V0UGx1Z0luQXV0b1N0YXJ0
T3JpZ2lucyhJbW11dGFibGVBcnJheSYgYXJyYXkpCit2b2lkIFdlYkNvbnRleHQ6OnNldFBsdWdJ
bkF1dG9TdGFydE9yaWdpbnMoQVBJOjpBcnJheSYgYXJyYXkpCiB7CiAgICAgbV9wbHVnSW5BdXRv
U3RhcnRQcm92aWRlci5zZXRBdXRvU3RhcnRPcmlnaW5zQXJyYXkoYXJyYXkpOwogfQpAQCAtMTI3
Miw3ICsxMjcyLDcgQEAgdm9pZCBXZWJDb250ZXh0OjpwbHVnaW5JbmZvU3RvcmVEaWRMb2FkUGx1
Z2lucyhQbHVnaW5JbmZvU3RvcmUqIHN0b3JlKQogICAgICAgICBtaW1lVHlwZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShwbHVnaW5Nb2R1bGUuaW5mby5taW1lcy5zaXplKCkpOwogICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIG1pbWVDbGFzc0luZm8gOiBwbHVnaW5Nb2R1bGUuaW5mby5taW1lcykK
ICAgICAgICAgICAgIG1pbWVUeXBlcy51bmNoZWNrZWRBcHBlbmQoV2ViU3RyaW5nOjpjcmVhdGUo
bWltZUNsYXNzSW5mby50eXBlKSk7Ci0gICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJtaW1l
cyIpLCBJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShtaW1lVHlwZXMpKSk7CisgICAg
ICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJtaW1lcyIpLCBBUEk6OkFycmF5OjpjcmVhdGUoc3Rk
Ojptb3ZlKG1pbWVUeXBlcykpKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgbWFwLnNl
dChBU0NJSUxpdGVyYWwoImJ1bmRsZUlkIiksIFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdpbk1vZHVs
ZS5idW5kbGVJZGVudGlmaWVyKSk7CkBAIC0xMjgyLDcgKzEyODIsNyBAQCB2b2lkIFdlYkNvbnRl
eHQ6OnBsdWdpbkluZm9TdG9yZURpZExvYWRQbHVnaW5zKFBsdWdpbkluZm9TdG9yZSogc3RvcmUp
CiAgICAgICAgIHBsdWdpbnMudW5jaGVja2VkQXBwZW5kKEltbXV0YWJsZURpY3Rpb25hcnk6OmFk
b3B0KG1hcCkpOwogICAgIH0KIAotICAgIG1fY2xpZW50LnBsdWdJbkluZm9ybWF0aW9uQmVjYW1l
QXZhaWxhYmxlKHRoaXMsIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKHBsdWdpbnMp
KS5nZXQoKSk7CisgICAgbV9jbGllbnQucGx1Z0luSW5mb3JtYXRpb25CZWNhbWVBdmFpbGFibGUo
dGhpcywgQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShwbHVnaW5zKSkuZ2V0KCkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDZjMWZiMGM1
MzNiYWY3N2Q1MTQ3MjY5YTg1MjM2OGIzOTI5NTI3MGMuLjc0ODU5MGY2ZDIwZDNkOTdmOGZhZTg1
MDFmNTlmMWExOWI0MmJlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJJ
bW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIK
QEAgLTI2NSw3ICsyNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURp
Y3Rpb25hcnk+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcygpIGNvbnN0OwogICAgIHZvaWQg
c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEltbXV0YWJsZURpY3Rpb25hcnkmKTsKLSAg
ICB2b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoSW1tdXRhYmxlQXJyYXkmKTsKKyAgICB2
b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoQVBJOjpBcnJheSYpOwogCiAgICAgLy8gTmV0
d29yayBQcm9jZXNzIE1hbmFnZW1lbnQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHRDbGllbnQuY3BwCmluZGV4IGRmMTNlODc3OGYyOGM5ZThhNzkzNzgxODVlOGU2Yjgx
NTE0ODAyZDUuLjAzZjFjNjQwNDhhYjY1ODM5NzcyOTM4YjQ2NTY4YjUwZWJmZmE1NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Q2xpZW50
LmgiCiAKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Niw3ICs0Nyw3IEBAIHZvaWQgV2ViQ29udGV4dENsaWVu
dDo6bmV0d29ya1Byb2Nlc3NEaWRDcmFzaChXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIG1fY2xp
ZW50Lm5ldHdvcmtQcm9jZXNzRGlkQ3Jhc2godG9BUEkoY29udGV4dCksIG1fY2xpZW50LmNsaWVu
dEluZm8pOwogfQogCi12b2lkIFdlYkNvbnRleHRDbGllbnQ6OnBsdWdJbkluZm9ybWF0aW9uQmVj
YW1lQXZhaWxhYmxlKFdlYkNvbnRleHQqIGNvbnRleHQsIEltbXV0YWJsZUFycmF5KiBwbHVnSW5J
bmZvKQordm9pZCBXZWJDb250ZXh0Q2xpZW50OjpwbHVnSW5JbmZvcm1hdGlvbkJlY2FtZUF2YWls
YWJsZShXZWJDb250ZXh0KiBjb250ZXh0LCBBUEk6OkFycmF5KiBwbHVnSW5JbmZvKQogewogICAg
IGlmICghbV9jbGllbnQucGx1Z0luSW5mb3JtYXRpb25CZWNhbWVBdmFpbGFibGUpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5oCmlu
ZGV4IDY5ODYwN2M3MzJkNzBiNzU3YmQ0MjVlMTlkYzMzNzI5Zjc0MTZkNzMuLjQ3ZjAxMGI0ZTJk
NTJlNTg4NTVmMDFkOWRjMjBlMzAzOWY2ZTA0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHRDbGllbnQuaApAQCAtMjksMTYgKzI5LDE5IEBACiAjaW5jbHVkZSAiQVBJ
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0LmgiCiAKK25hbWVzcGFjZSBBUEkgeworY2xh
c3MgQXJyYXk7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBJbW11dGFibGVBcnJh
eTsKIGNsYXNzIFdlYkNvbnRleHQ7CiAKIGNsYXNzIFdlYkNvbnRleHRDbGllbnQgOiBwdWJsaWMg
QVBJQ2xpZW50PFdLQ29udGV4dENsaWVudCwga1dLQ29udGV4dENsaWVudEN1cnJlbnRWZXJzaW9u
PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNDaGFuZ2Vk
KFdlYkNvbnRleHQqKTsKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkQ3Jhc2goV2ViQ29udGV4
dCopOwotICAgIHZvaWQgcGx1Z0luSW5mb3JtYXRpb25CZWNhbWVBdmFpbGFibGUoV2ViQ29udGV4
dCosIEltbXV0YWJsZUFycmF5Kik7CisgICAgdm9pZCBwbHVnSW5JbmZvcm1hdGlvbkJlY2FtZUF2
YWlsYWJsZShXZWJDb250ZXh0KiwgQVBJOjpBcnJheSopOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IGY0OGM1ZDJhMmEwYzU3NDNkZDBkMmFmNGM1MmEwNWVhOTVhMjE0M2Yu
LjYyMGZlYzI5MjY0MTkwZThhZjkxYWM3N2Y2YTc3ZmNkYWM1NmI5NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdl
clByb3h5LmgiCiAKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb29raWVN
YW5hZ2VyTWVzc2FnZXMuaCIKQEAgLTExNSw3ICsxMTYsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGhvcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbGJhY2stPnBlcmZvcm1DYWxs
YmFja1dpdGhSZXR1cm5WYWx1ZShJbW11dGFibGVBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoaG9z
dG5hbWVzKS5nZXQoKSk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5W
YWx1ZShBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShob3N0bmFtZXMpLmdldCgpKTsKIH0K
IAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShj
b25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IGVlNWJiY2IwNTlmYjgwOTBjNDA4MWIwOTg5OTA3
YWUzMmNkYmRjZTEuLmI3MzJkMzQ1NGZmOWQxN2ZjY2VhODQwODBlMWRlOGRmZWRjYzRkZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgK
QEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkdl
bmVyaWNDYWxsYmFjay5oIgotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNp
bmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHlDbGllbnQuaCIKQEAgLTQwLDYgKzM5LDEwIEBA
CiAjaW5jbHVkZSAiU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIgogI2VuZGlmCiAK
K25hbWVzcGFjZSBBUEkgeworY2xhc3MgQXJyYXk7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkRhdGFiYXNlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNDk1YTc3YzE0N2M2YjBmNjA4YjU0MGJl
MmJhYmQ1MTQxY2UwMTE0OC4uMWYxYzgzZjlmODE0M2NjZGIzZDVjNjYxYTJmNzJlNDU2ZTg1MGNm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkRhdGFiYXNlTWFuYWdl
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHkuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQogCi0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJBUElBcnJheS5oIgog
I2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiV2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZXMuaCIKQEAgLTE4MCwxMiArMTgw
LDEyIEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRpZEdldERhdGFiYXNlc0J5T3Jp
Z2luKGNvbnN0IFZlY3RvcjxPcmlnaW5BbmREYXRhCiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNl
c01hcC5zZXQob3JpZ2luS2V5KCksIG9yaWdpbik7CiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNl
c01hcC5zZXQob3JpZ2luUXVvdGFLZXkoKSwgV2ViVUludDY0OjpjcmVhdGUob3JpZ2luQW5kRGF0
YWJhc2VzLm9yaWdpblF1b3RhKSk7CiAgICAgICAgIG9yaWdpbkFuZERhdGFiYXNlc01hcC5zZXQo
b3JpZ2luVXNhZ2VLZXkoKSwgV2ViVUludDY0OjpjcmVhdGUob3JpZ2luQW5kRGF0YWJhc2VzLm9y
aWdpblVzYWdlKSk7Ci0gICAgICAgIG9yaWdpbkFuZERhdGFiYXNlc01hcC5zZXQoZGF0YWJhc2VE
ZXRhaWxzS2V5KCksIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKGRhdGFiYXNlcykp
KTsKKyAgICAgICAgb3JpZ2luQW5kRGF0YWJhc2VzTWFwLnNldChkYXRhYmFzZURldGFpbHNLZXko
KSwgQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShkYXRhYmFzZXMpKSk7CiAKICAgICAgICAg
cmVzdWx0LnVuY2hlY2tlZEFwcGVuZChJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChvcmlnaW5B
bmREYXRhYmFzZXNNYXApKTsKICAgICB9CiAKLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNr
V2l0aFJldHVyblZhbHVlKEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKHJlc3VsdCkp
LmdldCgpKTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQ
STo6QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUocmVzdWx0KSkuZ2V0KCkpOwogfQogCiB2b2lkIFdl
YkRhdGFiYXNlTWFuYWdlclByb3h5OjpnZXREYXRhYmFzZU9yaWdpbnMoUGFzc1JlZlB0cjxBcnJh
eUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFdlYkRhdGFi
YXNlTWFuYWdlclByb3h5OjpkaWRHZXREYXRhYmFzZU9yaWdpbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIG9yaWdpbgogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luSWRlbnRpZmllciA6IG9yaWdp
bklkZW50aWZpZXJzKQogICAgICAgICBzZWN1cml0eU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKFdl
YlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50
aWZpZXIpKTsKIAotICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUo
SW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoc2VjdXJpdHlPcmlnaW5zKSkuZ2V0KCkp
OworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUoQVBJOjpBcnJh
eTo6Y3JlYXRlKHN0ZDo6bW92ZShzZWN1cml0eU9yaWdpbnMpKS5nZXQoKSk7CiB9CiAKIHZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRlbGV0ZURhdGFiYXNlV2l0aE5hbWVGb3JPcmlnaW4o
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIsIFdlYlNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRmluZENsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRmluZENsaWVudC5jcHAKaW5kZXggNzAy
ZDE4N2NhOGFhNzM5NzU4NDJmNmY5MzZmYjAwZmJmNmIyZjg3Ni4uMDI2NTliNGMxOTNjMTE1YWM3
MWJkNjc4MjM0MWZlYTRkNmMzYTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZpbmRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJG
aW5kQ2xpZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYkZpbmRDbGllbnQ6OmRpZENv
dW50U3RyaW5nTWF0Y2hlcyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc3RyaQog
ICAgIG1fY2xpZW50LmRpZENvdW50U3RyaW5nTWF0Y2hlcyh0b0FQSShwYWdlKSwgdG9BUEkoc3Ry
aW5nLmltcGwoKSksIG1hdGNoQ291bnQsIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi12b2lk
IFdlYkZpbmRNYXRjaGVzQ2xpZW50OjpkaWRGaW5kU3RyaW5nTWF0Y2hlcyhXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBJbW11dGFibGVBcnJheSogbWF0Y2hlcywgaW50
IGZpcnN0SW5kZXgpCit2b2lkIFdlYkZpbmRNYXRjaGVzQ2xpZW50OjpkaWRGaW5kU3RyaW5nTWF0
Y2hlcyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBBUEk6OkFycmF5
KiBtYXRjaGVzLCBpbnQgZmlyc3RJbmRleCkKIHsKICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmRT
dHJpbmdNYXRjaGVzKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRmluZENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZpbmRDbGllbnQuaAppbmRleCA2MDVmM2Q1MDIyZmUxYzc3NzE4YWFhMjdlOWYyMjJhYzNiMTk4
Y2JmLi5kZDZiMWQ2YjE4NDM4NGZkMjljNTNjNWIwN2IyOGZhOTBjZjkzN2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRmluZENsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGaW5kQ2xpZW50LmgKQEAgLTMwLDkgKzMwLDEyIEBACiAjaW5j
bHVkZSAiV0tQYWdlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAorbmFtZXNwYWNlIEFQ
SSB7CitjbGFzcyBBcnJheTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEltbXV0
YWJsZUFycmF5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViSW1hZ2U7CiAKQEAgLTQ1
LDcgKzQ4LDcgQEAgcHVibGljOgogCiBjbGFzcyBXZWJGaW5kTWF0Y2hlc0NsaWVudCA6IHB1Ymxp
YyBBUElDbGllbnQ8V0tQYWdlRmluZE1hdGNoZXNDbGllbnQsIGtXS1BhZ2VGaW5kTWF0Y2hlc0Ns
aWVudEN1cnJlbnRWZXJzaW9uPiB7CiBwdWJsaWM6Ci0gICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0
Y2hlcyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBJbW11dGFibGVBcnJheSosIGludCk7
CisgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJp
bmcmLCBBUEk6OkFycmF5KiwgaW50KTsKICAgICB2b2lkIGRpZEdldEltYWdlRm9yTWF0Y2hSZXN1
bHQoV2ViUGFnZVByb3h5KiwgV2ViSW1hZ2UqLCB1aW50MzJfdCk7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAppbmRleCA3ZDBjOTlhZmM2YTY0ZmI3NDgxMDE4
NzUxZTdmNDU3OTE2M2M4ZTViLi41OGQ2OTliODA5ZmM0MTQ2NTg1MjQwMmRjNjFmMGU3ZmVjMjM4
OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTI4LDcg
KzI4LDYgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFN0
YXRlLmgiCi0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJHZW5lcmljQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJXZWJGcmFtZUxpc3RlbmVyUHJveHkuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTQzLDcgKzQyLDYgQEAgbmFtZXNwYWNlIENv
cmVJUEMgewogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgSW1tdXRhYmxlQXJyYXk7CiBj
bGFzcyBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkNlcnRpZmljYXRlSW5mbzsK
IGNsYXNzIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA3
YmY2NDA0Njc4OTRmNjVlNTI1Nzc5ZGRmYjA2NzM2OGI2MGE1MzkxLi5iNDc4YWQxMWJjODVkZDQz
NzM2NTJjMGY4ODU4M2JhYmM0YzM2ZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
ci5oIgogCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRh
dGEuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmln
aW4uaCIKQEAgLTc1LDcgKzc2LDcgQEAgc3RhdGljIHZvaWQgZGlkR2V0S2V5VmFsdWVTdG9yYWdl
T3JpZ2lucyhjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3IKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VjdXJpdHlPcmlnaW5zLnNpemUoKTsgKytpKQogICAgICAg
ICB3ZWJTZWN1cml0eU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKFdlYlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUoc2VjdXJpdHlPcmlnaW5zW2ldKSk7CiAKLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxi
YWNrV2l0aFJldHVyblZhbHVlKEltbXV0YWJsZUFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKHdlYlNl
Y3VyaXR5T3JpZ2lucykpLmdldCgpKTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0
aFJldHVyblZhbHVlKEFQSTo6QXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUod2ViU2VjdXJpdHlPcmln
aW5zKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXI6OmdldEtl
eVZhbHVlU3RvcmFnZU9yaWdpbnMoUGFzc1JlZlB0cjxBcnJheUNhbGxiYWNrPiBwcnBDYWxsYmFj
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdl
TWFuYWdlci5oCmluZGV4IDMxZDM0MzQzMjc0NTdjYTNhY2E0ZjQ1NTg5YWZiMGIwZTMzMTBmZTku
LjBkMThhYWM4ZGQxNmI5NDJjMWQ2N2VkN2FmNTQ5MWZmNzE2MGRmOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaApAQCAt
MjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiR2VuZXJp
Y0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDIxNmNlYjUzNmYzYTNjMGU3ZTkwYmNkY2FiODUxMzM4MDUyYWE2
ZDMuLmE1ODVkZmQ3OTYyZmUyMjRhNDk4ZjRhZTQxYzRiOGY0OTc0MmY5NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTG9hZGVyQ2xpZW50LmgiCiAKLSNp
bmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVk
ZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0yNDMsOSArMjQzLDkgQEAgdm9pZCBXZWJMb2Fk
ZXJDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdlUHJveHkqIHBhZ2UsIFdl
YkJhY2tGb3J3YXIKICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiByZW1vdmVkSXRl
bXNBcnJheTsKKyAgICBSZWZQdHI8QVBJOjpBcnJheT4gcmVtb3ZlZEl0ZW1zQXJyYXk7CiAgICAg
aWYgKHJlbW92ZWRJdGVtcyAmJiAhcmVtb3ZlZEl0ZW1zLT5pc0VtcHR5KCkpCi0gICAgICAgIHJl
bW92ZWRJdGVtc0FycmF5ID0gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoKnJlbW92
ZWRJdGVtcykpOworICAgICAgICByZW1vdmVkSXRlbXNBcnJheSA9IEFQSTo6QXJyYXk6OmNyZWF0
ZShzdGQ6Om1vdmUoKnJlbW92ZWRJdGVtcykpOwogCiAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShhZGRlZEl0ZW0pLCB0b0FQSShyZW1vdmVk
SXRlbXNBcnJheS5nZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwCmlu
ZGV4IDhkYmMyYzkzYjkxMmQ5YzBmMTQ3YzA4OGIyYWFkYThhNTQ5MmY0MDUuLjE2MjY3OWMxMTAx
YzczZWRlNTllZWQ3ZmM3MmI3ZjFmM2FhMmYwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJNZWRpYUNhY2hlTWFuYWdl
clByb3h5LmgiCiAKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQu
aCIKICNpbmNsdWRlICJXZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCkBAIC05OCw3ICs5OSw3IEBAIHZv
aWQgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTo6ZGlkR2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2Fj
aGUoY29uc3QgVmVjdG9yPFN0cmluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxs
YmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEltbXV0YWJsZUFycmF5OjpjcmVh
dGVTdHJpbmdBcnJheShob3N0bmFtZXMpLmdldCgpKTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNh
bGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KGhvc3Ru
YW1lcykuZ2V0KCkpOwogfQogCiB2b2lkIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OmNsZWFy
Q2FjaGVGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmgKaW5kZXggMjMz
YjJiNDBjZWM3ZDU2ZWZlNDQ0ZDllZGI0MWY5MjY0NmMxNDgwOC4uZDM1MGI0ZDVjZTRlNTczNzU5
NmEwMTJkNzc0MWIzM2U1ZjlmZTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
bmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKLSNpbmNs
dWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAppbmRleCA1NmQyMDFhZjAzZWZmNzQ5YWEwMWZjMThj
ZWVlMTI4YzlhZjU1MGQ3Li4yYWNjOWEzYTNkYThjZGJkNGRiZjZjZWFmNGExMmVjMjJlNmQxNzQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgog
Ci0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDQsNyArNDQsNyBAQCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5Ojp+V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSgpCiB7CiB9CiAKLXZv
aWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoSW1tdXRhYmxl
QXJyYXkqIGZpbGVVUkxzQXJyYXkpCit2b2lkIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHk6OmNob29zZUZpbGVzKEFQSTo6QXJyYXkqIGZpbGVVUkxzQXJyYXkpCiB7CiAgICAgaWYgKCFt
X3BhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oCmluZGV4IDIzODM2M2Ri
NTQ1YTE3ZmE0ZGU5NzBlNDNhNGFkYzc4ZDk0MmNiOTcuLjAyY2JkYjcyZDE1YjMxMzMyOTIzMTNm
M2NiOGJhNmQwY2IwZTczYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaApAQCAtMzAsOSArMzAsMTIg
QEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBBcnJheTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIEltbXV0YWJsZUFycmF5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5IDogcHVibGljIEFQSTo6VHlwZWRPYmplY3Q8
QVBJOjpPYmplY3Q6OlR5cGU6OkZyYW1lUG9saWN5TGlzdGVuZXI+IHsKQEAgLTQ0LDcgKzQ3LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+V2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eSgpOwogCi0gICAgdm9pZCBjaG9vc2VGaWxlcyhJbW11dGFibGVBcnJheSopOworICAgIHZvaWQg
Y2hvb3NlRmlsZXMoQVBJOjpBcnJheSopOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICB2b2lk
IGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJP
cmlnaW5EYXRhTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eS5oCmluZGV4IGM2MzBhYjNhY2E4YzU3ZTI3ZmI4NTYzMzI3YzMy
MjE4NGRmMTM4ZmYuLjYyM2ZlMWU3ZTYyYWNhNTMzMWVmZjI5NTIyZGQ3OGRiOGQ5NzQ3NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHkuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXS09yaWdpbkRhdGFNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggODQ0
YTRhY2RlZmQ2ZTBhNDU3MDgzY2RiZDg1OWQwZjk4NDgwYmU1MS4uYzEwZjU2ZWY0ZWQyMGQxMmI3
NGI5ODE5YjdhMjAxMDgxMjhlNjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAog
I2luY2x1ZGUgIldlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIgogCi0jaW5jbHVkZSAiSW1tdXRh
YmxlQXJyYXkuaCIKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
QEAgLTU0LDExICs1NCwxMSBAQCBib29sIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q29u
dGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSogcGFnZQogICAgIFdLQXJyYXlS
ZWYgbmV3TWVudSA9IG51bGxwdHI7CiAgICAgaWYgKG1fY2xpZW50LnZlcnNpb24gPj0gMikgewog
ICAgICAgICBSZWZQdHI8V2ViSGl0VGVzdFJlc3VsdD4gd2ViSGl0VGVzdFJlc3VsdCA9IFdlYkhp
dFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0UmVzdWx0RGF0YSk7Ci0gICAgICAgIG1fY2xpZW50
LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSh0b0FQSShwYWdlKSwgdG9BUEkoSW1tdXRh
YmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUocHJvcG9zZWRNZW51SXRlbXMpKS5nZXQoKSksICZu
ZXdNZW51LCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkodXNlckRhdGEpLCBt
X2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9t
UHJvcG9zZWRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjpt
b3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3TWVudSwgdG9BUEkod2ViSGl0VGVz
dFJlc3VsdC5nZXQoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVu
dV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShJbW11dGFibGVBcnJh
eTo6Y3JlYXRlKHN0ZDo6bW92ZShwcm9wb3NlZE1lbnVJdGVtcykpLmdldCgpKSwgJm5ld01lbnUs
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgIG1fY2xpZW50
LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRv
QVBJKHBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKHByb3Bvc2VkTWVu
dUl0ZW1zKSkuZ2V0KCkpLCAmbmV3TWVudSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKIAotICAgIFJlZlB0cjxJbW11dGFibGVBcnJheT4gYXJyYXkgPSBhZG9wdFJlZih0
b0ltcGwobmV3TWVudSkpOworICAgIFJlZlB0cjxBUEk6OkFycmF5PiBhcnJheSA9IGFkb3B0UmVm
KHRvSW1wbChuZXdNZW51KSk7CiAgICAgCiAgICAgY3VzdG9tTWVudS5jbGVhcigpOwogICAgIApA
QCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50OjpzaG93Q29u
dGV4dE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJDb3JlCiAgICAgZm9yIChjb25z
dCBhdXRvJiBtZW51SXRlbSA6IG1lbnVJdGVtc1ZlY3RvcikKICAgICAgICAgbWVudUl0ZW1zLnVu
Y2hlY2tlZEFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShtZW51SXRlbSkpOwogCi0g
ICAgbV9jbGllbnQuc2hvd0NvbnRleHRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQSShtZW51TG9jYXRp
b24pLCB0b0FQSShJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShtZW51SXRlbXMpKS5n
ZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LnNob3dDb250ZXh0TWVu
dSh0b0FQSShwYWdlKSwgdG9BUEkobWVudUxvY2F0aW9uKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3Jl
YXRlKHN0ZDo6bW92ZShtZW51SXRlbXMpKS5nZXQoKSksIG1fY2xpZW50LmNsaWVudEluZm8pOwog
CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3Jv
dXAuY3BwCmluZGV4IDA2YjBjNzdmYzNmY2U4Yjg2YTcwMmRjNjM3ZDE2YTU3MmFmMjdhOGIuLmU2
NDA3M2RiNmU0ZTBiNTIxMTcwOTgwODRmYTJiYjMzMTRhYTI2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAKKyNpbmNsdWRlICJBUElBcnJh
eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgpAQCAtMTI5LDcgKzEz
MCw3IEBAIHZvaWQgV2ViUGFnZUdyb3VwOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiAgICAgfQog
fQogCi1zdGF0aWMgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoSW1tdXRhYmxlQXJyYXkq
IGFycmF5KQorc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKEFQSTo6QXJyYXkq
IGFycmF5KQogewogICAgIFZlY3RvcjxTdHJpbmc+IHBhdHRlcm5WZWN0b3I7CiAgICAgaWYgKCFh
cnJheSkKQEAgLTE0OSw3ICsxNTAsNyBAQCBzdGF0aWMgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdW
ZWN0b3IoSW1tdXRhYmxlQXJyYXkqIGFycmF5KQogICAgIHJldHVybiBwYXR0ZXJuVmVjdG9yOwog
fQogCi12b2lkIFdlYlBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwg
SW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lcywgV2ViQ29yZTo6VXNlclN0eWxlTGV2ZWwgbGV2ZWwpCit2b2lk
IFdlYlBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBi
bGFja2xpc3QsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFt
ZXMsIFdlYkNvcmU6OlVzZXJTdHlsZUxldmVsIGxldmVsKQogewogICAgIGlmIChzb3VyY2UuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNjAsNyArMTYxLDcgQEAgdm9pZCBXZWJQYWdl
R3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwKICAgICBzZW5kVG9BbGxQcm9jZXNzZXNJbkdyb3VwKE1lc3NhZ2VzOjpXZWJQ
YWdlR3JvdXBQcm94eTo6QWRkVXNlclN0eWxlU2hlZXQodXNlclN0eWxlU2hlZXQpLCBtX2RhdGEu
cGFnZUdyb3VwSUQpOwogfQogCi12b2lkIFdlYlBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdChjb25z
dCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBJbW11dGFibGVBcnJheSog
d2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZSBpbmplY3Rpb25UaW1lKQordm9pZCBXZWJQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHQo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpBcnJheSog
d2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lIGluamVjdGlvblRpbWUpCiB7CiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3Jv
dXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuaAppbmRleCA1ZTli
ZjQ2ZmIyYzY1ZDJiNGVjNjIwY2FkM2I3YjU5MjIxNWJiZGRkLi4yNGNjZDA5NzYwNDdjYjRhN2M0
ZDY2NTZmM2Y4ZmRhY2I5YzBmOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VH
cm91cC5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICBXZWJQcmVmZXJlbmNlcyogcHJl
ZmVyZW5jZXMoKSBjb25zdDsKICAgICB2b2lkIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCk7CiAgICAg
Ci0gICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBJbW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJh
eSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzLCBXZWJDb3Jl
OjpVc2VyU3R5bGVMZXZlbCk7Ci0gICAgdm9pZCBhZGRVc2VyU2NyaXB0KGNvbnN0IFN0cmluZyYg
c291cmNlLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3Qs
IEltbXV0YWJsZUFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKKyAgICB2b2lkIGFkZFVz
ZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEFQSTo6QXJyYXkqIHdoaXRlbGlzdCwgQVBJOjpBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVMZXZlbCk7CisgICAg
dm9pZCBhZGRVc2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIEFQSTo6QXJyYXkqIHdoaXRlbGlzdCwgQVBJOjpBcnJheSogYmxhY2tsaXN0LCBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzLCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZSk7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKICAgICB2b2lk
IHJlbW92ZUFsbFVzZXJTY3JpcHRzKCk7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1OGE1NWRi
MjJlMGI5NDQzOTI0Yjg1MWQzY2Q4M2IzODE1Y2UyNDA4Li4wM2U1MDVhNDJiM2UzMzVmNTkyN2Mx
MDg5YWRmZDkyYzExNTU2OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgpAQCAtMzUsNyArMzYs
NiBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkV2
ZW50RGlzcGF0Y2hlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRmluZEluZGljYXRvci5oIgotI2lu
Y2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50
LmgiCkBAIC0zODcsNyArMzg3LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmlzVmFsaWQoKSBjb25z
dAogICAgIHJldHVybiBtX2lzVmFsaWQ7CiB9CiAKLVBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+
IFdlYlBhZ2VQcm94eTo6cmVsYXRlZFBhZ2VzKCkgY29uc3QKK1Bhc3NSZWZQdHI8QVBJOjpBcnJh
eT4gV2ViUGFnZVByb3h5OjpyZWxhdGVkUGFnZXMoKSBjb25zdAogewogICAgIC8vIHBhZ2VzKCkg
cmV0dXJucyBhIGxpc3Qgb2YgcGFnZXMgaW4gV2ViUHJvY2Vzcywgc28gdGhpcyBwYWdlIG1heSBv
ciBtYXkgbm90IGJlIGFtb25nIHRoZW0gLSBhIGNsaWVudCBjYW4gdXNlIGEgcmVmZXJlbmNlIHRv
IFdlYlBhZ2VQcm94eSBhZnRlciB0aGUgcGFnZSBoYXMgY2xvc2VkLgogICAgIFZlY3RvcjxXZWJQ
YWdlUHJveHkqPiBwYWdlcyA9IG1fcHJvY2Vzcy0+cGFnZXMoKTsKQEAgLTQwMCw3ICs0MDAsNyBA
QCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJQYWdlUHJveHk6OnJlbGF0ZWRQYWdlcygp
IGNvbnN0CiAgICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKHBhZ2UpOwogICAgIH0K
IAotICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShyZXN1bHQpKTsK
KyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShyZXN1bHQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVMb2FkZXJDbGllbnQoY29uc3QgV0tQYWdlTG9h
ZGVyQ2xpZW50KiBsb2FkQ2xpZW50KQpAQCAtMzA0NywxMCArMzA0NywxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFZlY3Rv
cjxWZWN0b3I8V2ViQwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY3QgOiByZWN0cykKICAg
ICAgICAgICAgIGFwaVJlY3RzLnVuY2hlY2tlZEFwcGVuZChXZWJSZWN0OjpjcmVhdGUodG9BUEko
cmVjdCkpKTsKIAotICAgICAgICBtYXRjaGVzLnVuY2hlY2tlZEFwcGVuZChJbW11dGFibGVBcnJh
eTo6Y3JlYXRlKHN0ZDo6bW92ZShhcGlSZWN0cykpKTsKKyAgICAgICAgbWF0Y2hlcy51bmNoZWNr
ZWRBcHBlbmQoQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShhcGlSZWN0cykpKTsKICAgICB9
CiAKLSAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50LmRpZEZpbmRTdHJpbmdNYXRjaGVzKHRoaXMsIHN0
cmluZywgSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUobWF0Y2hlcykpLmdldCgpLCBm
aXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOworICAgIG1fZmluZE1hdGNoZXNDbGllbnQuZGlkRmlu
ZFN0cmluZ01hdGNoZXModGhpcywgc3RyaW5nLCBBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3Zl
KG1hdGNoZXMpKS5nZXQoKSwgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTQ1MzJhY2Q0ZDZhMzI3
Y2FmYjc5ZTRlMDlkN2U1YzFlMWJhNTZmZC4uMzNlMWUwYTZmNzY3OTcxYTI0ZGI3MzhmMDIwOWQy
MzNmYjU2Y2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
NjA3LDcgKzYwNyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCi0g
ICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gcmVsYXRlZFBhZ2VzKCkgY29uc3Q7CisgICAg
UGFzc1JlZlB0cjxBUEk6OkFycmF5PiByZWxhdGVkUGFnZXMoKSBjb25zdDsKIAogICAgIGNvbnN0
IFN0cmluZyYgdXJsQXRQcm9jZXNzRXhpdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsQXRQcm9jZXNz
RXhpdDsgfQogICAgIEZyYW1lTG9hZFN0YXRlOjpMb2FkU3RhdGUgbG9hZFN0YXRlQXRQcm9jZXNz
RXhpdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFN0YXRlQXRQcm9jZXNzRXhpdDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IDQ3OGVhZjA3YjFiNTM3Y2Y1MmYyNDMxNzc4NzVjYjk4ZmY5Njc3Nzcu
LjQxYjBlYzZkODE3MTVkYTE2NjZmM2VjMWRmMzUxZGFmYTBlM2UxYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmgiCiAKLSNpbmNsdWRlICJJbW11dGFibGVBcnJh
eS5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWJlYTNhOTFjYWM0
ZTc4ZjI4NjQwMjVlNmYyYjhjM2U0MWE3NzYzYy4uMTQ0MDY1ZDhkNDRkM2ZjY2E5NGNmNzZlYTdi
YTJiMzlkOWViOTEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTI3LDggKzkyNyw4IEBACiAJCUJDNUQyNEM3MTZDRDczQzUw
MDdENTQ2MSAvKiBXS0J1bmRsZVJhbmdlSGFuZGxlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1RDI0QzYxNkNENzNDNTAwN0Q1NDYxIC8q
IFdLQnVuZGxlUmFuZ2VIYW5kbGVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM2MEM1NzkxMjQwQTU0NjAwOEM1RTI5IC8qIFdLQnVu
ZGxlUmFuZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNjBDNTc3MTI0MEE1NDYwMDhDNUUyOSAvKiBXS0J1bmRsZVJhbmdlSGFuZGxlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM2MEM1
N0ExMjQwQTU0NjAwOEM1RTI5IC8qIFdLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2MEM1NzgxMjQwQTU0NjAwOEM1
RTI5IC8qIFdLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwICovOyB9OwotCQlCQzY0Njk2RjExREJFNjAz
MDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDY5NkQxMURCRTYwMzAwNjQ1NUIwIC8qIEltbXV0YWJs
ZUFycmF5LmNwcCAqLzsgfTsKLQkJQkM2NDY5NzAxMURCRTYwMzAwNjQ1NUIwIC8qIEltbXV0YWJs
ZUFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzY0Njk2RTExREJFNjAzMDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuaCAqLzsgfTsKKwkJQkM2
NDY5NkYxMURCRTYwMzAwNjQ1NUIwIC8qIEFQSUFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2OTZEMTFEQkU2MDMwMDY0NTVCMCAvKiBB
UElBcnJheS5jcHAgKi87IH07CisJCUJDNjQ2OTcwMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJh
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDY5
NkUxMURCRTYwMzAwNjQ1NUIwIC8qIEFQSUFycmF5LmggKi87IH07CiAJCUJDNjQ2QzFBMTFERDM5
OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NkMxNjExREQzOTlGMDA2NDU1QjAgLyog
V0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwICovOyB9OwogCQlCQzY0NkMxQjExREQzOTlGMDA2NDU1
QjAgLyogV0tCYWNrRm9yd2FyZExpc3RSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2QzE3MTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3
YXJkTGlzdFJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDNjQ2QzFDMTFERDM5OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2
NDZDMTgxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5jcHAgKi87
IH07CkBAIC0yNDYzLDggKzI0NjMsOCBAQAogCQlCQzVEMjRDNjE2Q0Q3M0M1MDA3RDU0NjEgLyog
V0tCdW5kbGVSYW5nZUhhbmRsZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tCdW5kbGVSYW5nZUhhbmRsZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM2MEM1NzcxMjQwQTU0NjAwOEM1RTI5IC8qIFdLQnVuZGxlUmFuZ2VIYW5kbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVSYW5nZUhhbmRsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzYwQzU3ODEyNDBBNTQ2MDA4QzVFMjkg
LyogV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXS0J1bmRsZVJhbmdlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQkM2NDY5NkQxMURCRTYwMzAwNjQ1NUIwIC8qIEltbXV0YWJsZUFycmF5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltbXV0YWJsZUFycmF5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM2NDY5NkUxMURCRTYwMzAwNjQ1NUIwIC8qIElt
bXV0YWJsZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltbXV0YWJs
ZUFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNjQ2OTZEMTFEQkU2MDMw
MDY0NTVCMCAvKiBBUElBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBUElBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNjQ2OTZF
MTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0NkMx
NjExREQzOTlGMDA2NDU1QjAgLyogV0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCYWNrRm9yd2FyZExpc3RSZWYuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0NkMxNzExREQzOTlGMDA2NDU1QjAgLyogV0tC
YWNrRm9yd2FyZExpc3RSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tC
YWNrRm9yd2FyZExpc3RSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2NDZD
MTgxMUREMzk5RjAwNjQ1NUIwIC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzMxOCw2ICszMzE4LDggQEAKIAkJ
CQkxQUFFMDU4QzEyNzlEQ0Q0MDA4NTI0MTggLyogUGx1Z2lucyAqLywKIAkJCQlBN0Q3OTJENTE3
NjdDQjZFMDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24uY3BwICovLAogCQkJCUE3RDc5MkQ0
MTc2N0NCMDkwMDg4MUNCRSAvKiBBY3Rpdml0eUFzc2VydGlvbi5oICovLAorCQkJCUJDNjQ2OTZE
MTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5jcHAgKi8sCisJCQkJQkM2NDY5NkUxMURCRTYw
MzAwNjQ1NUIwIC8qIEFQSUFycmF5LmggKi8sCiAJCQkJMUEzREQyMDUxMjVFNUEyRjAwNDUxNUU2
IC8qIEFQSUNsaWVudC5oICovLAogCQkJCTVENTE4NDUzMTNCQ0Y5Q0MwMEM3RkY0QSAvKiBBUElD
bGllbnRUcmFpdHMuY3BwICovLAogCQkJCTVENTE4NDU0MTNCQ0Y5Q0MwMEM3RkY0QSAvKiBBUElD
bGllbnRUcmFpdHMuaCAqLywKQEAgLTMzNDUsOCArMzM0Nyw2IEBACiAJCQkJNzYyQjc0ODExMjBC
QkEwMTAwODE5MzM5IC8qIEZvbnRTbW9vdGhpbmdMZXZlbC5oICovLAogCQkJCUY2Mzg5NTRGMTMz
QkVGMzgwMDg5NDFENSAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggKi8sCiAJCQkJQkNDRjZC
MjMxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oICovLAotCQkJCUJDNjQ2OTZEMTFE
QkU2MDMwMDY0NTVCMCAvKiBJbW11dGFibGVBcnJheS5jcHAgKi8sCi0JCQkJQkM2NDY5NkUxMURC
RTYwMzAwNjQ1NUIwIC8qIEltbXV0YWJsZUFycmF5LmggKi8sCiAJCQkJQkNCQ0IwQ0MxMjE1RTMz
QTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rpb25hcnkuY3BwICovLAogCQkJCUJDQkNCMENBMTIx
NUUzMjEwMERFNTlDQSAvKiBJbW11dGFibGVEaWN0aW9uYXJ5LmggKi8sCiAJCQkJMUE5MkRDMTAx
MkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCAqLywKQEAgLTU1MjYsNyArNTUy
Niw3IEBACiAJCQkJNTEyQzA2ODkxNjM4RjY3RTAwQUJCOTExIC8qIEhvc3RSZWNvcmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTM3RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNj
ZXB0UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkIyNTEyQzkzRTdBMDA4RjlDMzUg
LyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzY0Njk3MDExREJFNjAzMDA2
NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNjQ2OTcwMTFE
QkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCQ0IwQ0Ix
MjE1RTMyMTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMjA0RUUzMTFDODNFOTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM1RUVCQTIxMjc3NjFEMDAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTY4MjAsNyArNjgyMCw3IEBACiAJCQkJ
QkMwNkY0NEIxMkRCRDFGNTAwMkQ3OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwNkY0M0IxMkRCQ0NGQjAwMkQ3
OERFIC8qIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTJDMDY4ODE2MzhGNjdFMDBBQkI5MTEgLyogSG9zdFJlY29yZC5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlCQzY0Njk2RjExREJFNjAzMDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXku
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM2NDY5NkYxMURCRTYwMzAwNjQ1NUIwIC8qIEFQSUFy
cmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQkNCMENEMTIxNUUzM0EwMERFNTlDQSAvKiBJ
bW11dGFibGVEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjA0RUUyMTFDODNF
OTgwMDhGMzM3NSAvKiBJbmplY3RlZEJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0M0
QzA5MzE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuY3BwCmluZGV4IDFhZmM5YTI1YmVlYWQ3YzA4M2IyMzU1MzUwNDlhMjk1ODA3
YTgwODguLmIxNWFkYTlmZGU1MTg2ZmY4MzNhNzMxZGQ1MTlmNmZkZmZlMWI4Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV0tCdW5kbGUuaCIKIAotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5j
bHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgpAQCAtMjYwLDcgKzI2
MCw3IEBAIHZvaWQgV0tCdW5kbGVSZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShXS0J1
bmRsZVJlZiBidW5kbGVSZWYsIFdLU3RyaW5nUmVmCiAKIFdLQXJyYXlSZWYgV0tCdW5kbGVDb3B5
T3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZikKIHsKLSAg
ICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IG9yaWdpbnMgPSB0b0ltcGwoYnVuZGxlUmVmKS0+b3Jp
Z2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKCk7CisgICAgUmVmUHRyPEFQSTo6QXJyYXk+IG9yaWdp
bnMgPSB0b0ltcGwoYnVuZGxlUmVmKS0+b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKCk7CiAg
ICAgcmV0dXJuIHRvQVBJKG9yaWdpbnMucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRl
eCAzYTQ5YmJmMjZjZTcwMGFmN2Q5YTNkZTRiZWZlODc2M2Q3NTkxOWYxLi43NTViZjNlY2NjNWJl
ZDVlZTM5YjA5YjE2MWM2Yjk2ZDc5NmE5Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgi
CiAKLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAi
V0tCdW5kbGVBUElDYXN0LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4
IDBlMDQwMmI1MTViMWM2MzllZDI4ZDJlYTNkY2FkMDc5MDZkNmNiNzUuLjkxMjc5Y2I3ODU4MTVm
YmZhODE4OTA2OWFlN2ZiMmNkYmI5NTkxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1l
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldLQnVuZGxlRnJhbWUuaCIKICNpbmNs
dWRlICJXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oIgogCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAppbmRleCBlYjI5MWJmZjAyMWIzYzcwNzMwZWYwMTA4ZDdkYzZkMjE2YTRlMjA5Li42
NGYyZjNkZDQ3MmFlYTMzNDZkOTExNzM3NGQ3YjYwMTRiYzA4ZmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdl
LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlUHJpdmF0ZS5oIgogCisjaW5jbHVkZSAiQVBJQXJy
YXkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgogI2luY2x1ZGUgIlBhZ2VCYW5uZXIuaCIK
QEAgLTE2NSw3ICsxNjYsNyBAQCB2b2lkIFdLQnVuZGxlUGFnZUNsaWNrTWVudUl0ZW0oV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZQogI2VuZGlmCiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBjb250ZXh0TWVudUl0ZW1zKGNvbnN0
IFdlYkNvbnRleHRNZW51JiBjb250ZXh0TWVudSkKK3N0YXRpYyBQYXNzUmVmUHRyPEFQSTo6QXJy
YXk+IGNvbnRleHRNZW51SXRlbXMoY29uc3QgV2ViQ29udGV4dE1lbnUmIGNvbnRleHRNZW51KQog
ewogICAgIGF1dG8gaXRlbXMgPSBjb250ZXh0TWVudS5pdGVtcygpOwogCkBAIC0xNzUsNyArMTc2
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNvbnRleHRNZW51SXRlbXMo
Y29uc3QgV2ViQ29udGV4dE1lbnUmIGNvbnRleHQKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0g
OiBpdGVtcykKICAgICAgICAgbWVudUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJDb250ZXh0TWVu
dUl0ZW06OmNyZWF0ZShpdGVtKSk7CiAKLSAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0
ZShzdGQ6Om1vdmUobWVudUl0ZW1zKSk7CisgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZShz
dGQ6Om1vdmUobWVudUl0ZW1zKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdlQ29weUNv
bnRleHRNZW51SXRlbXMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCmluZGV4IDM0MTRlZjMxNDUxMThkMjYxNDQ1YjYyMmIxN2ZiOTNkY2JkMzI0ZmUuLjdmMGUy
YzU4OThlYTczM2YxZjEzNWUyMzIyODg5YmYzNDUzOTg3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCkBAIC0yNiw4ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGUuaCIKIAorI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQXJndW1l
bnRzLmgiCi0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNv
ZGVycy5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUhvc3QuaCIKQEAgLTQwMyw3ICs0MDMsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjpyZXNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25z
dCBTdHJpbmcmIG9yaWdpblN0cmluZwogICAgIGNhY2hlU3RvcmFnZSgpLnN0b3JlVXBkYXRlZFF1
b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSwgY2FjaGVTdG9yYWdlKCkuZGVmYXVsdE9yaWdpblF1
b3RhKCkpOwogfQogCi1QYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBJbmplY3RlZEJ1bmRsZTo6
b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKCkKK1Bhc3NSZWZQdHI8QVBJOjpBcnJheT4gSW5q
ZWN0ZWRCdW5kbGU6Om9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZSgpCiB7CiAgICAgSGFzaFNl
dDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwogICAgIGNhY2hlU3RvcmFnZSgpLmdl
dE9yaWdpbnNXaXRoQ2FjaGUob3JpZ2lucyk7CkBAIC00MTQsNyArNDE0LDcgQEAgUGFzc1JlZlB0
cjxJbW11dGFibGVBcnJheT4gSW5qZWN0ZWRCdW5kbGU6Om9yaWdpbnNXaXRoQXBwbGljYXRpb25D
YWNoZSgpCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQogICAgICAgICBv
cmlnaW5JZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoV2ViU3RyaW5nOjpjcmVhdGUob3JpZ2lu
LT5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOwogCi0gICAgcmV0dXJuIEltbXV0YWJsZUFycmF5Ojpj
cmVhdGUoc3RkOjptb3ZlKG9yaWdpbklkZW50aWZpZXJzKSk7CisgICAgcmV0dXJuIEFQSTo6QXJy
YXk6OmNyZWF0ZShzdGQ6Om1vdmUob3JpZ2luSWRlbnRpZmllcnMpKTsKIH0KIAogaW50IEluamVj
dGVkQnVuZGxlOjpudW1iZXJPZlBhZ2VzKFdlYkZyYW1lKiBmcmFtZSwgZG91YmxlIHBhZ2VXaWR0
aEluUGl4ZWxzLCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzKQpAQCAtNDcxLDcgKzQ3MSw3IEBA
IGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkKICAgICByZXR1
cm4gU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiB9CiAKLXN0YXRp
YyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihJbW11dGFibGVBcnJheSogcGF0dGVybnMp
CitzdGF0aWMgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoQVBJOjpBcnJheSogcGF0dGVy
bnMpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcGF0dGVybnNWZWN0b3I7CiAKQEAgLTQ5MSwxMyAr
NDkxLDEzIEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihJbW11dGFibGVB
cnJheSogcGF0dGVybnMpCiAgICAgcmV0dXJuIHBhdHRlcm5zVmVjdG9yOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlOjphZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAs
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0
YWJsZUFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGlu
amVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMpCit2b2lkIEluamVjdGVkQnVuZGxlOjphZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFBy
b3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEFQSTo6QXJyYXkqIHdoaXRl
bGlzdCwgQVBJOjpBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9u
VGltZSBpbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGlu
amVjdGVkRnJhbWVzKQogewogICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBp
LmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8g
dXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQ
YXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KICAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdl
R3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNjcmlwdFdvcmxkLT5j
b3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJMKCksIHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRl
bGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUsIGluamVjdGVk
RnJhbWVzKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclN0eWxlU2hlZXQoV2Vi
UGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2Ny
aXB0V29ybGQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRh
YmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGU6OmFkZFVzZXJTdHlsZVNoZWV0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIEFQSTo6QXJyYXkqIHdoaXRlbGlzdCwgQVBJOjpBcnJheSog
YmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJh
bWVzKQogewogICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhh
cyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSBy
ZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxT
dHJpbmdUYWcgdmVyc2lvbi4KICAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlk
ZW50aWZpZXIoKSktPmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdv
cmxkKCksIHNvdXJjZSwgVVJMKFVSTCgpLCB1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3Qp
LCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKaW5kZXggY2M4MzY4Yjc1MDBiNjJjZmVlNmQyYmMzZjI5YmNjMWIxYmUwNmM2ZC4uNTVm
M2Q4Y2NkM2ZiZDQ3MDM2NzlmY2YzZDZjYzg1YmI5NDI3NjE3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aApAQCAtNDcsNiArNDcsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX0dNb2R1bGUgR01vZHVsZTsKIE9C
SkNfQ0xBU1MgTlNCdW5kbGU7CiAjZW5kaWYKIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBBcnJh
eTsKK30KKwogbmFtZXNwYWNlIENvcmVJUEMgewogICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsK
ICAgICBjbGFzcyBDb25uZWN0aW9uOwpAQCAtNjIsNyArNjYsNiBAQCB0eXBlZGVmIDo6R01vZHVs
ZSogUGxhdGZvcm1CdW5kbGU7CiB0eXBlZGVmIEVpbmFfTW9kdWxlKiBQbGF0Zm9ybUJ1bmRsZTsK
ICNlbmRpZgogCi1jbGFzcyBJbW11dGFibGVBcnJheTsKIGNsYXNzIEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ7CiBjbGFzcyBXZWJDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBXZWJDb25uZWN0aW9u
OwpAQCAtMTIyLDggKzEyNSw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFdlYkRhdGE+IGNy
ZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiAg
ICAgLy8gVXNlckNvbnRlbnQgQVBJCi0gICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91
cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNl
LCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxl
QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUsIFdlYkNv
cmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwotICAgIHZvaWQgYWRkVXNlclN0eWxlU2hl
ZXQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVs
aXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVj
dGVkRnJhbWVzKTsKKyAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJveHkqLCBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgdXJsLCBBUEk6OkFycmF5KiB3aGl0ZWxpc3QsIEFQSTo6QXJyYXkqIGJsYWNrbGlzdCwg
V2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMpOworICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJv
eHkqLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgdXJsLCBBUEk6OkFycmF5KiB3aGl0ZWxpc3QsIEFQSTo6QXJyYXkqIGJsYWNr
bGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CiAgICAgdm9pZCByZW1v
dmVVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0KFdl
YlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmlu
ZyYgdXJsKTsKICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRzKFdlYlBhZ2VHcm91cFByb3h5Kiwg
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOwpAQCAtMTQxLDcgKzE0NCw3IEBAIHB1YmxpYzoK
ICAgICB1aW50NjRfdCBhcHBDYWNoZVVzYWdlRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2lu
KTsKICAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcm
IG9yaWdpbiwgdWludDY0X3QpOwogICAgIHZvaWQgcmVzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW4pOwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJy
YXk+IG9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZSgpOworICAgIFBhc3NSZWZQdHI8QVBJOjpB
cnJheT4gb3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKCk7CiAKICAgICAvLyBHYXJiYWdlIGNv
bGxlY3Rpb24gQVBJCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHAKaW5kZXggNWMwZWZhYmRjZDMyY2FiMjU3Nzc0MmVmYTNjMmQ0Njc0M2ZiYjNiNS4uNzljNTQ1
YjkzNmMxYmZiMTVjYjgxNjE1NGQxNGQ2MGUzMzM2ZmI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMjYsMTMgKzI2LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtLmgiCiAKLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUg
IkFQSUFycmF5LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtOjpjaGlsZHJlbigpIGNvbnN0CitQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IElu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y2hpbGRyZW4oKSBjb25zdAogewogICAg
IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiBjaGlsZHJlbjsKICAgICBjaGlsZHJlbi5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1faXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkpOwpAQCAtNDAsNyAr
NDAsNyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW06OmNoaWxkcmVuKCkgY29uc3QKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxk
IDogbV9pdGVtLT5jaGlsZHJlbigpKQogICAgICAgICBjaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQo
SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoY2hpbGQpKTsKIAotICAg
IHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShjaGlsZHJlbikpOworICAg
IHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjptb3ZlKGNoaWxkcmVuKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtLmgKaW5kZXggOWVjNTgyODdmMTYxOTUzZWRkYWYxNTIyZGUwMGI2ZDA0
ZDcwNDM4ZS4uN2QwYTg2NGE2Mjc5ZGI0ZTZkZmI4NzE0ZGQ0MDg3ODZkMGEwNGZjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oCkBAIC0y
OSw5ICsyOSwxMiBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
SGlzdG9yeUl0ZW0uaD4KIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBBcnJheTsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIEltbXV0YWJsZUFycmF5OwogY2xhc3MgV2ViUGFnZVBy
b3h5OwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMg
QVBJOjpUeXBlZE9iamVjdDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbT4gewpAQCAtNTQsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0luUGFnZUNhY2hl
KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLT5pc0luUGFnZUNhY2hlKCk7IH0KICAgICBib29sIGhh
c0NhY2hlZFBhZ2VFeHBpcmVkKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLT5oYXNDYWNoZWRQYWdl
RXhwaXJlZCgpOyB9CiAKLSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBjaGlsZHJlbigp
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY2hpbGRyZW4oKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0oUGFzc1JlZlB0
cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSkgOiBtX2l0ZW0oaXRlbSkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCmlu
ZGV4IDAyY2RiNDJiMGYwOTlmMWVjZDkyZTdiOGE3MzJmM2MxNzA5M2I2MWYuLmUxNTFjNDVjNTA2
ODYyODJiZWE4Y2E2Njg0MmFjZGVlZjU5MDFjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC0yOSw3ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIgogCi0j
aW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKQEAgLTUzLDggKzUzLDggQEAgYm9vbCBJ
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZh
dWx0SXRlbXMoV2ViUGFnZSoKIAogICAgIFdLQXJyYXlSZWYgbmV3TWVudVdLID0gMDsKICAgICBX
S1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOwotICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51
RnJvbURlZmF1bHRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQSShoaXRUZXN0UmVzdWx0KSwgdG9BUEko
SW1tdXRhYmxlQXJyYXk6OmNyZWF0ZShzdGQ6Om1vdmUoZGVmYXVsdE1lbnVJdGVtcykpLmdldCgp
KSwgJm5ld01lbnVXSywgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKLSAg
ICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGFycmF5ID0gYWRvcHRSZWYodG9JbXBsKG5ld01lbnVX
SykpOworICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51KHRvQVBJKHBh
Z2UpLCB0b0FQSShoaXRUZXN0UmVzdWx0KSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6
bW92ZShkZWZhdWx0TWVudUl0ZW1zKSkuZ2V0KCkpLCAmbmV3TWVudVdLLCAmdXNlckRhdGFUb1Bh
c3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIFJlZlB0cjxBUEk6OkFycmF5PiBhcnJheSA9
IGFkb3B0UmVmKHRvSW1wbChuZXdNZW51V0spKTsKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRv
SW1wbCh1c2VyRGF0YVRvUGFzcykpOwogICAgIAogICAgIG5ld01lbnUuY2xlYXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCBmYWE5
YjdmYmI4MWU5MzczNDVlNzUwZTA0ZjJmMWYzOWM0NTAzYzJhLi5kNmE2Nzg5ODFlZTZjZTFiYWMz
M2MxOWI5MzZkZTZkNWJjMDk1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgiCiAKLSNpbmNs
dWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgpAQCAtMTQzLDggKzE0Myw4IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYlBhZ2UqIHBhZ2UsIFJhCiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSAwOwogICAg
ICAgICBXS0FycmF5UmVmIGRhdGEgPSAwOwogICAgICAgICBtX2NsaWVudC5nZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKHRvQVBJKHBhZ2UpLCB0b0FQSShyYW5nZUhhbmRsZS5nZXQoKSksICZ0eXBl
cywgJmRhdGEsIG1fY2xpZW50LmNsaWVudEluZm8pOwotICAgICAgICBSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IHR5cGVzQXJyYXkgPSBhZG9wdFJlZih0b0ltcGwodHlwZXMpKTsKLSAgICAgICAgUmVm
UHRyPEltbXV0YWJsZUFycmF5PiBkYXRhQXJyYXkgPSBhZG9wdFJlZih0b0ltcGwoZGF0YSkpOwor
ICAgICAgICBSZWZQdHI8QVBJOjpBcnJheT4gdHlwZXNBcnJheSA9IGFkb3B0UmVmKHRvSW1wbCh0
eXBlcykpOworICAgICAgICBSZWZQdHI8QVBJOjpBcnJheT4gZGF0YUFycmF5ID0gYWRvcHRSZWYo
dG9JbXBsKGRhdGEpKTsKIAogICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuY2xlYXIoKTsKICAgICAg
ICAgcGFzdGVib2FyZERhdGEuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUZvcm1DbGllbnQuY3BwCmluZGV4IDg3ZmRiY2U3MDVjYzZjMWVlYTVhZmFhZjkzMGMxZGY2
NGJhYzM2YjUuLjJjNmI1N2U1YTM3NTkxYTI3YzAyOWNhMjQ5YjRiYjNjZTIwMGFkMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRm9ybUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcApAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFn
ZUZvcm1DbGllbnQuaCIKIAotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAi
QVBJQXJyYXkuaCIKICNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCkBAIC0x
MzYsNyArMTM2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50OjpkaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHMoV2ViUGFnZSogcGFnZSwgY29uc3QKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVsZW1lbnQgOiBlbGVtZW50cykKICAgICAgICAgZWxlbWVudEhhbmRsZXMudW5jaGVja2Vk
QXBwZW5kKEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZWxlbWVudC5nZXQo
KSkpOwogCi0gICAgbV9jbGllbnQuZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKHRvQVBJKHBhZ2Up
LCB0b0FQSShJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZShlbGVtZW50SGFuZGxlcykp
LmdldCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkQXNzb2NpYXRl
Rm9ybUNvbnRyb2xzKHRvQVBJKHBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoc3RkOjpt
b3ZlKGVsZW1lbnRIYW5kbGVzKSkuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAog
Ym9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50OjpzaG91bGROb3RpZnlPbkZvcm1DaGFu
Z2VzKFdlYlBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggZTNjYTQwODQzODE0MDhiZjMyMTE0MGU4MGQ3ZDNjNDk1ODUz
ZWZmNi4uMGJkOTdhODg0ZWFjNDZjMDMzOGM3Zjk5OGM0ODRlZmY3YWJjODEyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oIgogCi0jaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRl
ICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OjpmZWF0dXJlc1VzZWRJblBhZ2UoV2ViUGFnZSogcGFnZSwgY29uc3QgVmVjCiAg
ICAgaWYgKCFtX2NsaWVudC5mZWF0dXJlc1VzZWRJblBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHJldHVybiBtX2NsaWVudC5mZWF0dXJlc1VzZWRJblBhZ2UodG9BUEkocGFnZSksIHRvQVBJ
KEltbXV0YWJsZUFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShmZWF0dXJlcykuZ2V0KCkpLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKKyAgICByZXR1cm4gbV9jbGllbnQuZmVhdHVyZXNVc2VkSW5QYWdl
KHRvQVBJKHBhZ2UpLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShmZWF0dXJl
cykuZ2V0KCkpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxEZXN0cm95RnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJh
bWUqIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGU4NTg2MWU4YzY3MjNiZWU3
Y2RiNjE2NjhmZmZhYjNhNGQzMmNiNGUuLjU0Yjg1MDYwYjA0NmUxNWI2ODBiNjZkZTQwOTk5YmRl
ZGJiYWM2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3Rh
dGljIFdlYkZyYW1lKiBmaW5kTGFyZ2VzdEZyYW1lSW5GcmFtZVNldChXZWJQYWdlKiBwYWdlKQog
CiAgICAgV2ViRnJhbWUqIGxhcmdlc3RTb0ZhciA9IDA7CiAKLSAgICBSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IGZyYW1lQ2hpbGRyZW4gPSBtYWluRnJhbWUtPmNoaWxkRnJhbWVzKCk7CisgICAgUmVm
UHRyPEFQSTo6QXJyYXk+IGZyYW1lQ2hpbGRyZW4gPSBtYWluRnJhbWUtPmNoaWxkRnJhbWVzKCk7
CiAgICAgc2l6ZV90IGNvdW50ID0gZnJhbWVDaGlsZHJlbi0+c2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBXZWJGcmFtZSogY2hpbGRGcmFt
ZSA9IGZyYW1lQ2hpbGRyZW4tPmF0PFdlYkZyYW1lPihpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGZiMWU4YjhhNDlkYTJkM2JkY2Mw
MzY5MWUxMjM1YWI1NjhkYTA1ZDYuLmZlODhiZDczMTE0MGNmMDllMWE3ZmQ5ZTQwMTk0OGU0YTUw
OWMzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YkZyYW1lLmgiCiAKKyNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFu
YWdlci5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgpAQCAtNDEyLDE0ICs0MTMsMTQgQEAgV2Vi
RnJhbWUqIFdlYkZyYW1lOjpwYXJlbnRGcmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHdlYkZyYW1l
TG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiAwOwogfQog
Ci1QYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJGcmFtZTo6Y2hpbGRGcmFtZXMoKQorUGFz
c1JlZlB0cjxBUEk6OkFycmF5PiBXZWJGcmFtZTo6Y2hpbGRGcmFtZXMoKQogewogICAgIGlmICgh
bV9jb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKCk7Cisg
ICAgICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoKTsKIAogICAgIHNpemVfdCBzaXplID0g
bV9jb3JlRnJhbWUtPnRyZWUoKS5jaGlsZENvdW50KCk7CiAgICAgaWYgKCFzaXplKQotICAgICAg
ICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gQVBJOjpB
cnJheTo6Y3JlYXRlKCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gdmVjdG9y
OwogICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwpAQCAtNDMxLDcgKzQz
Miw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYkZyYW1lOjpjaGlsZEZyYW1lcygp
CiAgICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQod2ViRnJhbWUpOwogICAgIH0KIAotICAg
IHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZSh2ZWN0b3IpKTsKKyAgICBy
ZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKHN0ZDo6bW92ZSh2ZWN0b3IpKTsKIH0KIAogU3RyaW5n
IFdlYkZyYW1lOjpsYXllclRyZWVBc1RleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCBhNWQ3MGE3MjM4MzQ0MmQwODc4NGUzYjAy
NzU5OTA4MTVkM2YxOGM5Li5mYTcyOWJmMmM4ZjI5ZWMxODg1MDlhZjcyYmJjMmE2MGQxMTIwNDg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAt
MjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJGcmFtZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgogI2luY2x1ZGUgIldLQmFzZS5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNCYXNlLmg+CkBAIC0zOSw2ICszOCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKK25hbWVzcGFjZSBBUEkgeworY2xhc3MgQXJyYXk7
Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1l
T3duZXJFbGVtZW50OwpAQCAtODksNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGlubmVy
VGV4dCgpIGNvbnN0OwogICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0OwogICAgIFdlYkZyYW1l
KiBwYXJlbnRGcmFtZSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNo
aWxkRnJhbWVzKCk7CisgICAgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBjaGlsZEZyYW1lcygpOwog
ICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHQoKTsKICAgICBKU0dsb2JhbENvbnRleHRS
ZWYganNDb250ZXh0Rm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOwogICAgIFdl
YkNvcmU6OkludFJlY3QgY29udGVudEJvdW5kcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDhiNjhiNjM4OWZhNDUzZWM4MWIw
MDNhMzk5NGVkZTI0OGE4MWU0ZjUuLmQ4NDAxZDcyNGM1Y2JlZmVlNTc1MjVlZDVlNDIwODlkYzc4
MTc2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTY1NiwxMSArNjU2LDExIEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRUcmFja2VkUmVwYWlu
dHMoKQogICAgICAgICB2aWV3LT5yZXNldFRyYWNrZWRSZXBhaW50cygpOwogfQogCi1QYXNzUmVm
UHRyPEltbXV0YWJsZUFycmF5PiBXZWJQYWdlOjp0cmFja2VkUmVwYWludFJlY3RzKCkKK1Bhc3NS
ZWZQdHI8QVBJOjpBcnJheT4gV2ViUGFnZTo6dHJhY2tlZFJlcGFpbnRSZWN0cygpCiB7CiAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lVmlldygpOwogICAgIGlmICghdmlldykKLSAgICAg
ICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIEFQSTo6
QXJyYXk6OmNyZWF0ZSgpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IHJlcGFp
bnRSZWN0czsKICAgICByZXBhaW50UmVjdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh2aWV3LT50
cmFja2VkUmVwYWludFJlY3RzKCkuc2l6ZSgpKTsKQEAgLTY2OCw3ICs2NjgsNyBAQCBQYXNzUmVm
UHRyPEltbXV0YWJsZUFycmF5PiBXZWJQYWdlOjp0cmFja2VkUmVwYWludFJlY3RzKCkKICAgICBm
b3IgKGNvbnN0IGF1dG8mIHJlcGFpbnRSZWN0IDogdmlldy0+dHJhY2tlZFJlcGFpbnRSZWN0cygp
KQogICAgICAgICByZXBhaW50UmVjdHMudW5jaGVja2VkQXBwZW5kKFdlYlJlY3Q6OmNyZWF0ZSh0
b0FQSShyZXBhaW50UmVjdCkpKTsKIAotICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6Y3JlYXRl
KHN0ZDo6bW92ZShyZXBhaW50UmVjdHMpKTsKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRl
KHN0ZDo6bW92ZShyZXBhaW50UmVjdHMpKTsKIH0KIAogUGx1Z2luVmlldyogV2ViUGFnZTo6Zm9j
dXNlZFBsdWdpblZpZXdGb3JGcmFtZShGcmFtZSYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5OGZkNDA0NWMxYzhjNDY3ZmVjZjU3NjIx
ZjJjZWExZTRhYWM1MWU0Li43YzQwYWQzNDBlY2E4ZDQ5NDIwZDg2NWE1YzQ2YTJjNGU3OTMwN2Rm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTMx
LDEwICszMSw2IEBACiAjaW5jbHVkZSAiRmluZENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgIkltYWdlT3B0aW9u
cy5oIgotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCi0jaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCIKLSNl
bmRpZgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5oIgpAQCAtODIsNiArNzgsMTAgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVG91Y2hFdmVudC5oPgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudC5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiRGljdGlv
bmFyeVBvcHVwSW5mby5oIgogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKQEAgLTk0
LDYgKzk0LDEwIEBAIE9CSkNfQ0xBU1MgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdDsKICNk
ZWZpbmUgRU5BQkxFX1BSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQyAxCiAjZW5k
aWYKIAorbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBBcnJheTsKK30KKwogbmFtZXNwYWNlIENvcmVJ
UEMgewogICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKICAgICBjbGFzcyBDb25uZWN0aW9uOwpA
QCAtMjgyLDcgKzI4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRyYWNrc1JlcGFpbnRzKGJv
b2wpOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29uc3Q7CiAgICAgdm9pZCByZXNl
dFRyYWNrZWRSZXBhaW50cygpOwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHRyYWNr
ZWRSZXBhaW50UmVjdHMoKTsKKyAgICBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHRyYWNrZWRSZXBh
aW50UmVjdHMoKTsKIAogICAgIHZvaWQgZXhlY3V0ZUVkaXRpbmdDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpOwogICAgIGJvb2wgaXNFZGl0
aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7Cg==
</data>
<flag name="review"
          id="239897"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>