<?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>118108</bug_id>
          
          <creation_ts>2013-06-26 17:58:09 -0700</creation_ts>
          <short_desc>Deprecate StringImpl::charactersWithNullTermination</short_desc>
          <delta_ts>2013-06-26 18:08:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>bdakin</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>904012</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-06-26 17:58:09 -0700</bug_when>
    <thetext>Deprecate StringImpl::charactersWithNullTermination</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904015</commentid>
    <comment_count>1</comment_count>
      <attachid>205550</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-06-26 18:02:23 -0700</bug_when>
    <thetext>Created attachment 205550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904016</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-26 18:05:41 -0700</bug_when>
    <thetext>Attachment 205550 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/text/WTFString.cpp&apos;, u&apos;Source/WTF/wtf/text/WTFString.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/html/canvas/WebGLProgram.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/FontCacheWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/FontCustomPlatformData.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/IconWin.cpp&apos;, u&apos;Source/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/wince/FontPlatformData.cpp&apos;, u&apos;Source/WebCore/platform/network/curl/CurlDownload.cpp&apos;, u&apos;Source/WebCore/platform/network/win/CookieJarWin.cpp&apos;, u&apos;Source/WebCore/platform/network/win/DownloadBundleWin.cpp&apos;, u&apos;Source/WebCore/platform/network/win/ResourceHandleWin.cpp&apos;, u&apos;Source/WebCore/platform/sql/SQLiteFileSystem.cpp&apos;, u&apos;Source/WebCore/platform/sql/SQLiteStatement.cpp&apos;, u&apos;Source/WebCore/platform/text/win/LocaleWin.cpp&apos;, u&apos;Source/WebCore/platform/text/win/TextCodecWin.cpp&apos;, u&apos;Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp&apos;, u&apos;Source/WebCore/platform/win/ContextMenuWin.cpp&apos;, u&apos;Source/WebCore/platform/win/DragImageWin.cpp&apos;, u&apos;Source/WebCore/platform/win/FileSystemWin.cpp&apos;, u&apos;Source/WebCore/platform/win/MIMETypeRegistryWin.cpp&apos;, u&apos;Source/WebCore/platform/win/PasteboardWin.cpp&apos;, u&apos;Source/WebCore/platform/win/PathWalker.cpp&apos;, u&apos;Source/WebCore/platform/win/SSLKeyGeneratorWin.cpp&apos;, u&apos;Source/WebCore/platform/win/SharedBufferWin.cpp&apos;, u&apos;Source/WebCore/platform/wince/FileSystemWinCE.cpp&apos;, u&apos;Source/WebCore/plugins/win/PluginDatabaseWin.cpp&apos;, u&apos;Source/WebCore/plugins/win/PluginPackageWin.cpp&apos;, u&apos;Source/WebCore/plugins/win/PluginViewWin.cpp&apos;, u&apos;Source/WebKit/win/COMPropertyBag.h&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebChromeClient.cpp&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebInspectorClient.cpp&apos;, u&apos;Source/WebKit/win/WebDownloadCFNet.cpp&apos;, u&apos;Source/WebKit/win/WebKitSystemBits.cpp&apos;, u&apos;Source/WebKit/win/WebLocalizableStrings.cpp&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/win/ConnectionWin.cpp&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/win/DumpRenderTree.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/network/win/ResourceHandleWin.cpp:310:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/win/FontCacheWin.cpp:103:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/win/FontCacheWin.cpp:105:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/plugins/win/PluginViewWin.cpp:900:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/sql/SQLiteStatement.cpp:81:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 44 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>904017</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-06-26 18:08:31 -0700</bug_when>
    <thetext>Committed r152069: &lt;http://trac.webkit.org/changeset/152069&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205550</attachid>
            <date>2013-06-26 18:02:23 -0700</date>
            <delta_ts>2013-06-26 18:03:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118108-20130626180025.patch</filename>
            <type>text/plain</type>
            <size>63623</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg1ZDFkMjFiYmVhZTBjZTA4NTM3OTNl
