<?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>138156</bug_id>
          
          <creation_ts>2014-10-28 16:41:20 -0700</creation_ts>
          <short_desc>Factor cache validity computation functions out of CachedResource</short_desc>
          <delta_ts>2014-10-29 15:10:21 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>30322</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1044637</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-28 16:41:20 -0700</bug_when>
    <thetext>These are useful for WebKit level cache implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044820</commentid>
    <comment_count>1</comment_count>
      <attachid>240620</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-29 13:49:28 -0700</bug_when>
    <thetext>Created attachment 240620
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044821</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-29 14:00:29 -0700</bug_when>
    <thetext>Reverted r175342 for reason:

a file ended up in a wrong directory

Committed r175343: &lt;http://trac.webkit.org/changeset/175343&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044828</commentid>
    <comment_count>3</comment_count>
      <attachid>240622</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-29 14:15:12 -0700</bug_when>
    <thetext>Created attachment 240622
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044831</commentid>
    <comment_count>4</comment_count>
      <attachid>240623</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-29 14:21:51 -0700</bug_when>
    <thetext>Created attachment 240623
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044857</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-29 15:02:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/175348</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044862</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-10-29 15:10:21 -0700</bug_when>
    <thetext>Oops, ChangeLog mismerged and it picked up wrong commit message. Leaving as-is since it is otherwise fine.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240620</attachid>
            <date>2014-10-29 13:49:28 -0700</date>
            <delta_ts>2014-10-29 14:15:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>validation-functions.patch</filename>
            <type>text/plain</type>
            <size>27036</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NTMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTEwLTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2FjaGUgdmFsaWRp
