dusty-nv / jetson-inference

Hello AI World guide to deploying deep-learning inference networks and deep vision primitives with TensorRT and NVIDIA Jetson.
https://developer.nvidia.com/embedded/twodaystoademo
MIT License
7.84k stars 2.98k forks source link

cannot successfully run jetson nano camera commands from another host with ssh -X #428

Closed syonekura closed 1 year ago

syonekura commented 5 years ago

Hi, i'm able to run all the example scripts locally from the jetson nano, but now I need to access it from my pc for developing purposes.

So I've set the nano on the same local network than my pc. The Jetson Nano is conneced to a RPi Camera v2.1, power adapter and ethernet, while the PC has the latest nvidia drivers (430.50) installed via runfile with the --no-opengl-files according to this guide. This was because installing via apt-get or other means got me to the error reported here.

But now running any script via ssh -X throws some errors that i dont know how to deal with. For example when running ./camera-viewer:

jetson@nano:~/jetson-inference/build/aarch64/bin$ ./camera-viewer
[gstreamer] initialized gstreamer, version 1.14.5.0
[gstreamer] gstCamera attempting to initialize with GST_SOURCE_NVARGUS, camera 0
[gstreamer] gstCamera pipeline string:
nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=30/1, format=(string)NV12 ! nvvidconv flip-method=2 ! video/x-raw ! appsink name=mysink
nvbuf_utils: Could not get EGL display connection
[gstreamer] gstCamera successfully initialized with GST_SOURCE_NVARGUS, camera 0

camera-viewer:  successfully initialized camera device
    width:  1280
   height:  720
    depth:  12 (bpp)
[OpenGL] glDisplay -- X screen 0 resolution:  1440x900
[OpenGL] glDisplay -- display device initialized
[gstreamer] opening gstCamera for streaming, transitioning pipeline to GST_STATE_PLAYING
[gstreamer] gstreamer changed state from NULL to READY ==> mysink
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter1
[gstreamer] gstreamer changed state from NULL to READY ==> nvvconv0
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter0
[gstreamer] gstreamer changed state from NULL to READY ==> nvarguscamerasrc0
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter1
[gstreamer] gstreamer changed state from READY to PAUSED ==> nvvconv0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter0
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> nvarguscamerasrc0
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer msg new-clock ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nvvconv0
[gstreamer] gstreamer msg stream-start ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nvarguscamerasrc0
camera-viewer:  camera open for streaming
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3264 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3264 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 4 
   Output Stream W = 1280 H = 720 
   seconds to Run    = 0 
   Frame Rate = 120.000005 
GST_ARGUS: PowerService: requested_clock_Hz=6048000
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
[gstreamer] gstCamera onPreroll
[gstreamer] gstCamera -- allocated 16 ringbuffers, 1382400 bytes each
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysink
[gstreamer] gstreamer msg async-done ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysink
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0
[gstreamer] gstCamera -- allocated 16 RGBA ringbuffers
[OpenGL]   creating 1280x720 texture
[cuda]  cudaGraphicsGLRegisterBuffer(&mInteropCUDA, mDMA, cudaGraphicsRegisterFlagsWriteDiscard)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/display/glTexture.cpp:253
[cuda]  cudaGetLastError()
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/cuda/cudaYUV-NV12.cu:384
[cuda]  cudaNV12ToRGBA32((uint8_t*)input, (float4*)mRGBA[mLatestRGBA], mWidth, mHeight)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/camera/gstCamera.cpp:269
[gstreamer] gstCamera failed to convert frame to RGBA
camera-viewer:  failed to capture RGBA image
[cuda]  cudaGraphicsGLRegisterBuffer(&mInteropCUDA, mDMA, cudaGraphicsRegisterFlagsWriteDiscard)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/display/glTexture.cpp:253
[cuda]  cudaGetLastError()
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/cuda/cudaYUV-NV12.cu:384
[cuda]  cudaNV12ToRGBA32((uint8_t*)input, (float4*)mRGBA[mLatestRGBA], mWidth, mHeight)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/camera/gstCamera.cpp:269
[gstreamer] gstCamera failed to convert frame to RGBA
camera-viewer:  failed to capture RGBA image
[cuda]  cudaGraphicsGLRegisterBuffer(&mInteropCUDA, mDMA, cudaGraphicsRegisterFlagsWriteDiscard)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/display/glTexture.cpp:253
[cuda]  cudaGetLastError()
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/cuda/cudaYUV-NV12.cu:384
[cuda]  cudaNV12ToRGBA32((uint8_t*)input, (float4*)mRGBA[mLatestRGBA], mWidth, mHeight)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/camera/gstCamera.cpp:269
[gstreamer] gstCamera failed to convert frame to RGBA
camera-viewer:  failed to capture RGBA image
[cuda]  cudaGraphicsGLRegisterBuffer(&mInteropCUDA, mDMA, cudaGraphicsRegisterFlagsWriteDiscard)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/display/glTexture.cpp:253
[cuda]  cudaGetLastError()
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/cuda/cudaYUV-NV12.cu:384
[cuda]  cudaNV12ToRGBA32((uint8_t*)input, (float4*)mRGBA[mLatestRGBA], mWidth, mHeight)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/camera/gstCamera.cpp:269
[gstreamer] gstCamera failed to convert frame to RGBA
camera-viewer:  failed to capture RGBA image
^Creceived SIGINT
[cuda]  cudaGraphicsGLRegisterBuffer(&mInteropCUDA, mDMA, cudaGraphicsRegisterFlagsWriteDiscard)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/display/glTexture.cpp:253