ZmMxNmMzZDRmNWQ1YWMxYmIuLmQzNDkzMDUwYjAyY2YyNzY2ZjQwYzBkODBjYmQzMTQ2MWE1ZDNi
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAKIDIwMTMtMDYtMjYgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBEZXByZWNhdGUgU3RyaW5nSW1wbDo6Y2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExODEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoZSBvcHRpbWl6YXRpb24gaW4gU3RyaW5nIGFuZCBTdHJpbmdJbXBs
IHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBhIHN0cmluZworICAgICAgICBoYXMgYSBudWxsIHRl
cm1pbmF0b3IgaXNuJ3Qgd29ydGggaXQ7IGluIG1vc3QgY2FzZXMgd2UgY2FsbCBjaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpIG9uCisgICAgICAgIHRlbXBvcmFyeSBzdHJpbmdzIHdoaWNo
IGVuZHMgdXAgY29weWluZyBzdHJpbmdzIGFueXdheS4KKyAgICAgICAgCisgICAgICAgIEEgYmV0
dGVyIHNvbHV0aW9uIGlzIHRvIGhhdmUgYSBjaGFyYWN0cmVzV2l0aE51bGxUZXJtaW5hdGlvbigp
IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIFZlY3RvcjxVQ2hhcj4sCisgICAgICAgIHdoaWNoIGlz
IHNpbWlsYXIgdG8gd2hhdCB3ZSBoYXZlIGZvciBTdHJpbmc6OnV0ZjgoKSBhbmQgU3RyaW5nOjph
c2NpaSgpLiBUaGlzIHdpbGwgYmUgZG9uZSBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAg
ICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6ZGVwcmVj
YXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKToKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuaDoKKworMjAxMy0wNi0yNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZCBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5
IFNQSQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4
MDc0CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNDI3OTkwNT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMjg1
OTRjNDFjNGM2ZjI4OTIyZTMwNTIwNjM4ZTZhOTNlZDU4MWJiLi45ODBhZWYxYTA5OTNhZTg2MTk5
YjgzNmNkNzdjMzYyODE2YzJlZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMTMt
MDYtMjYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBE
ZXByZWNhdGUgU3RyaW5nSW1wbDo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODEwOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBjYWxscyB0
byBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbiB0byBkZXByZWNhdGVkQ2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24uCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xQcm9ncmFtOjpjYWNoZUFjdGl2ZUF0dHJpYkxv
Y2F0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRMaW5rZWRGb250cyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQ6OnNldFVwQ29va2llc0ZvclF1aWNrVGltZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luY2UvRm9udFBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoKKyAgICAgICAgKEN1cmxEb3dubG9hZDo6bW92
ZUZpbGVUb0Rlc3RpbmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29r
aWVKYXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29va2llc0ZvckRPTSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG93bmxvYWRC
dW5kbGU6OmFwcGVuZFJlc3VtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RG93bmxvYWRCdW5k
bGU6OmV4dHJhY3RSZXN1bWVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9S
ZXNvdXJjZUhhbmRsZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnRlcm5ldEhh
bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmZpbGVMb2FkVGltZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZUZpbGVTeXN0ZW06Om9wZW5EYXRhYmFzZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnByZXBh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMQ0lERnJvbUxvY2FsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjV2lu
OjplbnVtZXJhdGVTdXBwb3J0ZWRFbmNvZGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2ViTG9jRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEZpbGVEZXNjcmlwdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0Q0ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ29u
dGV4dE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OmNyZWF0ZVBs
YXRmb3JtQ29udGV4dE1lbnVGcm9tSXRlbXMpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9EcmFn
SW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNh
Y2hlZEltYWdlRmlsZW5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmRlbGV0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VBbGxEaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoR2V0Rmls
ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6b3BlbkZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lz
dHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZv
ck1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1BhdGhXYWxrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aFdhbGtlcjo6UGF0
aFdhbGtlcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRGaWxlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxlRXhpc3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRlbGV0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZW5GaWxlKToKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9y
aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1vemlsbGFQbHVnaW5EaXJlY3Rvcmllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkSmF2YVBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgICogcGx1Z2lucy93
aW4vUGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRWZXJzaW9uSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6bG9hZCk6CisgICAgICAgICogcGx1Z2lucy93aW4v
UGx1Z2luVmlld1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpoYW5kbGVQ
b3N0UmVhZEZpbGUpOgorCiAyMDEzLTA2LTI2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBhZnRlciBuZXV0ZXJpbmcg
QXVkaW9CdWZmZXIncyB1bmRlcmx5aW5nIEFycmF5QnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4
IDU0YjAxMDhiNWMyM2IyMTk1YjRhYjg0YWVmNzA3Njc0MDFkNGEzYzcuLjg5NjZjY2I2YzVkODRi
ZDkyZGI4MmNjNmQ1NjA2YjFkMzEwNjBkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NyBAQAorMjAxMy0wNi0yNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIERlcHJlY2F0ZSBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4
MTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIGNhbGxzIHRvIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uIHRvIGRlcHJlY2F0ZWRD
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbi4KKworICAgICAgICAqIENPTVByb3BlcnR5QmFn
Lmg6CisgICAgICAgICg6OkdldFByb3BlcnR5SW5mbyk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6cnVuT3Bl
blBhbmVsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxl
KToKKyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2Fk
OjpkaWRGaW5pc2gpOgorICAgICAgICAqIFdlYktpdFN5c3RlbUJpdHMuY3BwOgorICAgICAgICAo
V2ViVm9sdW1lRnJlZVNpemUpOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChMb2NhbGl6ZWRTdHJpbmc6Om9wZXJhdG9yIExQQ1RTVFIpOgorICAgICAgICAq
IFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c2V0VG9vbFRpcCk6CisKIDIwMTMtMDYt
MjQgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEFkb3B0
IGlzL3RvSFRNTEZvcm1FbGVtZW50IGZvciBjb2RlIGNsZWFudXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1ZmRl
ODYwMDFkZTZiYjFkMDAzMjQ3ZThmY2ZmZTZjZWM5YTMzZjU5Li5lYzQ2MGQ3OWJlMTEwYzM0OWUy
OTMyN2U3ZmM0ZDY3ZjE4NzMzZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMt
MDYtMjYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBE
ZXByZWNhdGUgU3RyaW5nSW1wbDo6Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODEwOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBjYWxscyB0
byBjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbiB0byBkZXByZWNhdGVkQ2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24uCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL3dpbi9Db25u
ZWN0aW9uV2luLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZl
ckFuZENsaWVudElkZW50aWZpZXJzKToKKwogMjAxMy0wNi0yNiAgU2ltb24gQ29vcGVyICA8c2Nv
b3BlckBhcHBsZS5jb20+CiAKICAgICAgICAgUXVpY2tUaW1lIHBsdWctaW4gY2Fubm90IHVwZGF0
ZSBjb20uYXBwbGUucXVpY2t0aW1lLnBsdWdpbi5wcmVmZXJlbmNlcy5wbGlzdCBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggOTJiMjBlZmRjZjdjNTIyMDQ3MGQ0YTgyNmNkYWRj
OTg1NTk2ZjNiMi4uMWEwZTRhMjEzM2IyNDAzYzdlNWM3MDQzYjU4YWYxZTA2MWI5YjdhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIGJvb2wgU3RyaW5n
OjpwZXJjZW50YWdlKGludCYgcmVzdWx0KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1j
b25zdCBVQ2hhciogU3RyaW5nOjpjaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpCitjb25z
dCBVQ2hhciogU3RyaW5nOjpkZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KQogewogICAgIGlmICghbV9pbXBsKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCmluZGV4IDJjMWM2MGY1NWQxMjViNzAyZDVlMDJmMzU2MTkxOTA4MTU5MjJhYTUuLmQw
MWNkMTI2YzQ2ZDNkMTE3NTI3ZDJlY2Q2YmE1ZWVlNzA1ZGVjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaApAQCAtMjgxLDcgKzI4MSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcmV2ZXJzZUZp
bmQoY29uc3QgU3RyaW5nJiBzdHIsIHVuc2lnbmVkIHN0YXJ0LCBib29sIGNhc2VTZW5zaXRpdmUp
IGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIGNhc2VTZW5zaXRpdmUgPyByZXZlcnNlRmluZChzdHIs
IHN0YXJ0KSA6IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKHN0ciwgc3RhcnQpOyB9CiAKLSAgICBX
VEZfRVhQT1JUX1NUUklOR19BUEkgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGNvbnN0IFVDaGFyKiBkZXByZWNh
dGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKICAgICAKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgVUNoYXIzMiBjaGFyYWN0ZXJTdGFydGluZ0F0KHVuc2lnbmVkKSBjb25zdDsg
Ly8gRGl0dG8uCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmNwcAppbmRleCAwOGY2MzIyNjVmMWRkYmYyZjYzZTg4NmYzZGNkMDM3MTUwMTJjY2I3Li4zOTRk
NTBiYzI5NDRkZTllODBhNTBhMGQ0MWM3ODY0YjM5YTdkNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFdl
YkdMUHJvZ3JhbTo6Y2FjaGVBY3RpdmVBdHRyaWJMb2NhdGlvbnMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQzZCkKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUF0dHJpYnM7ICsraSkgewog
ICAgICAgICBBY3RpdmVJbmZvIGluZm87CiAgICAgICAgIGNvbnRleHQzZC0+Z2V0QWN0aXZlQXR0
cmliKG9iamVjdCgpLCBpLCBpbmZvKTsKLSAgICAgICAgbV9hY3RpdmVBdHRyaWJMb2NhdGlvbnNb
aV0gPSBjb250ZXh0M2QtPmdldEF0dHJpYkxvY2F0aW9uKG9iamVjdCgpLCBpbmZvLm5hbWUuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CisgICAgICAgIG1fYWN0aXZlQXR0cmliTG9j
YXRpb25zW2ldID0gY29udGV4dDNkLT5nZXRBdHRyaWJMb2NhdGlvbihvYmplY3QoKSwgaW5mby5u
YW1lLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
YWNoZVdpbi5jcHAKaW5kZXggY2Y5OTNlMzFlMDZiNzVlZmQzZjNkMjAwNzllNTM4NmNlZmE2MzYx
OS4uMzZlNGJiMjNkNTVmYjE3ZGI4Y2I0YmM4ODM5YWM3NTBjOTNjODk4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAK
QEAgLTEwMCw5ICsxMDAsOSBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPFN0cmluZz4qIGdldExpbmtl
ZEZvbnRzKFN0cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgRFdP
UkQgbGlua2VkRm9udHNCdWZmZXJTaXplID0gMDsKLSAgICBSZWdRdWVyeVZhbHVlRXgoZm9udExp
bmtLZXksIGZhbWlseS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCBOVUxMLCBO
VUxMLCAmbGlua2VkRm9udHNCdWZmZXJTaXplKTsKKyAgICBSZWdRdWVyeVZhbHVlRXgoZm9udExp
bmtLZXksIGZhbWlseS5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwg
MCwgTlVMTCwgTlVMTCwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSk7CiAgICAgV0NIQVIqIGxpbmtl
ZEZvbnRzID0gcmVpbnRlcnByZXRfY2FzdDxXQ0hBUio+KG1hbGxvYyhsaW5rZWRGb250c0J1ZmZl
clNpemUpKTsKLSAgICBpZiAoU1VDQ0VFREVEKFJlZ1F1ZXJ5VmFsdWVFeChmb250TGlua0tleSwg
ZmFtaWx5LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIDAsIE5VTEwsIHJlaW50ZXJw
cmV0X2Nhc3Q8QllURSo+KGxpbmtlZEZvbnRzKSwgJmxpbmtlZEZvbnRzQnVmZmVyU2l6ZSkpKSB7
CisgICAgaWYgKFNVQ0NFRURFRChSZWdRdWVyeVZhbHVlRXgoZm9udExpbmtLZXksIGZhbWlseS5k
ZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgMCwgTlVMTCwgcmVpbnRl
cnByZXRfY2FzdDxCWVRFKj4obGlua2VkRm9udHMpLCAmbGlua2VkRm9udHNCdWZmZXJTaXplKSkp
IHsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxp
bmtlZEZvbnRzQnVmZmVyU2l6ZSAvIHNpemVvZigqbGlua2VkRm9udHMpOwogICAgICAgICB3aGls
ZSAoaSA8IGxlbmd0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDI0NmJi
MzVlYTBhMjcwM2VjY2MxMWQyODcyNGIyOWRmYWNiNWYxNGMuLmNjZWJkMDc0Yzg5OWQzZmE3MmUz
NDFkN2U1NTQyZWViY2I1OGZmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpm
b250UGxhdGZvcm1EYXRhKGludCBzaXplLCBib29sIGJvbGQsIGIKICAgICBBU1NFUlQobV9mb250
UmVmZXJlbmNlKTsKIAogICAgIExPR0ZPTlQmIGxvZ0ZvbnQgPSAqc3RhdGljX2Nhc3Q8TE9HRk9O
VCo+KG1hbGxvYyhzaXplb2YoTE9HRk9OVCkpKTsKLSAgICBtZW1jcHkobG9nRm9udC5sZkZhY2VO
YW1lLCBtX25hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgc2l6ZW9mKGxvZ0Zv
bnQubGZGYWNlTmFtZVswXSkgKiBtaW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihMRl9GQUNFU0laRSks
IDEgKyBtX25hbWUubGVuZ3RoKCkpKTsKKyAgICBtZW1jcHkobG9nRm9udC5sZkZhY2VOYW1lLCBt
X25hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIHNpemVvZihs
b2dGb250LmxmRmFjZU5hbWVbMF0pICogbWluKHN0YXRpY19jYXN0PHNpemVfdD4oTEZfRkFDRVNJ
WkUpLCAxICsgbV9uYW1lLmxlbmd0aCgpKSk7CiAKICAgICBsb2dGb250LmxmSGVpZ2h0ID0gLXNp
emU7CiAgICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gTm9ybWFsUmVuZGVyaW5nTW9kZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggNGY1OWI4OTMwYzEzOWE0MDM5
YzgyYmRlNDA4NzIxZTAzNTBhNTY0Zi4uNTQ2MTkxYjU0ODExNjZjZTViNWI2OGUyYWQ0MTU0NDli
YmNkZjY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250
UGxhdGZvcm1EYXRhKGludCBzaXplLCBib29sIGJvbGQsIGIKIHsKICAgICBMT0dGT05UIGxvZ0Zv
bnQ7CiAgICAgbWVtc2V0KCZsb2dGb250LCAwLCBzaXplb2YoTE9HRk9OVCkpOwotICAgIHdjc25j
cHkobG9nRm9udC5sZkZhY2VOYW1lLCBtX25hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKSwgTEZfRkFDRVNJWkUgLSAxKTsKKyAgICB3Y3NuY3B5KGxvZ0ZvbnQubGZGYWNlTmFtZSwg
bV9uYW1lLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBMRl9GQUNF
U0laRSAtIDEpOwogCiAgICAgbG9nRm9udC5sZkhlaWdodCA9IC1zaXplOwogICAgIGlmIChyZW5k
ZXJpbmdNb2RlID09IE5vcm1hbFJlbmRlcmluZ01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKaW5kZXggY2I3ZGRiNzJhZTAxMjMyZGUy
M2Q2YTg0YWUxMGY1NDJiNzM0YTZmYS4uOTQ4NWU4MDRkNTc1M2Q3Y2EyYWMxODdjNTQzYTIzNjM3
YzA4YmU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ljb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
Y29uV2luLmNwcApAQCAtNTgsNyArNTgsNyBAQCBQYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKQogICAgICAgICBt
ZW1zZXQoJnNmaSwgMCwgc2l6ZW9mKHNmaSkpOwogCiAgICAgICAgIFN0cmluZyB0bXBGaWxlbmFt
ZSA9IGZpbGVuYW1lc1swXTsKLSAgICAgICAgaWYgKCFTSEdldEZpbGVJbmZvKHRtcEZpbGVuYW1l
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIDAsICZzZmksIHNpemVvZihzZmkpLCBT
SEdGSV9JQ09OIHwgU0hHRklfU0hFTExJQ09OU0laRSB8IFNIR0ZJX1NNQUxMSUNPTikpCisgICAg
ICAgIGlmICghU0hHZXRGaWxlSW5mbyh0bXBGaWxlbmFtZS5kZXByZWNhdGVkQ2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKSwgMCwgJnNmaSwgc2l6ZW9mKHNmaSksIFNIR0ZJX0lDT04gfCBT
SEdGSV9TSEVMTElDT05TSVpFIHwgU0hHRklfU01BTExJQ09OKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSWNvbihzZmkuaEljb24pKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
LmNwcAppbmRleCAzZmY2NWM3OTlkMWE0OGI1NzkxOTRhNDJlMzlhN2M1MjIwODZiY2VjLi4zZWRj
OGQzNTUxMGZlMDhjNmRlOWNkZDZhZTNhNzNkMjg2MzA0YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
VmlzdWFsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCkBAIC0zMDcs
NyArMzA3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
OjpzZXRVcENvb2tpZXNGb3JRdWlja1RpbWUoY29uc3QgU3QKICAgICAgICAgICAgIGNvb2tpZVVS
TCA9IG1vdmllVVJMOwogCiAgICAgICAgIFN0cmluZyBzdHJpbmcgPSBjb29raWVCdWlsZGVyLnRv
U3RyaW5nKCk7Ci0gICAgICAgIEludGVybmV0U2V0Q29va2llRXhXKGNvb2tpZVVSTC5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCBzdHJpbmcuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKSwgMCwgMCk7CisgICAgICAgIEludGVybmV0U2V0Q29va2llRXhXKGNvb2tpZVVS
TC5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgMCwgc3RyaW5nLmRl
cHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCAwKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0Zv
bnRQbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvRm9udFBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMWE0ODA2MjE3MmJlZjkyNTljM2YxZTJjMTY5
NGVlOGY0MmQ0MmYxMC4uYzVlNWNiMDc5YzFhMmQxMmQzMWFlMDI4ODRlYTI1NTZhYjY3ODg3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udFBs
YXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvRm9udFBsYXRmb3JtRGF0YS5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCBwdWJsaWM6CiBGb250
UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGRlc2lyZWRGYW1pbHksIGJvb2wgdXNl
RGVmYXVsdEZvbnRJZk5vdFByZXNlbnQpCiB7CiAgICAgU3RyaW5nIGZhbWlseShkZXNpcmVkRmFt
aWx5KTsKLSAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgZGVmYXVsdEZvbnRGYW1p
bHkoKSkgJiYgIUZvbnRGYW1pbHlDaGVja2VyKGZhbWlseS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpKS5pc1N1cHBvcnRlZCgpKSB7CisgICAgaWYgKCFlcXVhbElnbm9yaW5nQ2FzZShm
YW1pbHksIGRlZmF1bHRGb250RmFtaWx5KCkpICYmICFGb250RmFtaWx5Q2hlY2tlcihmYW1pbHku
ZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpLmlzU3VwcG9ydGVkKCkp
IHsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgU3RyaW5nKGhlaVRpU3Ry
KSkgJiYgaXNTb25nVGlTdXBwb3J0ZWQoKSkKICAgICAgICAgICAgIGZhbWlseSA9IFN0cmluZyhz
b25nVGlTdHIpOwogICAgICAgICBlbHNlIGlmICh1c2VEZWZhdWx0Rm9udElmTm90UHJlc2VudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93
bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5jcHAKaW5kZXggYjY0ZWQyMTQ2YmQ4YTkwNzM0ZWUwODZjYmNmMjM3MGViOGNmODFjMy4u
M2YyN2I3ZWU2ZDE4MDMyZjNlYzNjM2ZlYmYyYzE5MGE0MGVjZGExZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAg
LTI5MCw3ICsyOTAsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6bW92ZUZpbGVUb0Rlc3RpbmF0aW9u
KCkKICAgICBpZiAobV9kZXN0aW5hdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6TW92ZUZpbGUobV90ZW1wUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LCBtX2Rlc3RpbmF0aW9uLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOworICAgIDo6
TW92ZUZpbGUobV90ZW1wUGF0aC5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKSwgbV9kZXN0aW5hdGlvbi5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKSk7CiB9CiAKIHZvaWQgQ3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0
cmluZyYgaGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay93aW4vQ29va2llSmFyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL0Nvb2tpZUphcldpbi5jcHAKaW5kZXggNTU0NzA0YTA4MzI0MTc2NzQ5MzY4NzUyNmQyYzQ0
MGQ4ODI5OGRiYy4uZWFmMzJiMWI1NjE5OGE5OWM2NTQ5YmJjMWU2YmQwZmMxOWU0NDNkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJX
aW4uY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVyCiAgICAgLy8g
RklYTUU6IERlYWwgd2l0aCBmaXJzdFBhcnR5IGFyZ3VtZW50LgogICAgIFN0cmluZyBzdHIgPSB1
cmwuc3RyaW5nKCk7CiAgICAgU3RyaW5nIHZhbCA9IHZhbHVlOwotICAgIEludGVybmV0U2V0Q29v
a2llKHN0ci5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCB2YWwuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKSk7CisgICAgSW50ZXJuZXRTZXRDb29raWUoc3RyLmRlcHJl
Y2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCB2YWwuZGVwcmVjYXRlZENo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOwogfQogCiBTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYg
dXJsKQpAQCAtNTEsMTQgKzUxLDE0IEBAIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgU3Ry
aW5nIHN0ciA9IHVybC5zdHJpbmcoKTsKIAogICAgIERXT1JEIGNvdW50ID0gMDsKLSAgICBpZiAo
IUludGVybmV0R2V0Q29va2llKHN0ci5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAw
LCAwLCAmY291bnQpKQorICAgIGlmICghSW50ZXJuZXRHZXRDb29raWUoc3RyLmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCAwLCAmY291bnQpKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoY291bnQgPD0gMSkgLy8gTnVsbCB0ZXJtaW5hdG9y
IGNvdW50cyBhcyAxLgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBWZWN0b3I8VUNo
YXI+IGJ1ZmZlcihjb3VudCk7Ci0gICAgaWYgKCFJbnRlcm5ldEdldENvb2tpZShzdHIuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgMCwgYnVmZmVyLmRhdGEoKSwgJmNvdW50KSkKKyAg
ICBpZiAoIUludGVybmV0R2V0Q29va2llKHN0ci5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKSwgMCwgYnVmZmVyLmRhdGEoKSwgJmNvdW50KSkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCiAgICAgYnVmZmVyLnNocmluayhjb3VudCAtIDEpOyAvLyBJZ25vcmUgdGhl
IG51bGwgdGVybWluYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvd2luL0Rvd25sb2FkQnVuZGxlV2luLmNwcAppbmRleCAyYjM2MTk1YWQ0NDFlNmQx
NmEwMThiZWMwYmU3ZTYyODljYzlkMDU3Li44MDNhODU5ZWNmYzcwMTMzMjQ4YjI5NzI3M2UwNTAz
MjVjMzMwNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dp
bi9Eb3dubG9hZEJ1bmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay93aW4vRG93bmxvYWRCdW5kbGVXaW4uY3BwCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgYXBw
ZW5kUmVzdW1lRGF0YShDRkRhdGFSZWYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBidW5kbGVQ
YXRoKQogCiAgICAgU3RyaW5nIG51bGxpZmllZFBhdGggPSBidW5kbGVQYXRoOwogICAgIEZJTEUq
IGJ1bmRsZSA9IDA7Ci0gICAgaWYgKF93Zm9wZW5fcygmYnVuZGxlLCBudWxsaWZpZWRQYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIFRFWFQoImFiIikpIHx8ICFidW5kbGUpIHsK
KyAgICBpZiAoX3dmb3Blbl9zKCZidW5kbGUsIG51bGxpZmllZFBhdGguZGVwcmVjYXRlZENoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIFRFWFQoImFiIikpIHx8ICFidW5kbGUpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGFwcGVuZCByZXN1bWUg
ZGF0YSIsIGJ1bmRsZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQpAQCAtMTEwLDcgKzExMCw3IEBAIENGRGF0YVJlZiBleHRyYWN0UmVzdW1lRGF0YShj
b25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpCiAgICAgLy8gT3BlbiBhIGhhbmRsZSB0byB0aGUgYnVu
ZGxlIGZpbGUKICAgICBTdHJpbmcgbnVsbGlmaWVkUGF0aCA9IGJ1bmRsZVBhdGg7CiAgICAgRklM
RSogYnVuZGxlID0gMDsKLSAgICBpZiAoX3dmb3Blbl9zKCZidW5kbGUsIG51bGxpZmllZFBhdGgu
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgVEVYVCgicitiIikpIHx8ICFidW5kbGUp
IHsKKyAgICBpZiAoX3dmb3Blbl9zKCZidW5kbGUsIG51bGxpZmllZFBhdGguZGVwcmVjYXRlZENo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIFRFWFQoInIrYiIpKSB8fCAhYnVuZGxlKSB7
CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyB0byBnZXQgcmVzdW1l
IGRhdGEiLCBidW5kbGVQYXRoLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVz
b3VyY2VIYW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4v
UmVzb3VyY2VIYW5kbGVXaW4uY3BwCmluZGV4IDQzM2M5MmFjODI5NWI0NGM0MTI5ZTkzMzMwYjVi
MGIzZjI2YTU3OTguLjFmOGVlODU5ZmU0ZjkwNDRlZDY5Zjk4N2QzOTQwNjAwNDE1MTFjNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFu
ZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNv
dXJjZUhhbmRsZVdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RhdGljIGlubGluZSBISU5URVJORVQgY3JlYXRlSW50ZXJuZXRIYW5kbGUoY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGJvb2wgYXN5bmNocm9ub3VzKQogewogICAgIFN0cmluZyB1c2VyQWdlbnRT
dHJpbmcgPSB1c2VyQWdlbnQ7Ci0gICAgSElOVEVSTkVUIGludGVybmV0SGFuZGxlID0gSW50ZXJu
ZXRPcGVuVyh1c2VyQWdlbnRTdHJpbmcuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwg
SU5URVJORVRfT1BFTl9UWVBFX1BSRUNPTkZJRywgMCwgMCwgYXN5bmNocm9ub3VzID8gSU5URVJO
RVRfRkxBR19BU1lOQyA6IDApOworICAgIEhJTlRFUk5FVCBpbnRlcm5ldEhhbmRsZSA9IEludGVy
bmV0T3BlblcodXNlckFnZW50U3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLCBJTlRFUk5FVF9PUEVOX1RZUEVfUFJFQ09ORklHLCAwLCAwLCBhc3luY2hyb25v
dXMgPyBJTlRFUk5FVF9GTEFHX0FTWU5DIDogMCk7CiAKICAgICBpZiAoYXN5bmNocm9ub3VzKQog
ICAgICAgICBJbnRlcm5ldFNldFN0YXR1c0NhbGxiYWNrKGludGVybmV0SGFuZGxlLCAmUmVzb3Vy
Y2VIYW5kbGU6OmludGVybmV0U3RhdHVzQ2FsbGJhY2spOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIGJv
b2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAgfCBJTlRFUk5FVF9GTEFHX0RPTlRf
Q0FDSEUKICAgICAgICAgfCBJTlRFUk5FVF9GTEFHX1JFTE9BRDsKIAotICAgIGQtPm1fY29ubmVj
dEhhbmRsZSA9IEludGVybmV0Q29ubmVjdFcoZC0+bV9pbnRlcm5ldEhhbmRsZSwgZmlyc3RSZXF1
ZXN0KCkudXJsKCkuaG9zdCgpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIGZpcnN0
UmVxdWVzdCgpLnVybCgpLnBvcnQoKSwKKyAgICBkLT5tX2Nvbm5lY3RIYW5kbGUgPSBJbnRlcm5l
dENvbm5lY3RXKGQtPm1faW50ZXJuZXRIYW5kbGUsIGZpcnN0UmVxdWVzdCgpLnVybCgpLmhvc3Qo
KS5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgZmlyc3RSZXF1ZXN0
KCkudXJsKCkucG9ydCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgSU5URVJORVRfU0VSVklDRV9IVFRQLCBmbGFncywgcmVpbnRlcnByZXRfY2FzdDxE
V09SRF9QVFI+KHRoaXMpKTsKIAogICAgIGlmICghZC0+bV9jb25uZWN0SGFuZGxlKQpAQCAtMzA2
LDggKzMwNiw4IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKIAogICAgIExQQ1dTVFIg
aHR0cEFjY2VwdFtdID0geyBMIiovKiIsIDAgfTsKIAotICAgIGQtPm1fcmVxdWVzdEhhbmRsZSA9
IEh0dHBPcGVuUmVxdWVzdFcoZC0+bV9jb25uZWN0SGFuZGxlLCBodHRwTWV0aG9kLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIHVybFN0ci5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgaHR0
cFJlZmVycmVyLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIGh0dHBBY2NlcHQsIGZs
YWdzLCByZWludGVycHJldF9jYXN0PERXT1JEX1BUUj4odGhpcykpOworICAgIGQtPm1fcmVxdWVz
dEhhbmRsZSA9IEh0dHBPcGVuUmVxdWVzdFcoZC0+bV9jb25uZWN0SGFuZGxlLCBodHRwTWV0aG9k
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCB1cmxTdHIuZGVwcmVj
YXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCBodHRwUmVmZXJyZXIuZGVwcmVjYXRlZENoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIGh0dHBBY2NlcHQsIGZsYWdzLCByZWludGVycHJldF9j
YXN0PERXT1JEX1BUUj4odGhpcykpOwogCiAgICAgaWYgKCFkLT5tX3JlcXVlc3RIYW5kbGUpIHsK
ICAgICAgICAgSW50ZXJuZXRDbG9zZUhhbmRsZShkLT5tX2Nvbm5lY3RIYW5kbGUpOwpAQCAtMzY0
LDcgKzM2NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmZpbGVMb2FkVGltZXIoVGltZXI8UmVz
b3VyY2VIYW5kbGU+KikKICAgICB9CiAKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBmaXJzdFJlcXVl
c3QoKS51cmwoKS5maWxlU3lzdGVtUGF0aCgpOwotICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3Jl
YXRlRmlsZVcoZmlsZU5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgR0VORVJJ
Q19SRUFELCAwLCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwor
ICAgIEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcoZmlsZU5hbWUuZGVwcmVjYXRlZENo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIEdFTkVSSUNfUkVBRCwgMCwgMCwgT1BFTl9F
WElTVElORywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKIAogICAgIGlmIChmaWxlSGFuZGxl
ID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIGNsaWVudCgpLT5kaWRGYWlsKHRo
aXMsIFJlc291cmNlRXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggY2Q5ZDdjMmY0ODliZGJlMGUzOWE1ZjY4MmE5MmVk
NzhkMzc0NTk4Zi4uY2JmODg4M2VkMzc2NDhlMjVkNmY2NmQwMTIzY2QwYTg4YWI3ODMzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApA
QCAtNDgsNyArNDgsNyBAQCBpbnQgU1FMaXRlRmlsZVN5c3RlbTo6b3BlbkRhdGFiYXNlKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIHNxbGl0ZTMqKiBkYXRhYmFzZSwgYgogewogICAgIC8vIFNRTGl0
ZSBleHBlY3RzIGEgbnVsbCB0ZXJtaW5hdG9yIG9uIGl0cyBVVEYtMTYgc3RyaW5ncy4KICAgICBT
dHJpbmcgcGF0aCA9IGZpbGVOYW1lOwotICAgIHJldHVybiBzcWxpdGUzX29wZW4xNihwYXRoLmNo
YXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIGRhdGFiYXNlKTsKKyAgICByZXR1cm4gc3Fs
aXRlM19vcGVuMTYocGF0aC5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KSwgZGF0YWJhc2UpOwogfQogCiBTdHJpbmcgU1FMaXRlRmlsZVN5c3RlbTo6Z2V0RmlsZU5hbWVG
b3JOZXdEYXRhYmFzZShjb25zdCBTdHJpbmcmIGRiRGlyLCBjb25zdCBTdHJpbmcmLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCA2Yzcz
NDZmZDhkYWVlNmZjNmQ1Y2JkNWZhOWU2ZTVlMDk1YTE0MTMzLi5mZDJhZjMyODYyZDM2MzJhZWU3
MTY5YTY4YzAzNWQxYjUwMzJmOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtNzAsNyArNzAsNyBAQCBpbnQgU1FMaXRlU3RhdGVt
ZW50OjpwcmVwYXJlKCkKICAgICBjb25zdCB2b2lkKiB0YWlsID0gMDsKICAgICBMT0coU1FMRGF0
YWJhc2UsICJTUUwgLSBwcmVwYXJlIC0gJXMiLCBtX3F1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKICAg
ICBTdHJpbmcgc3RyaXBwZWRRdWVyeSA9IG1fcXVlcnkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAg
Y29uc3QgVUNoYXIqIG51bGxUZXJtZWQgPSBzdHJpcHBlZFF1ZXJ5LmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCk7CisgICAgY29uc3QgVUNoYXIqIG51bGxUZXJtZWQgPSBzdHJpcHBlZFF1
ZXJ5LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogICAgIGludCBl
cnJvciA9IHNxbGl0ZTNfcHJlcGFyZTE2X3YyKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpLCBu
dWxsVGVybWVkLCAtMSwgJm1fc3RhdGVtZW50LCAmdGFpbCk7CiAKICAgICAvLyBTdGFydGluZyB3
aXRoIHZlcnNpb24gMy42LjE2LCBzcWxpdGUgaGFzIGEgcGF0Y2ggKGh0dHA6Ly93d3cuc3FsaXRl
Lm9yZy9zcmMvY2kvMjU2ZWMzYzZhZikKQEAgLTc4LDcgKzc4LDcgQEAgaW50IFNRTGl0ZVN0YXRl
bWVudDo6cHJlcGFyZSgpCiAgICAgLy8gSWYgd2UncmUgdXNpbmcgYW4gb2xkZXIgc3FsaXRlIHZl
cnNpb24sIHRyeSB0byBlbXVsYXRlIHRoZSBwYXRjaC4KICAgICBpZiAoZXJyb3IgPT0gU1FMSVRF
X1NDSEVNQSkgewogICAgICAgc3FsaXRlM19maW5hbGl6ZShtX3N0YXRlbWVudCk7Ci0gICAgICBl
cnJvciA9IHNxbGl0ZTNfcHJlcGFyZTE2X3YyKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpLCBt
X3F1ZXJ5LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIC0xLCAmbV9zdGF0ZW1lbnQs
ICZ0YWlsKTsKKyAgICAgIGVycm9yID0gc3FsaXRlM19wcmVwYXJlMTZfdjIobV9kYXRhYmFzZS5z
cWxpdGUzSGFuZGxlKCksIG1fcXVlcnkuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCksIC0xLCAmbV9zdGF0ZW1lbnQsICZ0YWlsKTsKICAgICB9CiAKICAgICBpZiAoZXJy
b3IgIT0gU1FMSVRFX09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC93aW4vTG9jYWxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xv
Y2FsZVdpbi5jcHAKaW5kZXggODk2MDhlMjBiOWIwZGE2MzkyNzUxOThkYjNjYTVhYjU4NzVlMzcz
Ny4uYWU5MTYzNTNkOTUyMDk5ZGNmOTEwZDdhZWI0NTZjZTczMGU4ZDgwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC0xMjUsNyArMTI1
LDcgQEAgc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGVJbnRlcm5hbChMQ0lEIHVzZXJEZWZhdWx0
TENJRCwgY29uc3QgU3RyaW5nJiB1c2VyRGVmYXUKICAgICBTdHJpbmcgbG9jYWxlTGFuZ3VhZ2VD
b2RlID0gZXh0cmFjdExhbmd1YWdlQ29kZShsb2NhbGUpOwogICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShsb2NhbGVMYW5ndWFnZUNvZGUsIHVzZXJEZWZhdWx0TGFuZ3VhZ2VDb2RlKSkKICAgICAg
ICAgcmV0dXJuIHVzZXJEZWZhdWx0TENJRDsKLSAgICByZXR1cm4gbG9jYWxlTmFtZVRvTENJRChs
b2NhbGUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgMCk7CisgICAgcmV0dXJuIGxv
Y2FsZU5hbWVUb0xDSUQobG9jYWxlLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLCAwKTsKIH0KIAogc3RhdGljIExDSUQgTENJREZyb21Mb2NhbGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9UZXh0Q29kZWNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
VGV4dENvZGVjV2luLmNwcAppbmRleCA4NzlhZjc2OTc3MmZmNTE1ZjM1NGFhOGIxOTcxNjk5YjYy
YWJhNjYzLi4zOGQ4NDlkODdmOGZmNmE3NTQzYWZjMTE1YTA1NTQ2NTYzNGIyOWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9UZXh0Q29kZWNXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL1RleHRDb2RlY1dpbi5jcHAKQEAg
LTMwMSw3ICszMDEsNyBAQCB2b2lkIFRleHRDb2RlY1dpbjo6ZW51bWVyYXRlU3VwcG9ydGVkRW5j
b2RpbmdzKEVuY29kaW5nUmVjZWl2ZXImIHJlY2VpdmVyKQogICAgIGxhbmd1YWdlTWFuYWdlcigp
OwogICAgIGZvciAoQ2hhcnNldFNldDo6aXRlcmF0b3IgaSA9IHN1cHBvcnRlZENoYXJzZXRzKCku
YmVnaW4oKTsgaSAhPSBzdXBwb3J0ZWRDaGFyc2V0cygpLmVuZCgpOyArK2kpIHsKICAgICAgICAg
SGFzaE1hcDxTdHJpbmcsIENoYXJzZXRJbmZvPjo6aXRlcmF0b3IgaiA9IGtub3duQ2hhcnNldHMo
KS5maW5kKCppKTsKLSAgICAgICAgaWYgKGogIT0ga25vd25DaGFyc2V0cygpLmVuZCgpICYmICFy
ZWNlaXZlci5yZWNlaXZlKGotPnZhbHVlLm1fbmFtZS5kYXRhKCksIGotPnZhbHVlLm1fZnJpZW5k
bHlOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIGotPnZhbHVlLm1fY29kZVBh
Z2UpKQorICAgICAgICBpZiAoaiAhPSBrbm93bkNoYXJzZXRzKCkuZW5kKCkgJiYgIXJlY2VpdmVy
LnJlY2VpdmUoai0+dmFsdWUubV9uYW1lLmRhdGEoKSwgai0+dmFsdWUubV9mcmllbmRseU5hbWUu
ZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIGotPnZhbHVlLm1fY29k
ZVBhZ2UpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRleCAzMGQx
NmU4ZjdhM2JhZjZlMjQ4NWY2MGFkMDZkOGQ3OGM2ODJjOTc0Li5kNjZiNTE1YjcwOGM4NWM2ODU0
YWUwZmNjMjcwNTBhNzUzMmVkNDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHN0
YXRpYyBib29sIGdldFdlYkxvY0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAqIGRhdGFPYmplY3QsIFN0
cmluZyYgdXJsLCBTdHJpbmcqIHRpCiAgICAgaWYgKCFkYXRhT2JqZWN0LT5jb250YWlucyhjZkhE
cm9wRm9ybWF0KCktPmNmRm9ybWF0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgd2Nz
Y3B5KGZpbGVuYW1lLCBkYXRhT2JqZWN0LT5nZXQoY2ZIRHJvcEZvcm1hdCgpLT5jZkZvcm1hdClb
MF0uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CisgICAgd2NzY3B5KGZpbGVuYW1l
LCBkYXRhT2JqZWN0LT5nZXQoY2ZIRHJvcEZvcm1hdCgpLT5jZkZvcm1hdClbMF0uZGVwcmVjYXRl
ZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOwogICAgIGlmIChfd2NzaWNtcChQYXRo
RmluZEV4dGVuc2lvblcoZmlsZW5hbWUpLCBMIi51cmwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OyAgICAKIApAQCAtMTgyLDcgKzE4Miw3IEBAIEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAKICAgICBpZiAoY2JEYXRhKSB7CiAg
ICAgICAgIFBXU1RSIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFBXU1RSPihHbG9iYWxMb2NrKGNiRGF0
YSkpOwotICAgICAgICBfc253cHJpbnRmKGJ1ZmZlciwgc2l6ZSwgTCIlc1xuJXMiLCBtdXRhYmxl
VVJMLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIG11dGFibGVUaXRsZS5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsKKyAgICAgICAgX3Nud3ByaW50ZihidWZmZXIsIHNp
emUsIEwiJXNcbiVzIiwgbXV0YWJsZVVSTC5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKSwgbXV0YWJsZVRpdGxlLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpKTsKICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgfQogICAgIHJl
dHVybiBjYkRhdGE7CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBzZXRGaWxlRGVzY3JpcHRvckRh
dGEoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIGludCBzaXplLCBjb25zdCBTdHJpbmcmIHBhc3MK
ICAgICBmZ2QtPmZnZFswXS5uRmlsZVNpemVMb3cgPSBzaXplOwogCiAgICAgaW50IG1heFNpemUg
PSBzdGQ6Om1pbjxpbnQ+KHBhdGhuYW1lLmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RIKGZnZC0+
ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAgIENvcHlNZW1vcnkoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1l
LCBwYXRobmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBtYXhTaXplICogc2l6
ZW9mKFVDaGFyKSk7CisgICAgQ29weU1lbW9yeShmZ2QtPmZnZFswXS5jRmlsZU5hbWUsIHBhdGhu
YW1lLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBtYXhTaXplICog
c2l6ZW9mKFVDaGFyKSk7CiAgICAgR2xvYmFsVW5sb2NrKG1lZGl1bS5oR2xvYmFsKTsKIAogICAg
IGRhdGFPYmplY3QtPlNldERhdGEoZmlsZURlc2NyaXB0b3JGb3JtYXQoKSwgJm1lZGl1bSwgVFJV
RSk7CkBAIC01MjEsOSArNTIxLDkgQEAgU3RyaW5nIGdldFVSTChjb25zdCBEcmFnRGF0YU1hcCog
ZGF0YSwgRHJhZ0RhdGE6OkZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmEKICAgICBpZiAo
IWdldERhdGFNYXBJdGVtKGRhdGEsIGZpbGVuYW1lV0Zvcm1hdCgpLCBzdHJpbmdEYXRhKSkKICAg
ICAgICAgZ2V0RGF0YU1hcEl0ZW0oZGF0YSwgZmlsZW5hbWVGb3JtYXQoKSwgc3RyaW5nRGF0YSk7
CiAKLSAgICBpZiAoc3RyaW5nRGF0YS5pc0VtcHR5KCkgfHwgKCFQYXRoRmlsZUV4aXN0cyhzdHJp
bmdEYXRhLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpICYmICFQYXRoSXNVTkMoc3Ry
aW5nRGF0YS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSkpCisgICAgaWYgKHN0cmlu
Z0RhdGEuaXNFbXB0eSgpIHx8ICghUGF0aEZpbGVFeGlzdHMoc3RyaW5nRGF0YS5kZXByZWNhdGVk
Q2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkgJiYgIVBhdGhJc1VOQyhzdHJpbmdEYXRh
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSkpCiAgICAgICAgIHJl
dHVybiB1cmw7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQXNDRlN0cmluZyA9IGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAo
Y29uc3QgVW5pQ2hhciAqKXN0cmluZ0RhdGEuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KSwgd2NzbGVuKHN0cmluZ0RhdGEuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhBc0NGU3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVbmlD
aGFyICopc3RyaW5nRGF0YS5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KSwgd2NzbGVuKHN0cmluZ0RhdGEuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCkpKSk7CiAgICAgaWYgKHVybEZyb21QYXRoKHBhdGhBc0NGU3RyaW5nLmdldCgpLCB1cmwp
ICYmIHRpdGxlKQogICAgICAgICAqdGl0bGUgPSB1cmw7CiAjZW5kaWYKQEAgLTc5Nyw3ICs3OTcs
NyBAQCB2b2lkIHNldENGRGF0YShJRGF0YU9iamVjdCogZGF0YSwgRk9STUFURVRDKiBmb3JtYXQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhUwogICAgIGRyb3BGaWxlcy0+cEZpbGVzID0gc2l6
ZW9mKERST1BGSUxFUyk7CiAgICAgZHJvcEZpbGVzLT5mV2lkZSA9IFRSVUU7CiAgICAgU3RyaW5n
IGZpbGVuYW1lID0gZGF0YVN0cmluZ3MuZmlyc3QoKTsKLSAgICB3Y3NjcHkocmVpbnRlcnByZXRf
Y2FzdDxMUFdTVFI+KGRyb3BGaWxlcyArIDEpLCBmaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpKTsgICAgCisgICAgd2NzY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8TFBXU1RSPihk
cm9wRmlsZXMgKyAxKSwgZmlsZW5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkpOyAgICAKICAgICBHbG9iYWxVbmxvY2sobWVkaXVtLmhHbG9iYWwpOwogICAgIGRh
dGEtPlNldERhdGEoZm9ybWF0LCAmbWVkaXVtLCBGQUxTRSk7CiAgICAgOjpHbG9iYWxGcmVlKG1l
ZGl1bS5oR2xvYmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
b250ZXh0TWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ29udGV4dE1l
bnVXaW4uY3BwCmluZGV4IDM1NTg3ZmFlZjU1YjYxZjhmYjcwOGIzMjZkM2JlODhlMGNmOWMwZTgu
LjMxYzM3NzM5OTk4MTczZWJkYzQzYTNiYTUyZmY3NDI0YTJjZDg0MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Db250ZXh0TWVudVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0NvbnRleHRNZW51V2luLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIEhNRU5VIENvbnRleHRNZW51OjpjcmVhdGVQbGF0Zm9ybUNvbnRleHRNZW51RnJvbUl0ZW1z
KGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0CiAgICAgICAgIGlmIChpdGVtLnR5cGUoKSAhPSBT
ZXBhcmF0b3JUeXBlKSB7CiAgICAgICAgICAgICBtZW51SXRlbS5mTWFzayB8PSBNSUlNX1NUUklO
RzsKICAgICAgICAgICAgIG1lbnVJdGVtLmNjaCA9IGl0ZW1UaXRsZS5sZW5ndGgoKTsKLSAgICAg
ICAgICAgIG1lbnVJdGVtLmR3VHlwZURhdGEgPSBjb25zdF9jYXN0PExQV1NUUj4oaXRlbVRpdGxl
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOworICAgICAgICAgICAgbWVudUl0ZW0u
ZHdUeXBlRGF0YSA9IGNvbnN0X2Nhc3Q8TFBXU1RSPihpdGVtVGl0bGUuZGVwcmVjYXRlZENoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOwogICAgICAgICB9CiAKICAgICAgICAgOjpJbnNl
cnRNZW51SXRlbShtZW51LCBpLCBUUlVFLCAmbWVudUl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRleCAxMzcwZjIwOTUzYTQ0M2I4MjRhMDg2
NmY4ZGExNTZiZDU0NWU5MDUwLi43MTMyYmQ0ZDRiYWU4ZDlmZjk3ZDg0YWQ3ZmIzNTZjNGMxNmE5
N2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcApA
QCAtNzEsNyArNzEsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hl
ZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsKICAgICBTSEZJTEVJTkZP
IHNoZmkgPSB7MH07CiAgICAgU3RyaW5nIGZuYW1lID0gZmlsZW5hbWU7Ci0gICAgaWYgKEZBSUxF
RChTSEdldEZpbGVJbmZvKHN0YXRpY19jYXN0PExQQ1dTVFI+KGZuYW1lLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkpLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsCisgICAgaWYgKEZBSUxF
RChTSEdldEZpbGVJbmZvKHN0YXRpY19jYXN0PExQQ1dTVFI+KGZuYW1lLmRlcHJlY2F0ZWRDaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSwgRklMRV9BVFRSSUJVVEVfTk9STUFMLAogICAg
ICAgICAmc2hmaSwgc2l6ZW9mKHNoZmkpLCBTSEdGSV9JQ09OIHwgU0hHRklfVVNFRklMRUFUVFJJ
QlVURVMpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBlNGExZTk5MmFlZTY0MWEyMjdkMTczMTRlNzIy
NWMxOGZiYTQzMTVlLi4xZjk2NTBjNThhYzkyOTkwOTRkNTExZDZkNWQyNzU0OThlZDE5OTI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC00
OCw3ICs0OCw3IEBAIHN0YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVU
b1RpbWV0ID0gMTE2NDQ0NzM2MDA7CiAKIHN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBw
YXRoLCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKIHsKLSAgICBIQU5ETEUgaGFuZGxlID0g
RmluZEZpcnN0RmlsZVcocGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAmZmlu
ZERhdGEpOworICAgIEhBTkRMRSBoYW5kbGUgPSBGaW5kRmlyc3RGaWxlVyhwYXRoLmRlcHJlY2F0
ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAmZmluZERhdGEpOwogICAgIGlmICho
YW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBGaW5kQ2xvc2UoaGFuZGxlKTsKQEAgLTEyNCwxMyArMTI0LDEzIEBAIGJvb2wgZmlsZUV4aXN0
cyhjb25zdCBTdHJpbmcmIHBhdGgpCiBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAgcmV0dXJuICEhRGVsZXRlRmls
ZVcoZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CisgICAgcmV0dXJu
ICEhRGVsZXRlRmlsZVcoZmlsZW5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkpOwogfQogCiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJldHVybiAhIVJlbW92
ZURpcmVjdG9yeVcoZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7Cisg
ICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhmaWxlbmFtZS5kZXByZWNhdGVkQ2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiB9CiAKIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKQEAgLTE1
NCw3ICsxNTQsNyBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiAgICAgYnVmZmVyW3BhdGgubGVuZ3Ro
KCldID0gJ1wwJzsKIAogICAgIFN0cmluZyBjb21wb25lbnRDb3B5ID0gY29tcG9uZW50OwotICAg
IGlmICghUGF0aEFwcGVuZFcoYnVmZmVyLmRhdGEoKSwgY29tcG9uZW50Q29weS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpKSkKKyAgICBpZiAoIVBhdGhBcHBlbmRXKGJ1ZmZlci5kYXRh
KCksIGNvbXBvbmVudENvcHkuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBidWZmZXIucmVzaXplKHdjc2xl
bihidWZmZXIuZGF0YSgpKSk7CkBAIC0xODMsNyArMTgzLDcgQEAgQ1N0cmluZyBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogYm9vbCBtYWtlQWxsRGlyZWN0b3Jp
ZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGg7Ci0g
ICAgaWYgKFNIQ3JlYXRlRGlyZWN0b3J5RXgoMCwgZnVsbFBhdGguY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKSwgMCkgIT0gRVJST1JfU1VDQ0VTUykgeworICAgIGlmIChTSENyZWF0ZURp
cmVjdG9yeUV4KDAsIGZ1bGxQYXRoLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLCAwKSAhPSBFUlJPUl9TVUNDRVNTKSB7CiAgICAgICAgIERXT1JEIGVycm9yID0gR2V0
TGFzdEVycm9yKCk7CiAgICAgICAgIGlmIChlcnJvciAhPSBFUlJPUl9GSUxFX0VYSVNUUyAmJiBl
cnJvciAhPSBFUlJPUl9BTFJFQURZX0VYSVNUUykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gY3JlYXRlIHBhdGggJXMiLCBwYXRoLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTIxNyw3
ICsyMTcsNyBAQCBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICAgICAgcmV0dXJuIHBhdGg7CiAgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBvc2l0aW9uICsg
MSk7CiAjZWxzZQotICAgIHJldHVybiBTdHJpbmcoOjpQYXRoRmluZEZpbGVOYW1lKFN0cmluZyhw
YXRoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSk7CisgICAgcmV0dXJuIFN0cmlu
Zyg6OlBhdGhGaW5kRmlsZU5hbWUoU3RyaW5nKHBhdGgpLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpKSk7CiAjZW5kaWYKIH0KIApAQCAtMzA5LDcgKzMwOSw3IEBAIFN0
cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUm
IGhhbmRsZSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8vIHVzZSBDUkVBVEVfTkVX
IHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1l
Ci0gICAgICAgIGhhbmRsZSA9IDo6Q3JlYXRlRmlsZVcocHJvcG9zZWRQYXRoLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAs
IENSRUFURV9ORVcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7CisgICAgICAgIGhhbmRsZSA9
IDo6Q3JlYXRlRmlsZVcocHJvcG9zZWRQYXRoLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVf
TkVXLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwogICAgIH0gd2hpbGUgKCFpc0hhbmRsZVZh
bGlkKGhhbmRsZSkgJiYgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfQUxSRUFEWV9FWElTVFMpOwog
CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCkBAIC0zMzYsNyArMzM2LDcgQEAgUGxh
dGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2Rl
IG1vZGUpCiAgICAgfQogCiAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcGF0aDsKLSAgICByZXR1
cm4gQ3JlYXRlRmlsZShkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LCBkZXNpcmVkQWNjZXNzLCAwLCAwLCBjcmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVU
RV9OT1JNQUwsIDApOworICAgIHJldHVybiBDcmVhdGVGaWxlKGRlc3RpbmF0aW9uLmRlcHJlY2F0
ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBkZXNpcmVkQWNjZXNzLCAwLCAwLCBj
cmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwogfQogCiB2b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAppbmRleCBlZDdiNDI1
MGY0ZGNjMWZlYTVhNGQ4MGY0OWExMjY2NWM1MmRjNWM5Li5lZGNjODkyYmRhZGQ1ODdmYTU0ZDdj
MjhiNTYwODA2NmM5NWQ0NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBTdHJp
bmcgbWltZVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAgICAgRFdP
UkQgY29udGVudFR5cGVTdHJMZW4gPSBzaXplb2YoY29udGVudFR5cGVTdHIpOwogICAgIERXT1JE
IGtleVR5cGU7CiAKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9D
TEFTU0VTX1JPT1QsIGV4dC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBMIkNvbnRl
bnQgVHlwZSIsICZrZXlUeXBlLCBjb250ZW50VHlwZVN0ciwgJmNvbnRlbnRUeXBlU3RyTGVuKTsK
KyAgICBIUkVTVUxUIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9DTEFTU0VTX1JPT1Qs
IGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgTCJDb250ZW50
IFR5cGUiLCAma2V5VHlwZSwgY29udGVudFR5cGVTdHIsICZjb250ZW50VHlwZVN0ckxlbik7CiAK
ICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MgJiYga2V5VHlwZSA9PSBSRUdfU1opCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoY29udGVudFR5cGVTdHIsIGNvbnRlbnRUeXBlU3RyTGVuIC8g
c2l6ZW9mKGNvbnRlbnRUeXBlU3RyWzBdKSAtIDEpOwpAQCAtNTUsNyArNTUsNyBAQCBTdHJpbmcg
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlKQogICAgIERXT1JEIGV4dFN0ckxlbiA9IHNpemVvZihleHRTdHIpOwogICAg
IERXT1JEIGtleVR5cGU7CiAKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUo
SEtFWV9DTEFTU0VTX1JPT1QsIHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwg
TCJFeHRlbnNpb24iLCAma2V5VHlwZSwgZXh0U3RyLCAmZXh0U3RyTGVuKTsKKyAgICBIUkVTVUxU
IHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9DTEFTU0VTX1JPT1QsIHBhdGguZGVwcmVj
YXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIEwiRXh0ZW5zaW9uIiwgJmtleVR5
cGUsIGV4dFN0ciwgJmV4dFN0ckxlbik7CiAKICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NF
U1MgJiYga2V5VHlwZSA9PSBSRUdfU1opCiAgICAgICAgIHJldHVybiBTdHJpbmcoZXh0U3RyICsg
MSwgZXh0U3RyTGVuIC8gc2l6ZW9mKGV4dFN0clswXSkgLSAyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCA4YTUxMGRkZWNlOWI1MjE4Mzgz
YjAwNzkwZDgwMzllY2FmOGY5MWMxLi5iNjQwOGRkNDQ0MmZjODEzZjI4YTk5MTRhMzhiMmNhMGU4
NjI5ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwCkBAIC05MjEsNyArOTIxLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VG
aWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAgICAgZXh0ZW5zaW9uLmluc2VydCgiLiIsIDApOwotICAgIGZzUGF0
aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0
ZW5zaW9uLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIGZhbHNlKTsKKyAgICBmc1Bh
dGggPSBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRpdGxlKHVybCwgcHJlZmVycmVkVGl0bGUsIGV4
dGVuc2lvbi5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgZmFsc2Up
OwogCiAgICAgaWYgKGZzUGF0aC5sZW5ndGgoKSA8PSAwKSB7CiAgICAgICAgIEdsb2JhbFVubG9j
ayhtZW1PYmopOwpAQCAtOTYzLDcgKzk2Myw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2Jh
bEhEcm9wQ29udGVudChjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlCiAg
ICAgICAgIC8vIHdpbmRvd3MgZG9lcyBub3QgZW5qb3kgYSBsZWFkaW5nIHNsYXNoIG9uIHBhdGhz
CiAgICAgICAgIGlmIChsb2NhbFBhdGhbMF0gPT0gJy8nKQogICAgICAgICAgICAgbG9jYWxQYXRo
ID0gbG9jYWxQYXRoLnN1YnN0cmluZygxKTsKLSAgICAgICAgTFBDV1NUUiBsb2NhbFBhdGhTdHIg
PSBsb2NhbFBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKKyAgICAgICAgTFBD
V1NUUiBsb2NhbFBhdGhTdHIgPSBsb2NhbFBhdGguZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCk7CiAgICAgICAgIGlmICh3Y3NsZW4obG9jYWxQYXRoU3RyKSArIDEgPCBN
QVhfUEFUSCkKICAgICAgICAgICAgIHdjc2NweV9zKGZpbGVQYXRoLCBNQVhfUEFUSCwgbG9jYWxQ
YXRoU3RyKTsKICAgICAgICAgZWxzZQpAQCAtOTc3LDcgKzk3Nyw3IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5h
bWUsIFNoYXJlCiAgICAgICAgIFdDSEFSIGV4dGVuc2lvbltNQVhfUEFUSF07CiAgICAgICAgIGlm
ICghOjpHZXRUZW1wUGF0aChXVEZfQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwgdGVtcFBhdGgpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghOjpQYXRoQXBwZW5kKHRlbXBQYXRo
LCBmaWxlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSkKKyAgICAgICAgaWYg
KCE6OlBhdGhBcHBlbmQodGVtcFBhdGgsIGZpbGVOYW1lLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBMUENX
U1RSIGZvdW5kRXh0ZW5zaW9uID0gOjpQYXRoRmluZEV4dGVuc2lvbih0ZW1wUGF0aCk7CiAgICAg
ICAgIGlmIChmb3VuZEV4dGVuc2lvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1BhdGhXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
dGhXYWxrZXIuY3BwCmluZGV4IGU5NmVkNjlkODc4ZmIyMjQzODdmOGZhOWJmZGJjZjcyZmE5MTlk
MmQuLjRiOGI0NjkzOGU1N2QwMjRjYzI0ZDJmYjFjZmRmZGUxNGQ4ZGZlMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXRoV2Fsa2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGF0aFdhbGtlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogUGF0aFdhbGtlcjo6UGF0aFdhbGtlcihjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogewogICAgIFN0cmluZyBwYXRoID0gZGly
ZWN0b3J5ICsgIlxcIiArIHBhdHRlcm47Ci0gICAgbV9oYW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVX
KHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgJm1fZGF0YSk7CisgICAgbV9o
YW5kbGUgPSA6OkZpbmRGaXJzdEZpbGVXKHBhdGguZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCksICZtX2RhdGEpOwogfQogCiBQYXRoV2Fsa2VyOjp+UGF0aFdhbGtlcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9y
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4u
Y3BwCmluZGV4IGRhNjhkZTc4MDUxNWFkOWFkOWEwYjEzNDU5ZGY3NzY1MjQxNzYzN2UuLmI2Mzkz
NDQ3YWI5ZjU5NGYzMDk5NzA5MGQ2NzRmNzYxNmRmMTMyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4uY3BwCkBAIC02OCw3ICs2OCw3
IEBAIFN0cmluZyBXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYKICAgICAgICAgU3RyaW5nIGxvY2FsQ2hhbGxlbmdl
ID0gY2hhbGxlbmdlOwogCiAgICAgICAgIC8vIFdpbmRvd3MgQVBJIHdvbid0IHdyaXRlIHRvIG91
ciBidWZmZXIsIGFsdGhvdWdoIGl0J3Mgbm90IGRlY2xhcmVkIHdpdGggY29uc3QuCi0gICAgICAg
IHJlcXVlc3RJbmZvLnB3c3pDaGFsbGVuZ2VTdHJpbmcgPSBjb25zdF9jYXN0PHdjaGFyX3QqPihs
b2NhbENoYWxsZW5nZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsKKyAgICAgICAg
cmVxdWVzdEluZm8ucHdzekNoYWxsZW5nZVN0cmluZyA9IGNvbnN0X2Nhc3Q8d2NoYXJfdCo+KGxv
Y2FsQ2hhbGxlbmdlLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsK
IAogICAgICAgICBDUllQVF9BTEdPUklUSE1fSURFTlRJRklFUiBzaWduQWxnbyA9IHsgMCB9Owog
ICAgICAgICBzaWduQWxnby5wc3pPYmpJZCA9IHN6T0lEX1JTQV9TSEExUlNBOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCA1OWE1YTc2
NGI3ZmUzMDU3Y2M2OGVjY2JjZGNkY2JhM2FmODBiYTgxLi4xNzQyZWJkMWE2NDFkNmE1OGVlMTE1
OTEwMDQ5YzM0NWMxNTI4MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcApAQCAtNDQsNyArNDQsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5n
JiBmaQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFN0cmluZyBudWxsaWZpZWRQYXRoID0gZmls
ZVBhdGg7Ci0gICAgSEFORExFIGZpbGVIYW5kbGUgPSBDcmVhdGVGaWxlVyhudWxsaWZpZWRQYXRo
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFS
RV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOworICAg
IEhBTkRMRSBmaWxlSGFuZGxlID0gQ3JlYXRlRmlsZVcobnVsbGlmaWVkUGF0aC5kZXByZWNhdGVk
Q2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgR0VORVJJQ19SRUFELCBGSUxFX1NIQVJF
X1JFQUQsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7CiAgICAg
aWYgKGZpbGVIYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIHRvIGNyZWF0ZSBzaGFyZWQgYnVmZmVyLCBHZXRM
YXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdldExhc3RFcnJvcigp
KTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW5jZS9GaWxlU3lzdGVtV2luQ0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
Y2UvRmlsZVN5c3RlbVdpbkNFLmNwcAppbmRleCBmYjUwN2MwMzZmMTUwZDc0Y2E0ZGI0ZjM0ZmQ5
Y2M2NjQyZGViNTQ0Li44MTZiZWFhOTBlNWNiY2FhZmZkMmJiY2EzZjY2ODRkYjJkMjUwZWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVtV2luQ0Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHNpemVfdCByZXZlcnNlRmluZFBhdGhTZXBhcmF0
b3IoY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBzdGFydCA9IFVJTlQKIHN0YXRpYyBib29s
IGdldEZpbGVJbmZvKGNvbnN0IFN0cmluZyYgcGF0aCwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJ
T04mIGZpbGVJbmZvKQogewogICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7Ci0gICAgSEFORExF
IGhGaWxlID0gQ3JlYXRlRmlsZShmaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLCBHRU5FUklDX1JFQUQsIEZJTEVfU0hBUkVfUkVBRCwgMAorICAgIEhBTkRMRSBoRmlsZSA9
IENyZWF0ZUZpbGUoZmlsZW5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0
aW9uKCksIEdFTkVSSUNfUkVBRCwgRklMRV9TSEFSRV9SRUFELCAwCiAgICAgICAgICwgT1BFTl9F
WElTVElORywgRklMRV9GTEFHX05PX0JVRkZFUklORywgMCk7CiAKICAgICBpZiAoaEZpbGUgPT0g
SU5WQUxJRF9IQU5ETEVfVkFMVUUpCkBAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCBnZXRGaWxlTWV0
YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQogYm9vbCBm
aWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkgCiB7CiAgICAgU3RyaW5nIGZpbGVuYW1lID0g
cGF0aDsKLSAgICBIQU5ETEUgaEZpbGUgPSBDcmVhdGVGaWxlKGZpbGVuYW1lLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCksIDAsIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJ
VEUKKyAgICBIQU5ETEUgaEZpbGUgPSBDcmVhdGVGaWxlKGZpbGVuYW1lLmRlcHJlY2F0ZWRDaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NI
QVJFX1dSSVRFCiAgICAgICAgICwgMCwgT1BFTl9FWElTVElORywgRklMRV9GTEFHX05PX0JVRkZF
UklORywgMCk7CiAKICAgICBDbG9zZUhhbmRsZShoRmlsZSk7CkBAIC0xMzUsMTQgKzEzNSwxNCBA
QCBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQogYm9vbCBkZWxldGVGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwotICAgIHJl
dHVybiAhIURlbGV0ZUZpbGVXKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkpOworICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKGZpbGVuYW1lLmRlcHJlY2F0ZWRDaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsKIH0KIAogCiBib29sIGRlbGV0ZUVtcHR5RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwot
ICAgIHJldHVybiAhIVJlbW92ZURpcmVjdG9yeVcoZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKSk7CisgICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhmaWxlbmFtZS5k
ZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiB9CiAKIFN0cmluZyBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGNvbXBvbmVudCkKQEAgLTE4Myw5ICsxODMsOSBAQCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhj
b25zdCBTdHJpbmcmIHBhdGgpCiAgICAgfQogCiAgICAgU3RyaW5nIGZvbGRlcihwYXRoLnN1YnN0
cmluZygwLCBlbmRQb3MpKTsKLSAgICBDcmVhdGVEaXJlY3RvcnkoZm9sZGVyLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCksIDApOworICAgIENyZWF0ZURpcmVjdG9yeShmb2xkZXIuZGVw
cmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIDApOwogCi0gICAgRFdPUkQg
ZmlsZUF0dHIgPSBHZXRGaWxlQXR0cmlidXRlcyhmb2xkZXIuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKSk7CisgICAgRFdPUkQgZmlsZUF0dHIgPSBHZXRGaWxlQXR0cmlidXRlcyhmb2xk
ZXIuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOwogICAgIHJldHVy
biBmaWxlQXR0ciAhPSAweEZGRkZGRkZGICYmIChmaWxlQXR0ciAmIEZJTEVfQVRUUklCVVRFX0RJ
UkVDVE9SWSk7CiB9CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCBTdHJpbmcgb3BlblRlbXBvcmFyeUZp
bGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiAgICAgICAgIHBy
b3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmcodGVtcFBhdGgpLCBT
dHJpbmcodGVtcEZpbGUpKTsKIAogICAgICAgICAvLyB1c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBv
dmVyd3JpdGluZyBhbiBleGlzdGluZyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZQotICAgICAgICBo
YW5kbGUgPSBDcmVhdGVGaWxlKHByb3Bvc2VkUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVfTkVXLCBG
SUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOworICAgICAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKHBy
b3Bvc2VkUGF0aC5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgR0VO
RVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJV
VEVfTk9STUFMLCAwKTsKICAgICAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkgJiYgR2V0
TGFzdEVycm9yKCkgPT0gRVJST1JfQUxSRUFEWV9FWElTVFMpCiAgICAgICAgICAgICBjb250aW51
ZTsKIApAQCAtMjc0LDcgKzI3NCw3IEBAIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogICAgIH0KIAogICAgIFN0cmluZyBk
ZXN0aW5hdGlvbiA9IHBhdGg7Ci0gICAgcmV0dXJuIENyZWF0ZUZpbGUoZGVzdGluYXRpb24uY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgZGVzaXJlZEFjY2VzcywgMCwgMCwgY3JlYXRp
b25EaXNwb3NpdGlvbiwgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKKyAgICByZXR1cm4gQ3Jl
YXRlRmlsZShkZXN0aW5hdGlvbi5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKSwgZGVzaXJlZEFjY2VzcywgMCwgMCwgY3JlYXRpb25EaXNwb3NpdGlvbiwgRklMRV9BVFRS
SUJVVEVfTk9STUFMLCAwKTsKIH0KIAogdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5E
YXRhYmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFz
ZVdpbi5jcHAKaW5kZXggZWIzMGZmODg1Mjk3MmIxMjYzYjcwZmI3NDIyMmVkNjViMTEwOGIyNC4u
MWExNTQ4OTY1ODBmNTliMWU1YzU3MTYxNzFjNDYzYjk1MGEzMmM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMTE1LDcgKzEx
NSw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhI
YXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSAqaXQgKyAiXFwqIjsKIAotICAgICAg
ICBoRmluZCA9IEZpbmRGaXJzdEZpbGVXKHBhdHRlcm4uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKSwgJmZpbmRGaWxlRGF0YSk7CisgICAgICAgIGhGaW5kID0gRmluZEZpcnN0RmlsZVco
cGF0dGVybi5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgJmZpbmRG
aWxlRGF0YSk7CiAKICAgICAgICAgaWYgKGhGaW5kID09IElOVkFMSURfSEFORExFX1ZBTFVFKQog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3Jp
ZXMpCiAgICAgICAgICAgICBIS0VZIGV4dGVuc2lvbnNLZXk7CiAKICAgICAgICAgICAgIC8vIFRy
eSBvcGVuaW5nIHRoZSBrZXkKLSAgICAgICAgICAgIHJlc3VsdCA9IFJlZ09wZW5LZXlFeChrZXks
IGV4dGVuc2lvbnNQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIDAsIEtFWV9S
RUFELCAmZXh0ZW5zaW9uc0tleSk7CisgICAgICAgICAgICByZXN1bHQgPSBSZWdPcGVuS2V5RXgo
a2V5LCBleHRlbnNpb25zUGF0aC5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKSwgMCwgS0VZX1JFQUQsICZleHRlbnNpb25zS2V5KTsKIAogICAgICAgICAgICAgaWYgKHJl
c3VsdCA9PSBFUlJPUl9TVUNDRVNTKSB7CiAgICAgICAgICAgICAgICAgLy8gTm93IGdldCB0aGUg
cGx1Z2lucyBkaXJlY3RvcnkKQEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
YWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rvcmll
cykKICAgICAgICAgRFdPUkQgYWNyb2JhdEluc3RhbGxQYXRoU2l6ZSA9IHNpemVvZihhY3JvYmF0
SW5zdGFsbFBhdGhTdHIpOwogCiAgICAgICAgIFN0cmluZyBhY3JvYmF0UGx1Z2luS2V5UGF0aCA9
ICJTb2Z0d2FyZVxcQWRvYmVcXEFjcm9iYXQgUmVhZGVyXFwiICsgbGF0ZXN0QWNyb2JhdFZlcnNp
b25TdHJpbmcgKyAiXFxJbnN0YWxsUGF0aCI7Ci0gICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5
VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBhY3JvYmF0UGx1Z2luS2V5UGF0aC5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCAmdHlwZSwgYWNyb2JhdEluc3RhbGxQYXRoU3RyLCAm
YWNyb2JhdEluc3RhbGxQYXRoU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFs
dWUoSEtFWV9MT0NBTF9NQUNISU5FLCBhY3JvYmF0UGx1Z2luS2V5UGF0aC5kZXByZWNhdGVkQ2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgMCwgJnR5cGUsIGFjcm9iYXRJbnN0YWxsUGF0
aFN0ciwgJmFjcm9iYXRJbnN0YWxsUGF0aFNpemUpOwogCiAgICAgICAgIGlmIChyZXN1bHQgPT0g
RVJST1JfU1VDQ0VTUykgewogICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3Rv
cnkgPSBTdHJpbmcoYWNyb2JhdEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBhdGhTaXpl
IC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYnJvd3NlciI7CkBAIC0zNTIsMTAgKzM1MiwxMCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkSmF2YVBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5n
PiYgZGlyZWN0b3JpZXMpCiAgICAgICAgIERXT1JEIHVzZU5ld1BsdWdpblNpemU7CiAKICAgICAg
ICAgU3RyaW5nIGphdmFQbHVnaW5LZXlQYXRoID0gIlNvZnR3YXJlXFxKYXZhU29mdFxcSmF2YSBQ
bHVnLWluXFwiICsgbGF0ZXN0SmF2YVZlcnNpb25TdHJpbmc7Ci0gICAgICAgIHJlc3VsdCA9IGdl
dFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBqYXZhUGx1Z2luS2V5UGF0aC5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBMIlVzZU5ld0phdmFQbHVnaW4iLCAmdHlwZSwg
JnVzZU5ld1BsdWdpblZhbHVlLCAmdXNlTmV3UGx1Z2luU2l6ZSk7CisgICAgICAgIHJlc3VsdCA9
IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NBTF9NQUNISU5FLCBqYXZhUGx1Z2luS2V5UGF0aC5k
ZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgTCJVc2VOZXdKYXZhUGx1
Z2luIiwgJnR5cGUsICZ1c2VOZXdQbHVnaW5WYWx1ZSwgJnVzZU5ld1BsdWdpblNpemUpOwogCiAg
ICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VDQ0VTUyAmJiB1c2VOZXdQbHVnaW5WYWx1ZSA9
PSAxKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBnZXRSZWdpc3RyeVZhbHVlKEhLRVlfTE9DQUxf
TUFDSElORSwgamF2YVBsdWdpbktleVBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KSwgTCJKYXZhSG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZqYXZhSW5zdGFsbFBh
dGhTaXplKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldFJlZ2lzdHJ5VmFsdWUoSEtFWV9MT0NB
TF9NQUNISU5FLCBqYXZhUGx1Z2luS2V5UGF0aC5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKSwgTCJKYXZhSG9tZSIsICZ0eXBlLCBqYXZhSW5zdGFsbFBhdGhTdHIsICZq
YXZhSW5zdGFsbFBhdGhTaXplKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gRVJST1JfU1VD
Q0VTUykgewogICAgICAgICAgICAgICAgIFN0cmluZyBqYXZhUGx1Z2luRGlyZWN0b3J5ID0gU3Ry
aW5nKGphdmFJbnN0YWxsUGF0aFN0ciwgamF2YUluc3RhbGxQYXRoU2l6ZSAvIHNpemVvZihXQ0hB
UikgLSAxKSArICJcXGJpblxcbmV3X3BsdWdpbiI7CiAgICAgICAgICAgICAgICAgZGlyZWN0b3Jp
ZXMuYXBwZW5kKGphdmFQbHVnaW5EaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy93aW4vUGx1Z2luUGFja2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL3dpbi9QbHVnaW5QYWNrYWdlV2luLmNwcAppbmRleCA0MDg4MTg5YTRhNjliYWQ2MWE0ODhk
NGNlMzU2YTE0MTc1YmQ2OTg2Li5mZmEyMTY0NDVhYTM4MmM0YWVlZjA5NzE3NzRmMGQ0ZDcwYTRi
YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5QYWNrYWdl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5QYWNrYWdlV2lu
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgU3RyaW5nIGdldFZlcnNpb25JbmZvKGNvbnN0
IExQVk9JRCB2ZXJzaW9uSW5mb0RhdGEsIGNvbnN0IFN0cmluZyYgaW5mbykKICAgICBVSU5UIGJ1
ZmZlckxlbmd0aDsKICAgICBTdHJpbmcgc3ViSW5mbyA9ICJcXFN0cmluZ2ZpbGVJbmZvXFwwNDA5
MDRFNFxcIiArIGluZm87CiAgICAgYm9vbCByZXR2YWwgPSBWZXJRdWVyeVZhbHVlVyh2ZXJzaW9u
SW5mb0RhdGEsCi0gICAgICAgIGNvbnN0X2Nhc3Q8VUNoYXIqPihzdWJJbmZvLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkpLAorICAgICAgICBjb25zdF9jYXN0PFVDaGFyKj4oc3ViSW5m
by5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSksCiAgICAgICAgICZi
dWZmZXIsICZidWZmZXJMZW5ndGgpOwogICAgIGlmICghcmV0dmFsIHx8IGJ1ZmZlckxlbmd0aCA9
PSAwKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNjcsMTMgKzE2NywxMyBAQCB2b2lk
IFBsdWdpblBhY2thZ2U6OmRldGVybWluZVF1aXJrcyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
Ym9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogewogICAgIERXT1JEIHZlcnNpb25JbmZv
U2l6ZSwgemVyb0hhbmRsZTsKLSAgICB2ZXJzaW9uSW5mb1NpemUgPSBHZXRGaWxlVmVyc2lvbklu
Zm9TaXplVyhjb25zdF9jYXN0PFVDaGFyKj4obV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkpLCAmemVyb0hhbmRsZSk7CisgICAgdmVyc2lvbkluZm9TaXplID0gR2V0RmlsZVZl
cnNpb25JbmZvU2l6ZVcoY29uc3RfY2FzdDxVQ2hhcio+KG1fcGF0aC5kZXByZWNhdGVkQ2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSksICZ6ZXJvSGFuZGxlKTsKICAgICBpZiAodmVyc2lv
bkluZm9TaXplID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE93bkFycmF5UHRy
PGNoYXI+IHZlcnNpb25JbmZvRGF0YSA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbdmVyc2lvbklu
Zm9TaXplXSk7CiAKLSAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1coY29uc3RfY2FzdDxVQ2hh
cio+KG1fcGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSwKKyAgICBpZiAoIUdl
dEZpbGVWZXJzaW9uSW5mb1coY29uc3RfY2FzdDxVQ2hhcio+KG1fcGF0aC5kZXByZWNhdGVkQ2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSksCiAgICAgICAgICAgICAwLCB2ZXJzaW9uSW5m
b1NpemUsIHZlcnNpb25JbmZvRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMjM4LDcgKzIzOCw3IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6bG9hZCgpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0gZWxzZSB7CiAjaWYgT1MoV0lOQ0UpCi0gICAgICAgIG1fbW9kdWxl
ID0gOjpMb2FkTGlicmFyeVcobV9wYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkp
OworICAgICAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlXKG1fcGF0aC5kZXByZWNhdGVkQ2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiAjZWxzZQogICAgICAgICBXQ0hBUiBjdXJy
ZW50UGF0aFtNQVhfUEFUSF07CiAKQEAgLTI0NywxMSArMjQ3LDExIEBAIGJvb2wgUGx1Z2luUGFj
a2FnZTo6bG9hZCgpCiAKICAgICAgICAgU3RyaW5nIHBhdGggPSBtX3BhdGguc3Vic3RyaW5nKDAs
IG1fcGF0aC5yZXZlcnNlRmluZCgnXFwnKSk7CiAKLSAgICAgICAgaWYgKCE6OlNldEN1cnJlbnRE
aXJlY3RvcnlXKHBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkpCisgICAgICAg
IGlmICghOjpTZXRDdXJyZW50RGlyZWN0b3J5VyhwYXRoLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICAvLyBMb2FkIHRoZSBsaWJyYXJ5Ci0gICAgICAgIG1fbW9kdWxlID0gOjpMb2FkTGlicmFyeUV4
VyhtX3BhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgMCwgTE9BRF9XSVRIX0FM
VEVSRURfU0VBUkNIX1BBVEgpOworICAgICAgICBtX21vZHVsZSA9IDo6TG9hZExpYnJhcnlFeFco
bV9wYXRoLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCBMT0FE
X1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CiAKICAgICAgICAgaWYgKCE6OlNldEN1cnJlbnRE
aXJlY3RvcnlXKGN1cnJlbnRQYXRoKSkgewogICAgICAgICAgICAgaWYgKG1fbW9kdWxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAppbmRleCA4MzVmYjll
MmRiMTcxNzllZTZjYWViNDljMGQ5YzZlMTRhNmJiZDA5Li4wNjU5NzkzNDY0YWYxMjcwYzk5ZmMz
MWJhNDI5Y2YxNWRlZTdmYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dp
bi9QbHVnaW5WaWV3V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVn
aW5WaWV3V2luLmNwcApAQCAtODk3LDEzICs4OTcsMTMgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpo
YW5kbGVQb3N0UmVhZEZpbGUoVmVjdG9yPGNoYXI+JiBidWZmZXIsIHVpbnQzMl90IGxlbiwgY29u
c3QKIAogICAgIC8vIEdldCBmaWxlIGluZm8KICAgICBXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRB
IGF0dHJzOwotICAgIGlmIChHZXRGaWxlQXR0cmlidXRlc0V4VyhmaWxlbmFtZS5jaGFyYWN0ZXJz
V2l0aE51bGxUZXJtaW5hdGlvbigpLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZhdHRycykgPT0g
MCkKKyAgICBpZiAoR2V0RmlsZUF0dHJpYnV0ZXNFeFcoZmlsZW5hbWUuZGVwcmVjYXRlZENoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmF0dHJz
KSA9PSAwKQogICAgICAgICByZXR1cm4gTlBFUlJfRklMRV9OT1RfRk9VTkQ7CiAKICAgICBpZiAo
YXR0cnMuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKICAgICAg
ICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9UX0ZPVU5EOwogCi0gICAgSEFORExFIGZpbGVIYW5kbGUg
PSBDcmVhdGVGaWxlVyhmaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBG
SUxFX1JFQURfREFUQSwgRklMRV9TSEFSRV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCAwLCAwKTsK
KyAgICBIQU5ETEUgZmlsZUhhbmRsZSA9IENyZWF0ZUZpbGVXKGZpbGVuYW1lLmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBGSUxFX1JFQURfREFUQSwgRklMRV9TSEFS
RV9SRUFELCAwLCBPUEVOX0VYSVNUSU5HLCAwLCAwKTsKICAgICAKICAgICBpZiAoZmlsZUhhbmRs
ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0ZJTEVfTk9U
X0ZPVU5EOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ09NUHJvcGVydHlCYWcuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL0NPTVByb3BlcnR5QmFnLmgKaW5kZXggOGU4NGU0NzQwYWEzYTk4
NjM1OTRiZWRjZWNlOGUzNzEyYWQ0YTJmZi4uNmE3MmE5NjExZGQxNjhmYWY3MTZhN2QxNzRhMGFi
MDk0NGE3Njk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ09NUHJvcGVydHlCYWcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DT01Qcm9wZXJ0eUJhZy5oCkBAIC0yMjIsNyArMjIy
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDT01Qcm9wZXJ0eUJhZzxWYWx1ZVR5cGUs
IEtleVR5cGUsIEhhc2hUeXBlPjo6R2V0UHJvcGUKICAgICAgICAgcFByb3BCYWdbal0ucHN0ck5h
bWUgPSAoTFBPTEVTVFIpQ29UYXNrTWVtQWxsb2Moc2l6ZW9mKHdjaGFyX3QpKihjdXJyZW50LT5r
ZXkubGVuZ3RoKCkrMSkpOwogICAgICAgICBpZiAoIXBQcm9wQmFnW2pdLnBzdHJOYW1lKQogICAg
ICAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7Ci0gICAgICAgIHdjc2NweV9zKHBQcm9wQmFn
W2pdLnBzdHJOYW1lLCBjdXJyZW50LT5rZXkubGVuZ3RoKCkrMSwgc3RhdGljX2Nhc3Q8U3RyaW5n
PihjdXJyZW50LT5rZXkpLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOworICAgICAg
ICB3Y3NjcHlfcyhwUHJvcEJhZ1tqXS5wc3RyTmFtZSwgY3VycmVudC0+a2V5Lmxlbmd0aCgpKzEs
IHN0YXRpY19jYXN0PFN0cmluZz4oY3VycmVudC0+a2V5KS5kZXByZWNhdGVkQ2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKSk7CiAgICAgICAgICsrKnBjUHJvcGVydGllczsKICAgICB9CiAg
ICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA1YzZmMWFmNmRmNTE0YTEzYmMzODY4NGQ4NmE0
MTFlYzlmZjIzMTJkLi5iMzk2MmIzNzM2ZmVkNGIwNjJhMzQ5NDgyMTNiYTI5NjU2NjMwYzBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKQEAgLTY3MCwxMSArNjcwLDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpydW5P
cGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3NlCiAg
ICAgb2ZuLmh3bmRPd25lciA9IHZpZXdXaW5kb3c7CiAgICAgU3RyaW5nIGFsbEZpbGVzID0gYWxs
RmlsZXNUZXh0KCk7CiAgICAgYWxsRmlsZXMuYXBwZW5kKEwiXDAqLipcMFwwIiwgNik7Ci0gICAg
b2ZuLmxwc3RyRmlsdGVyID0gYWxsRmlsZXMuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KTsKKyAgICBvZm4ubHBzdHJGaWx0ZXIgPSBhbGxGaWxlcy5kZXByZWNhdGVkQ2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKTsKICAgICBvZm4ubHBzdHJGaWxlID0gZmlsZUJ1Zi5kYXRhKCk7
CiAgICAgb2ZuLm5NYXhGaWxlID0gZmlsZUJ1Zi5zaXplKCk7CiAgICAgU3RyaW5nIGRpYWxvZ1Rp
dGxlID0gdXBsb2FkRmlsZVRleHQoKTsKLSAgICBvZm4ubHBzdHJUaXRsZSA9IGRpYWxvZ1RpdGxl
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgb2ZuLmxwc3RyVGl0bGUgPSBk
aWFsb2dUaXRsZS5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKICAg
ICBvZm4uRmxhZ3MgPSBPRk5fRU5BQkxFU0laSU5HIHwgT0ZOX0ZJTEVNVVNURVhJU1QgfCBPRk5f
UEFUSE1VU1RFWElTVCB8IE9GTl9FWFBMT1JFUjsKICAgICBpZiAobXVsdGlGaWxlKQogICAgICAg
ICBvZm4uRmxhZ3MgPSBvZm4uRmxhZ3MgfCBPRk5fQUxMT1dNVUxUSVNFTEVDVDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCmluZGV4IDBkMWYwZDYzZmYyM2ZiNmM5MjhmYWM0ZGU0NDFmNjI3NWQyM2IzYjguLjU3NjE4
ZGE4NjNjNTllYTIyMWM0ZmNhNTdkYzg1NjI2ZmJhYjgxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAt
NDQ4LDcgKzQ0OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJ
bnNwZWN0b3JWaWV3KGJvb2wgbm90aWZ5SW5zcGVjdG9yQ29udHJvCiB2b2lkIFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpCiB7CiAgICAgU3RyaW5nIHRpdGxl
ID0gbWFrZVN0cmluZygiV2ViIEluc3BlY3RvciAiLCBzdGF0aWNfY2FzdDxVQ2hhcj4oMHgyMDE0
KSwgJyAnLCBtX2luc3BlY3RlZFVSTCk7Ci0gICAgOjpTZXRXaW5kb3dUZXh0KG1fZnJvbnRlbmRI
d25kLCB0aXRsZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsKKyAgICA6OlNldFdp
bmRvd1RleHQobV9mcm9udGVuZEh3bmQsIHRpdGxlLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpKTsKIH0KIAogTFJFU1VMVCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6b25HZXRNaW5NYXhJbmZvKFdQQVJBTSwgTFBBUkFNIGxQYXJhbSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggN2RmOWJmNjQ0Y2IxMmIzYTZlNTI4MmM3OTUwZjkz
ODViZmVjMzNkMC4uOGRlOWVlNjk0OWJmMzg2NDI4ZWI1NGZkOTVmYWFiMzQ4YTJkNWViNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTQ3Miw3ICs0NzIsNyBAQCB2
b2lkIFdlYkRvd25sb2FkOjpkaWRGaW5pc2goKQogCiAgICAgLy8gV2UgdHJ5IHRvIHJlbmFtZSB0
aGUgYnVuZGxlIHRvIHRoZSBmaW5hbCBmaWxlIG5hbWUuICBJZiB0aGF0IGZhaWxzLCB3ZSBnaXZl
IHRoZSBkZWxlZ2F0ZSBvbmUgbW9yZSBjaGFuY2UgdG8gY2hvc2UKICAgICAvLyB0aGUgZmluYWwg
ZmlsZSBuYW1lLCB0aGVuIHdlIGp1c3QgbGVhdmUgaXQKLSAgICBpZiAoIU1vdmVGaWxlRXgobV9i
dW5kbGVQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIG1fZGVzdGluYXRpb24u
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgMCkpIHsKKyAgICBpZiAoIU1vdmVGaWxl
RXgobV9idW5kbGVQYXRoLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LCBtX2Rlc3RpbmF0aW9uLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LCAwKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBtb3ZlIGJ1bmRsZSAlcyB0byAl
cyBvbiBjb21wbGV0aW9uXG5FcnJvciAtICVpIiwgbV9idW5kbGVQYXRoLmFzY2lpKCkuZGF0YSgp
LCBtX2Rlc3RpbmF0aW9uLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAg
IAogICAgICAgICBib29sIHJlcG9ydEJ1bmRsZVBhdGhBc0ZpbmFsUGF0aCA9IHRydWU7CkBAIC00
ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlkRmluaXNoKCkKICAgICAgICAgLy8g
VGhlIGNhbGwgdG8gbV9kZWxlZ2F0ZS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoKSBzaG91bGQgaGF2ZSBjaGFuZ2VkIG91ciBkZXN0aW5hdGlvbiwgc28gd2UnbGwgdHJ5
IHRoZSBtb3ZlCiAgICAgICAgIC8vIG9uZSBsYXN0IHRpbWUuCiAgICAgICAgIGlmICghbV9kZXN0
aW5hdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgICAgICBpZiAoTW92ZUZpbGVFeChtX2J1bmRsZVBh
dGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgbV9kZXN0aW5hdGlvbi5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwKSkKKyAgICAgICAgICAgIGlmIChNb3ZlRmlsZUV4
KG1fYnVuZGxlUGF0aC5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwg
bV9kZXN0aW5hdGlvbi5kZXByZWNhdGVkQ2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwg
MCkpCiAgICAgICAgICAgICAgICAgcmVwb3J0QnVuZGxlUGF0aEFzRmluYWxQYXRoID0gZmFsc2U7
CiAKICAgICAgICAgLy8gV2UgZWl0aGVyIG5lZWQgdG8gdGVsbCB0aGUgZGVsZWdhdGUgb3VyIGZp
bmFsIGZpbGVuYW1lIGlzIHRoZSBidW5kbGUgZmlsZW5hbWUsIG9yIGlzIHRoZSBmaWxlIG5hbWUg
dGhleSBqdXN0IHRvbGQgdXMgdG8gdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJLaXRTeXN0ZW1CaXRzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdFN5c3RlbUJpdHMu
Y3BwCmluZGV4IDMyZTUwNWM1N2Q1YTg0YTQyNWEzYzYyMzFmM2M1MTI2Yjg1ODg3NWQuLjE1YzNk
NWNkNjMzZDllZmI0YzZlNWY0NjQwYjA0Yjg5YTM4NmQ5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYktpdFN5c3RlbUJpdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YktpdFN5c3RlbUJpdHMuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBX
ZWJWb2x1bWVGcmVlU2l6ZShDRlN0cmluZ1JlZiBjZnN0cmluZ1BhdGgpCiB7CiAgICAgV1RGOjpT
dHJpbmcgcGF0aChjZnN0cmluZ1BhdGgpOwogICAgIFVMQVJHRV9JTlRFR0VSIGZyZWVCeXRlc1Rv
Q2FsbGVyOwotICAgIEJPT0wgcmVzdWx0ID0gR2V0RGlza0ZyZWVTcGFjZUV4VygoTFBDV1NUUilw
YXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksICZmcmVlQnl0ZXNUb0NhbGxlciwg
MCwgMCk7CisgICAgQk9PTCByZXN1bHQgPSBHZXREaXNrRnJlZVNwYWNlRXhXKChMUENXU1RSKXBh
dGguZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksICZmcmVlQnl0ZXNU
b0NhbGxlciwgMCwgMCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAppbmRleCA0M2Y5Yjcw
NjI0MjlhYjhhM2Y4OGVlNjMxNDcxZTYxYjg5OTk3NzA0Li4zOWFjMTQ1YmYzYTk2NDEwYTEyZTQy
ZjYwMTA0MDAwOWMwMjRlOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxl
U3RyaW5ncy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIExvY2FsaXplZFN0cmluZzo6
b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3N0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
OworICAgICAgICByZXR1cm4gbV9zdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCk7CiAKICAgICBtX3N0cmluZyA9IG1fY2ZTdHJpbmc7CiAKQEAgLTk2LDcgKzk2
LDcgQEAgTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBMUENUU1RSKCkgY29uc3QKICAgICAgICAg
aWYgKG1fc3RyaW5nW2ldID09ICdAJyAmJiAobV9zdHJpbmdbaSAtIDFdID09ICclJyB8fCAoaSA+
IDIgJiYgbV9zdHJpbmdbaSAtIDFdID09ICckJyAmJiBtX3N0cmluZ1tpIC0gMl0gPj0gJzEnICYm
IG1fc3RyaW5nW2kgLSAyXSA8PSAnOScgJiYgbV9zdHJpbmdbaSAtIDNdID09ICclJykpKQogICAg
ICAgICAgICAgbV9zdHJpbmcucmVwbGFjZShpLCAxLCAicyIpOwogCi0gICAgcmV0dXJuIG1fc3Ry
aW5nLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CisgICAgcmV0dXJuIG1fc3RyaW5n
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpOwogfQogCiBzdGF0aWMg
Q0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXgg
MzQ1MzU0Nzk0M2EyZGUzMDM0ZWMzMTE4N2EyZDhmMjcwNTcwZTBhNC4uZjM3MjMzYzdkNDE1ZTAy
ZjQyYmNiMWM5OGFmZDUwZmM1NGQwN2I2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTI4MTEs
NyArMjgxMSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xU
aXApCiAgICAgICAgIGluZm8uY2JTaXplID0gc2l6ZW9mKGluZm8pOwogICAgICAgICBpbmZvLnVG
bGFncyA9IFRURl9JRElTSFdORDsKICAgICAgICAgaW5mby51SWQgPSByZWludGVycHJldF9jYXN0
PFVJTlRfUFRSPihtX3ZpZXdXaW5kb3cpOwotICAgICAgICBpbmZvLmxwc3pUZXh0ID0gY29uc3Rf
Y2FzdDxVQ2hhcio+KG1fdG9vbFRpcC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsK
KyAgICAgICAgaW5mby5scHN6VGV4dCA9IGNvbnN0X2Nhc3Q8VUNoYXIqPihtX3Rvb2xUaXAuZGVw
cmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOwogICAgICAgICA6OlNlbmRN
ZXNzYWdlKG1fdG9vbFRpcEh3bmQsIFRUTV9VUERBVEVUSVBURVhULCAwLCByZWludGVycHJldF9j
YXN0PExQQVJBTT4oJmluZm8pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvd2luL0Nvbm5lY3Rpb25XaW4uY3BwIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKaW5kZXggYzBiYWQwYzZlZTA3
Njg3ZDZhOGVmNjg4OTA2ZDY4NmE4Yzg2OTNkZi4uZmE4MDk1YTFmMWYzMDBmY2Q0YmZiMjYxMGFi
OGMxN2RjMTVhMTcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQ
Qy93aW4vQ29ubmVjdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy93aW4vQ29ubmVjdGlvbldpbi5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBDb25uZWN0
aW9uOjpjcmVhdGVTZXJ2ZXJBbmRDbGllbnRJZGVudGlmaWVycyhIQU5ETEUmIHNlcnZlcklkZW50
aWZpZXIsIEhBTkQKICAgICAgICAgdW5zaWduZWQgdW5pcXVlSUQgPSByYW5kb21OdW1iZXIoKSAq
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKICAgICAgICAgcGlwZU5hbWUg
PSBTdHJpbmc6OmZvcm1hdCgiXFxcXC5cXHBpcGVcXGNvbS5hcHBsZS5XZWJLaXQuJXgiLCB1bmlx
dWVJRCk7CiAKLSAgICAgICAgc2VydmVySWRlbnRpZmllciA9IDo6Q3JlYXRlTmFtZWRQaXBlKHBp
cGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksCisgICAgICAgIHNlcnZlcklk
ZW50aWZpZXIgPSA6OkNyZWF0ZU5hbWVkUGlwZShwaXBlTmFtZS5kZXByZWNhdGVkQ2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBJUEVfQUNDRVNTX0RVUExFWCB8IEZJTEVfRkxBR19GSVJTVF9QSVBFX0lO
U1RBTkNFIHwgRklMRV9GTEFHX09WRVJMQVBQRUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQSVBFX1RZUEVfTUVTU0FHRSB8IFBJUEVfUkVBRE1PREVfTUVT
U0FHRSwgMSwgaW5saW5lTWVzc2FnZU1heFNpemUsIGlubGluZU1lc3NhZ2VNYXhTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7CkBAIC02Miw3
ICs2Miw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmll
cnMoSEFORExFJiBzZXJ2ZXJJZGVudGlmaWVyLCBIQU5ECiAgICAgaWYgKCFzZXJ2ZXJJZGVudGlm
aWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjbGllbnRJZGVudGlmaWVyID0gOjpD
cmVhdGVGaWxlVyhwaXBlTmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCBHRU5F
UklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBPUEVOX0VYSVNUSU5HLCBGSUxFX0ZMQUdf
T1ZFUkxBUFBFRCwgMCk7CisgICAgY2xpZW50SWRlbnRpZmllciA9IDo6Q3JlYXRlRmlsZVcocGlw
ZU5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIEdFTkVSSUNf
UkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIE9QRU5fRVhJU1RJTkcsIEZJTEVfRkxBR19PVkVS
TEFQUEVELCAwKTsKICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpIHsKICAgICAgICAgOjpDbG9z
ZUhhbmRsZShzZXJ2ZXJJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQzN2IzYWFhNWYx
NGU4MzA4ZmU4MzUxOWQ0Y2VmN2UxMzg2MzAzZmIuLmY5N2E3NzFlY2U0NzUyZTljNGE0ZWVlYzdi
Y2YyN2FkMTMzMzFlYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wNi0yNiAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIERlcHJlY2F0ZSBTdHJpbmdJbXBsOjpjaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lIGNhbGxzIHRvIGNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uIHRvIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbi4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChm
aW5kRm9udEZhbGxiYWNrKToKKyAgICAgICAgKGFkZEZvbnRGYWxsYmFja0lmUHJlc2VudCk6Cisg
ICAgICAgIChyZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQpOgorCiAyMDEzLTA2LTI2ICBOaWNv
IFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgZGV0ZWN0LW1p
c21hY2hlZC12aXJ0dWFsLWNvbnN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAKaW5kZXggZWEzYTlkZWFmNzE1N2EyM2U5MDU2OWU2NTcwYzZmNDkzYWFlODRm
Zi4uYTZhZmM5MzUwN2NjYmRhODc3YjZjM2U5ZTY0NTg4MjkwMGJiZTM3ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC05NjQsNyArOTY0LDcgQEAg
c3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAg
ICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShwYXRo
T3JVcmwpOwogCiAgICAgd2NoYXJfdCBmdWxsUGF0aFtfTUFYX1BBVEhdOwotICAgIGlmICghX3dm
dWxscGF0aChmdWxsUGF0aCwgcGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRl
cm1pbmF0aW9uKCksIF9NQVhfUEFUSCkpCisgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBw
YXRoVG9Gb250RmFsbGJhY2suZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCksIF9NQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgaWYg
KCE6OlBhdGhJc0RpcmVjdG9yeVcoZnVsbFBhdGgpKQpAQCAtOTk1LDcgKzk5NSw3IEBAIHN0YXRp
YyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgZm9y
IChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdpbigpOyBw
b3MgIT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytwb3MpIHsKICAgICAgICAgcGF0aFRvRm9udEZh
bGxiYWNrID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJj
ZXNcXCIpOyAKIAotICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHBhdGhUb0ZvbnRGYWxs
YmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKSkKKyAgICAgICAgaWYgKDo6UGF0
aElzRGlyZWN0b3J5VyhwYXRoVG9Gb250RmFsbGJhY2suZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIHBhdGhUb0ZvbnRGYWxsYmFj
azsKICAgICB9CiAKQEAgLTEwMDksNyArMTAwOSw3IEBAIHN0YXRpYyB2b2lkIGFkZEZvbnRGYWxs
YmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgpCiAKICAgICBTdHJp
bmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRG
YWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCi0gICAg
aWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKSkpCisgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suZGVw
cmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICA6OnNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGZvbnRGYWxsYmFj
ay5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKQEAgLTEwMjIsNyArMTAyMiw3IEBAIHN0YXRpYyB2
b2lkIHJlbW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFj
a1BhdGgpCiAKICAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxi
YWNrLmNzcyIpOwogCi0gICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSkpCisgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3Rz
Vyhmb250RmFsbGJhY2suZGVwcmVjYXRlZENoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICA6OnNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKDApOwo=
</data>
<flag name="review"
          id="227098"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>