dHkgY29tcHV0YXRpb24gZnVuY3Rpb25zIG91dCBvZiBDYWNoZWRSZXNvdXJjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlc2UgY2FuIGJlIHVzZWQg
dG8gaW1wbGVtZW50IGNhY2hlIGxvZ2ljIG9uIFdlYktpdCBsZXZlbC4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9DYWNoZVZhbGlkYXRpb24uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkpOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpy
ZWRpcmVjdENoYWluQWxsb3dzUmV1c2UpOgorICAgICAgICAqIGxvYWRlci9DYWNoZVZhbGlkYXRp
b24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6
OlJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVJlc3BvbnNlSGVhZGVyc0Fm
dGVyUmV2YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpDYWNo
ZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6aXNFeHBpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZldGltZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVSZXNwb25zZUFmdGVyUmV2YWxp
ZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZWRpcmVjdENoYWlu
QWxsb3dzUmV1c2UpOgorICAgICAgICAoV2ViQ29yZTo6Y3VycmVudEFnZSk6IERlbGV0ZWQuCisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisKIDIwMTQtMTAtMjggIEFk
YSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEFQSSB0byBtdXRlL3Vu
bXV0ZSBhIHBhZ2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTc1MzM4KQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4NTcs
NiArMTg1Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnRSZWZlcmVuY2UuY3BwCiAgICAgbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKyAgICBsb2FkZXIv
Y2FjaGUvQ2FjaGVWYWxpZGF0aW9uLmNwcAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAKIAogICAgIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDE3NTMzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC03NzksNiArNzc5LDcgQEAgX19aTjdXZWJDb3JlMTdTUUxp
dGVUcmFuc2FjdGlvbkMxRVJOU18xNAogX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbkQx
RXYKIF9fWk43V2ViQ29yZTE3U3VicmVzb3VyY2VMb2FkZXI2Y3JlYXRlRVBOU181RnJhbWVFUE5T
XzE0Q2FjaGVkUmVzb3VyY2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzIxUmVzb3VyY2VM
b2FkZXJPcHRpb25zRQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RP
TUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCitfX1pON1dl
YkNvcmUxN2NvbXB1dGVDdXJyZW50QWdlRVJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRWQKIF9fWk43
V2ViQ29yZTE3ZW5jb2RlRm9yRmlsZU5hbWVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUx
N2V4ZWNTdGF0ZUZyb21QYWdlRVJOU18xNURPTVdyYXBwZXJXb3JsZEVQTlNfNFBhZ2VFCiBfX1pO
N1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKQEAgLTg0NCw2ICs4NDUsNyBAQCBfX1pON1dl
YkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMXNldFByCiBfX1pON1dlYkNvcmUxOVJlc291cmNl
UmVxdWVzdEJhc2UxM3NldEhUVFBNZXRob2RFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUx
OVJlc291cmNlUmVxdWVzdEJhc2UxNXNldEhUVFBSZWZlcnJlckVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE4c2V0SFRUUENvbnRlbnRUeXBlRVJLTjNX
VEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMThzZXRIVFRQSGVh
ZGVyRmllbGRFTlNfMTRIVFRQSGVhZGVyTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE5c2V0SFRUUEhlYWRlckZpZWxkc0VOU18xM0hUVFBIZWFk
ZXJNYXBFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyMmRlZmF1bHRUaW1lb3V0
SW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMjRzX2RlZmF1bHRU
aW1lb3V0SW50ZXJ2YWxFCkBAIC0xMDQyLDEwICsxMDQ0LDEyIEBAIF9fWk43V2ViQ29yZTI0ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lRVIKIF9fWk43V2ViQ29yZTI0ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRub3RpZnlIaXN0b3J5SXRlbUNo
YW5nZWRFCiBfX1pON1dlYkNvcmUyNHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudEVSS04zV1RGNlN0
cmluZ0VTM18KK19fWk43V2ViQ29yZTI0cmVkaXJlY3RDaGFpbkFsbG93c1JldXNlRU5TXzI0UmVk
aXJlY3RDaGFpbkNhY2hlU3RhdHVzRQogX19aTjdXZWJDb3JlMjVhZGRMYW5ndWFnZUNoYW5nZU9i
c2VydmVyRVB2UEZ2UzBfRQogX19aTjdXZWJDb3JlMjVjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVz
RU5TXzE3Vmlld3BvcnRBcmd1bWVudHNFaWlpZk5TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlMjVj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nRXYKIF9fWk43V2ViQ29yZTI1Z2V0T3V0T2ZMaW5lQ2Fj
aGVkV3JhcHBlckVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNE5vZGVFCitfX1pON1dlYkNv
cmUyNXVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXNFUk5TXzI0UmVkaXJlY3RDaGFpbkNhY2hlU3Rh
dHVzRVJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQogX19aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcjE2Y29udGV4dERlc3Ryb3llZEV2CiBfX1pON1dlYkNvcmUyNkNvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyQzJFUE5TXzIyU2NyaXB0RXhlY3V0aW9uQ29udGV4dEUKIF9fWk43
V2ViQ29yZTI2Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJEMkV2CkBAIC0xMDg3LDYgKzEwOTEs
OCBAQCBfX1pON1dlYkNvcmUzM3N0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNCiBfX1pON1dlYkNv
cmUzNnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZUVSS04zV1RGNlN0cmluZ0VT
M18KIF9fWk43V2ViQ29yZTM3V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTEx
bW92ZVdpZGdldHNFdgogX19aTjdXZWJDb3JlMzdXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVu
c2lvblNjb3BlMzVzX3dpZGdldEhpZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudEUKK19fWk43V2Vi
Q29yZTM3Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseUVSS05TXzE2UmVzb3Vy
Y2VSZXNwb25zZUVkCitfX1pON1dlYkNvcmUzOHVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2
YWxpZGF0aW9uRVJOU18xNlJlc291cmNlUmVzcG9uc2VFUktTMF8KIF9fWk43V2ViQ29yZTNVUkwx
MGludmFsaWRhdGVFdgogX19aTjdXZWJDb3JlM1VSTDExc2V0UHJvdG9jb2xFUktOM1dURjZTdHJp
bmdFCiBfX1pON1dlYkNvcmUzVVJMN3NldFBhdGhFUktOM1dURjZTdHJpbmdFCkBAIC0xODQyLDcg
KzE4NDgsMTEgQEAgX19aTks3V2ViQ29yZTE5UHJvdGVjdGlvblNwYWNlQmFzZTRwb3J0RQogX19a
Tks3V2ViQ29yZTE5UHJvdGVjdGlvblNwYWNlQmFzZTVyZWFsbUV2CiBfX1pOSzdXZWJDb3JlMTlQ
cm90ZWN0aW9uU3BhY2VCYXNlN2lzUHJveHlFdgogX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1
ZXN0QmFzZTEwaHR0cE1ldGhvZEV2CitfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNl
MTFjYWNoZVBvbGljeUV2CitfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTNpc0Nv
bmRpdGlvbmFsRXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxNWh0dHBDb250
ZW50VHlwZUV2CitfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTVodHRwSGVhZGVy
RmllbGRFTlNfMTRIVFRQSGVhZGVyTmFtZUUKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVz
dEJhc2UxNWh0dHBIZWFkZXJGaWVsZEVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxOVJl
c291cmNlUmVxdWVzdEJhc2UyMGZpcnN0UGFydHlGb3JDb29raWVzRXYKIF9fWk5LN1dlYkNvcmUx
OVJlc291cmNlUmVxdWVzdEJhc2UzdXJsRXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVz
dEJhc2U2aXNOdWxsRXYKQEAgLTE4NjMsNiArMTg3MywxMCBAQCBfX1pOSzdXZWJDb3JlMjBSZXNv
dXJjZVJlc3BvbnNlQmFzZTE2dGV4CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTE3c3VnZ2VzdGVkRmlsZW5hbWVFdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJh
c2UyMWV4cGVjdGVkQ29udGVudExlbmd0aEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTIyaW5jbHVkZUNlcnRpZmljYXRlSW5mb0V2CitfX1pOSzdXZWJDb3JlMjBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTIzaGFzQ2FjaGVWYWxpZGF0b3JGaWVsZHNFdgorX19aTks3V2ViQ29yZTIw
UmVzb3VyY2VSZXNwb25zZUJhc2UyN2NhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZUV2CitfX1pO
SzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI3Y2FjaGVDb250cm9sQ29udGFpbnNOb1N0
b3JlRXYKK19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMzRjYWNoZUNvbnRyb2xD
b250YWluc011c3RSZXZhbGlkYXRlRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VC
YXNlM3VybEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZpc0hUVFBFdgog
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U4bGF6eUluaXRFTlMwXzlJbml0TGV2
ZWxFCkBAIC0yMjc5LDYgKzIyOTMsNyBAQCBfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFibGVkRVJL
TlNfMjFOZXR3CiBfX1pON1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDQxdXBkYXRlRnJvbURlbGVn
YXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXNFUktTMF8KIF9fWk43V2ViQ29yZTE2Rm9udFBsYXRm
b3JtRGF0YUMxRVA2TlNGb250ZmJiYk5TXzE1Rm9udE9yaWVudGF0aW9uRU5TXzE2Rm9udFdpZHRo
VmFyaWFudEUKIF9fWk43V2ViQ29yZTE2Rm9udFBsYXRmb3JtRGF0YUMyRVA2TlNGb250ZmJiYk5T
XzE1Rm9udE9yaWVudGF0aW9uRU5TXzE2Rm9udFdpZHRoVmFyaWFudEUKK19fWk43V2ViQ29yZTE2
SlNYTUxIdHRwUmVxdWVzdDl0b1dyYXBwZWRFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTE2
Y29sb3JGcm9tTlNDb2xvckVQN05TQ29sb3IKIF9fWk43V2ViQ29yZTE2ZGVsZXRlQWxsQ29va2ll
c0VSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRQogX19aTjdXZWJDb3JlMTZlbmNsb3NpbmdJ
bnRSZWN0RVJLN19OU1JlY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTc1MzM4KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzM0MCw2
ICs3MzQwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNo
ZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxsb2FkZXJcY2FjaGVcQ2FjaGVkVGV4dFRyYWNrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCIgLz4KKyAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZVZhbGlkYXRpb24uY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXE1lbW9yeUNhY2hlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGF1ZGlvXEF1ZGlvSGFy
ZHdhcmVMaXN0ZW5lci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxDYWxjdWxhdGlvblZhbHVlLmNwcCIgLz4KQEAgLTE5MzA4LDYgKzE5MzA5LDcgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZWRUZXh0VHJhY2suaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZWRYU0xTdHlsZVNo
ZWV0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsb2FkZXJcY2FjaGVcQ2FjaGVQ
b2xpY3kuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNo
ZVZhbGlkYXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNo
ZVxNZW1vcnlDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
YXVkaW9cQXVkaW9IYXJkd2FyZUxpc3RlbmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxDYWxjdWxhdGlvblZhbHVlLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNzUz
MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTYxNjQsNiArNjE2NCw4IEBACiAJCUU0NTM5MDREMEVBRkQ2Mzcw
MDM2OTVDOCAvKiBXaWRnZXRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDUzOTAzQzBFQUZENjM3MDAzNjk1QzggLyogV2lkZ2V0SU9TLm1tICov
OyB9OwogCQlFNDUzOTBBRTBFQUZGNEI1MDAzNjk1QzggLyogU3lzdGVtTWVtb3J5SU9TLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTM5MEFEMEVB
RkY0QjUwMDM2OTVDOCAvKiBTeXN0ZW1NZW1vcnlJT1MuY3BwICovOyB9OwogCQlFNDYyQTRBMTEx
M0U3MUJFMDA0QTQyMjAgLyogSW50UG9pbnRIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDYyQTRBMDExM0U3MUJFMDA0QTQyMjAgLyogSW50UG9p
bnRIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTQ2NzY4MEUxQTAxNzdFRTAwQjlFMjZCIC8qIENhY2hlVmFsaWRhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDY3NjgwRDFBMDE3N0VF
MDBCOUUyNkIgLyogQ2FjaGVWYWxpZGF0aW9uLmNwcCAqLzsgfTsKKwkJRTQ2NzY4MTAxQTAxNzdG
OTAwQjlFMjZCIC8qIENhY2hlVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2NzY4MEYxQTAxNzdGOTAwQjlFMjZCIC8qIENhY2hlVmFs
aWRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUU0NkEyQjFDMTdDQTY1QjkwMDBEQkNEOCAvKiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
NkEyQjFCMTdDQTY1QjkwMDBEQkNEOCAvKiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDZB
MkIxRTE3Q0E3NkIxMDAwREJDRDggLyogRWxlbWVudENoaWxkSXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NkEyQjFEMTdDQTc2QjEwMDBE
QkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NzEyN0NBMTYzNDM4QTEwMEVENkY1QSAvKiBTdHls
ZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0N0E5N0NFMTYzMDU5RkMwMDVEQ0Q5OSAvKiBTdHlsZUludmFsaWRh
dGlvbkFuYWx5c2lzLmNwcCAqLzsgfTsKQEAgLTEzNjkzLDYgKzEzNjk1LDggQEAKIAkJRTQ1Mzkw
M0MwRUFGRDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdpZGdldElPUy5tbTsgcGF0aCA9IGlvcy9XaWRnZXRJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NTM5MEFEMEVBRkY0QjUwMDM2OTVDOCAv
KiBTeXN0ZW1NZW1vcnlJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU3lzdGVtTWVtb3J5SU9TLmNwcDsgcGF0aCA9IGlvcy9TeXN0ZW1NZW1vcnlJT1MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDYyQTRBMDExM0U3MUJFMDA0QTQyMjAgLyog
SW50UG9pbnRIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludFBvaW50
SGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDY3NjgwRDFBMDE3N0VFMDBC
OUUyNkIgLyogQ2FjaGVWYWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENhY2hlVmFsaWRhdGlvbi5jcHA7IHBhdGggPSBsb2FkZXIvQ2FjaGVWYWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlFNDY3NjgwRjFBMDE3N0Y5
MDBCOUUyNkIgLyogQ2FjaGVWYWxpZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENhY2hlVmFsaWRhdGlvbi5oOyBwYXRoID0gbG9hZGVyL0NhY2hlVmFsaWRhdGlvbi5o
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCUU0NkEyQjFCMTdDQTY1QjkwMDBEQkNE
OCAvKiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NkEyQjFEMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50
Q2hpbGRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbGVtZW50
Q2hpbGRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDc3OEI3RDEx
NUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5NjI1LDYgKzE5NjI5LDggQEAKIAkJCQlCQ0IxNkMwRTA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgKi8sCiAJCQkJQkNCMTZDMEYwOTc5QzNCRDAw
NDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCAqLywKIAkJCQlGNTg3ODY0OTAyREUzQTlB
MDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAqLywKKwkJCQlFNDY3NjgwRDFBMDE3N0VFMDBCOUUy
NkIgLyogQ2FjaGVWYWxpZGF0aW9uLmNwcCAqLywKKwkJCQlFNDY3NjgwRjFBMDE3N0Y5MDBCOUUy
NkIgLyogQ2FjaGVWYWxpZGF0aW9uLmggKi8sCiAJCQkJQkNCMTZCRkUwOTc5QzNCRDAwNDY3NzQx
IC8qIE1lbW9yeUNhY2hlLmNwcCAqLywKIAkJCQlCQ0IxNkJGRjA5NzlDM0JEMDA0Njc3NDEgLyog
TWVtb3J5Q2FjaGUuaCAqLywKIAkJCSk7CkBAIC0yMzY2OSw2ICsyMzY3NSw3IEBACiAJCQkJOTc1
Q0EyOEIxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3
MkFGNkUxODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEyNUY4NDIxODI0MjUzQTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUU0Njc2ODEwMUEwMTc3RjkwMEI5RTI2QiAvKiBDYWNoZVZh
bGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkUxMzdCMTg0RDIxQkIwMDg5MkYxMyAv
KiBDcnlwdG9BbGdvcml0aG1BRVNfS1cuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODNBMTgy
NDEwNDgwMEQ4NENEOSAvKiBDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxOUFDM0Y3MTgyNEU1RDEwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1BZXNL
ZXlHZW5QYXJhbXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjcxODksNiArMjcxOTYsNyBAQAogCQkJ
CUZEMzE2MEJCMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0J1c01hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUZEMzE2MDdEMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0NoYW5uZWwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRkQzMTYwMDQxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFNDY3NjgwRTFBMDE3N0VFMDBCOUUyNkIgLyogQ2FjaGVW
YWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMEVFRTBFMTQ3NDNGMzkwMDNFQUZB
MiAvKiBBdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MEJD
MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEMzE2MDA3MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9DYWNoZVZhbGlk
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9DYWNoZVZhbGlk
YXRpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NhY2hlVmFs
aWRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDE5OTggTGFycyBLbm9sbCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgICAgQ29weXJp
Z2h0IChDKSAyMDAyIFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWNoZVZhbGlkYXRpb24uaCIK
KworI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitkb3VibGUgY29tcHV0ZUN1cnJlbnRBZ2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGRvdWJsZSByZXNwb25zZVRpbWVzdGFt
cCkKK3sKKyAgICAvLyBSRkMyNjE2IDEzLjIuMworICAgIC8vIE5vIGNvbXBlbnNhdGlvbiBmb3Ig
bGF0ZW5jeSBhcyB0aGF0IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRhbnQgaW4gcHJhY3RpY2UKKyAg
ICBkb3VibGUgZGF0ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgpOworICAgIGRvdWJsZSBhcHBhcmVu
dEFnZSA9IHN0ZDo6aXNmaW5pdGUoZGF0ZVZhbHVlKSA/IHN0ZDo6bWF4KDAuLCByZXNwb25zZVRp
bWVzdGFtcCAtIGRhdGVWYWx1ZSkgOiAwOworICAgIGRvdWJsZSBhZ2VWYWx1ZSA9IHJlc3BvbnNl
LmFnZSgpOworICAgIGRvdWJsZSBjb3JyZWN0ZWRSZWNlaXZlZEFnZSA9IHN0ZDo6aXNmaW5pdGUo
YWdlVmFsdWUpID8gc3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVlKSA6IGFwcGFyZW50QWdl
OworICAgIGRvdWJsZSByZXNpZGVudFRpbWUgPSBjdXJyZW50VGltZSgpIC0gcmVzcG9uc2VUaW1l
c3RhbXA7CisgICAgcmV0dXJuIGNvcnJlY3RlZFJlY2VpdmVkQWdlICsgcmVzaWRlbnRUaW1lOwor
fQorCitkb3VibGUgY29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKQorewor
ICAgIEFTU0VSVChyZXNwb25zZS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOworICAg
IC8vIFJGQzI2MTYgMTMuMi40CisgICAgZG91YmxlIG1heEFnZVZhbHVlID0gcmVzcG9uc2UuY2Fj
aGVDb250cm9sTWF4QWdlKCk7CisgICAgaWYgKHN0ZDo6aXNmaW5pdGUobWF4QWdlVmFsdWUpKQor
ICAgICAgICByZXR1cm4gbWF4QWdlVmFsdWU7CisgICAgZG91YmxlIGV4cGlyZXNWYWx1ZSA9IHJl
c3BvbnNlLmV4cGlyZXMoKTsKKyAgICBkb3VibGUgZGF0ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgp
OworICAgIGRvdWJsZSBjcmVhdGlvblRpbWUgPSBzdGQ6OmlzZmluaXRlKGRhdGVWYWx1ZSkgPyBk
YXRlVmFsdWUgOiByZXNwb25zZVRpbWVzdGFtcDsKKyAgICBpZiAoc3RkOjppc2Zpbml0ZShleHBp
cmVzVmFsdWUpKQorICAgICAgICByZXR1cm4gZXhwaXJlc1ZhbHVlIC0gY3JlYXRpb25UaW1lOwor
ICAgIGRvdWJsZSBsYXN0TW9kaWZpZWRWYWx1ZSA9IHJlc3BvbnNlLmxhc3RNb2RpZmllZCgpOwor
ICAgIGlmIChzdGQ6OmlzZmluaXRlKGxhc3RNb2RpZmllZFZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IChjcmVhdGlvblRpbWUgLSBsYXN0TW9kaWZpZWRWYWx1ZSkgKiAwLjE7CisgICAgLy8gSWYgbm8g
Y2FjaGUgaGVhZGVycyBhcmUgcHJlc2VudCwgdGhlIHNwZWNpZmljYXRpb24gbGVhdmVzIHRoZSBk
ZWNpc2lvbiB0byB0aGUgVUEuIE90aGVyIGJyb3dzZXJzIHNlZW0gdG8gb3B0IGZvciAwLgorICAg
IHJldHVybiAwOworfQorCit2b2lkIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMoUmVkaXJlY3RD
aGFpbkNhY2hlU3RhdHVzJiByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmIChyZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMu
c3RhdHVzID09IFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm90Q2FjaGVkUmVkaXJlY3Rpb24p
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNO
b1N0b3JlKCkgfHwgcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgfHwgcmVz
cG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpKSB7CisgICAgICAgIHJl
ZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6
Ok5vdENhY2hlZFJlZGlyZWN0aW9uOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OkNh
Y2hlZFJlZGlyZWN0aW9uOworICAgIGRvdWJsZSByZXNwb25zZVRpbWVzdGFtcCA9IGN1cnJlbnRU
aW1lKCk7CisgICAgLy8gU3RvcmUgdGhlIG5lYXJlc3QgZW5kIG9mIGNhY2hlIHZhbGlkaXR5IGRh
dGUKKyAgICBkb3VibGUgZW5kT2ZWYWxpZGl0eSA9IHJlc3BvbnNlVGltZXN0YW1wICsgY29tcHV0
ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgcmVzcG9uc2VUaW1lc3Rh
bXApIC0gY29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UsIHJlc3BvbnNlVGltZXN0YW1wKTsKKyAg
ICByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuZW5kT2ZWYWxpZGl0eSA9IHN0ZDo6bWluKHJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5LCBlbmRPZlZhbGlkaXR5KTsKK30KKwor
Ym9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzIHJl
ZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cykKK3sKKyAgICBzd2l0Y2ggKHJlZGlyZWN0Q2hhaW5DYWNo
ZVN0YXR1cy5zdGF0dXMpIHsKKyAgICBjYXNlIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm9S
ZWRpcmVjdGlvbjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBSZWRpcmVjdENoYWlu
Q2FjaGVTdGF0dXM6Ok5vdENhY2hlZFJlZGlyZWN0aW9uOgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgY2FzZSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OkNhY2hlZFJlZGlyZWN0aW9uOgor
ICAgICAgICByZXR1cm4gY3VycmVudFRpbWUoKSA8PSByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMu
ZW5kT2ZWYWxpZGl0eTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ2FjaGVWYWxp
ZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NhY2hlVmFsaWRh
dGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0NhY2hlVmFsaWRh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAxOTk4IExhcnMgS25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCisgICAgQ29weXJpZ2h0
IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICAgIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBDYWNoZVZhbGlkYXRpb25faAorI2RlZmluZSBDYWNoZVZhbGlkYXRpb25faAor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CisKK3N0cnVj
dCBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMgeworICAgIGVudW0gU3RhdHVzIHsKKyAgICAgICAg
Tm9SZWRpcmVjdGlvbiwKKyAgICAgICAgTm90Q2FjaGVkUmVkaXJlY3Rpb24sCisgICAgICAgIENh
Y2hlZFJlZGlyZWN0aW9uCisgICAgfTsKKyAgICBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMoKQor
ICAgICAgICA6IHN0YXR1cyhOb1JlZGlyZWN0aW9uKQorICAgICAgICAsIGVuZE9mVmFsaWRpdHko
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkKKyAgICB7IH0KKyAgICBTdGF0dXMg
c3RhdHVzOworICAgIGRvdWJsZSBlbmRPZlZhbGlkaXR5OworfTsKKworZG91YmxlIGNvbXB1dGVD
dXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBkb3VibGUgcmVzcG9uc2VUaW1lc3Rh
bXApOworZG91YmxlIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGRvdWJsZSByZXNwb25zZVRpbWVzdGFtcCk7Cit2b2lkIHVwZGF0
ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9uKFJlc291cmNlUmVzcG9uc2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwordm9pZCB1cGRhdGVSZWRp
cmVjdENoYWluU3RhdHVzKFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKK2Jvb2wgcmVkaXJlY3RDaGFpbkFsbG93c1JldXNlKFJlZGlyZWN0Q2hhaW5D
YWNoZVN0YXR1cyk7CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE3NTMzOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMsNyArMyw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVl
bGxlckBrZGUub3JnKQogICAgIENvcHlyaWdodCAoQykgMjAwMiBXYWxkbyBCYXN0aWFuIChiYXN0
aWFuQGtkZS5vcmcpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53
ZWluaWdAZ21haWwuY29tKQotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTEsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMDQsNiArMTA0LDIyIEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRVcGRhdGVIZWFkZXJBZnQKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlvbihSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3Bv
bnNlKQoreworICAgIC8vIFJGQzI2MTYgMTAuMy41CisgICAgLy8gVXBkYXRlIGNhY2hlZCBoZWFk
ZXJzIGZyb20gdGhlIDMwNCByZXNwb25zZQorICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDog
dmFsaWRhdGluZ1Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkgeworICAgICAgICAvLyBFbnRp
dHkgaGVhZGVycyBzaG91bGQgbm90IGJlIHNlbnQgYnkgc2VydmVycyB3aGVuIGdlbmVyYXRpbmcg
YSAzMDQKKyAgICAgICAgLy8gcmVzcG9uc2U7IG1pc2NvbmZpZ3VyZWQgc2VydmVycyBzZW5kIHRo
ZW0gYW55d2F5LiBXZSBzaG91bGRuJ3QgYWxsb3cKKyAgICAgICAgLy8gc3VjaCBoZWFkZXJzIHRv
IHVwZGF0ZSB0aGUgb3JpZ2luYWwgcmVxdWVzdC4gV2UnbGwgYmFzZSB0aGlzIG9uIHRoZQorICAg
ICAgICAvLyBsaXN0IGRlZmluZWQgYnkgUkZDMjYxNiA3LjEsIHdpdGggYSBmZXcgYWRkaXRpb25z
IGZvciBleHRlbnNpb24gaGVhZGVycworICAgICAgICAvLyB3ZSBjYXJlIGFib3V0LgorICAgICAg
ICBpZiAoIXNob3VsZFVwZGF0ZUhlYWRlckFmdGVyUmV2YWxpZGF0aW9uKGhlYWRlci5rZXkpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChoZWFkZXIua2V5LCBoZWFkZXIudmFsdWUpOworICAgIH0KK30KKwogc3RhdGljIFJlc291cmNl
TG9hZFByaW9yaXR5IGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZShDYWNoZWRSZXNvdXJj
ZTo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTQ2LDE4ICsxNjIsNiBA
QCBzdGF0aWMgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWFkRGVjCiAgICAgcmV0dXJuIG1l
bW9yeUNhY2hlKCktPmRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoKTsKIH0KIAotc3Rh
dGljIGRvdWJsZSBjdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBk
b3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCi17Ci0gICAgLy8gUkZDMjYxNiAxMy4yLjMKLSAgICAv
LyBObyBjb21wZW5zYXRpb24gZm9yIGxhdGVuY3kgYXMgdGhhdCBpcyBub3QgdGVycmlibHkgaW1w
b3J0YW50IGluIHByYWN0aWNlCi0gICAgZG91YmxlIGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUo
KTsKLSAgICBkb3VibGUgYXBwYXJlbnRBZ2UgPSBzdGQ6OmlzZmluaXRlKGRhdGVWYWx1ZSkgPyBz
dGQ6Om1heCgwLiwgcmVzcG9uc2VUaW1lc3RhbXAgLSBkYXRlVmFsdWUpIDogMDsKLSAgICBkb3Vi
bGUgYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKTsKLSAgICBkb3VibGUgY29ycmVjdGVkUmVjZWl2
ZWRBZ2UgPSBzdGQ6OmlzZmluaXRlKGFnZVZhbHVlKSA/IHN0ZDo6bWF4KGFwcGFyZW50QWdlLCBh
Z2VWYWx1ZSkgOiBhcHBhcmVudEFnZTsKLSAgICBkb3VibGUgcmVzaWRlbnRUaW1lID0gY3VycmVu
dFRpbWUoKSAtIHJlc3BvbnNlVGltZXN0YW1wOwotICAgIHJldHVybiBjb3JyZWN0ZWRSZWNlaXZl
ZEFnZSArIHJlc2lkZW50VGltZTsKLX0KLQogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFJlZkNv
dW50ZWRMZWFrQ291bnRlciwgY2FjaGVkUmVzb3VyY2VMZWFrQ291bnRlciwgKCJDYWNoZWRSZXNv
dXJjZSIpKTsKIAogQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0eXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtMTky
LDggKzE5Niw2IEBAIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25zdCBSZXMKICAg
ICAsIG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoMCkKICAgICAsIG1fcmVzb3VyY2VUb1Jl
dmFsaWRhdGUoMCkKICAgICAsIG1fcHJveHlSZXNvdXJjZSgwKQotICAgICwgbV9yZWRpcmVjdENo
YWluQ2FjaGVTdGF0dXMoTm9SZWRpcmVjdGlvbikKLSAgICAsIG1fcmVkaXJlY3RDaGFpbkVuZE9m
VmFsaWRpdHkoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkKIHsKICAgICBBU1NF
UlQobV90eXBlID09IHVuc2lnbmVkKHR5cGUpKTsgLy8gbV90eXBlIGlzIGEgYml0ZmllbGQsIHNv
IHRoaXMgdGVzdHMgY2FyZWxlc3MgdXBkYXRlcyBvZiB0aGUgZW51bS4KICAgICBBU1NFUlQoc2Vz
c2lvbklELmlzVmFsaWQoKSk7CkBAIC00MDAsNyArNDAyLDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJj
ZTo6aXNFeHBpcmVkKCkgY29uc3QKICAgICBpZiAobV9yZXNwb25zZS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGN1cnJlbnRBZ2UobV9yZXNwb25zZSwgbV9y
ZXNwb25zZVRpbWVzdGFtcCkgPiBmcmVzaG5lc3NMaWZldGltZShtX3Jlc3BvbnNlKTsKKyAgICBy
ZXR1cm4gY29tcHV0ZUN1cnJlbnRBZ2UobV9yZXNwb25zZSwgbV9yZXNwb25zZVRpbWVzdGFtcCkg
PiBmcmVzaG5lc3NMaWZldGltZShtX3Jlc3BvbnNlKTsKIH0KIAogZG91YmxlIENhY2hlZFJlc291
cmNlOjpmcmVzaG5lc3NMaWZldGltZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkg
Y29uc3QKQEAgLTQxNSwyMCArNDE3LDcgQEAgZG91YmxlIENhY2hlZFJlc291cmNlOjpmcmVzaG5l
c3NMaWZldGltZQogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXgoKTsKICAgICB9CiAKLSAgICAvLyBSRkMyNjE2IDEzLjIuNAotICAgIGRvdWJsZSBtYXhBZ2VW
YWx1ZSA9IHJlc3BvbnNlLmNhY2hlQ29udHJvbE1heEFnZSgpOwotICAgIGlmIChzdGQ6OmlzZmlu
aXRlKG1heEFnZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG1heEFnZVZhbHVlOwotICAgIGRvdWJs
ZSBleHBpcmVzVmFsdWUgPSByZXNwb25zZS5leHBpcmVzKCk7Ci0gICAgZG91YmxlIGRhdGVWYWx1
ZSA9IHJlc3BvbnNlLmRhdGUoKTsKLSAgICBkb3VibGUgY3JlYXRpb25UaW1lID0gc3RkOjppc2Zp
bml0ZShkYXRlVmFsdWUpID8gZGF0ZVZhbHVlIDogbV9yZXNwb25zZVRpbWVzdGFtcDsKLSAgICBp
ZiAoc3RkOjppc2Zpbml0ZShleHBpcmVzVmFsdWUpKQotICAgICAgICByZXR1cm4gZXhwaXJlc1Zh
bHVlIC0gY3JlYXRpb25UaW1lOwotICAgIGRvdWJsZSBsYXN0TW9kaWZpZWRWYWx1ZSA9IHJlc3Bv
bnNlLmxhc3RNb2RpZmllZCgpOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGxhc3RNb2RpZmllZFZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIChjcmVhdGlvblRpbWUgLSBsYXN0TW9kaWZpZWRWYWx1ZSkg
KiAwLjE7Ci0gICAgLy8gSWYgbm8gY2FjaGUgaGVhZGVycyBhcmUgcHJlc2VudCwgdGhlIHNwZWNp
ZmljYXRpb24gbGVhdmVzIHRoZSBkZWNpc2lvbiB0byB0aGUgVUEuIE90aGVyIGJyb3dzZXJzIHNl
ZW0gdG8gb3B0IGZvciAwLgotICAgIHJldHVybiAwOworICAgIHJldHVybiBjb21wdXRlRnJlc2hu
ZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBtX3Jlc3BvbnNlVGltZXN0YW1wKTsK
IH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtNDM2LDE5ICs0MjUsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgbV9yZXF1ZXN0
ZWRGcm9tTmV0d29ya2luZ0xheWVyID0gdHJ1ZTsKICAgICBpZiAocmVzcG9uc2UuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBpZiAobV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMgPT0g
Tm90Q2FjaGVkUmVkaXJlY3Rpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAocmVzcG9uc2Uu
Y2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkKLSAgICAgICAgfHwgcmVzcG9uc2UuY2FjaGVD
b250cm9sQ29udGFpbnNOb0NhY2hlKCkKLSAgICAgICAgfHwgcmVzcG9uc2UuY2FjaGVDb250cm9s
Q29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpKQotICAgICAgICBtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0
YXR1cyA9IE5vdENhY2hlZFJlZGlyZWN0aW9uOwotICAgIGVsc2UgewotICAgICAgICBtX3JlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cyA9IENhY2hlZFJlZGlyZWN0aW9uOwotICAgICAgICBkb3VibGUg
cmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOwotICAgICAgICAvLyBTdG9yZSB0aGUg
bmVhcmVzdCBlbmQgb2YgY2FjaGUgdmFsaWRpdHkgZGF0ZQotICAgICAgICBtX3JlZGlyZWN0Q2hh
aW5FbmRPZlZhbGlkaXR5ID0gc3RkOjptaW4obV9yZWRpcmVjdENoYWluRW5kT2ZWYWxpZGl0eSwg
Ci0gICAgICAgICAgICByZXNwb25zZVRpbWVzdGFtcCArIGZyZXNobmVzc0xpZmV0aW1lKHJlc3Bv
bnNlKSAtIGN1cnJlbnRBZ2UocmVzcG9uc2UsIHJlc3BvbnNlVGltZXN0YW1wKSk7Ci0gICAgfQor
ICAgIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMobV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMs
IHJlc3BvbnNlKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTczMywxOCArNzEwLDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlUmVzcG9uc2VBZnRlcgogewogICAgIG1fcmVzcG9uc2VU
aW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOwogCi0gICAgLy8gUkZDMjYxNiAxMC4zLjUKLSAgICAv
LyBVcGRhdGUgY2FjaGVkIGhlYWRlcnMgZnJvbSB0aGUgMzA0IHJlc3BvbnNlCi0gICAgZm9yIChj
b25zdCBhdXRvJiBoZWFkZXIgOiB2YWxpZGF0aW5nUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygp
KSB7Ci0gICAgICAgIC8vIEVudGl0eSBoZWFkZXJzIHNob3VsZCBub3QgYmUgc2VudCBieSBzZXJ2
ZXJzIHdoZW4gZ2VuZXJhdGluZyBhIDMwNAotICAgICAgICAvLyByZXNwb25zZTsgbWlzY29uZmln
dXJlZCBzZXJ2ZXJzIHNlbmQgdGhlbSBhbnl3YXkuIFdlIHNob3VsZG4ndCBhbGxvdwotICAgICAg
ICAvLyBzdWNoIGhlYWRlcnMgdG8gdXBkYXRlIHRoZSBvcmlnaW5hbCByZXF1ZXN0LiBXZSdsbCBi
YXNlIHRoaXMgb24gdGhlCi0gICAgICAgIC8vIGxpc3QgZGVmaW5lZCBieSBSRkMyNjE2IDcuMSwg
d2l0aCBhIGZldyBhZGRpdGlvbnMgZm9yIGV4dGVuc2lvbiBoZWFkZXJzCi0gICAgICAgIC8vIHdl
IGNhcmUgYWJvdXQuCi0gICAgICAgIGlmICghc2hvdWxkVXBkYXRlSGVhZGVyQWZ0ZXJSZXZhbGlk
YXRpb24oaGVhZGVyLmtleSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9yZXNw
b25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaGVhZGVyLmtleSwgaGVhZGVyLnZhbHVlKTsKLSAgICB9
CisgICAgdXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24obV9yZXNwb25zZSwg
dmFsaWRhdGluZ1Jlc3BvbnNlKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVnaXN0ZXJI
YW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKiBoKQpAQCAtODA3LDE1ICs3NzMsNyBAQCBi
b29sIENhY2hlZFJlc291cmNlOjptdXN0UmV2YWxpZGF0ZUR1ZVRvCiAKIGJvb2wgQ2FjaGVkUmVz
b3VyY2U6OnJlZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZSgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICht
X3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cykgewotICAgIGNhc2UgTm9SZWRpcmVjdGlvbjoKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBOb3RDYWNoZWRSZWRpcmVjdGlvbjoKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgQ2FjaGVkUmVkaXJlY3Rpb246Ci0gICAgICAgIHJl
dHVybiBjdXJyZW50VGltZSgpIDw9IG1fcmVkaXJlY3RDaGFpbkVuZE9mVmFsaWRpdHk7Ci0gICAg
fQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXZWJDb3JlOjpyZWRpcmVjdENoYWluQWxs
b3dzUmV1c2UobV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMpOwogfQogCiB1bnNpZ25lZCBDYWNo
ZWRSZXNvdXJjZTo6b3ZlcmhlYWRTaXplKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiAxNzUzMzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBDYWNoZWRSZXNvdXJjZV9oCiAKICNpbmNsdWRlICJD
YWNoZVBvbGljeS5oIgorI2luY2x1ZGUgIkNhY2hlVmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKQEAgLTg4LDEyICs4OSw2IEBAIHB1YmxpYzoKICAgICAg
ICAgRGVjb2RlRXJyb3IKICAgICB9OwogCi0gICAgZW51bSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0
dXMgewotICAgICAgICBOb1JlZGlyZWN0aW9uLAotICAgICAgICBOb3RDYWNoZWRSZWRpcmVjdGlv
biwKLSAgICAgICAgQ2FjaGVkUmVkaXJlY3Rpb24KLSAgICB9OwotCiAgICAgQ2FjaGVkUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVHlwZSwgU2Vzc2lvbklEKTsKICAgICB2aXJ0dWFs
IH5DYWNoZWRSZXNvdXJjZSgpOwogCkBAIC0zNTgsNyArMzUzLDYgQEAgcHJpdmF0ZToKICAgICBI
YXNoU2V0PENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSo+IG1faGFuZGxlc1RvUmV2YWxpZGF0ZTsK
IAogICAgIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyBtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1
czsKLSAgICBkb3VibGUgbV9yZWRpcmVjdENoYWluRW5kT2ZWYWxpZGl0eTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="265394"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240622</attachid>
            <date>2014-10-29 14:15:12 -0700</date>
            <delta_ts>2014-10-29 14:21:51 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>validation-functions-2.patch</filename>
            <type>text/plain</type>
            <size>27089</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NTM0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTEwLTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2FjaGUgdmFsaWRp