camera-viewer:  shutting down...
[gstreamer] closing gstCamera for streaming, transitioning pipeline to GST_STATE_NULL
GST_ARGUS: Cleaning up
CONSUMER: Done Success
GST_ARGUS: Done Success
camera-viewer:  shutdown complete.
GST_ARGUS: 
PowerServiceHwVic::cleanupResources

output of imagenet-camera.py:

jetson@nano:~/jetson-inference/build/aarch64/bin$ ./imagenet-camera.py --camera 0
jetson.inference.__init__.py
jetson.inference -- initializing Python 2.7 bindings...
jetson.inference -- registering module types...
jetson.inference -- done registering module types
jetson.inference -- done Python 2.7 binding initialization
jetson.utils.__init__.py
jetson.utils -- initializing Python 2.7 bindings...
jetson.utils -- registering module functions...
jetson.utils -- done registering module functions
jetson.utils -- registering module types...
jetson.utils -- done registering module types
jetson.utils -- done Python 2.7 binding initialization
jetson.inference -- PyTensorNet_New()
jetson.inference -- PyImageNet_Init()
jetson.inference -- imageNet loading network using argv command line params
jetson.inference -- imageNet.__init__() argv[0] = './imagenet-camera.py'
jetson.inference -- imageNet.__init__() argv[1] = '--camera'
jetson.inference -- imageNet.__init__() argv[2] = '0'

imageNet -- loading classification network model from:
         -- prototxt     networks/googlenet.prototxt
         -- model        networks/bvlc_googlenet.caffemodel
         -- class_labels networks/ilsvrc12_synset_words.txt
         -- input_blob   'data'
         -- output_blob  'prob'
         -- batch_size   1

[TRT]   TensorRT version 5.1.6
[TRT]   loading NVIDIA plugins...
[TRT]   Plugin Creator registration succeeded - GridAnchor_TRT
[TRT]   Plugin Creator registration succeeded - NMS_TRT
[TRT]   Plugin Creator registration succeeded - Reorg_TRT
[TRT]   Plugin Creator registration succeeded - Region_TRT
[TRT]   Plugin Creator registration succeeded - Clip_TRT
[TRT]   Plugin Creator registration succeeded - LReLU_TRT
[TRT]   Plugin Creator registration succeeded - PriorBox_TRT
[TRT]   Plugin Creator registration succeeded - Normalize_TRT
[TRT]   Plugin Creator registration succeeded - RPROI_TRT
[TRT]   Plugin Creator registration succeeded - BatchedNMS_TRT
[TRT]   completed loading NVIDIA plugins.
[TRT]   detected model format - caffe  (extension '.caffemodel')
[TRT]   desired precision specified for GPU: FASTEST
[TRT]   requested fasted precision for device GPU without providing valid calibrator, disabling INT8
[TRT]   native precisions detected for GPU:  FP32, FP16
[TRT]   selecting fastest native precision for GPU:  FP16
[TRT]   attempting to open engine cache file networks/bvlc_googlenet.caffemodel.1.1.GPU.FP16.engine
[TRT]   loading network profile from engine cache... networks/bvlc_googlenet.caffemodel.1.1.GPU.FP16.engine
[TRT]   device GPU, networks/bvlc_googlenet.caffemodel loaded
[TRT]   device GPU, CUDA engine context initialized with 2 bindings
[TRT]   binding -- index   0
               -- name    'data'
               -- type    FP32
               -- in/out  INPUT
               -- # dims  3
               -- dim #0  3 (CHANNEL)
               -- dim #1  224 (SPATIAL)
               -- dim #2  224 (SPATIAL)
