v0.30.5
Browse filesSee https://github.com/quic/ai-hub-models/releases/v0.30.5 for changelog.
- FFNet-40S_w8a8.onnx +2 -2
- README.md +51 -51
FFNet-40S_w8a8.onnx
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a2ab435c18d8d86de2b1b082c4ca0eb93867719b077198ff99103f311ce5d4b4
|
| 3 |
+
size 55781363
|
README.md
CHANGED
|
@@ -37,53 +37,53 @@ More details on model performance across various devices, can be found
|
|
| 37 |
|
| 38 |
| Model | Precision | Device | Chipset | Target Runtime | Inference Time (ms) | Peak Memory Range (MB) | Primary Compute Unit | Target Model
|
| 39 |
|---|---|---|---|---|---|---|---|---|
|
| 40 |
-
| FFNet-40S | float | QCS8275 (Proxy) | Qualcomm® QCS8275 (Proxy) | TFLITE | 150.
|
| 41 |
-
| FFNet-40S | float | QCS8275 (Proxy) | Qualcomm® QCS8275 (Proxy) | QNN |
|
| 42 |
-
| FFNet-40S | float | QCS8450 (Proxy) | Qualcomm® QCS8450 (Proxy) | TFLITE |
|
| 43 |
-
| FFNet-40S | float | QCS8450 (Proxy) | Qualcomm® QCS8450 (Proxy) | QNN |
|
| 44 |
-
| FFNet-40S | float | QCS8550 (Proxy) | Qualcomm® QCS8550 (Proxy) | TFLITE |
|
| 45 |
-
| FFNet-40S | float | QCS8550 (Proxy) | Qualcomm® QCS8550 (Proxy) | QNN |
|
| 46 |
-
| FFNet-40S | float | QCS9075 (Proxy) | Qualcomm® QCS9075 (Proxy) | TFLITE | 57.
|
| 47 |
-
| FFNet-40S | float | QCS9075 (Proxy) | Qualcomm® QCS9075 (Proxy) | QNN | 47.
|
| 48 |
-
| FFNet-40S | float | SA7255P ADP | Qualcomm® SA7255P | TFLITE | 150.
|
| 49 |
-
| FFNet-40S | float | SA7255P ADP | Qualcomm® SA7255P | QNN |
|
| 50 |
-
| FFNet-40S | float | SA8255 (Proxy) | Qualcomm® SA8255P (Proxy) | TFLITE |
|
| 51 |
-
| FFNet-40S | float | SA8255 (Proxy) | Qualcomm® SA8255P (Proxy) | QNN | 34.
|
| 52 |
-
| FFNet-40S | float | SA8295P ADP | Qualcomm® SA8295P | TFLITE |
|
| 53 |
-
| FFNet-40S | float | SA8295P ADP | Qualcomm® SA8295P | QNN |
|
| 54 |
-
| FFNet-40S | float | SA8650 (Proxy) | Qualcomm® SA8650P (Proxy) | TFLITE | 43.
|
| 55 |
-
| FFNet-40S | float | SA8650 (Proxy) | Qualcomm® SA8650P (Proxy) | QNN | 34.
|
| 56 |
-
| FFNet-40S | float | SA8775P ADP | Qualcomm® SA8775P | TFLITE | 57.
|
| 57 |
-
| FFNet-40S | float | SA8775P ADP | Qualcomm® SA8775P | QNN | 47.
|
| 58 |
-
| FFNet-40S | float | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | TFLITE | 43.
|
| 59 |
-
| FFNet-40S | float | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | QNN |
|
| 60 |
-
| FFNet-40S | float | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | ONNX |
|
| 61 |
-
| FFNet-40S | float | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | TFLITE | 29.
|
| 62 |
-
| FFNet-40S | float | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | QNN |
|
| 63 |
-
| FFNet-40S | float | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | ONNX |
|
| 64 |
-
| FFNet-40S | float | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | TFLITE |
|
| 65 |
-
| FFNet-40S | float | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | QNN |
|
| 66 |
-
| FFNet-40S | float | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | ONNX |
|
| 67 |
-
| FFNet-40S | float | Snapdragon X Elite CRD | Snapdragon® X Elite | QNN | 35.
|
| 68 |
-
| FFNet-40S | float | Snapdragon X Elite CRD | Snapdragon® X Elite | ONNX |
|
| 69 |
-
| FFNet-40S | w8a8 | QCS8275 (Proxy) | Qualcomm® QCS8275 (Proxy) | TFLITE |
|
| 70 |
-
| FFNet-40S | w8a8 | QCS8450 (Proxy) | Qualcomm® QCS8450 (Proxy) | TFLITE | 10.
|
| 71 |
-
| FFNet-40S | w8a8 | QCS8550 (Proxy) | Qualcomm® QCS8550 (Proxy) | TFLITE | 9.
|
| 72 |
-
| FFNet-40S | w8a8 | QCS9075 (Proxy) | Qualcomm® QCS9075 (Proxy) | TFLITE | 10.
|
| 73 |
-
| FFNet-40S | w8a8 | RB3 Gen 2 (Proxy) | Qualcomm® QCS6490 (Proxy) | TFLITE |
|
| 74 |
-
| FFNet-40S | w8a8 | RB5 (Proxy) | Qualcomm® QCS8250 (Proxy) | TFLITE |
|
| 75 |
-
| FFNet-40S | w8a8 | SA7255P ADP | Qualcomm® SA7255P | TFLITE |
|
| 76 |
-
| FFNet-40S | w8a8 | SA8255 (Proxy) | Qualcomm® SA8255P (Proxy) | TFLITE | 9.
|
| 77 |
-
| FFNet-40S | w8a8 | SA8295P ADP | Qualcomm® SA8295P | TFLITE | 13.
|
| 78 |
-
| FFNet-40S | w8a8 | SA8650 (Proxy) | Qualcomm® SA8650P (Proxy) | TFLITE | 9.
|
| 79 |
-
| FFNet-40S | w8a8 | SA8775P ADP | Qualcomm® SA8775P | TFLITE | 10.
|
| 80 |
-
| FFNet-40S | w8a8 | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | TFLITE | 9.
|
| 81 |
-
| FFNet-40S | w8a8 | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | ONNX | 16.
|
| 82 |
-
| FFNet-40S | w8a8 | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | TFLITE | 6.
|
| 83 |
-
| FFNet-40S | w8a8 | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | ONNX |
|
| 84 |
-
| FFNet-40S | w8a8 | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | TFLITE | 6.
|
| 85 |
-
| FFNet-40S | w8a8 | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | ONNX |
|
| 86 |
-
| FFNet-40S | w8a8 | Snapdragon X Elite CRD | Snapdragon® X Elite | ONNX |
|
| 87 |
|
| 88 |
|
| 89 |
|
|
@@ -147,8 +147,8 @@ Profiling Results
|
|
| 147 |
FFNet-40S
|
| 148 |
Device : cs_8275 (ANDROID 14)
|
| 149 |
Runtime : TFLITE
|
| 150 |
-
Estimated inference time (ms) : 150.
|
| 151 |
-
Estimated peak memory usage (MB): [
|
| 152 |
Total # Ops : 94
|
| 153 |
Compute Unit(s) : npu (94 ops) gpu (0 ops) cpu (0 ops)
|
| 154 |
```
|
|
@@ -237,13 +237,13 @@ AI Hub. [Sign up for access](https://myaccount.qualcomm.com/signup).
|
|
| 237 |
You can also run the demo on-device.
|
| 238 |
|
| 239 |
```bash
|
| 240 |
-
python -m qai_hub_models.models.ffnet_40s.demo --on-device
|
| 241 |
```
|
| 242 |
|
| 243 |
**NOTE**: If you want running in a Jupyter Notebook or Google Colab like
|
| 244 |
environment, please add the following to your cell (instead of the above).
|
| 245 |
```
|
| 246 |
-
%run -m qai_hub_models.models.ffnet_40s.demo -- --on-device
|
| 247 |
```
|
| 248 |
|
| 249 |
|
|
|
|
| 37 |
|
| 38 |
| Model | Precision | Device | Chipset | Target Runtime | Inference Time (ms) | Peak Memory Range (MB) | Primary Compute Unit | Target Model
|
| 39 |
|---|---|---|---|---|---|---|---|---|
|
| 40 |
+
| FFNet-40S | float | QCS8275 (Proxy) | Qualcomm® QCS8275 (Proxy) | TFLITE | 150.015 ms | 2 - 53 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 41 |
+
| FFNet-40S | float | QCS8275 (Proxy) | Qualcomm® QCS8275 (Proxy) | QNN | 835.756 ms | 24 - 33 MB | NPU | Use Export Script |
|
| 42 |
+
| FFNet-40S | float | QCS8450 (Proxy) | Qualcomm® QCS8450 (Proxy) | TFLITE | 55.825 ms | 1 - 82 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 43 |
+
| FFNet-40S | float | QCS8450 (Proxy) | Qualcomm® QCS8450 (Proxy) | QNN | 65.158 ms | 24 - 83 MB | NPU | Use Export Script |
|
| 44 |
+
| FFNet-40S | float | QCS8550 (Proxy) | Qualcomm® QCS8550 (Proxy) | TFLITE | 44.041 ms | 2 - 43 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 45 |
+
| FFNet-40S | float | QCS8550 (Proxy) | Qualcomm® QCS8550 (Proxy) | QNN | 34.709 ms | 24 - 26 MB | NPU | Use Export Script |
|
| 46 |
+
| FFNet-40S | float | QCS9075 (Proxy) | Qualcomm® QCS9075 (Proxy) | TFLITE | 57.643 ms | 2 - 53 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 47 |
+
| FFNet-40S | float | QCS9075 (Proxy) | Qualcomm® QCS9075 (Proxy) | QNN | 47.762 ms | 24 - 34 MB | NPU | Use Export Script |
|
| 48 |
+
| FFNet-40S | float | SA7255P ADP | Qualcomm® SA7255P | TFLITE | 150.015 ms | 2 - 53 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 49 |
+
| FFNet-40S | float | SA7255P ADP | Qualcomm® SA7255P | QNN | 835.756 ms | 24 - 33 MB | NPU | Use Export Script |
|
| 50 |
+
| FFNet-40S | float | SA8255 (Proxy) | Qualcomm® SA8255P (Proxy) | TFLITE | 44.126 ms | 2 - 18 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 51 |
+
| FFNet-40S | float | SA8255 (Proxy) | Qualcomm® SA8255P (Proxy) | QNN | 34.357 ms | 24 - 27 MB | NPU | Use Export Script |
|
| 52 |
+
| FFNet-40S | float | SA8295P ADP | Qualcomm® SA8295P | TFLITE | 62.799 ms | 2 - 54 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 53 |
+
| FFNet-40S | float | SA8295P ADP | Qualcomm® SA8295P | QNN | 52.063 ms | 24 - 42 MB | NPU | Use Export Script |
|
| 54 |
+
| FFNet-40S | float | SA8650 (Proxy) | Qualcomm® SA8650P (Proxy) | TFLITE | 43.839 ms | 2 - 40 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 55 |
+
| FFNet-40S | float | SA8650 (Proxy) | Qualcomm® SA8650P (Proxy) | QNN | 34.549 ms | 24 - 27 MB | NPU | Use Export Script |
|
| 56 |
+
| FFNet-40S | float | SA8775P ADP | Qualcomm® SA8775P | TFLITE | 57.643 ms | 2 - 53 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 57 |
+
| FFNet-40S | float | SA8775P ADP | Qualcomm® SA8775P | QNN | 47.762 ms | 24 - 34 MB | NPU | Use Export Script |
|
| 58 |
+
| FFNet-40S | float | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | TFLITE | 43.749 ms | 2 - 37 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 59 |
+
| FFNet-40S | float | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | QNN | 33.997 ms | 24 - 44 MB | NPU | Use Export Script |
|
| 60 |
+
| FFNet-40S | float | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | ONNX | 29.655 ms | 29 - 113 MB | NPU | [FFNet-40S.onnx](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.onnx) |
|
| 61 |
+
| FFNet-40S | float | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | TFLITE | 29.475 ms | 1 - 81 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 62 |
+
| FFNet-40S | float | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | QNN | 24.266 ms | 21 - 81 MB | NPU | Use Export Script |
|
| 63 |
+
| FFNet-40S | float | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | ONNX | 20.379 ms | 28 - 107 MB | NPU | [FFNet-40S.onnx](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.onnx) |
|
| 64 |
+
| FFNet-40S | float | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | TFLITE | 29.788 ms | 1 - 55 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.tflite) |
|
| 65 |
+
| FFNet-40S | float | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | QNN | 21.584 ms | 24 - 90 MB | NPU | Use Export Script |
|
| 66 |
+
| FFNet-40S | float | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | ONNX | 17.701 ms | 28 - 81 MB | NPU | [FFNet-40S.onnx](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.onnx) |
|
| 67 |
+
| FFNet-40S | float | Snapdragon X Elite CRD | Snapdragon® X Elite | QNN | 35.412 ms | 24 - 24 MB | NPU | Use Export Script |
|
| 68 |
+
| FFNet-40S | float | Snapdragon X Elite CRD | Snapdragon® X Elite | ONNX | 30.776 ms | 24 - 24 MB | NPU | [FFNet-40S.onnx](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S.onnx) |
|
| 69 |
+
| FFNet-40S | w8a8 | QCS8275 (Proxy) | Qualcomm® QCS8275 (Proxy) | TFLITE | 24.347 ms | 1 - 34 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 70 |
+
| FFNet-40S | w8a8 | QCS8450 (Proxy) | Qualcomm® QCS8450 (Proxy) | TFLITE | 10.371 ms | 1 - 54 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 71 |
+
| FFNet-40S | w8a8 | QCS8550 (Proxy) | Qualcomm® QCS8550 (Proxy) | TFLITE | 9.33 ms | 1 - 13 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 72 |
+
| FFNet-40S | w8a8 | QCS9075 (Proxy) | Qualcomm® QCS9075 (Proxy) | TFLITE | 10.202 ms | 1 - 36 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 73 |
+
| FFNet-40S | w8a8 | RB3 Gen 2 (Proxy) | Qualcomm® QCS6490 (Proxy) | TFLITE | 57.505 ms | 1 - 94 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 74 |
+
| FFNet-40S | w8a8 | RB5 (Proxy) | Qualcomm® QCS8250 (Proxy) | TFLITE | 308.576 ms | 1 - 13 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 75 |
+
| FFNet-40S | w8a8 | SA7255P ADP | Qualcomm® SA7255P | TFLITE | 24.347 ms | 1 - 34 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 76 |
+
| FFNet-40S | w8a8 | SA8255 (Proxy) | Qualcomm® SA8255P (Proxy) | TFLITE | 9.425 ms | 1 - 12 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 77 |
+
| FFNet-40S | w8a8 | SA8295P ADP | Qualcomm® SA8295P | TFLITE | 13.886 ms | 1 - 37 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 78 |
+
| FFNet-40S | w8a8 | SA8650 (Proxy) | Qualcomm® SA8650P (Proxy) | TFLITE | 9.483 ms | 1 - 20 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 79 |
+
| FFNet-40S | w8a8 | SA8775P ADP | Qualcomm® SA8775P | TFLITE | 10.202 ms | 1 - 36 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 80 |
+
| FFNet-40S | w8a8 | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | TFLITE | 9.539 ms | 1 - 12 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 81 |
+
| FFNet-40S | w8a8 | Samsung Galaxy S23 | Snapdragon® 8 Gen 2 Mobile | ONNX | 16.806 ms | 4 - 44 MB | NPU | [FFNet-40S.onnx](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.onnx) |
|
| 82 |
+
| FFNet-40S | w8a8 | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | TFLITE | 6.906 ms | 1 - 51 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 83 |
+
| FFNet-40S | w8a8 | Samsung Galaxy S24 | Snapdragon® 8 Gen 3 Mobile | ONNX | 11.612 ms | 7 - 103 MB | NPU | [FFNet-40S.onnx](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.onnx) |
|
| 84 |
+
| FFNet-40S | w8a8 | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | TFLITE | 6.757 ms | 1 - 41 MB | NPU | [FFNet-40S.tflite](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.tflite) |
|
| 85 |
+
| FFNet-40S | w8a8 | Snapdragon 8 Elite QRD | Snapdragon® 8 Elite Mobile | ONNX | 10.209 ms | 7 - 92 MB | NPU | [FFNet-40S.onnx](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.onnx) |
|
| 86 |
+
| FFNet-40S | w8a8 | Snapdragon X Elite CRD | Snapdragon® X Elite | ONNX | 19.317 ms | 8 - 8 MB | NPU | [FFNet-40S.onnx](https://huggingface.co/qualcomm/FFNet-40S/blob/main/FFNet-40S_w8a8.onnx) |
|
| 87 |
|
| 88 |
|
| 89 |
|
|
|
|
| 147 |
FFNet-40S
|
| 148 |
Device : cs_8275 (ANDROID 14)
|
| 149 |
Runtime : TFLITE
|
| 150 |
+
Estimated inference time (ms) : 150.0
|
| 151 |
+
Estimated peak memory usage (MB): [2, 53]
|
| 152 |
Total # Ops : 94
|
| 153 |
Compute Unit(s) : npu (94 ops) gpu (0 ops) cpu (0 ops)
|
| 154 |
```
|
|
|
|
| 237 |
You can also run the demo on-device.
|
| 238 |
|
| 239 |
```bash
|
| 240 |
+
python -m qai_hub_models.models.ffnet_40s.demo --eval-mode on-device
|
| 241 |
```
|
| 242 |
|
| 243 |
**NOTE**: If you want running in a Jupyter Notebook or Google Colab like
|
| 244 |
environment, please add the following to your cell (instead of the above).
|
| 245 |
```
|
| 246 |
+
%run -m qai_hub_models.models.ffnet_40s.demo -- --eval-mode on-device
|
| 247 |
```
|
| 248 |
|
| 249 |
|