dHkgY29tcHV0YXRpb24gZnVuY3Rpb25zIG91dCBvZiBDYWNoZWRSZXNvdXJjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBUaGVzZSBjYW4gYmUgdXNlZCB0
byBpbXBsZW1lbnQgY2FjaGUgbG9naWMgb24gV2ViS2l0IGxldmVsLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0NhY2hlVmFsaWRhdGlvbi5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVSZWRpcmVjdENoYWluU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
ZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlVmFsaWRhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6
UmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0
ZXJSZXZhbGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OkNhY2hl
ZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjppc0V4cGlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xpZmV0aW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlk
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0Q2hhaW5B
bGxvd3NSZXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50QWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKwogMjAxNC0xMC0yOSAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE3NTM0Mi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNzUz
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTg1Nyw2ICsxODU3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorICAgIGxv
YWRlci9jYWNoZS9DYWNoZVZhbGlkYXRpb24uY3BwCiAgICAgbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcAogCiAgICAgbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTc1MzQzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc3OSw2ICs3NzksNyBAQCBfX1pON1dlYkNvcmUx
N1NRTGl0ZVRyYW5zYWN0aW9uQzFFUk5TXzE0CiBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0
aW9uRDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFt
ZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNv
dXJjZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKK19f
Wk43V2ViQ29yZTE3Y29tcHV0ZUN1cnJlbnRBZ2VFUktOU18xNlJlc291cmNlUmVzcG9uc2VFZAog
X19aTjdXZWJDb3JlMTdlbmNvZGVGb3JGaWxlTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE3ZXhlY1N0YXRlRnJvbVBhZ2VFUk5TXzE1RE9NV3JhcHBlcldvcmxkRVBOU180UGFnZUUK
IF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgpAQCAtODQ0LDYgKzg0NSw3IEBAIF9f
Wk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTExc2V0UHIKIF9fWk43V2ViQ29yZTE5UmVz
b3VyY2VSZXF1ZXN0QmFzZTEzc2V0SFRUUE1ldGhvZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1c2V0SFRUUFJlZmVycmVyRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMThzZXRIVFRQQ29udGVudFR5cGVF
UktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxOHNldEhU
VFBIZWFkZXJGaWVsZEVOU18xNEhUVFBIZWFkZXJOYW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTlzZXRIVFRQSGVhZGVyRmllbGRzRU5TXzEzSFRU
UEhlYWRlck1hcEUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIyZGVmYXVsdFRp
bWVvdXRJbnRlcnZhbEV2CiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyNHNfZGVm
YXVsdFRpbWVvdXRJbnRlcnZhbEUKQEAgLTEwNDIsMTAgKzEwNDQsMTIgQEAgX19aTjdXZWJDb3Jl
MjRkZWxldGVDb29raWVzRm9ySG9zdG5hbWVFUgogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJ
dGVtQ2hhbmdlZEUKIF9fWk43V2ViQ29yZTI0cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50RVJLTjNX
VEY2U3RyaW5nRVMzXworX19aTjdXZWJDb3JlMjRyZWRpcmVjdENoYWluQWxsb3dzUmV1c2VFTlNf
MjRSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXNFCiBfX1pON1dlYkNvcmUyNWFkZExhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHZQRnZTMF9FCiBfX1pON1dlYkNvcmUyNWNvbXB1dGVWaWV3cG9ydEF0dHJp
YnV0ZXNFTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0VpaWlmTlNfN0ludFNpemVFCiBfX1pON1dlYkNv
cmUyNWNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmdFdgogX19aTjdXZWJDb3JlMjVnZXRPdXRPZkxp
bmVDYWNoZWRXcmFwcGVyRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU180Tm9kZUUKK19fWk43
V2ViQ29yZTI1dXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1c0VSTlNfMjRSZWRpcmVjdENoYWluQ2Fj
aGVTdGF0dXNFUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUyNkNvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyMTZjb250ZXh0RGVzdHJveWVkRXYKIF9fWk43V2ViQ29yZTI2Q29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJDMkVQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RQog
X19aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckQyRXYKQEAgLTEwODcsNiAr
MTA5MSw4IEBAIF9fWk43V2ViQ29yZTMzc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE0KIF9fWk43
V2ViQ29yZTM2c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lRVJLTjNXVEY2U3Ry
aW5nRVMzXwogX19aTjdXZWJDb3JlMzdXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlMTFtb3ZlV2lkZ2V0c0V2CiBfX1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNT
dXNwZW5zaW9uU2NvcGUzNXNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50RQorX19a
TjdXZWJDb3JlMzdjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5RVJLTlNfMTZS
ZXNvdXJjZVJlc3BvbnNlRWQKK19fWk43V2ViQ29yZTM4dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0
ZXJSZXZhbGlkYXRpb25FUk5TXzE2UmVzb3VyY2VSZXNwb25zZUVSS1MwXwogX19aTjdXZWJDb3Jl
M1VSTDEwaW52YWxpZGF0ZUV2CiBfX1pON1dlYkNvcmUzVVJMMTFzZXRQcm90b2NvbEVSS04zV1RG
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTNVUkw3c2V0UGF0aEVSS04zV1RGNlN0cmluZ0UKQEAgLTE4
NDIsNyArMTg0OCwxMSBAQCBfX1pOSzdXZWJDb3JlMTlQcm90ZWN0aW9uU3BhY2VCYXNlNHBvcnRF
CiBfX1pOSzdXZWJDb3JlMTlQcm90ZWN0aW9uU3BhY2VCYXNlNXJlYWxtRXYKIF9fWk5LN1dlYkNv
cmUxOVByb3RlY3Rpb25TcGFjZUJhc2U3aXNQcm94eUV2CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJj
ZVJlcXVlc3RCYXNlMTBodHRwTWV0aG9kRXYKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVz
dEJhc2UxMWNhY2hlUG9saWN5RXYKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2Ux
M2lzQ29uZGl0aW9uYWxFdgogX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1aHR0
cENvbnRlbnRUeXBlRXYKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxNWh0dHBI
ZWFkZXJGaWVsZEVOU18xNEhUVFBIZWFkZXJOYW1lRQorX19aTks3V2ViQ29yZTE5UmVzb3VyY2VS
ZXF1ZXN0QmFzZTE1aHR0cEhlYWRlckZpZWxkRVJLTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29y
ZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIwZmlyc3RQYXJ0eUZvckNvb2tpZXNFdgogX19aTks3V2Vi
Q29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTN1cmxFdgogX19aTks3V2ViQ29yZTE5UmVzb3VyY2VS
ZXF1ZXN0QmFzZTZpc051bGxFdgpAQCAtMTg2Myw2ICsxODczLDEwIEBAIF9fWk5LN1dlYkNvcmUy
MFJlc291cmNlUmVzcG9uc2VCYXNlMTZ0ZXgKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlMTdzdWdnZXN0ZWRGaWxlbmFtZUV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTIxZXhwZWN0ZWRDb250ZW50TGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNl
UmVzcG9uc2VCYXNlMjJpbmNsdWRlQ2VydGlmaWNhdGVJbmZvRXYKK19fWk5LN1dlYkNvcmUyMFJl
c291cmNlUmVzcG9uc2VCYXNlMjNoYXNDYWNoZVZhbGlkYXRvckZpZWxkc0V2CitfX1pOSzdXZWJD
b3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI3Y2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlRXYK
K19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjdjYWNoZUNvbnRyb2xDb250YWlu
c05vU3RvcmVFdgorX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UzNGNhY2hlQ29u
dHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGVFdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNw
b25zZUJhc2UzdXJsRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlNmlzSFRU
UEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZThsYXp5SW5pdEVOUzBfOUlu
aXRMZXZlbEUKQEAgLTIyNzksNiArMjI5Myw3IEBAIF9fWk43V2ViQ29yZTE0Y29va2llc0VuYWJs
ZWRFUktOU18yMU5ldHcKIF9fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0NDF1cGRhdGVGcm9t
RGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllc0VSS1MwXwogX19aTjdXZWJDb3JlMTZGb250
UGxhdGZvcm1EYXRhQzFFUDZOU0ZvbnRmYmJiTlNfMTVGb250T3JpZW50YXRpb25FTlNfMTZGb250
V2lkdGhWYXJpYW50RQogX19aTjdXZWJDb3JlMTZGb250UGxhdGZvcm1EYXRhQzJFUDZOU0ZvbnRm
YmJiTlNfMTVGb250T3JpZW50YXRpb25FTlNfMTZGb250V2lkdGhWYXJpYW50RQorX19aTjdXZWJD
b3JlMTZKU1hNTEh0dHBSZXF1ZXN0OXRvV3JhcHBlZEVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJD
b3JlMTZjb2xvckZyb21OU0NvbG9yRVA3TlNDb2xvcgogX19aTjdXZWJDb3JlMTZkZWxldGVBbGxD
b29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xv
c2luZ0ludFJlY3RFUks3X05TUmVjdApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNzUzNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03
MzQwLDYgKzczNDAsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hl
XENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZWRUZXh0VHJhY2suY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXENhY2hlVmFsaWRhdGlvbi5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcY2FjaGVcTWVtb3J5Q2Fj
aGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cQXVk
aW9IYXJkd2FyZUxpc3RlbmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXENhbGN1bGF0aW9uVmFsdWUuY3BwIiAvPgpAQCAtMTkzMDgsNiArMTkzMDksNyBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFRleHRUcmFjay5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFhTTFN0
eWxlU2hlZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxD
YWNoZVBvbGljeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hl
XENhY2hlVmFsaWRhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVy
XGNhY2hlXE1lbW9yeUNhY2hlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxhdWRpb1xBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXENhbGN1bGF0aW9uVmFsdWUuaCIgLz4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE3NTM0MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjE2NCw2ICs2MTY0LDggQEAKIAkJRTQ1MzkwNEQwRUFG
RDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTM5MDNDMEVBRkQ2MzcwMDM2OTVDOCAvKiBXaWRnZXRJT1Mu
bW0gKi87IH07CiAJCUU0NTM5MEFFMEVBRkY0QjUwMDM2OTVDOCAvKiBTeXN0ZW1NZW1vcnlJT1Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1Mzkw
QUQwRUFGRjRCNTAwMzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi87IH07CiAJCUU0NjJB
NEExMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NjJBNEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJ
bnRQb2ludEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFNDY3NjgwRTFBMDE3N0VFMDBCOUUyNkIgLyogQ2FjaGVWYWxpZGF0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Njc2ODBEMUEw
MTc3RUUwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uY3BwICovOyB9OworCQlFNDY3NjgxMDFB
MDE3N0Y5MDBCOUUyNkIgLyogQ2FjaGVWYWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDY3NjgwRjFBMDE3N0Y5MDBCOUUyNkIgLyogQ2Fj
aGVWYWxpZGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQ2QTJCMUMxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ2QTJCMUIxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2QTJCMUQxN0NBNzZC
MTAwMERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ3MTI3Q0ExNjM0MzhBMTAwRUQ2RjVBIC8q
IFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3QTk3Q0UxNjMwNTlGQzAwNURDRDk5IC8qIFN0eWxlSW52
YWxpZGF0aW9uQW5hbHlzaXMuY3BwICovOyB9OwpAQCAtMTM2OTMsNiArMTM2OTUsOCBAQAogCQlF
NDUzOTAzQzBFQUZENjM3MDAzNjk1QzggLyogV2lkZ2V0SU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2lkZ2V0SU9TLm1tOyBwYXRoID0gaW9zL1dpZGdldElP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwQUQwRUFGRjRCNTAwMzY5
NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTeXN0ZW1NZW1vcnlJT1MuY3BwOyBwYXRoID0gaW9zL1N5c3RlbU1lbW9yeUlPUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NjJBNEEwMTEzRTcxQkUwMDRBNDIy
MCAvKiBJbnRQb2ludEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
UG9pbnRIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0Njc2ODBEMUEwMTc3
RUUwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ2FjaGVWYWxpZGF0aW9uLmNwcDsgcGF0aCA9IGxvYWRlci9jYWNoZS9D
YWNoZVZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUU0Njc2
ODBGMUEwMTc3RjkwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ2FjaGVWYWxpZGF0aW9uLmg7IHBhdGggPSBsb2FkZXIvY2FjaGUv
Q2FjaGVWYWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJRTQ2QTJC
MUIxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ2QTJCMUQxN0NBNzZCMTAw
MERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0Nzc4QjdEMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tRXZlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2MjUsNiArMTk2MjksOCBAQAogCQkJCUJDQjE2
QzBFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCAqLywKIAkJCQlC
Q0IxNkMwRjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oICovLAogCQkJ
CUY1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZVBvbGljeS5oICovLAorCQkJCUU0Njc2
ODBEMUEwMTc3RUUwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uY3BwICovLAorCQkJCUU0Njc2
ODBGMUEwMTc3RjkwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uaCAqLywKIAkJCQlCQ0IxNkJG
RTA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuY3BwICovLAogCQkJCUJDQjE2QkZGMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovLAogCQkJKTsKQEAgLTIzNjY5LDYgKzIz
Njc1LDcgQEAKIAkJCQk5NzVDQTI4QjEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMTcyQUY2RTE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGht
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg0MjE4MjQyNTNBMDBEODRDRDkgLyogQ3J5cHRv
QWxnb3JpdGhtQUVTX0NCQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ2NzY4MTAxQTAxNzdGOTAw
QjlFMjZCIC8qIENhY2hlVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFGRTEzN0Ix
ODREMjFCQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobUFFU19LVy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEyNUY4M0ExODI0MTA0ODAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFlc0NiY1Bh
cmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5QUMzRjcxODI0RTVEMTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzE4OSw2
ICsyNzE5Niw3IEBACiAJCQkJRkQzMTYwQkIxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvQnVzTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwN0QxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlv
Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAwNDEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0Njc2ODBFMUEwMTc3RUUw
MEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwRUVF
MEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkQzMTYwQkMxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMDcxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVWYWxpZGF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDkyIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMTk5OCBMYXJzIEtu
b2xsIChrbm9sbEBtcGktaGQubXBnLmRlKQorICAgIENvcHlyaWdodCAoQykgMjAwMSBEaXJrIE11
ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDIgV2FsZG8gQmFz
dGlhbiAoYmFzdGlhbkBrZGUub3JnKQorICAgIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMSwg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNhY2hlVmFsaWRhdGlvbi5oIgorCisjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2RvdWJsZSBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKQoreworICAgIC8vIFJGQzI2MTYg
MTMuMi4zCisgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRoYXQgaXMgbm90
IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZQorICAgIGRvdWJsZSBkYXRlVmFsdWUgPSBy
ZXNwb25zZS5kYXRlKCk7CisgICAgZG91YmxlIGFwcGFyZW50QWdlID0gc3RkOjppc2Zpbml0ZShk
YXRlVmFsdWUpID8gc3RkOjptYXgoMC4sIHJlc3BvbnNlVGltZXN0YW1wIC0gZGF0ZVZhbHVlKSA6
IDA7CisgICAgZG91YmxlIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCk7CisgICAgZG91YmxlIGNv
cnJlY3RlZFJlY2VpdmVkQWdlID0gc3RkOjppc2Zpbml0ZShhZ2VWYWx1ZSkgPyBzdGQ6Om1heChh
cHBhcmVudEFnZSwgYWdlVmFsdWUpIDogYXBwYXJlbnRBZ2U7CisgICAgZG91YmxlIHJlc2lkZW50
VGltZSA9IGN1cnJlbnRUaW1lKCkgLSByZXNwb25zZVRpbWVzdGFtcDsKKyAgICByZXR1cm4gY29y
cmVjdGVkUmVjZWl2ZWRBZ2UgKyByZXNpZGVudFRpbWU7Cit9CisKK2RvdWJsZSBjb21wdXRlRnJl
c2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCit7CisgICAgQVNTRVJUKHJlc3BvbnNlLnVy
bCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CisgICAgLy8gUkZDMjYxNiAxMy4yLjQKKyAg
ICBkb3VibGUgbWF4QWdlVmFsdWUgPSByZXNwb25zZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKTsKKyAg
ICBpZiAoc3RkOjppc2Zpbml0ZShtYXhBZ2VWYWx1ZSkpCisgICAgICAgIHJldHVybiBtYXhBZ2VW
YWx1ZTsKKyAgICBkb3VibGUgZXhwaXJlc1ZhbHVlID0gcmVzcG9uc2UuZXhwaXJlcygpOworICAg
IGRvdWJsZSBkYXRlVmFsdWUgPSByZXNwb25zZS5kYXRlKCk7CisgICAgZG91YmxlIGNyZWF0aW9u
VGltZSA9IHN0ZDo6aXNmaW5pdGUoZGF0ZVZhbHVlKSA/IGRhdGVWYWx1ZSA6IHJlc3BvbnNlVGlt
ZXN0YW1wOworICAgIGlmIChzdGQ6OmlzZmluaXRlKGV4cGlyZXNWYWx1ZSkpCisgICAgICAgIHJl
dHVybiBleHBpcmVzVmFsdWUgLSBjcmVhdGlvblRpbWU7CisgICAgZG91YmxlIGxhc3RNb2RpZmll
ZFZhbHVlID0gcmVzcG9uc2UubGFzdE1vZGlmaWVkKCk7CisgICAgaWYgKHN0ZDo6aXNmaW5pdGUo
bGFzdE1vZGlmaWVkVmFsdWUpKQorICAgICAgICByZXR1cm4gKGNyZWF0aW9uVGltZSAtIGxhc3RN
b2RpZmllZFZhbHVlKSAqIDAuMTsKKyAgICAvLyBJZiBubyBjYWNoZSBoZWFkZXJzIGFyZSBwcmVz
ZW50LCB0aGUgc3BlY2lmaWNhdGlvbiBsZWF2ZXMgdGhlIGRlY2lzaW9uIHRvIHRoZSBVQS4gT3Ro
ZXIgYnJvd3NlcnMgc2VlbSB0byBvcHQgZm9yIDAuCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
dXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyhSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMmIHJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7
CisgICAgaWYgKHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPT0gUmVkaXJlY3RDaGFp
bkNhY2hlU3RhdHVzOjpOb3RDYWNoZWRSZWRpcmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSB8fCByZXNwb25zZS5j
YWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSB8fCByZXNwb25zZS5jYWNoZUNvbnRyb2xDb250
YWluc011c3RSZXZhbGlkYXRlKCkpIHsKKyAgICAgICAgcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
LnN0YXR1cyA9IFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm90Q2FjaGVkUmVkaXJlY3Rpb247
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLnN0
YXR1cyA9IFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Q2FjaGVkUmVkaXJlY3Rpb247CisgICAg
ZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICAvLyBTdG9yZSB0
aGUgbmVhcmVzdCBlbmQgb2YgY2FjaGUgdmFsaWRpdHkgZGF0ZQorICAgIGRvdWJsZSBlbmRPZlZh
bGlkaXR5ID0gcmVzcG9uc2VUaW1lc3RhbXAgKyBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JI
VFRQRmFtaWx5KHJlc3BvbnNlLCByZXNwb25zZVRpbWVzdGFtcCkgLSBjb21wdXRlQ3VycmVudEFn
ZShyZXNwb25zZSwgcmVzcG9uc2VUaW1lc3RhbXApOworICAgIHJlZGlyZWN0Q2hhaW5DYWNoZVN0
YXR1cy5lbmRPZlZhbGlkaXR5ID0gc3RkOjptaW4ocmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLmVu
ZE9mVmFsaWRpdHksIGVuZE9mVmFsaWRpdHkpOworfQorCitib29sIHJlZGlyZWN0Q2hhaW5BbGxv
d3NSZXVzZShSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMgcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
KQoreworICAgIHN3aXRjaCAocmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLnN0YXR1cykgeworICAg
IGNhc2UgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpOb1JlZGlyZWN0aW9uOgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm90Q2FjaGVk
UmVkaXJlY3Rpb246CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIFJlZGlyZWN0Q2hh
aW5DYWNoZVN0YXR1czo6Q2FjaGVkUmVkaXJlY3Rpb246CisgICAgICAgIHJldHVybiBjdXJyZW50
VGltZSgpIDw9IHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5OworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZVZhbGlkYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVWYWxpZGF0aW9uLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVWYWxpZGF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDE5OTggTGFycyBLbm9sbCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgICAgQ29weXJpZ2h0IChDKSAy
MDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQorICAgIENvcHlyaWdodCAo
QykgMjAwNC0yMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
aWZuZGVmIENhY2hlVmFsaWRhdGlvbl9oCisjZGVmaW5lIENhY2hlVmFsaWRhdGlvbl9oCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKKworc3RydWN0IFJl
ZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyB7CisgICAgZW51bSBTdGF0dXMgeworICAgICAgICBOb1Jl
ZGlyZWN0aW9uLAorICAgICAgICBOb3RDYWNoZWRSZWRpcmVjdGlvbiwKKyAgICAgICAgQ2FjaGVk
UmVkaXJlY3Rpb24KKyAgICB9OworICAgIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cygpCisgICAg
ICAgIDogc3RhdHVzKE5vUmVkaXJlY3Rpb24pCisgICAgICAgICwgZW5kT2ZWYWxpZGl0eShzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQorICAgIHsgfQorICAgIFN0YXR1cyBzdGF0
dXM7CisgICAgZG91YmxlIGVuZE9mVmFsaWRpdHk7Cit9OworCitkb3VibGUgY29tcHV0ZUN1cnJl
bnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGRvdWJsZSByZXNwb25zZVRpbWVzdGFtcCk7
Citkb3VibGUgY29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKTsKK3ZvaWQgdXBkYXRlUmVz
cG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24oUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7Cit2b2lkIHVwZGF0ZVJlZGlyZWN0
Q2hhaW5TdGF0dXMoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNhY2hl
U3RhdHVzKTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gMTc1MzQzKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Myw3ICszLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCiAgICAgQ29weXJpZ2h0IChDKSAyMDAyIFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5A
a2RlLm9yZykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5p
Z0BnbWFpbC5jb20pCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEwNCw2ICsxMDQsMjIgQEAgc3RhdGljIGlu
bGluZSBib29sIHNob3VsZFVwZGF0ZUhlYWRlckFmdAogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIHVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9uKFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2Up
Cit7CisgICAgLy8gUkZDMjYxNiAxMC4zLjUKKyAgICAvLyBVcGRhdGUgY2FjaGVkIGhlYWRlcnMg
ZnJvbSB0aGUgMzA0IHJlc3BvbnNlCisgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiB2YWxp
ZGF0aW5nUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSB7CisgICAgICAgIC8vIEVudGl0eSBo
ZWFkZXJzIHNob3VsZCBub3QgYmUgc2VudCBieSBzZXJ2ZXJzIHdoZW4gZ2VuZXJhdGluZyBhIDMw
NAorICAgICAgICAvLyByZXNwb25zZTsgbWlzY29uZmlndXJlZCBzZXJ2ZXJzIHNlbmQgdGhlbSBh
bnl3YXkuIFdlIHNob3VsZG4ndCBhbGxvdworICAgICAgICAvLyBzdWNoIGhlYWRlcnMgdG8gdXBk
YXRlIHRoZSBvcmlnaW5hbCByZXF1ZXN0LiBXZSdsbCBiYXNlIHRoaXMgb24gdGhlCisgICAgICAg
IC8vIGxpc3QgZGVmaW5lZCBieSBSRkMyNjE2IDcuMSwgd2l0aCBhIGZldyBhZGRpdGlvbnMgZm9y
IGV4dGVuc2lvbiBoZWFkZXJzCisgICAgICAgIC8vIHdlIGNhcmUgYWJvdXQuCisgICAgICAgIGlm
ICghc2hvdWxkVXBkYXRlSGVhZGVyQWZ0ZXJSZXZhbGlkYXRpb24oaGVhZGVyLmtleSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGhl
YWRlci5rZXksIGhlYWRlci52YWx1ZSk7CisgICAgfQorfQorCiBzdGF0aWMgUmVzb3VyY2VMb2Fk
UHJpb3JpdHkgZGVmYXVsdFByaW9yaXR5Rm9yUmVzb3VyY2VUeXBlKENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xNDYsMTggKzE2Miw2IEBAIHN0
YXRpYyBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGRlYWREZWMKICAgICByZXR1cm4gbWVtb3J5
Q2FjaGUoKS0+ZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCgpOwogfQogCi1zdGF0aWMg
ZG91YmxlIGN1cnJlbnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGRvdWJs
ZSByZXNwb25zZVRpbWVzdGFtcCkKLXsKLSAgICAvLyBSRkMyNjE2IDEzLjIuMwotICAgIC8vIE5v
IGNvbXBlbnNhdGlvbiBmb3IgbGF0ZW5jeSBhcyB0aGF0IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRh
bnQgaW4gcHJhY3RpY2UKLSAgICBkb3VibGUgZGF0ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgpOwot
ICAgIGRvdWJsZSBhcHBhcmVudEFnZSA9IHN0ZDo6aXNmaW5pdGUoZGF0ZVZhbHVlKSA/IHN0ZDo6
bWF4KDAuLCByZXNwb25zZVRpbWVzdGFtcCAtIGRhdGVWYWx1ZSkgOiAwOwotICAgIGRvdWJsZSBh
Z2VWYWx1ZSA9IHJlc3BvbnNlLmFnZSgpOwotICAgIGRvdWJsZSBjb3JyZWN0ZWRSZWNlaXZlZEFn
ZSA9IHN0ZDo6aXNmaW5pdGUoYWdlVmFsdWUpID8gc3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZh
bHVlKSA6IGFwcGFyZW50QWdlOwotICAgIGRvdWJsZSByZXNpZGVudFRpbWUgPSBjdXJyZW50VGlt
ZSgpIC0gcmVzcG9uc2VUaW1lc3RhbXA7Ci0gICAgcmV0dXJuIGNvcnJlY3RlZFJlY2VpdmVkQWdl
ICsgcmVzaWRlbnRUaW1lOwotfQotCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoUmVmQ291bnRl
ZExlYWtDb3VudGVyLCBjYWNoZWRSZXNvdXJjZUxlYWtDb3VudGVyLCAoIkNhY2hlZFJlc291cmNl
IikpOwogCiBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBUeXBlIHR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0xOTIsOCAr
MTk2LDYgQEAgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0IFJlcwogICAgICwg
bV9vd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigwKQogICAgICwgbV9yZXNvdXJjZVRvUmV2YWxp
ZGF0ZSgwKQogICAgICwgbV9wcm94eVJlc291cmNlKDApCi0gICAgLCBtX3JlZGlyZWN0Q2hhaW5D
YWNoZVN0YXR1cyhOb1JlZGlyZWN0aW9uKQotICAgICwgbV9yZWRpcmVjdENoYWluRW5kT2ZWYWxp
ZGl0eShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQogewogICAgIEFTU0VSVCht
X3R5cGUgPT0gdW5zaWduZWQodHlwZSkpOyAvLyBtX3R5cGUgaXMgYSBiaXRmaWVsZCwgc28gdGhp
cyB0ZXN0cyBjYXJlbGVzcyB1cGRhdGVzIG9mIHRoZSBlbnVtLgogICAgIEFTU0VSVChzZXNzaW9u
SUQuaXNWYWxpZCgpKTsKQEAgLTQwMCw3ICs0MDIsNyBAQCBib29sIENhY2hlZFJlc291cmNlOjpp
c0V4cGlyZWQoKSBjb25zdAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gY3VycmVudEFnZShtX3Jlc3BvbnNlLCBtX3Jlc3Bv
bnNlVGltZXN0YW1wKSA+IGZyZXNobmVzc0xpZmV0aW1lKG1fcmVzcG9uc2UpOworICAgIHJldHVy
biBjb21wdXRlQ3VycmVudEFnZShtX3Jlc3BvbnNlLCBtX3Jlc3BvbnNlVGltZXN0YW1wKSA+IGZy
ZXNobmVzc0xpZmV0aW1lKG1fcmVzcG9uc2UpOwogfQogCiBkb3VibGUgQ2FjaGVkUmVzb3VyY2U6
OmZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBjb25z
dApAQCAtNDE1LDIwICs0MTcsNyBAQCBkb3VibGUgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xp
ZmV0aW1lCiAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgp
OwogICAgIH0KIAotICAgIC8vIFJGQzI2MTYgMTMuMi40Ci0gICAgZG91YmxlIG1heEFnZVZhbHVl
ID0gcmVzcG9uc2UuY2FjaGVDb250cm9sTWF4QWdlKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5pdGUo
bWF4QWdlVmFsdWUpKQotICAgICAgICByZXR1cm4gbWF4QWdlVmFsdWU7Ci0gICAgZG91YmxlIGV4
cGlyZXNWYWx1ZSA9IHJlc3BvbnNlLmV4cGlyZXMoKTsKLSAgICBkb3VibGUgZGF0ZVZhbHVlID0g
cmVzcG9uc2UuZGF0ZSgpOwotICAgIGRvdWJsZSBjcmVhdGlvblRpbWUgPSBzdGQ6OmlzZmluaXRl
KGRhdGVWYWx1ZSkgPyBkYXRlVmFsdWUgOiBtX3Jlc3BvbnNlVGltZXN0YW1wOwotICAgIGlmIChz
dGQ6OmlzZmluaXRlKGV4cGlyZXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBleHBpcmVzVmFsdWUg
LSBjcmVhdGlvblRpbWU7Ci0gICAgZG91YmxlIGxhc3RNb2RpZmllZFZhbHVlID0gcmVzcG9uc2Uu
bGFzdE1vZGlmaWVkKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5pdGUobGFzdE1vZGlmaWVkVmFsdWUp
KQotICAgICAgICByZXR1cm4gKGNyZWF0aW9uVGltZSAtIGxhc3RNb2RpZmllZFZhbHVlKSAqIDAu
MTsKLSAgICAvLyBJZiBubyBjYWNoZSBoZWFkZXJzIGFyZSBwcmVzZW50LCB0aGUgc3BlY2lmaWNh
dGlvbiBsZWF2ZXMgdGhlIGRlY2lzaW9uIHRvIHRoZSBVQS4gT3RoZXIgYnJvd3NlcnMgc2VlbSB0
byBvcHQgZm9yIDAuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNvbXB1dGVGcmVzaG5lc3NM
aWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9uc2UsIG1fcmVzcG9uc2VUaW1lc3RhbXApOwogfQog
CiB2b2lkIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC00MzYsMTkgKzQyNSw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2U6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICBtX3JlcXVlc3RlZEZy
b21OZXR3b3JraW5nTGF5ZXIgPSB0cnVlOwogICAgIGlmIChyZXNwb25zZS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGlmIChtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyA9PSBOb3RD
YWNoZWRSZWRpcmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChyZXNwb25zZS5jYWNo
ZUNvbnRyb2xDb250YWluc05vU3RvcmUoKQotICAgICAgICB8fCByZXNwb25zZS5jYWNoZUNvbnRy
b2xDb250YWluc05vQ2FjaGUoKQotICAgICAgICB8fCByZXNwb25zZS5jYWNoZUNvbnRyb2xDb250
YWluc011c3RSZXZhbGlkYXRlKCkpCi0gICAgICAgIG1fcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
ID0gTm90Q2FjaGVkUmVkaXJlY3Rpb247Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fcmVkaXJlY3RD
aGFpbkNhY2hlU3RhdHVzID0gQ2FjaGVkUmVkaXJlY3Rpb247Ci0gICAgICAgIGRvdWJsZSByZXNw
b25zZVRpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIC8vIFN0b3JlIHRoZSBuZWFy
ZXN0IGVuZCBvZiBjYWNoZSB2YWxpZGl0eSBkYXRlCi0gICAgICAgIG1fcmVkaXJlY3RDaGFpbkVu
ZE9mVmFsaWRpdHkgPSBzdGQ6Om1pbihtX3JlZGlyZWN0Q2hhaW5FbmRPZlZhbGlkaXR5LCAKLSAg
ICAgICAgICAgIHJlc3BvbnNlVGltZXN0YW1wICsgZnJlc2huZXNzTGlmZXRpbWUocmVzcG9uc2Up
IC0gY3VycmVudEFnZShyZXNwb25zZSwgcmVzcG9uc2VUaW1lc3RhbXApKTsKLSAgICB9CisgICAg
dXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyhtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cywgcmVz
cG9uc2UpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtNzMzLDE4ICs3MTAsNyBAQCB2b2lkIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVSZXNwb25zZUFmdGVyCiB7CiAgICAgbV9yZXNwb25zZVRpbWVz
dGFtcCA9IGN1cnJlbnRUaW1lKCk7CiAKLSAgICAvLyBSRkMyNjE2IDEwLjMuNQotICAgIC8vIFVw
ZGF0ZSBjYWNoZWQgaGVhZGVycyBmcm9tIHRoZSAzMDQgcmVzcG9uc2UKLSAgICBmb3IgKGNvbnN0
IGF1dG8mIGhlYWRlciA6IHZhbGlkYXRpbmdSZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsK
LSAgICAgICAgLy8gRW50aXR5IGhlYWRlcnMgc2hvdWxkIG5vdCBiZSBzZW50IGJ5IHNlcnZlcnMg
d2hlbiBnZW5lcmF0aW5nIGEgMzA0Ci0gICAgICAgIC8vIHJlc3BvbnNlOyBtaXNjb25maWd1cmVk
IHNlcnZlcnMgc2VuZCB0aGVtIGFueXdheS4gV2Ugc2hvdWxkbid0IGFsbG93Ci0gICAgICAgIC8v
IHN1Y2ggaGVhZGVycyB0byB1cGRhdGUgdGhlIG9yaWdpbmFsIHJlcXVlc3QuIFdlJ2xsIGJhc2Ug
dGhpcyBvbiB0aGUKLSAgICAgICAgLy8gbGlzdCBkZWZpbmVkIGJ5IFJGQzI2MTYgNy4xLCB3aXRo
IGEgZmV3IGFkZGl0aW9ucyBmb3IgZXh0ZW5zaW9uIGhlYWRlcnMKLSAgICAgICAgLy8gd2UgY2Fy
ZSBhYm91dC4KLSAgICAgICAgaWYgKCFzaG91bGRVcGRhdGVIZWFkZXJBZnRlclJldmFsaWRhdGlv
bihoZWFkZXIua2V5KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBIZWFkZXJGaWVsZChoZWFkZXIua2V5LCBoZWFkZXIudmFsdWUpOwotICAgIH0KKyAg
ICB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlvbihtX3Jlc3BvbnNlLCB2YWxp
ZGF0aW5nUmVzcG9uc2UpOwogfQogCiB2b2lkIENhY2hlZFJlc291cmNlOjpyZWdpc3RlckhhbmRs
ZShDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UqIGgpCkBAIC04MDcsMTUgKzc3Myw3IEBAIGJvb2wg
Q2FjaGVkUmVzb3VyY2U6Om11c3RSZXZhbGlkYXRlRHVlVG8KIAogYm9vbCBDYWNoZWRSZXNvdXJj
ZTo6cmVkaXJlY3RDaGFpbkFsbG93c1JldXNlKCkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG1fcmVk
aXJlY3RDaGFpbkNhY2hlU3RhdHVzKSB7Ci0gICAgY2FzZSBOb1JlZGlyZWN0aW9uOgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIE5vdENhY2hlZFJlZGlyZWN0aW9uOgotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBDYWNoZWRSZWRpcmVjdGlvbjoKLSAgICAgICAgcmV0dXJu
IGN1cnJlbnRUaW1lKCkgPD0gbV9yZWRpcmVjdENoYWluRW5kT2ZWYWxpZGl0eTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdlYkNvcmU6OnJlZGlyZWN0Q2hhaW5BbGxvd3NS
ZXVzZShtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyk7CiB9CiAKIHVuc2lnbmVkIENhY2hlZFJl
c291cmNlOjpvdmVyaGVhZFNpemUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDE3NTM0MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAjZGVmaW5lIENhY2hlZFJlc291cmNlX2gKIAogI2luY2x1ZGUgIkNhY2hl
UG9saWN5LmgiCisjaW5jbHVkZSAiQ2FjaGVWYWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRQcmlvcml0eS5oIgpAQCAtODgsMTIgKzg5LDYgQEAgcHVibGljOgogICAgICAgICBE
ZWNvZGVFcnJvcgogICAgIH07CiAKLSAgICBlbnVtIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyB7
Ci0gICAgICAgIE5vUmVkaXJlY3Rpb24sCi0gICAgICAgIE5vdENhY2hlZFJlZGlyZWN0aW9uLAot
ICAgICAgICBDYWNoZWRSZWRpcmVjdGlvbgotICAgIH07Ci0KICAgICBDYWNoZWRSZXNvdXJjZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBUeXBlLCBTZXNzaW9uSUQpOwogICAgIHZpcnR1YWwgfkNh
Y2hlZFJlc291cmNlKCk7CiAKQEAgLTM1OCw3ICszNTMsNiBAQCBwcml2YXRlOgogICAgIEhhc2hT
ZXQ8Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKj4gbV9oYW5kbGVzVG9SZXZhbGlkYXRlOwogCiAg
ICAgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzIG1fcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOwot
ICAgIGRvdWJsZSBtX3JlZGlyZWN0Q2hhaW5FbmRPZlZhbGlkaXR5OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240623</attachid>
            <date>2014-10-29 14:21:51 -0700</date>
            <delta_ts>2014-10-29 14:21:51 -0700</delta_ts>
            <desc>another</desc>
            <filename>validation-functions-3.patch</filename>
            <type>text/plain</type>
            <size>30522</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NTM0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTEwLTI5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2FjaGUgdmFsaWRp