[TRT]   binding -- index   1
               -- name    'prob'
               -- type    FP32
               -- in/out  OUTPUT
               -- # dims  3
               -- dim #0  1000 (CHANNEL)
               -- dim #1  1 (SPATIAL)
               -- dim #2  1 (SPATIAL)
[TRT]   binding to input 0 data  binding index:  0
[TRT]   binding to input 0 data  dims (b=1 c=3 h=224 w=224) size=602112
[TRT]   binding to output 0 prob  binding index:  1
[TRT]   binding to output 0 prob  dims (b=1 c=1000 h=1 w=1) size=4000
device GPU, networks/bvlc_googlenet.caffemodel initialized.
[TRT]   networks/bvlc_googlenet.caffemodel loaded
imageNet -- loaded 1000 class info entries
networks/bvlc_googlenet.caffemodel initialized.
jetson.utils -- PyFont_New()
jetson.utils -- PyFont_Init()
jetson.utils -- PyCamera_New()
jetson.utils -- PyCamera_Init()
[gstreamer] initialized gstreamer, version 1.14.5.0
[gstreamer] gstCamera attempting to initialize with GST_SOURCE_NVARGUS, camera 0
[gstreamer] gstCamera pipeline string:
nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, framerate=30/1, format=(string)NV12 ! nvvidconv flip-method=2 ! video/x-raw ! appsink name=mysink
nvbuf_utils: Could not get EGL display connection
[gstreamer] gstCamera successfully initialized with GST_SOURCE_NVARGUS, camera 0
jetson.utils -- PyDisplay_New()
jetson.utils -- PyDisplay_Init()
[OpenGL] glDisplay -- X screen 0 resolution:  1440x900
[OpenGL] glDisplay -- display device initialized
[gstreamer] opening gstCamera for streaming, transitioning pipeline to GST_STATE_PLAYING
[gstreamer] gstreamer changed state from NULL to READY ==> mysink
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter1
[gstreamer] gstreamer changed state from NULL to READY ==> nvvconv0
[gstreamer] gstreamer changed state from NULL to READY ==> capsfilter0
[gstreamer] gstreamer changed state from NULL to READY ==> nvarguscamerasrc0
[gstreamer] gstreamer changed state from NULL to READY ==> pipeline0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter1
[gstreamer] gstreamer changed state from READY to PAUSED ==> nvvconv0
[gstreamer] gstreamer changed state from READY to PAUSED ==> capsfilter0
[gstreamer] gstreamer stream status CREATE ==> src
[gstreamer] gstreamer changed state from READY to PAUSED ==> nvarguscamerasrc0
[gstreamer] gstreamer changed state from READY to PAUSED ==> pipeline0
[gstreamer] gstreamer stream status ENTER ==> src
[gstreamer] gstreamer msg new-clock ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter1
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nvvconv0
[gstreamer] gstreamer msg stream-start ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> capsfilter0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> nvarguscamerasrc0
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3264 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3264 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 4 
   Output Stream W = 1280 H = 720 
   seconds to Run    = 0 
   Frame Rate = 120.000005 
GST_ARGUS: PowerService: requested_clock_Hz=6048000
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
[gstreamer] gstCamera onPreroll
[gstreamer] gstCamera -- allocated 16 ringbuffers, 1382400 bytes each
[gstreamer] gstreamer changed state from READY to PAUSED ==> mysink
[gstreamer] gstreamer msg async-done ==> pipeline0
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> mysink
[gstreamer] gstreamer changed state from PAUSED to PLAYING ==> pipeline0
[gstreamer] gstCamera -- allocated 16 RGBA ringbuffers
class 0111 - 0.062032  (nematode, nematode worm, roundworm)
class 0530 - 0.019749  (digital clock)
class 0549 - 0.010530  (envelope)
class 0556 - 0.019749  (fire screen, fireguard)
class 0619 - 0.016245  (lampshade, lamp shade)
class 0644 - 0.015684  (matchstick)
class 0700 - 0.012751  (paper towel)
class 0753 - 0.010126  (radiator)
class 0794 - 0.019749  (shower curtain)
class 0811 - 0.014966  (space heater)
class 0818 - 0.142547  (spotlight, spot)
class 0854 - 0.023729  (theater curtain, theatre curtain)
class 0885 - 0.181610  (velvet)
class 0904 - 0.091677  (window screen)
[OpenGL]   creating 1280x720 texture
[cuda]  cudaGraphicsGLRegisterBuffer(&mInteropCUDA, mDMA, cudaGraphicsRegisterFlagsWriteDiscard)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/display/glTexture.cpp:253

