<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Portal login error in ArcGIS API for Python Questions</title>
    <link>https://community.esri.com/t5/arcgis-api-for-python-questions/portal-login-error/m-p/764058#M474</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the input on the&amp;nbsp; .encode(utf-8)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I ran the code several times, nothing happened.. NOT even errors.&lt;/P&gt;&lt;P&gt;Then I remembered to add:&amp;nbsp; generateToken(username, password, portalUrl ) at the end of the code.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Oct 2020 15:59:42 GMT</pubDate>
    <dc:creator>CliveSwan</dc:creator>
    <dc:date>2020-10-29T15:59:42Z</dc:date>
    <item>
      <title>Portal login error</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/portal-login-error/m-p/764056#M472</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Greetings,&lt;/P&gt;&lt;P&gt;I am using the ESRI sample code to generate a token (&lt;A class="link-titled" href="https://enterprise.arcgis.com/en/portal/10.7/administer/windows/scripting-with-the-arcgis-rest-api.htm" title="https://enterprise.arcgis.com/en/portal/10.7/administer/windows/scripting-with-the-arcgis-rest-api.htm"&gt;Scripting with the ArcGIS REST API—Portal for ArcGIS | Documentation for ArcGIS Enterprise&lt;/A&gt;&amp;nbsp;), getting an expected type error??&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Error is Expected type 'Optional[bytes]', got 'str' instead??&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I updated the code for Python 3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #cc7832;"&gt;### Python 3.8&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #cc7832;"&gt;def &lt;/SPAN&gt;&lt;SPAN style="color: #ffc66d;"&gt;generateToken&lt;/SPAN&gt;(username&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;password&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="color: #72737a;"&gt;portalUrl&lt;/SPAN&gt;&lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;BR /&gt; &lt;SPAN style="color: #629755;"&gt;'''Retrieves a token to be used with API requests.'''&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #629755;"&gt; &lt;/SPAN&gt;portalUrl = myurl&lt;SPAN style="color: #6a8759;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt; u&lt;/SPAN&gt;&lt;SPAN style="color: #72737a;"&gt;sername &lt;/SPAN&gt;= myuser&lt;SPAN style="color: #6a8759;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt; p&lt;/SPAN&gt;&lt;SPAN style="color: #72737a;"&gt;assword &lt;/SPAN&gt;= mypassword&lt;SPAN style="color: #6a8759;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt; &lt;/SPAN&gt;parameters = urllib.parse.urlencode({&lt;SPAN style="color: #6a8759;"&gt;'username' &lt;/SPAN&gt;: username&lt;SPAN style="color: #cc7832;"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt;'password'&amp;nbsp;&lt;/SPAN&gt;: password&lt;SPAN style="color: #cc7832;"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt;'client'&amp;nbsp;&lt;/SPAN&gt;: &lt;SPAN style="color: #6a8759;"&gt;'referer'&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt;'referer'&amp;nbsp;&lt;/SPAN&gt;: portalUrl&lt;SPAN style="color: #cc7832;"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt;'expiration'&amp;nbsp;&lt;/SPAN&gt;: &lt;SPAN style="color: #6897bb;"&gt;60&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt;'f' &lt;/SPAN&gt;: &lt;SPAN style="color: #6a8759;"&gt;'json'&lt;/SPAN&gt;})&lt;BR /&gt; &lt;SPAN style="color: #8888c6;"&gt;print&lt;/SPAN&gt;(&lt;SPAN style="color: #6a8759;"&gt;"Read parameters"&lt;/SPAN&gt;)&lt;BR /&gt; response = urllib.request.urlopen(portalUrl + &lt;SPAN style="color: #6a8759;"&gt;'/sharing/rest/generateToken?'&lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;, &lt;/SPAN&gt;parameters).read()&lt;BR /&gt;&lt;BR /&gt; &lt;SPAN style="color: #8888c6;"&gt;print&lt;/SPAN&gt;(&lt;SPAN style="color: #6a8759;"&gt;"response"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt; &lt;SPAN style="color: #cc7832;"&gt;try&lt;/SPAN&gt;:&lt;BR /&gt; jsonResponse = json.loads(response)&lt;BR /&gt; &lt;SPAN style="color: #cc7832;"&gt;if &lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt;'token' &lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;in &lt;/SPAN&gt;jsonResponse:&lt;BR /&gt; &lt;SPAN style="color: #cc7832;"&gt;return &lt;/SPAN&gt;jsonResponse[&lt;SPAN style="color: #6a8759;"&gt;'token'&lt;/SPAN&gt;]&lt;BR /&gt; &lt;SPAN style="color: #cc7832;"&gt;elif &lt;/SPAN&gt;&lt;SPAN style="color: #6a8759;"&gt;'error' &lt;/SPAN&gt;&lt;SPAN style="color: #cc7832;"&gt;in &lt;/SPAN&gt;jsonResponse:&lt;BR /&gt; &lt;SPAN style="color: #8888c6;"&gt;print&lt;/SPAN&gt;(jsonResponse[&lt;SPAN style="color: #6a8759;"&gt;'error'&lt;/SPAN&gt;][&lt;SPAN style="color: #6a8759;"&gt;'message'&lt;/SPAN&gt;])&lt;BR /&gt; &lt;SPAN style="color: #cc7832;"&gt;for &lt;/SPAN&gt;detail &lt;SPAN style="color: #cc7832;"&gt;in &lt;/SPAN&gt;jsonResponse[&lt;SPAN style="color: #6a8759;"&gt;'error'&lt;/SPAN&gt;][&lt;SPAN style="color: #6a8759;"&gt;'details'&lt;/SPAN&gt;]:&lt;BR /&gt; &lt;SPAN style="color: #8888c6;"&gt;print&lt;/SPAN&gt;(detail)&lt;BR /&gt; &lt;SPAN style="color: #cc7832;"&gt;except &lt;/SPAN&gt;&lt;SPAN style="color: #8888c6;"&gt;ValueError&lt;/SPAN&gt;:&lt;BR /&gt; &lt;SPAN style="color: #8888c6;"&gt;print&lt;/SPAN&gt;(&lt;SPAN style="color: #6a8759;"&gt;'An unspecified error occurred.'&lt;/SPAN&gt;)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;## End&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;All I get is the error message:&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;Expected type 'Optional[bytes]', got 'str' instead&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Appreciate any assistance and pointers.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Clive&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 13:13:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/portal-login-error/m-p/764056#M472</guid>
      <dc:creator>CliveSwan</dc:creator>
      <dc:date>2020-10-29T13:13:53Z</dc:date>
    </item>
    <item>
      <title>Re: Portal login error</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/portal-login-error/m-p/764057#M473</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A href="https://community.esri.com/migrated-users/7666" target="_blank"&gt;Clive Swan&lt;/A&gt;‌,&lt;/P&gt;&lt;P&gt;You need to add &lt;STRONG&gt;encode(“utf-8”)&lt;/STRONG&gt; at the end of line 14.&lt;/P&gt;&lt;P&gt;The code will be like so:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; urllib
&lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; json
&lt;SPAN class="keyword token"&gt;def&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;generateToken&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;username&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; password&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; portalUrl&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
    &lt;SPAN class="string token"&gt;'''Retrieves a token to be used with API requests.
    portalUrl = myurl
    username = myuser
    password = mypassword'''&lt;/SPAN&gt;

    parameters &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; urllib&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;parse&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;urlencode&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'username'&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; username&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="string token"&gt;'password'&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; password&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="string token"&gt;'client'&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'referer'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="string token"&gt;'referer'&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; portalUrl&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="string token"&gt;'expiration'&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;60&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="string token"&gt;'f'&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'json'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;encode&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"utf-8"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    
    &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"Read parameters"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    response &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; urllib&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;request&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;urlopen&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;portalUrl &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'/sharing/rest/generateToken?'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; parameters&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;read&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

    &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"response"&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

    &lt;SPAN class="keyword token"&gt;try&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        jsonResponse &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; json&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;loads&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;response&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;if&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'token'&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; jsonResponse&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;return&lt;/SPAN&gt; jsonResponse&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'token'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;elif&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'error'&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; jsonResponse&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;jsonResponse&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'error'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'message'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; detail &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; jsonResponse&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'error'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'details'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
            &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;detail&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
    &lt;SPAN class="keyword token"&gt;except&lt;/SPAN&gt; ValueError&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
        &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'An unspecified error occurred.'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P style="border: 0px;"&gt;------------------------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P style="border: 0px;"&gt;&lt;EM style="background-color: #ffffff; border: 0px; font-weight: inherit;"&gt;Please mark as helpful if you find it helpful. If it answered your question please mark it as answered.&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 08:27:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/portal-login-error/m-p/764057#M473</guid>
      <dc:creator>MehdiPira1</dc:creator>
      <dc:date>2021-12-12T08:27:52Z</dc:date>
    </item>
    <item>
      <title>Re: Portal login error</title>
      <link>https://community.esri.com/t5/arcgis-api-for-python-questions/portal-login-error/m-p/764058#M474</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the input on the&amp;nbsp; .encode(utf-8)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I ran the code several times, nothing happened.. NOT even errors.&lt;/P&gt;&lt;P&gt;Then I remembered to add:&amp;nbsp; generateToken(username, password, portalUrl ) at the end of the code.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 15:59:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-python-questions/portal-login-error/m-p/764058#M474</guid>
      <dc:creator>CliveSwan</dc:creator>
      <dc:date>2020-10-29T15:59:42Z</dc:date>
    </item>
  </channel>
</rss>