dHkgY29tcHV0YXRpb24gZnVuY3Rpb25zIG91dCBvZiBDYWNoZWRSZXNvdXJjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTU2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBUaGVzZSBjYW4gYmUgdXNlZCB0
byBpbXBsZW1lbnQgY2FjaGUgbG9naWMgb24gV2ViS2l0IGxldmVsLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0NhY2hlVmFsaWRhdGlvbi5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVSZWRpcmVjdENoYWluU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
ZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZSk6CisgICAgICAgICogbG9hZGVyL0NhY2hlVmFsaWRhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6
UmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0
ZXJSZXZhbGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OkNhY2hl
ZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjppc0V4cGlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xpZmV0aW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlk
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0Q2hhaW5B
bGxvd3NSZXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50QWdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKwogMjAxNC0xMC0yOSAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjE3NTM0Mi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNzUz
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTg1Nyw2ICsxODU3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5jcHAKICAgICBsb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmNwcAogICAgIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorICAgIGxv
YWRlci9jYWNoZS9DYWNoZVZhbGlkYXRpb24uY3BwCiAgICAgbG9hZGVyL2NhY2hlL01lbW9yeUNh
Y2hlLmNwcAogCiAgICAgbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTc1MzQzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc3OSw2ICs3NzksNyBAQCBfX1pON1dlYkNvcmUx
N1NRTGl0ZVRyYW5zYWN0aW9uQzFFUk5TXzE0CiBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0
aW9uRDFFdgogX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFt
ZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMjFSZXNv
dXJjZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKK19f
Wk43V2ViQ29yZTE3Y29tcHV0ZUN1cnJlbnRBZ2VFUktOU18xNlJlc291cmNlUmVzcG9uc2VFZAog
X19aTjdXZWJDb3JlMTdlbmNvZGVGb3JGaWxlTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE3ZXhlY1N0YXRlRnJvbVBhZ2VFUk5TXzE1RE9NV3JhcHBlcldvcmxkRVBOU180UGFnZUUK
IF9fWk43V2ViQ29yZTE3bGFuZ3VhZ2VEaWRDaGFuZ2VFdgpAQCAtODQ0LDYgKzg0NSw3IEBAIF9f
Wk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTExc2V0UHIKIF9fWk43V2ViQ29yZTE5UmVz
b3VyY2VSZXF1ZXN0QmFzZTEzc2V0SFRUUE1ldGhvZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1c2V0SFRUUFJlZmVycmVyRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMThzZXRIVFRQQ29udGVudFR5cGVF
UktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxOHNldEhU
VFBIZWFkZXJGaWVsZEVOU18xNEhUVFBIZWFkZXJOYW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTlzZXRIVFRQSGVhZGVyRmllbGRzRU5TXzEzSFRU
UEhlYWRlck1hcEUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIyZGVmYXVsdFRp
bWVvdXRJbnRlcnZhbEV2CiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyNHNfZGVm
YXVsdFRpbWVvdXRJbnRlcnZhbEUKQEAgLTEwNDIsMTAgKzEwNDQsMTIgQEAgX19aTjdXZWJDb3Jl
MjRkZWxldGVDb29raWVzRm9ySG9zdG5hbWVFUgogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJ
dGVtQ2hhbmdlZEUKIF9fWk43V2ViQ29yZTI0cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50RVJLTjNX
VEY2U3RyaW5nRVMzXworX19aTjdXZWJDb3JlMjRyZWRpcmVjdENoYWluQWxsb3dzUmV1c2VFTlNf
MjRSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXNFCiBfX1pON1dlYkNvcmUyNWFkZExhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHZQRnZTMF9FCiBfX1pON1dlYkNvcmUyNWNvbXB1dGVWaWV3cG9ydEF0dHJp
YnV0ZXNFTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0VpaWlmTlNfN0ludFNpemVFCiBfX1pON1dlYkNv
cmUyNWNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmdFdgogX19aTjdXZWJDb3JlMjVnZXRPdXRPZkxp
bmVDYWNoZWRXcmFwcGVyRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU180Tm9kZUUKK19fWk43
V2ViQ29yZTI1dXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1c0VSTlNfMjRSZWRpcmVjdENoYWluQ2Fj
aGVTdGF0dXNFUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUyNkNvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyMTZjb250ZXh0RGVzdHJveWVkRXYKIF9fWk43V2ViQ29yZTI2Q29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJDMkVQTlNfMjJTY3JpcHRFeGVjdXRpb25Db250ZXh0RQog
X19aTjdXZWJDb3JlMjZDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckQyRXYKQEAgLTEwODcsNiAr
MTA5MSw4IEBAIF9fWk43V2ViQ29yZTMzc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE0KIF9fWk43
V2ViQ29yZTM2c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lRVJLTjNXVEY2U3Ry
aW5nRVMzXwogX19aTjdXZWJDb3JlMzdXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlMTFtb3ZlV2lkZ2V0c0V2CiBfX1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNT
dXNwZW5zaW9uU2NvcGUzNXNfd2lkZ2V0SGllcmFyY2h5VXBkYXRlU3VzcGVuZENvdW50RQorX19a
TjdXZWJDb3JlMzdjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5RVJLTlNfMTZS
ZXNvdXJjZVJlc3BvbnNlRWQKK19fWk43V2ViQ29yZTM4dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0
ZXJSZXZhbGlkYXRpb25FUk5TXzE2UmVzb3VyY2VSZXNwb25zZUVSS1MwXwogX19aTjdXZWJDb3Jl
M1VSTDEwaW52YWxpZGF0ZUV2CiBfX1pON1dlYkNvcmUzVVJMMTFzZXRQcm90b2NvbEVSS04zV1RG
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTNVUkw3c2V0UGF0aEVSS04zV1RGNlN0cmluZ0UKQEAgLTE4
NDIsNyArMTg0OCwxMSBAQCBfX1pOSzdXZWJDb3JlMTlQcm90ZWN0aW9uU3BhY2VCYXNlNHBvcnRF
CiBfX1pOSzdXZWJDb3JlMTlQcm90ZWN0aW9uU3BhY2VCYXNlNXJlYWxtRXYKIF9fWk5LN1dlYkNv
cmUxOVByb3RlY3Rpb25TcGFjZUJhc2U3aXNQcm94eUV2CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJj
ZVJlcXVlc3RCYXNlMTBodHRwTWV0aG9kRXYKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVz
dEJhc2UxMWNhY2hlUG9saWN5RXYKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2Ux
M2lzQ29uZGl0aW9uYWxFdgogX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1aHR0
cENvbnRlbnRUeXBlRXYKK19fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxNWh0dHBI
ZWFkZXJGaWVsZEVOU18xNEhUVFBIZWFkZXJOYW1lRQorX19aTks3V2ViQ29yZTE5UmVzb3VyY2VS
ZXF1ZXN0QmFzZTE1aHR0cEhlYWRlckZpZWxkRVJLTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29y
ZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIwZmlyc3RQYXJ0eUZvckNvb2tpZXNFdgogX19aTks3V2Vi
Q29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTN1cmxFdgogX19aTks3V2ViQ29yZTE5UmVzb3VyY2VS
ZXF1ZXN0QmFzZTZpc051bGxFdgpAQCAtMTg2Myw2ICsxODczLDEwIEBAIF9fWk5LN1dlYkNvcmUy
MFJlc291cmNlUmVzcG9uc2VCYXNlMTZ0ZXgKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9u
c2VCYXNlMTdzdWdnZXN0ZWRGaWxlbmFtZUV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTIxZXhwZWN0ZWRDb250ZW50TGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNl
UmVzcG9uc2VCYXNlMjJpbmNsdWRlQ2VydGlmaWNhdGVJbmZvRXYKK19fWk5LN1dlYkNvcmUyMFJl
c291cmNlUmVzcG9uc2VCYXNlMjNoYXNDYWNoZVZhbGlkYXRvckZpZWxkc0V2CitfX1pOSzdXZWJD
b3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI3Y2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlRXYK
K19fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjdjYWNoZUNvbnRyb2xDb250YWlu
c05vU3RvcmVFdgorX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UzNGNhY2hlQ29u
dHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGVFdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNw
b25zZUJhc2UzdXJsRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlNmlzSFRU
UEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZThsYXp5SW5pdEVOUzBfOUlu
aXRMZXZlbEUKQEAgLTIyNzksNiArMjI5Myw3IEBAIF9fWk43V2ViQ29yZTE0Y29va2llc0VuYWJs
ZWRFUktOU18yMU5ldHcKIF9fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0NDF1cGRhdGVGcm9t
RGVsZWdhdGVQcmVzZXJ2aW5nT2xkUHJvcGVydGllc0VSS1MwXwogX19aTjdXZWJDb3JlMTZGb250
UGxhdGZvcm1EYXRhQzFFUDZOU0ZvbnRmYmJiTlNfMTVGb250T3JpZW50YXRpb25FTlNfMTZGb250
V2lkdGhWYXJpYW50RQogX19aTjdXZWJDb3JlMTZGb250UGxhdGZvcm1EYXRhQzJFUDZOU0ZvbnRm
YmJiTlNfMTVGb250T3JpZW50YXRpb25FTlNfMTZGb250V2lkdGhWYXJpYW50RQorX19aTjdXZWJD
b3JlMTZKU1hNTEh0dHBSZXF1ZXN0OXRvV3JhcHBlZEVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJD
b3JlMTZjb2xvckZyb21OU0NvbG9yRVA3TlNDb2xvcgogX19aTjdXZWJDb3JlMTZkZWxldGVBbGxD
b29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xv
c2luZ0ludFJlY3RFUks3X05TUmVjdApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNzUzNDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03
MzQwLDYgKzczNDAsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hl
XENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGxvYWRlclxjYWNoZVxDYWNoZWRUZXh0VHJhY2suY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXENhY2hlVmFsaWRhdGlvbi5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsb2FkZXJcY2FjaGVcTWVtb3J5Q2Fj
aGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cYXVkaW9cQXVk
aW9IYXJkd2FyZUxpc3RlbmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXENhbGN1bGF0aW9uVmFsdWUuY3BwIiAvPgpAQCAtMTkzMDgsNiArMTkzMDksNyBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFRleHRUcmFjay5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hlXENhY2hlZFhTTFN0
eWxlU2hlZXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGxvYWRlclxjYWNoZVxD
YWNoZVBvbGljeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVyXGNhY2hl
XENhY2hlVmFsaWRhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cbG9hZGVy
XGNhY2hlXE1lbW9yeUNhY2hlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxhdWRpb1xBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXENhbGN1bGF0aW9uVmFsdWUuaCIgLz4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE3NTM0MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjE2NCw2ICs2MTY0LDggQEAKIAkJRTQ1MzkwNEQwRUFG
RDYzNzAwMzY5NUM4IC8qIFdpZGdldElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0NTM5MDNDMEVBRkQ2MzcwMDM2OTVDOCAvKiBXaWRnZXRJT1Mu
bW0gKi87IH07CiAJCUU0NTM5MEFFMEVBRkY0QjUwMDM2OTVDOCAvKiBTeXN0ZW1NZW1vcnlJT1Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ1Mzkw
QUQwRUFGRjRCNTAwMzY5NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi87IH07CiAJCUU0NjJB
NEExMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NjJBNEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJ
bnRQb2ludEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlFNDY3NjgwRTFBMDE3N0VFMDBCOUUyNkIgLyogQ2FjaGVWYWxpZGF0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0Njc2ODBEMUEw
MTc3RUUwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uY3BwICovOyB9OworCQlFNDY3NjgxMDFB
MDE3N0Y5MDBCOUUyNkIgLyogQ2FjaGVWYWxpZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDY3NjgwRjFBMDE3N0Y5MDBCOUUyNkIgLyogQ2Fj
aGVWYWxpZGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTQ2QTJCMUMxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ2QTJCMUIxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0NkEyQjFFMTdDQTc2QjEwMDBEQkNEOCAvKiBFbGVtZW50Q2hpbGRJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2QTJCMUQxN0NBNzZC
MTAwMERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ3MTI3Q0ExNjM0MzhBMTAwRUQ2RjVBIC8q
IFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3QTk3Q0UxNjMwNTlGQzAwNURDRDk5IC8qIFN0eWxlSW52
YWxpZGF0aW9uQW5hbHlzaXMuY3BwICovOyB9OwpAQCAtMTM2OTMsNiArMTM2OTUsOCBAQAogCQlF
NDUzOTAzQzBFQUZENjM3MDAzNjk1QzggLyogV2lkZ2V0SU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2lkZ2V0SU9TLm1tOyBwYXRoID0gaW9zL1dpZGdldElP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ1MzkwQUQwRUFGRjRCNTAwMzY5
NUM4IC8qIFN5c3RlbU1lbW9yeUlPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTeXN0ZW1NZW1vcnlJT1MuY3BwOyBwYXRoID0gaW9zL1N5c3RlbU1lbW9yeUlPUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0NjJBNEEwMTEzRTcxQkUwMDRBNDIy
MCAvKiBJbnRQb2ludEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
UG9pbnRIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0Njc2ODBEMUEwMTc3
RUUwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ2FjaGVWYWxpZGF0aW9uLmNwcDsgcGF0aCA9IGxvYWRlci9jYWNoZS9D
YWNoZVZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUU0Njc2
ODBGMUEwMTc3RjkwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ2FjaGVWYWxpZGF0aW9uLmg7IHBhdGggPSBsb2FkZXIvY2FjaGUv
Q2FjaGVWYWxpZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJRTQ2QTJC
MUIxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ2QTJCMUQxN0NBNzZCMTAw
MERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0Nzc4QjdEMTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tRXZlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2MjUsNiArMTk2MjksOCBAQAogCQkJCUJDQjE2
QzBFMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCAqLywKIAkJCQlC
Q0IxNkMwRjA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oICovLAogCQkJ
CUY1ODc4NjQ5MDJERTNBOUEwMUVBNDEyMiAvKiBDYWNoZVBvbGljeS5oICovLAorCQkJCUU0Njc2
ODBEMUEwMTc3RUUwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uY3BwICovLAorCQkJCUU0Njc2
ODBGMUEwMTc3RjkwMEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uaCAqLywKIAkJCQlCQ0IxNkJG
RTA5NzlDM0JEMDA0Njc3NDEgLyogTWVtb3J5Q2FjaGUuY3BwICovLAogCQkJCUJDQjE2QkZGMDk3
OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oICovLAogCQkJKTsKQEAgLTIzNjY5LDYgKzIz
Njc1LDcgQEAKIAkJCQk5NzVDQTI4QjEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMTcyQUY2RTE4MEYyNEM2MDBGQkFEQjkgLyogQ3J5cHRvQWxnb3JpdGht
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg0MjE4MjQyNTNBMDBEODRDRDkgLyogQ3J5cHRv
QWxnb3JpdGhtQUVTX0NCQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ2NzY4MTAxQTAxNzdGOTAw
QjlFMjZCIC8qIENhY2hlVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFGRTEzN0Ix
ODREMjFCQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobUFFU19LVy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEyNUY4M0ExODI0MTA0ODAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFlc0NiY1Bh
cmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5QUMzRjcxODI0RTVEMTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzE4OSw2
ICsyNzE5Niw3IEBACiAJCQkJRkQzMTYwQkIxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvQnVzTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwN0QxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlv
Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjAwNDEyQjAyNjc2MDBDMUEzNTkg
LyogQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU0Njc2ODBFMUEwMTc3RUUw
MEI5RTI2QiAvKiBDYWNoZVZhbGlkYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwRUVF
MEUxNDc0M0YzOTAwM0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkQzMTYwQkMxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQzMTYwMDcxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVWYWxpZGF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDYWNoZVZhbGlkYXRpb24uaCIKKworI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLyBUaGVzZSByZXNwb25zZSBoZWFkZXJzIGFyZSBub3QgY29waWVkIGZyb20gYSByZXZh
bGlkYXRlZCByZXNwb25zZSB0byB0aGUKKy8vIGNhY2hlZCByZXNwb25zZSBoZWFkZXJzLiBGb3Ig
Y29tcGF0aWJpbGl0eSwgdGhpcyBsaXN0IGlzIGJhc2VkIG9uIENocm9taXVtJ3MKKy8vIG5ldC9o
dHRwL2h0dHBfcmVzcG9uc2VfaGVhZGVycy5jYy4KK2NvbnN0IGNoYXIqIGNvbnN0IGhlYWRlcnNU
b0lnbm9yZUFmdGVyUmV2YWxpZGF0aW9uW10gPSB7CisgICAgImFsbG93IiwKKyAgICAiY29ubmVj
dGlvbiIsCisgICAgImV0YWciLAorICAgICJleHBpcmVzIiwKKyAgICAia2VlcC1hbGl2ZSIsCisg
ICAgImxhc3QtbW9kaWZpZWQiCisgICAgInByb3h5LWF1dGhlbnRpY2F0ZSIsCisgICAgInByb3h5
LWNvbm5lY3Rpb24iLAorICAgICJ0cmFpbGVyIiwKKyAgICAidHJhbnNmZXItZW5jb2RpbmciLAor
ICAgICJ1cGdyYWRlIiwKKyAgICAid3d3LWF1dGhlbnRpY2F0ZSIsCisgICAgIngtZnJhbWUtb3B0
aW9ucyIsCisgICAgIngteHNzLXByb3RlY3Rpb24iLAorfTsKKworLy8gU29tZSBoZWFkZXIgcHJl
Zml4ZXMgbWVhbiAiRG9uJ3QgY29weSB0aGlzIGhlYWRlciBmcm9tIGEgMzA0IHJlc3BvbnNlLiIu
CisvLyBSYXRoZXIgdGhhbiBsaXN0aW5nIGFsbCB0aGUgcmVsZXZhbnQgaGVhZGVycywgd2UgY2Fu
IGNvbnNvbGlkYXRlIHRoZW0gaW50bworLy8gdGhpcyBsaXN0LCBhbHNvIGdyYWJiZWQgZnJvbSBD
aHJvbWl1bSdzIG5ldC9odHRwL2h0dHBfcmVzcG9uc2VfaGVhZGVycy5jYy4KK2NvbnN0IGNoYXIq
IGNvbnN0IGhlYWRlclByZWZpeGVzVG9JZ25vcmVBZnRlclJldmFsaWRhdGlvbltdID0geworICAg
ICJjb250ZW50LSIsCisgICAgIngtY29udGVudC0iLAorICAgICJ4LXdlYmtpdC0iCit9OworCitz
dGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXBkYXRlSGVhZGVyQWZ0ZXJSZXZhbGlkYXRpb24oY29u
c3QgU3RyaW5nJiBoZWFkZXIpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJS
QVlfTEVOR1RIKGhlYWRlcnNUb0lnbm9yZUFmdGVyUmV2YWxpZGF0aW9uKTsgaSsrKSB7CisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShoZWFkZXIsIGhlYWRlcnNUb0lnbm9yZUFmdGVyUmV2
YWxpZGF0aW9uW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGhlYWRlclByZWZpeGVzVG9JZ25v
cmVBZnRlclJldmFsaWRhdGlvbik7IGkrKykgeworICAgICAgICBpZiAoaGVhZGVyLnN0YXJ0c1dp
dGgoaGVhZGVyUHJlZml4ZXNUb0lnbm9yZUFmdGVyUmV2YWxpZGF0aW9uW2ldLCBmYWxzZSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIHVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9uKFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2Up
Cit7CisgICAgLy8gUkZDMjYxNiAxMC4zLjUKKyAgICAvLyBVcGRhdGUgY2FjaGVkIGhlYWRlcnMg
ZnJvbSB0aGUgMzA0IHJlc3BvbnNlCisgICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiB2YWxp
ZGF0aW5nUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSB7CisgICAgICAgIC8vIEVudGl0eSBo
ZWFkZXJzIHNob3VsZCBub3QgYmUgc2VudCBieSBzZXJ2ZXJzIHdoZW4gZ2VuZXJhdGluZyBhIDMw
NAorICAgICAgICAvLyByZXNwb25zZTsgbWlzY29uZmlndXJlZCBzZXJ2ZXJzIHNlbmQgdGhlbSBh
bnl3YXkuIFdlIHNob3VsZG4ndCBhbGxvdworICAgICAgICAvLyBzdWNoIGhlYWRlcnMgdG8gdXBk
YXRlIHRoZSBvcmlnaW5hbCByZXF1ZXN0LiBXZSdsbCBiYXNlIHRoaXMgb24gdGhlCisgICAgICAg
IC8vIGxpc3QgZGVmaW5lZCBieSBSRkMyNjE2IDcuMSwgd2l0aCBhIGZldyBhZGRpdGlvbnMgZm9y
IGV4dGVuc2lvbiBoZWFkZXJzCisgICAgICAgIC8vIHdlIGNhcmUgYWJvdXQuCisgICAgICAgIGlm
ICghc2hvdWxkVXBkYXRlSGVhZGVyQWZ0ZXJSZXZhbGlkYXRpb24oaGVhZGVyLmtleSkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGhl
YWRlci5rZXksIGhlYWRlci52YWx1ZSk7CisgICAgfQorfQorCitkb3VibGUgY29tcHV0ZUN1cnJl
bnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGRvdWJsZSByZXNwb25zZVRp
bWVzdGFtcCkKK3sKKyAgICAvLyBSRkMyNjE2IDEzLjIuMworICAgIC8vIE5vIGNvbXBlbnNhdGlv
biBmb3IgbGF0ZW5jeSBhcyB0aGF0IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRhbnQgaW4gcHJhY3Rp
Y2UKKyAgICBkb3VibGUgZGF0ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgpOworICAgIGRvdWJsZSBh
cHBhcmVudEFnZSA9IHN0ZDo6aXNmaW5pdGUoZGF0ZVZhbHVlKSA/IHN0ZDo6bWF4KDAuLCByZXNw
b25zZVRpbWVzdGFtcCAtIGRhdGVWYWx1ZSkgOiAwOworICAgIGRvdWJsZSBhZ2VWYWx1ZSA9IHJl
c3BvbnNlLmFnZSgpOworICAgIGRvdWJsZSBjb3JyZWN0ZWRSZWNlaXZlZEFnZSA9IHN0ZDo6aXNm
aW5pdGUoYWdlVmFsdWUpID8gc3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVlKSA6IGFwcGFy
ZW50QWdlOworICAgIGRvdWJsZSByZXNpZGVudFRpbWUgPSBjdXJyZW50VGltZSgpIC0gcmVzcG9u
c2VUaW1lc3RhbXA7CisgICAgcmV0dXJuIGNvcnJlY3RlZFJlY2VpdmVkQWdlICsgcmVzaWRlbnRU
aW1lOworfQorCitkb3VibGUgY29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1w
KQoreworICAgIEFTU0VSVChyZXNwb25zZS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
OworICAgIC8vIFJGQzI2MTYgMTMuMi40CisgICAgZG91YmxlIG1heEFnZVZhbHVlID0gcmVzcG9u
c2UuY2FjaGVDb250cm9sTWF4QWdlKCk7CisgICAgaWYgKHN0ZDo6aXNmaW5pdGUobWF4QWdlVmFs
dWUpKQorICAgICAgICByZXR1cm4gbWF4QWdlVmFsdWU7CisgICAgZG91YmxlIGV4cGlyZXNWYWx1
ZSA9IHJlc3BvbnNlLmV4cGlyZXMoKTsKKyAgICBkb3VibGUgZGF0ZVZhbHVlID0gcmVzcG9uc2Uu
ZGF0ZSgpOworICAgIGRvdWJsZSBjcmVhdGlvblRpbWUgPSBzdGQ6OmlzZmluaXRlKGRhdGVWYWx1
ZSkgPyBkYXRlVmFsdWUgOiByZXNwb25zZVRpbWVzdGFtcDsKKyAgICBpZiAoc3RkOjppc2Zpbml0
ZShleHBpcmVzVmFsdWUpKQorICAgICAgICByZXR1cm4gZXhwaXJlc1ZhbHVlIC0gY3JlYXRpb25U
aW1lOworICAgIGRvdWJsZSBsYXN0TW9kaWZpZWRWYWx1ZSA9IHJlc3BvbnNlLmxhc3RNb2RpZmll
ZCgpOworICAgIGlmIChzdGQ6OmlzZmluaXRlKGxhc3RNb2RpZmllZFZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIChjcmVhdGlvblRpbWUgLSBsYXN0TW9kaWZpZWRWYWx1ZSkgKiAwLjE7CisgICAgLy8g
SWYgbm8gY2FjaGUgaGVhZGVycyBhcmUgcHJlc2VudCwgdGhlIHNwZWNpZmljYXRpb24gbGVhdmVz
IHRoZSBkZWNpc2lvbiB0byB0aGUgVUEuIE90aGVyIGJyb3dzZXJzIHNlZW0gdG8gb3B0IGZvciAw
LgorICAgIHJldHVybiAwOworfQorCit2b2lkIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMoUmVk
aXJlY3RDaGFpbkNhY2hlU3RhdHVzJiByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmIChyZWRpcmVjdENoYWluQ2FjaGVT
dGF0dXMuc3RhdHVzID09IFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm90Q2FjaGVkUmVkaXJl
Y3Rpb24pCisgICAgICAgIHJldHVybjsKKyAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250cm9sQ29u
dGFpbnNOb1N0b3JlKCkgfHwgcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkg
fHwgcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpKSB7CisgICAg
ICAgIHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPSBSZWRpcmVjdENoYWluQ2FjaGVT
dGF0dXM6Ok5vdENhY2hlZFJlZGlyZWN0aW9uOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0
dXM6OkNhY2hlZFJlZGlyZWN0aW9uOworICAgIGRvdWJsZSByZXNwb25zZVRpbWVzdGFtcCA9IGN1
cnJlbnRUaW1lKCk7CisgICAgLy8gU3RvcmUgdGhlIG5lYXJlc3QgZW5kIG9mIGNhY2hlIHZhbGlk
aXR5IGRhdGUKKyAgICBkb3VibGUgZW5kT2ZWYWxpZGl0eSA9IHJlc3BvbnNlVGltZXN0YW1wICsg
Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgcmVzcG9uc2VU
aW1lc3RhbXApIC0gY29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UsIHJlc3BvbnNlVGltZXN0YW1w
KTsKKyAgICByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuZW5kT2ZWYWxpZGl0eSA9IHN0ZDo6bWlu
KHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5LCBlbmRPZlZhbGlkaXR5KTsK
K30KKworYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNhY2hlU3Rh
dHVzIHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cykKK3sKKyAgICBzd2l0Y2ggKHJlZGlyZWN0Q2hh
aW5DYWNoZVN0YXR1cy5zdGF0dXMpIHsKKyAgICBjYXNlIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1
czo6Tm9SZWRpcmVjdGlvbjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBSZWRpcmVj
dENoYWluQ2FjaGVTdGF0dXM6Ok5vdENhY2hlZFJlZGlyZWN0aW9uOgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgY2FzZSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OkNhY2hlZFJlZGlyZWN0
aW9uOgorICAgICAgICByZXR1cm4gY3VycmVudFRpbWUoKSA8PSByZWRpcmVjdENoYWluQ2FjaGVT
dGF0dXMuZW5kT2ZWYWxpZGl0eTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVWYWxpZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhY2hlVmFsaWRhdGlvbl9oCisjZGVmaW5lIENh
Y2hlVmFsaWRhdGlvbl9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKKworc3RydWN0IFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyB7CisgICAgZW51bSBT
dGF0dXMgeworICAgICAgICBOb1JlZGlyZWN0aW9uLAorICAgICAgICBOb3RDYWNoZWRSZWRpcmVj
dGlvbiwKKyAgICAgICAgQ2FjaGVkUmVkaXJlY3Rpb24KKyAgICB9OworICAgIFJlZGlyZWN0Q2hh
aW5DYWNoZVN0YXR1cygpCisgICAgICAgIDogc3RhdHVzKE5vUmVkaXJlY3Rpb24pCisgICAgICAg
ICwgZW5kT2ZWYWxpZGl0eShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQorICAg
IHsgfQorICAgIFN0YXR1cyBzdGF0dXM7CisgICAgZG91YmxlIGVuZE9mVmFsaWRpdHk7Cit9Owor
Citkb3VibGUgY29tcHV0ZUN1cnJlbnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGRvdWJs
ZSByZXNwb25zZVRpbWVzdGFtcCk7Citkb3VibGUgY29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9y
SFRUUEZhbWlseShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgZG91YmxlIHJlc3BvbnNlVGltZXN0
YW1wKTsKK3ZvaWQgdXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24oUmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7
Cit2b2lkIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1
c2UoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzKTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24g
MTc1MzQzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDEg
RGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgICAgQ29weXJpZ2h0IChDKSAyMDAyIFdh
bGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMSwgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTYyLDQ4
ICs2Miw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gVGhlc2UgcmVzcG9uc2UgaGVhZGVycyBhcmUgbm90IGNvcGllZCBmcm9tIGEgcmV2YWxpZGF0
ZWQgcmVzcG9uc2UgdG8gdGhlCi0vLyBjYWNoZWQgcmVzcG9uc2UgaGVhZGVycy4gRm9yIGNvbXBh
dGliaWxpdHksIHRoaXMgbGlzdCBpcyBiYXNlZCBvbiBDaHJvbWl1bSdzCi0vLyBuZXQvaHR0cC9o
dHRwX3Jlc3BvbnNlX2hlYWRlcnMuY2MuCi1jb25zdCBjaGFyKiBjb25zdCBoZWFkZXJzVG9JZ25v
cmVBZnRlclJldmFsaWRhdGlvbltdID0gewotICAgICJhbGxvdyIsCi0gICAgImNvbm5lY3Rpb24i
LAotICAgICJldGFnIiwKLSAgICAiZXhwaXJlcyIsCi0gICAgImtlZXAtYWxpdmUiLAotICAgICJs
YXN0LW1vZGlmaWVkIgotICAgICJwcm94eS1hdXRoZW50aWNhdGUiLAotICAgICJwcm94eS1jb25u
ZWN0aW9uIiwKLSAgICAidHJhaWxlciIsCi0gICAgInRyYW5zZmVyLWVuY29kaW5nIiwKLSAgICAi
dXBncmFkZSIsCi0gICAgInd3dy1hdXRoZW50aWNhdGUiLAotICAgICJ4LWZyYW1lLW9wdGlvbnMi
LAotICAgICJ4LXhzcy1wcm90ZWN0aW9uIiwKLX07Ci0KLS8vIFNvbWUgaGVhZGVyIHByZWZpeGVz
IG1lYW4gIkRvbid0IGNvcHkgdGhpcyBoZWFkZXIgZnJvbSBhIDMwNCByZXNwb25zZS4iLgotLy8g
UmF0aGVyIHRoYW4gbGlzdGluZyBhbGwgdGhlIHJlbGV2YW50IGhlYWRlcnMsIHdlIGNhbiBjb25z
b2xpZGF0ZSB0aGVtIGludG8KLS8vIHRoaXMgbGlzdCwgYWxzbyBncmFiYmVkIGZyb20gQ2hyb21p
dW0ncyBuZXQvaHR0cC9odHRwX3Jlc3BvbnNlX2hlYWRlcnMuY2MuCi1jb25zdCBjaGFyKiBjb25z
dCBoZWFkZXJQcmVmaXhlc1RvSWdub3JlQWZ0ZXJSZXZhbGlkYXRpb25bXSA9IHsKLSAgICAiY29u
dGVudC0iLAotICAgICJ4LWNvbnRlbnQtIiwKLSAgICAieC13ZWJraXQtIgotfTsKLQotc3RhdGlj
IGlubGluZSBib29sIHNob3VsZFVwZGF0ZUhlYWRlckFmdGVyUmV2YWxpZGF0aW9uKGNvbnN0IFN0
cmluZyYgaGVhZGVyKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xF
TkdUSChoZWFkZXJzVG9JZ25vcmVBZnRlclJldmFsaWRhdGlvbik7IGkrKykgewotICAgICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoaGVhZGVyLCBoZWFkZXJzVG9JZ25vcmVBZnRlclJldmFsaWRh
dGlvbltpXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChoZWFkZXJQcmVmaXhlc1RvSWdub3JlQWZ0
ZXJSZXZhbGlkYXRpb24pOyBpKyspIHsKLSAgICAgICAgaWYgKGhlYWRlci5zdGFydHNXaXRoKGhl
YWRlclByZWZpeGVzVG9JZ25vcmVBZnRlclJldmFsaWRhdGlvbltpXSwgZmFsc2UpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogc3RhdGlj
IFJlc291cmNlTG9hZFByaW9yaXR5IGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTQ2LDE4
ICsxMDQsNiBAQCBzdGF0aWMgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWFkRGVjCiAgICAg
cmV0dXJuIG1lbW9yeUNhY2hlKCktPmRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoKTsK
IH0KIAotc3RhdGljIGRvdWJsZSBjdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCi17Ci0gICAgLy8gUkZDMjYxNiAxMy4y
LjMKLSAgICAvLyBObyBjb21wZW5zYXRpb24gZm9yIGxhdGVuY3kgYXMgdGhhdCBpcyBub3QgdGVy
cmlibHkgaW1wb3J0YW50IGluIHByYWN0aWNlCi0gICAgZG91YmxlIGRhdGVWYWx1ZSA9IHJlc3Bv
bnNlLmRhdGUoKTsKLSAgICBkb3VibGUgYXBwYXJlbnRBZ2UgPSBzdGQ6OmlzZmluaXRlKGRhdGVW
YWx1ZSkgPyBzdGQ6Om1heCgwLiwgcmVzcG9uc2VUaW1lc3RhbXAgLSBkYXRlVmFsdWUpIDogMDsK
LSAgICBkb3VibGUgYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKTsKLSAgICBkb3VibGUgY29ycmVj
dGVkUmVjZWl2ZWRBZ2UgPSBzdGQ6OmlzZmluaXRlKGFnZVZhbHVlKSA/IHN0ZDo6bWF4KGFwcGFy
ZW50QWdlLCBhZ2VWYWx1ZSkgOiBhcHBhcmVudEFnZTsKLSAgICBkb3VibGUgcmVzaWRlbnRUaW1l
ID0gY3VycmVudFRpbWUoKSAtIHJlc3BvbnNlVGltZXN0YW1wOwotICAgIHJldHVybiBjb3JyZWN0
ZWRSZWNlaXZlZEFnZSArIHJlc2lkZW50VGltZTsKLX0KLQogREVGSU5FX0RFQlVHX09OTFlfR0xP
QkFMKFJlZkNvdW50ZWRMZWFrQ291bnRlciwgY2FjaGVkUmVzb3VyY2VMZWFrQ291bnRlciwgKCJD
YWNoZWRSZXNvdXJjZSIpKTsKIAogQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0eXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklE
KQpAQCAtMTkyLDggKzEzOCw2IEBAIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShjb25z
dCBSZXMKICAgICAsIG1fb3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoMCkKICAgICAsIG1fcmVz
b3VyY2VUb1JldmFsaWRhdGUoMCkKICAgICAsIG1fcHJveHlSZXNvdXJjZSgwKQotICAgICwgbV9y
ZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMoTm9SZWRpcmVjdGlvbikKLSAgICAsIG1fcmVkaXJlY3RD
aGFpbkVuZE9mVmFsaWRpdHkoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkKIHsK
ICAgICBBU1NFUlQobV90eXBlID09IHVuc2lnbmVkKHR5cGUpKTsgLy8gbV90eXBlIGlzIGEgYml0
ZmllbGQsIHNvIHRoaXMgdGVzdHMgY2FyZWxlc3MgdXBkYXRlcyBvZiB0aGUgZW51bS4KICAgICBB
U1NFUlQoc2Vzc2lvbklELmlzVmFsaWQoKSk7CkBAIC00MDAsNyArMzQ0LDcgQEAgYm9vbCBDYWNo
ZWRSZXNvdXJjZTo6aXNFeHBpcmVkKCkgY29uc3QKICAgICBpZiAobV9yZXNwb25zZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGN1cnJlbnRBZ2UobV9yZXNw
b25zZSwgbV9yZXNwb25zZVRpbWVzdGFtcCkgPiBmcmVzaG5lc3NMaWZldGltZShtX3Jlc3BvbnNl
KTsKKyAgICByZXR1cm4gY29tcHV0ZUN1cnJlbnRBZ2UobV9yZXNwb25zZSwgbV9yZXNwb25zZVRp
bWVzdGFtcCkgPiBmcmVzaG5lc3NMaWZldGltZShtX3Jlc3BvbnNlKTsKIH0KIAogZG91YmxlIENh
Y2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZldGltZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkgY29uc3QKQEAgLTQxNSwyMCArMzU5LDcgQEAgZG91YmxlIENhY2hlZFJlc291cmNl
OjpmcmVzaG5lc3NMaWZldGltZQogICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjptYXgoKTsKICAgICB9CiAKLSAgICAvLyBSRkMyNjE2IDEzLjIuNAotICAgIGRvdWJs
ZSBtYXhBZ2VWYWx1ZSA9IHJlc3BvbnNlLmNhY2hlQ29udHJvbE1heEFnZSgpOwotICAgIGlmIChz
dGQ6OmlzZmluaXRlKG1heEFnZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG1heEFnZVZhbHVlOwot
ICAgIGRvdWJsZSBleHBpcmVzVmFsdWUgPSByZXNwb25zZS5leHBpcmVzKCk7Ci0gICAgZG91Ymxl
IGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUoKTsKLSAgICBkb3VibGUgY3JlYXRpb25UaW1lID0g
c3RkOjppc2Zpbml0ZShkYXRlVmFsdWUpID8gZGF0ZVZhbHVlIDogbV9yZXNwb25zZVRpbWVzdGFt
cDsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShleHBpcmVzVmFsdWUpKQotICAgICAgICByZXR1cm4g
ZXhwaXJlc1ZhbHVlIC0gY3JlYXRpb25UaW1lOwotICAgIGRvdWJsZSBsYXN0TW9kaWZpZWRWYWx1
ZSA9IHJlc3BvbnNlLmxhc3RNb2RpZmllZCgpOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGxhc3RN
b2RpZmllZFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIChjcmVhdGlvblRpbWUgLSBsYXN0TW9kaWZp
ZWRWYWx1ZSkgKiAwLjE7Ci0gICAgLy8gSWYgbm8gY2FjaGUgaGVhZGVycyBhcmUgcHJlc2VudCwg
dGhlIHNwZWNpZmljYXRpb24gbGVhdmVzIHRoZSBkZWNpc2lvbiB0byB0aGUgVUEuIE90aGVyIGJy
b3dzZXJzIHNlZW0gdG8gb3B0IGZvciAwLgotICAgIHJldHVybiAwOworICAgIHJldHVybiBjb21w
dXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBtX3Jlc3BvbnNlVGlt
ZXN0YW1wKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtNDM2LDE5
ICszNjcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAg
bV9yZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xheWVyID0gdHJ1ZTsKICAgICBpZiAocmVzcG9uc2Uu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAobV9yZWRpcmVjdENoYWluQ2FjaGVT
dGF0dXMgPT0gTm90Q2FjaGVkUmVkaXJlY3Rpb24pCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
cmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkKLSAgICAgICAgfHwgcmVzcG9u
c2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkKLSAgICAgICAgfHwgcmVzcG9uc2UuY2Fj
aGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpKQotICAgICAgICBtX3JlZGlyZWN0Q2hh
aW5DYWNoZVN0YXR1cyA9IE5vdENhY2hlZFJlZGlyZWN0aW9uOwotICAgIGVsc2UgewotICAgICAg
ICBtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyA9IENhY2hlZFJlZGlyZWN0aW9uOwotICAgICAg
ICBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOwotICAgICAgICAvLyBT
dG9yZSB0aGUgbmVhcmVzdCBlbmQgb2YgY2FjaGUgdmFsaWRpdHkgZGF0ZQotICAgICAgICBtX3Jl
ZGlyZWN0Q2hhaW5FbmRPZlZhbGlkaXR5ID0gc3RkOjptaW4obV9yZWRpcmVjdENoYWluRW5kT2ZW
YWxpZGl0eSwgCi0gICAgICAgICAgICByZXNwb25zZVRpbWVzdGFtcCArIGZyZXNobmVzc0xpZmV0
aW1lKHJlc3BvbnNlKSAtIGN1cnJlbnRBZ2UocmVzcG9uc2UsIHJlc3BvbnNlVGltZXN0YW1wKSk7
Ci0gICAgfQorICAgIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMobV9yZWRpcmVjdENoYWluQ2Fj
aGVTdGF0dXMsIHJlc3BvbnNlKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTczMywxOCArNjUy
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlUmVzcG9uc2VBZnRlcgogewogICAgIG1f
cmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOwogCi0gICAgLy8gUkZDMjYxNiAxMC4z
LjUKLSAgICAvLyBVcGRhdGUgY2FjaGVkIGhlYWRlcnMgZnJvbSB0aGUgMzA0IHJlc3BvbnNlCi0g
ICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiB2YWxpZGF0aW5nUmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkcygpKSB7Ci0gICAgICAgIC8vIEVudGl0eSBoZWFkZXJzIHNob3VsZCBub3QgYmUgc2Vu
dCBieSBzZXJ2ZXJzIHdoZW4gZ2VuZXJhdGluZyBhIDMwNAotICAgICAgICAvLyByZXNwb25zZTsg
bWlzY29uZmlndXJlZCBzZXJ2ZXJzIHNlbmQgdGhlbSBhbnl3YXkuIFdlIHNob3VsZG4ndCBhbGxv
dwotICAgICAgICAvLyBzdWNoIGhlYWRlcnMgdG8gdXBkYXRlIHRoZSBvcmlnaW5hbCByZXF1ZXN0
LiBXZSdsbCBiYXNlIHRoaXMgb24gdGhlCi0gICAgICAgIC8vIGxpc3QgZGVmaW5lZCBieSBSRkMy
NjE2IDcuMSwgd2l0aCBhIGZldyBhZGRpdGlvbnMgZm9yIGV4dGVuc2lvbiBoZWFkZXJzCi0gICAg
ICAgIC8vIHdlIGNhcmUgYWJvdXQuCi0gICAgICAgIGlmICghc2hvdWxkVXBkYXRlSGVhZGVyQWZ0
ZXJSZXZhbGlkYXRpb24oaGVhZGVyLmtleSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgbV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaGVhZGVyLmtleSwgaGVhZGVyLnZhbHVl
KTsKLSAgICB9CisgICAgdXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24obV9y
ZXNwb25zZSwgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6
cmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKiBoKQpAQCAtODA3LDE1ICs3
MTUsNyBAQCBib29sIENhY2hlZFJlc291cmNlOjptdXN0UmV2YWxpZGF0ZUR1ZVRvCiAKIGJvb2wg
Q2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZSgpIGNvbnN0CiB7Ci0gICAg
c3dpdGNoIChtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cykgewotICAgIGNhc2UgTm9SZWRpcmVj
dGlvbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBOb3RDYWNoZWRSZWRpcmVjdGlv
bjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgQ2FjaGVkUmVkaXJlY3Rpb246Ci0g
ICAgICAgIHJldHVybiBjdXJyZW50VGltZSgpIDw9IG1fcmVkaXJlY3RDaGFpbkVuZE9mVmFsaWRp
dHk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBXZWJDb3JlOjpyZWRpcmVj
dENoYWluQWxsb3dzUmV1c2UobV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMpOwogfQogCiB1bnNp
Z25lZCBDYWNoZWRSZXNvdXJjZTo6b3ZlcmhlYWRTaXplKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCShyZXZpc2lvbiAxNzUzNDMp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBDYWNoZWRSZXNvdXJjZV9oCiAKICNp
bmNsdWRlICJDYWNoZVBvbGljeS5oIgorI2luY2x1ZGUgIkNhY2hlVmFsaWRhdGlvbi5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKQEAgLTg4LDEyICs4OSw2IEBAIHB1Ymxp
YzoKICAgICAgICAgRGVjb2RlRXJyb3IKICAgICB9OwogCi0gICAgZW51bSBSZWRpcmVjdENoYWlu
Q2FjaGVTdGF0dXMgewotICAgICAgICBOb1JlZGlyZWN0aW9uLAotICAgICAgICBOb3RDYWNoZWRS
ZWRpcmVjdGlvbiwKLSAgICAgICAgQ2FjaGVkUmVkaXJlY3Rpb24KLSAgICB9OwotCiAgICAgQ2Fj
aGVkUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVHlwZSwgU2Vzc2lvbklEKTsKICAg
ICB2aXJ0dWFsIH5DYWNoZWRSZXNvdXJjZSgpOwogCkBAIC0zNTgsNyArMzUzLDYgQEAgcHJpdmF0
ZToKICAgICBIYXNoU2V0PENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSo+IG1faGFuZGxlc1RvUmV2
YWxpZGF0ZTsKIAogICAgIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyBtX3JlZGlyZWN0Q2hhaW5D
YWNoZVN0YXR1czsKLSAgICBkb3VibGUgbV9yZWRpcmVjdENoYWluRW5kT2ZWYWxpZGl0eTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>