[TRT]   ------------------------------------------------
[TRT]   Timing Report networks/bvlc_googlenet.caffemodel
[TRT]   ------------------------------------------------
[TRT]   Pre-Process   CPU   0.06709ms  CUDA   0.50693ms
[TRT]   Network       CPU  42.18282ms  CUDA  32.02609ms
[TRT]   Post-Process  CPU   0.35126ms  CUDA   0.34828ms
[TRT]   Total         CPU  42.60117ms  CUDA  32.88130ms
[TRT]   ------------------------------------------------

[TRT]   note -- when processing a single image, run 'sudo jetson_clocks' before
                to disable DVFS for more accurate profiling/timing measurements

[cuda]  cudaGetLastError()
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/cuda/cudaYUV-NV12.cu:384
[cuda]  cudaNV12ToRGBA32((uint8_t*)input, (float4*)mRGBA[mLatestRGBA], mWidth, mHeight)
[cuda]     unknown error (error 30) (hex 0x1E)
[cuda]     /home/jetson/jetson-inference/utils/camera/gstCamera.cpp:269
[gstreamer] gstCamera failed to convert frame to RGBA
Traceback (most recent call last):
  File "./imagenet-camera.py", line 57, in <module>
    img, width, height = camera.CaptureRGBA()
Exception: jetson.utils -- gstCamera failed to CaptureRGBA()
jetson.utils -- PyDisplay_Dealloc()
jetson.utils -- PyCamera_Dealloc()
[gstreamer] closing gstCamera for streaming, transitioning pipeline to GST_STATE_NULL
GST_ARGUS: Cleaning up
CONSUMER: Done Success
GST_ARGUS: Done Success
PyTensorNet_Dealloc()
jetson.utils -- PyFont_Dealloc()
GST_ARGUS: 
PowerServiceHwVic::cleanupResources

I'm not familiar either with cuda or opengl, could someone please help me?

dusty-nv commented 5 years ago

Hi @syonekura , the OpenGL rendering with CUDA interopability that this project uses is meant to run on a display directly connected to the Nano, and is unlikely to work over SSH forwarding. And even if it were, it would display very slowly, so it is recommended to view the camera video from the Nano itself.

aansrajpoot commented 3 years ago

Hi @syonekura , I'm just simple trying to access my Jetson Nano camera via SSH connection. But I'm getting an error of this. I'm not able to run my python file to launch camera. I have to detect lane lines in live video streaming. Thank you if you can help me.

image

benb0jangles commented 3 years ago

Hi @syonekura , the OpenGL rendering with CUDA interopability that this project uses is meant to run on a display directly connected to the Nano, and is unlikely to work over SSH forwarding. And even if it were, it would display very slowly, so it is recommended to view the camera video from the Nano itself.

Hey, would it be possible to use ssh to run jetson-inference examples yet have the camera image show on the display connected to jetson-nano hdmi?

dusty-nv commented 3 years ago

Hmm, maybe if you set the DISPLAY environment variable appropriately. DISPLAY=:0 Not sure though, haven't tried it.

From: benbojangles @.> Sent: Wednesday, September 15, 2021 12:50 PM To: dusty-nv/jetson-inference @.> Cc: Dustin Franklin @.>; Comment @.> Subject: Re: [dusty-nv/jetson-inference] cannot successfully run jetson nano camera commands from another host with ssh -X (#428)

Hi @syonekurahttps://github.com/syonekura , the OpenGL rendering with CUDA interopability that this project uses is meant to run on a display directly connected to the Nano, and is unlikely to work over SSH forwarding. And even if it were, it would display very slowly, so it is recommended to view the camera video from the Nano itself.

Hey, would it be possible to use ssh to run jetson-inference examples yet have the camera image show on the display connected to jetson-nano hdmi?

- You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/dusty-nv/jetson-inference/issues/428#issuecomment-920190971, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADVEGK6KAM6JHFFNHKBSWTTUCDFCHANCNFSM4JAJPLGA. Triage notifications on the go with GitHub Mobile for iOShttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04%7C01%7Cdustinf%40nvidia.com%7C0af4f21ab9f747d870d508d97868cf5f%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637673213819235454%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=t8Bn4xXWb%2FpJxjaXldi9PS%2BAjzFvCzbAVaimWm6upEM%3D&reserved=0 or Androidhttps://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04%7C01%7Cdustinf%40nvidia.com%7C0af4f21ab9f747d870d508d97868cf5f%7C43083d15727340c1b7db39efd9ccc17a%7C0%7C0%7C637673213819235454%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=LV4sJ8SZ%2FE5ZkI4NHRusQFTMYqdqo8baerzdgBXJeiM%3D&reserved=0.