ubuntu python3.6升级3.8
sudo apt install python3.8 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 2 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 3 apt install python3-pip -y
先ln -s 相关的so(apt_pkg.so、_gi.so)
root@xxxxx:/usr/lib/python3/dist-packages# ll | grep apt_pkg lrwxrwxrwx 1 root root 39 Dec 15 02:06 apt_pkg.so -> apt_pkg.cpython-36m-x86_64-linux-gnu.so root@xxxxx:/usr/lib/python3/dist-packages/gi# ll | grep _gi lrwxrwxrwx 1 root root 35 Dec 15 02:11 _gi.so -> _gi.cpython-36m-x86_64-linux-gnu.so
参考这里https://blog.csdn.net/qq_30065853/article/details/122414615
apt install python3.8-dev python3-dev python-dev -y apt-get install sox ffmpeg libgirepository1.0-dev python-cairo libcairo2 libcairo2-dev -y apt-get install texlive-full -y # may be not necessary python3.8 -m pip install -U manimlib python3.8 -m pip install -U manimce python3.8 -m pip install -U pycairo
# 如遇故障,请把-U改成-I python3.8 -m pip install --ignore-installed PyGObject
bash: add-apt-repository: command not found
sudo apt update && sudo apt upgrade sudo apt install software-properties-common
升级G++-11 参考这里https://stackoverflow.com/questions/67298443/when-gcc-11-will-appear-in-ubuntu-repositories
apt install gcc g++ make bison binutils gcc-multilib build-essential manpages-dev software-properties-common sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update && sudo apt install gcc-11 g++-11 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11 --slave /usr/bin/cpp cpp /usr/bin/cpp-11;
升级G++-11(方法2):
# 镜像地址这里选https://gcc.gnu.org/mirrors.html wget https://bigsearcher.com/mirrors/gcc/releases/gcc-11.3.0/gcc-11.3.0.tar.gz tar -zxvf gcc-11.3.0.tar.gz cd gcc-11.3.0 mkdir build cd build ../configure --enable-multilib && make && sudo make install
安装clang-12
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main" sudo apt install -y \ software-properties-common \ cmake \ libboost-all-dev # And you will need to install llvm for the AOT runtime sudo apt install -y \ llvm-12-dev \ liblld-12-dev # If you prefer GCC, then: sudo apt install -y gcc g++ # Or if you prefer clang, then: sudo apt install -y clang-12
安装GPU驱动
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get upgrade sudo apt-get install nvidia-440 sudo reboot
安装CUDA https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
apt -y install cuda-10-2 cuda-toolkit-10-2 cuda-libraries-10-2 [--no-install-recommends] apt-get install nvidia-cuda-toolkit OS=ubuntu1804 cudnn_version=8.7.0.* cuda_version=cuda10.2 wget https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/cuda-${OS}.pin sudo mv cuda-${OS}.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/3bf863cc.pub sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/ /" sudo apt-get update sudo apt-get install libcudnn8=${cudnn_version}-1+${cuda_version} sudo apt-get install libcudnn8-dev=${cudnn_version}-1+${cuda_version}
tar 解压cuda后安装至全局
sudo -s sudo echo '/home/waynexzhou/cuda-11.1/lib64/' >> /etc/ld.so.conf sudo ldconfig sudo cp -r -a /home/waynexzhou/cuda-11.1/include/* /usr/include sudo cp -r -a /home/waynexzhou/cuda-11.1/lib64/* /usr/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/cuda-11.1/lib64
测试OpenCL
// gcc test-opencl.c -lOpenCL -o main -I /usr/local/cuda-10.2/include/ -L /usr/local/cuda-10.2/lib64/ #include <CL/cl.h> #include <stdio.h> int main() { // Get the number of available platforms cl_uint num_platforms; clGetPlatformIDs(0, NULL, &num_platforms); // Get the list of all available platforms cl_platform_id platforms[num_platforms]; clGetPlatformIDs(num_platforms, platforms, NULL); printf("Number of platforms: %d\n", num_platforms); // Print the name and vendor of each platform for (int i = 0; i < num_platforms; i++) { char name[256]; char vendor[256]; clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME, sizeof(name), name, NULL); clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(vendor), vendor, NULL); printf("Platform %d: %s - %s\n", i+1, name, vendor); } return 0; }
测试nvcc
```
```
安装NCCL
# https://docs.nvidia.com/deeplearning/nccl/install-guide/index.html apt install libnccl2 libnccl-dev # https://developer.nvidia.com/nccl/nccl-legacy-downloads apt install libnccl2=2.15.5-1+cuda10.2 libnccl-dev=2.15.5-1+cuda10.2
安装bazel https://bazel.build/install/ubuntu
sudo apt install apt-transport-https curl gnupg curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg sudo mv bazel-archive-keyring.gpg /usr/share/keyrings echo "deb [arch=amd64 signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt update && sudo apt install bazel-5.3.0
https://github.com/second-state/WasmEdge-tensorflow-tools
docker pull wasmedge/wasmedge:ubuntu-build-gcc # gcc 9.4.0 docker run -it --rm \ -v /home/waynexzhou/WasmEdge-tensorflow-tools:/root/WasmEdge-tensorflow-tools \ wasmedge/wasmedge:ubuntu-build-gcc # In docker cd /root/WasmEdge-tensorflow-tools mkdir -p build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. && make
tflite
mkdir tflite_build cd tflite_build cmake ../tensorflow/lite/c -DTFLITE_ENABLE_GPU=ON cmake --build . -j -DTFLITE_ENABLE_GPU=ON
2
# curl -sLO https://github.com/bazelbuild/bazelisk/releases/download/v1.11.0/bazelisk-linux-amd64 # chmod u+x bazelisk-linux-amd64 # mv bazelisk-linux-amd64 /usr/local/bin/bazel mkdir build cd build export CC=gcc export CXX=g++ # PYTHON_BIN_PATH=/usr/bin/python3.8 USE_DEFAULT_PYTHON_LIB_PATH=1 TF_NEED_CUDA=1 TF_NEED_ROCM=0 TF_DOWNLOAD_CLANG=0 TF_NEED_MPI=0 CC_OPT_FLAGS="-march=native -Wno-sign-compare" TF_SET_ANDROID_WORKSPACE=0 TF_CONFIGURE_IOS=0 ./configure # BAZEL_LINKLIBS=-l%:libstdc++.a bazel build -c opt --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" //tensorflow:libtensorflow.so # BAZEL_LINKLIBS=-l%:libstdc++.a bazel build -c opt --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" //tensorflow/lite/c:libtensorflowlite_c.so BAZEL_LINKLIBS=-l%:libstdc++.a bazel build -c opt --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" --config=cuda --copt -DTFLITE_ENABLE_GPU=ON //tensorflow/lite/delegates/gpu:libtensorflowlite_gpu_delegate.so --verbose_failures # --copt -DTFLITE_GPU_BINARY_RELEASE
cmake \ -DCMAKE_CXX_FLAGS=-std=c++14 \ -DCMAKE_BUILD_TYPE=Release \ -DTFLITE_ENABLE_GPU=ON \ ../tensorflow_src/tensorflow/lite/c \ && make -j # cmake --build . -j
curl -sLO https://github.com/bazelbuild/bazel/releases/download/5.3.0/bazel-5.3.0-installer-linux-x86_64.sh chmod u+x bazel-5.3.0-installer-linux-x86_64.sh ./bazel-5.3.0-installer-linux-x86_64.sh docker run -it -d --gpus all --ipc=host -p 10036:22 -v $(pwd):/root/$(basename $(pwd)) --name "paddle2.1" paddlepaddle/paddle:2.1.2-gpu-cuda11.2-cudnn8 bash -c "/etc/rc.local; /bin/bash" sudo apt install -y tar bzip2 make automake gcc gcc-c++ vim pciutils elfutils-libelf-devel libglvnd-devel iptables apt-get- yinstall freeglut3-dev libgles2-mesa-dev libegl1-mesa-dev bazel build //tensorflow/lite:libtensorflowlite.so -c opt bazel build //tensorflow/lite/c:libtensorflowlite_c.so -c opt bazel build -c opt tensorflow/lite/delegates/gpu:libtensorflowlite_gpu_delegate.so --copt -DEGL_NO_X11=1 bazel build -c opt --copt="-DMESA_EGL_NO_X11_HEADERS" --copt="-DEGL_NO_X11" tensorflow/lite/delegates/gpu:libtensorflowlite_gpu_gl.so # tensorflow/lite/delegates/gpu bazel build -c opt --copt -Os --copt -DTFLITE_GPU_BINARY_RELEASE --copt -fvisibility=hidden --linkopts -s --strip always :libtensorflowlite_gpu_gl.so bazel build -c opt --copt="-DMESA_EGL_NO_X11_HEADERS" --copt="-DEGL_NO_X11" tensorflow/lite/delegates/gpu:libtensorflowlite_gpu_gl.so https://blog.csdn.net/hhaowang/article/details/111866024
conda快速安装cuda11+cudnn8并将其加载系统变量 以及快速安装tensorflow
1、https://github.com/jiangxinyang227/nlp_tflite
2、https://github.com/ValYouW/tflite-dist/blob/master/build-android.sh
3、https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/g3doc/guide/build_cmake.md
sudo apt-get install linux-headers-$(uname -r) sudo apt-get install nvidia-opencl-icd-<version>
# OpenCL curl -fsSL https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_64/7fa2af80.pub | apt-key add - echo "deb https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_64/ /" > /etc/apt/sources.list.d/cuda.list apt update apt-get install nvidia-opencl-dev echo "/usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.1" >> /etc/OpenCL/vendors/nvidia.icd sudo apt -y install nvidia-opencl-dev [ocl-icd-libopencl1] sudo apt-get update -y sudo apt-get install -y libhugs-opengl-bundled # OpenGL sudo apt-get update sudo apt-get install cmake pkg-config sudo apt-get install mesa-utils libglu1-mesa-dev freeglut3-dev mesa-common-dev sudo apt-get install libglew-dev libglfw3-dev libglm-dev sudo apt-get install libao-dev libmpg123-dev # !!!! cd /usr/local/lib/ git clone https://github.com/glfw/glfw.git cd glfw cmake . make sudo make install sudo apt-get -y install build-essential libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev libglew1.8 libglew-dev libgl1-mesa-glx libxmu-dev install libglm-dev \ --reinstall export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0 export LIBGL_ALWAYS_INDIRECT=0
root@iotsc-waynexzhou:~/code/build# ./minimal ~/code/linear.tflite Activating GPU... INFO: Created TensorFlow Lite delegate for GPU. INFO: Initialized OpenCL-based API. INFO: Created 1 GPU delegate kernels. === Pre-invoke Interpreter State === Interpreter has 1 subgraphs. -----------Subgraph-0 has 10 tensors and 2 nodes------------ 1 Inputs: [0] -> 4B (0.00MB) 1 Outputs: [3] -> 4B (0.00MB) Tensor ID Name Type AllocType Size (Bytes/MB) Shape MemAddr-Offset Tensor 0 serving_default_dense_... kTfLiteFloat32 kTfLiteArenaRw 4 / 0.00 [1,1] [0, 4) Tensor 1 sequential/dense/BiasA... kTfLiteFloat32 kTfLiteMmapRo 4 / 0.00 [1] [24, 28) Tensor 2 sequential/dense/MatMul kTfLiteFloat32 kTfLiteMmapRo 4 / 0.00 [1,1] [0, 4) Tensor 3 StatefulPartitionedCall:0 kTfLiteFloat32 kTfLiteArenaRw 4 / 0.00 [1,1] [64, 68) Tensor 4 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 5 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 6 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 7 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 8 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 9 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) kTfLiteArenaRw Info: Tensor 0 has the max size 4 bytes (0.000 MB). This memory arena is estimated as[0x562a383a8644, 0x562a383a8600), taking 68 bytes (0.000 MB). One possible set of tensors that have non-overlapping memory spaces with each other, and they take up the whole arena: Tensor 0 -> 3. kTfLiteArenaRwPersistent Info: not holding any allocation. kTfLiteMmapRo Info: Tensor 1 has the max size 4 bytes (0.000 MB). This memory arena is estimated as[0x7f14352b91dc, 0x7f14352b91c0), taking 28 bytes (0.000 MB). One possible set of tensors that have non-overlapping memory spaces with each other, and they take up the whole arena: Tensor 2 -> 1. kTfLiteDynamic Info: not holding any allocation. Node 0 Operator Builtin Code 9 FULLY_CONNECTED (delegated by node 1) 3 Input Tensors:[0,2,1] -> 0B (0.00MB) 1 Output Tensors:[3] -> 0B (0.00MB) Node 1 Operator Custom Name TfLiteGpuDelegateV2 3 Input Tensors:[0-2] -> 12B (0.00MB) 1 Output Tensors:[3] -> 4B (0.00MB) Execution plan as the list of 1 nodes invoked in-order: [1] Among these nodes in the execution plan: Node 1 is a TfLiteGpuDelegateV2 node (0x562a37a54f70), which has delegated 1 nodes: [0] --------------Subgraph-0 dump has completed-------------- --------------Memory Arena Status Start-------------- Total memory usage: 324 bytes (0.000 MB) - Total arena memory usage: 324 bytes (0.000 MB) - Total dynamic memory usage: 0 bytes (0.000 MB) Subgraph#0 Arena (Normal) 196 (60.49%) Subgraph#0 Arena (Persistent) 128 (39.51%) --------------Memory Arena Status End-------------- === Post-invoke Interpreter State === Interpreter has 1 subgraphs. -----------Subgraph-0 has 10 tensors and 2 nodes------------ 1 Inputs: [0] -> 4B (0.00MB) 1 Outputs: [3] -> 4B (0.00MB) Tensor ID Name Type AllocType Size (Bytes/MB) Shape MemAddr-Offset Tensor 0 serving_default_dense_... kTfLiteFloat32 kTfLiteArenaRw 4 / 0.00 [1,1] [0, 4) Tensor 1 sequential/dense/BiasA... kTfLiteFloat32 kTfLiteMmapRo 4 / 0.00 [1] [24, 28) Tensor 2 sequential/dense/MatMul kTfLiteFloat32 kTfLiteMmapRo 4 / 0.00 [1,1] [0, 4) Tensor 3 StatefulPartitionedCall:0 kTfLiteFloat32 kTfLiteArenaRw 4 / 0.00 [1,1] [64, 68) Tensor 4 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 5 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 6 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 7 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 8 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) Tensor 9 (nil) kTfLiteNoType kTfLiteMemNone 0 / 0.00 (null) [-1, -1) kTfLiteArenaRw Info: Tensor 0 has the max size 4 bytes (0.000 MB). This memory arena is estimated as[0x562a383a8644, 0x562a383a8600), taking 68 bytes (0.000 MB). One possible set of tensors that have non-overlapping memory spaces with each other, and they take up the whole arena: Tensor 0 -> 3. kTfLiteArenaRwPersistent Info: not holding any allocation. kTfLiteMmapRo Info: Tensor 1 has the max size 4 bytes (0.000 MB). This memory arena is estimated as[0x7f14352b91dc, 0x7f14352b91c0), taking 28 bytes (0.000 MB). One possible set of tensors that have non-overlapping memory spaces with each other, and they take up the whole arena: Tensor 2 -> 1. kTfLiteDynamic Info: not holding any allocation. Node 0 Operator Builtin Code 9 FULLY_CONNECTED (delegated by node 1) 3 Input Tensors:[0,2,1] -> 0B (0.00MB) 1 Output Tensors:[3] -> 0B (0.00MB) Node 1 Operator Custom Name TfLiteGpuDelegateV2 3 Input Tensors:[0-2] -> 12B (0.00MB) 1 Output Tensors:[3] -> 4B (0.00MB) Execution plan as the list of 1 nodes invoked in-order: [1] Among these nodes in the execution plan: Node 1 is a TfLiteGpuDelegateV2 node (0x562a37a54f70), which has delegated 1 nodes: [0] --------------Subgraph-0 dump has completed-------------- --------------Memory Arena Status Start-------------- Total memory usage: 324 bytes (0.000 MB) - Total arena memory usage: 324 bytes (0.000 MB) - Total dynamic memory usage: 0 bytes (0.000 MB) Subgraph#0 Arena (Normal) 196 (60.49%) Subgraph#0 Arena (Persistent) 128 (39.51%) --------------Memory Arena Status End--------------
npm 重装(`GLIBC_2.28' not found) https://stackoverflow.com/questions/72921215/getting-glibc-2-28-not-found
$ sudo apt-get remove nodejs $ sudo apt-get remove npm $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash $ chmod +x ~/.nvm/nvm.sh $ source ~/.bashrc $ nvm -v 0.39.2 $ nvm install 14 $ node -v v14.20.1 $ npm -v 6.14.17 $ nvm install 16 $ node -v v16.18.0 $ npm -v 8.19.2
install vtune-gui dependencies
sudo apt-get install -y libgbm1 libasound2 https://www.intel.com/content/www/us/en/docs/vtune-profiler/installation-guide/2023-0/package-managers.html
OpenWhisk GPU
https://medium.com/openwhisk/using-gpus-with-apache-openwhisk-c6773efcccfb
gem install rails :ERROR
https://blog.csdn.net/henmj/article/details/125015847
网络端口错误
https://blog.csdn.net/qq_29274865/article/details/116016449
https://blog.csdn.net/bowenlaw/article/details/105358102
https://stackoverflow.com/questions/35220654/how-to-verify-if-nginx-is-running-or-not
Temporary failure resolving 'archive.ubuntu.com' https://askubuntu.com/questions/91543/apt-get-update-fails-to-fetch-files-temporary-failure-resolving-error
SSH 免密登录(设置后仍需输入密码的原因及解决方法)
https://blog.csdn.net/sculpta/article/details/108130992
https://blog.csdn.net/qq_19922839/article/details/117488663
PERF权限不足
https://blog.eastonman.com/blog/2021/02/use-perf/
docker: Error response from daemon: Unknown runtime specified nvidia
https://blog.csdn.net/zaf0516/article/details/122617623
完整下载带有引用其他项目的github项目代码及其他
https://coleflowers.github.io/2015/06/28/github-note.html
https://github.com/tensorflow/tensorflow/issues/48407
https://www.tensorflow.org/lite/android/delegates/gpu#c++
https://stackoverflow.com/questions/56837288/tensorflow-lite-c-api-example-for-inference
https://medium.com/analytics-vidhya/inference-tensorflow2-model-in-c-aa73a6af41cf
https://github.com/kashimAstro/tf_inference
https://github.com/google-coral/tflite
https://github.com/jiangxinyang227/nlp_tflite
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/delegates/gpu/README.md
[Has 3 dynamic libs:](https://github.com/ValYouW/tflite-dist)
libtensorflowlite.so - C++ library
libtensorflowlite_c.so - C library
libtensorflowlite_gpu_delegate.so - The C++ GPU delegate library
https://www.tensorflow.org/lite/performance/gpu#c(支持到-2.3.0-版)
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/g3doc/guide/build_cmake.md
https://zhuanlan.zhihu.com/p/53393267
https://stackoverflow.com/questions/71875103/compile-tflite-script-with-cmake-cmakelists-for-gpu
https://github.com/tensorflow/tensorflow/issues/38746
https://github.com/tensorflow/tensorflow/issues/48407
https://github.com/tensorflow/tensorflow/issues/58497 [!!!]
bazel -c opt --copt -Os --copt -DTFLITE_GPU_BINARY_RELEASE tensorflow/lite/delegates/gpu:libtensorflowlite_gpu_delegate.so --verbose_failures
-DTFLITE_ENABLE_GPU=ON
Unfortunately, TFLite GPU delegate in official Tensorflow repo does not support Ubuntu.
https://blog.csdn.net/u013701860/article/details/125009412
安装opencl
https://matpool.medium.com/%E7%9F%A9%E6%B1%A0%E4%BA%91%E4%B8%8Anvidia-opencl%E5%AE%89%E8%A3%85%E5%8F%8A%E6%B5%8B%E8%AF%95%E6%95%99%E7%A8%8B-6cbb616cc30d
sudo apt -y install nvidia-opencl-dev [ocl-icd-libopencl1]
https://www.cnblogs.com/vactor/p/9286425.html !!!
clinfo测试
openGL
https://zoomadmin.com/HowToInstall/UbuntuPackage/libhugs-opengl-bundled
https://medium.com/geekculture/a-beginners-guide-to-setup-opengl-in-linux-debian-2bfe02ccd1e
https://www.cntofu.com/book/46/opengl/ubuntuxia_an_zhuang_opengl_tu_xing_ku.md
https://gist.github.com/Mluckydwyer/8df7782b1a6a040e5d01305222149f3c
https://gist.github.com/ksopyla/bf74e8ce2683460d8de6e0dc389fc7f5