/*
 * Copyright (c) 2021-2022 Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the License); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/******************************************************************************************************************
 * Model: keyword_spotting_cnn_small_int8
 * Source: https://github.com/ARM-software/ML-zoo/tree/22.02/models/keyword_spotting/cnn_small/tflite_int8
 * Hexdump: python3 -c 'import numpy;i=numpy.load("input.npy");i.tofile("input.bin");' && xxd -i input.bin > input.h
 ******************************************************************************************************************/

unsigned char inputData[] __attribute__((aligned(16), section("input_data_sec"))) = {
    0xa8, 0xba, 0x62, 0x12, 0xcd, 0xa3, 0xcb, 0x47, 0x84, 0xe6, 0xbc, 0x3e, 0x60, 0x36, 0xbc, 0xae, 0x27, 0x19, 0x20,
    0x1b, 0x7e, 0xe0, 0x80, 0x89, 0xce, 0x3e, 0xc0, 0xd2, 0x1d, 0x47, 0x6b, 0x3d, 0xb1, 0x8f, 0x15, 0x6b, 0xc9, 0xd5,
    0xf8, 0x96, 0xf4, 0x2a, 0xc9, 0x60, 0x4f, 0x1d, 0x1b, 0x90, 0xe9, 0xbb, 0x0c, 0xbc, 0x52, 0xca, 0x76, 0x6c, 0x89,
    0x5d, 0xa1, 0xd8, 0x46, 0x21, 0x29, 0x98, 0x36, 0x11, 0x67, 0x4d, 0x47, 0xa5, 0x98, 0x51, 0xd1, 0xe6, 0xa6, 0xcf,
    0x19, 0xdd, 0x84, 0xdb, 0x56, 0x62, 0x7d, 0x54, 0xac, 0xf7, 0xfb, 0xa5, 0xaa, 0x80, 0x93, 0x92, 0x91, 0x01, 0xcc,
    0xae, 0xda, 0xde, 0x75, 0x73, 0xfe, 0x39, 0x7e, 0xa7, 0x5f, 0xe9, 0xa2, 0x73, 0x54, 0x50, 0x2c, 0xa9, 0xb2, 0xf4,
    0xcf, 0x0b, 0xa8, 0xab, 0x07, 0xec, 0xdc, 0x67, 0xc5, 0x0c, 0x0c, 0x48, 0x40, 0x16, 0x22, 0x6f, 0x1e, 0x7e, 0x22,
    0xa8, 0x3e, 0x6e, 0xbc, 0x97, 0xb4, 0x0c, 0x97, 0xe0, 0x92, 0x80, 0x3f, 0x88, 0x9f, 0x73, 0x14, 0x0b, 0x04, 0x58,
    0x07, 0xb1, 0x65, 0x9d, 0xa1, 0x12, 0x94, 0xd5, 0xdc, 0x14, 0x90, 0xc4, 0xd5, 0xbb, 0x10, 0xfd, 0xd5, 0x8f, 0x53,
    0x73, 0x43, 0x39, 0x6f, 0xc4, 0xa1, 0x06, 0xc1, 0xf0, 0x1d, 0xca, 0x8a, 0x13, 0x19, 0xc6, 0x8f, 0x70, 0xec, 0x0d,
    0xbc, 0x2a, 0x7a, 0xd5, 0xba, 0x24, 0xdd, 0xd4, 0xfe, 0x92, 0xad, 0x71, 0x68, 0x58, 0x3e, 0x7d, 0xd0, 0x2c, 0xec,
    0x6d, 0x85, 0xb5, 0x90, 0x78, 0x2b, 0x14, 0x20, 0x77, 0x8b, 0xfd, 0x0b, 0x05, 0x8a, 0xe8, 0x5f, 0x9c, 0xbe, 0x0c,
    0xb2, 0x9f, 0x89, 0x42, 0x6f, 0xac, 0xeb, 0x2b, 0xd8, 0xb3, 0x88, 0xce, 0x36, 0xc5, 0x23, 0x48, 0xfd, 0xda, 0xc0,
    0x54, 0xfa, 0xca, 0x7b, 0xc3, 0xda, 0x21, 0x49, 0x9c, 0x6f, 0xe3, 0x24, 0x35, 0x76, 0x5e, 0xf8, 0x93, 0xad, 0x6c,
    0xc6, 0x81, 0x30, 0x36, 0xc8, 0x28, 0xb4, 0xb3, 0xce, 0x91, 0x02, 0x27, 0x66, 0xfd, 0x44, 0x96, 0x3f, 0x08, 0xe2,
    0xb4, 0xeb, 0xb3, 0x18, 0x7e, 0x56, 0x9d, 0xe8, 0xb6, 0x4c, 0x46, 0x27, 0x4a, 0x34, 0xaf, 0xbc, 0x48, 0xb0, 0xd4,
    0x3c, 0xf0, 0x2c, 0xd9, 0x5f, 0x44, 0x9d, 0x72, 0xee, 0x68, 0x94, 0x9c, 0xd9, 0x2c, 0x51, 0x29, 0x90, 0xcd, 0x67,
    0xc6, 0x7e, 0xb0, 0x9a, 0x89, 0x8f, 0x5d, 0xd8, 0xc2, 0xa0, 0x50, 0x8a, 0xd1, 0xc6, 0xbe, 0xa7, 0xdb, 0xec, 0x25,
    0x75, 0xa1, 0x8a, 0xda, 0x5a, 0x02, 0x41, 0x6e, 0xb8, 0xed, 0xa6, 0x22, 0xb7, 0xa7, 0xb4, 0x4e, 0x54, 0x74, 0xae,
    0x1b, 0x97, 0x80, 0xdc, 0xa3, 0x05, 0x1c, 0xd2, 0x07, 0x0a, 0x1d, 0x44, 0xbc, 0xe7, 0x55, 0xef, 0xf0, 0xb9, 0xbb,
    0x91, 0xc9, 0xbd, 0x4e, 0x8f, 0x05, 0xa4, 0xfd, 0x8b, 0x4e, 0x6c, 0x8c, 0xac, 0x9f, 0xb9, 0xfc, 0x88, 0x44, 0x87,
    0x3b, 0xbd, 0xc9, 0x85, 0x1a, 0xc9, 0x69, 0x7d, 0x62, 0x13, 0xa1, 0xfe, 0xec, 0x03, 0x64, 0x6a, 0xc1, 0x90, 0xec,
    0x98, 0xbc, 0x57, 0xb4, 0x26, 0x2a, 0x3e, 0x8e, 0x85, 0x26, 0xa7, 0x50, 0x5e, 0xa2, 0x12, 0x71, 0x9d, 0x5f, 0xe5,
    0x8f, 0x18, 0x86, 0x4f, 0x08, 0x49, 0xca, 0xe9, 0xbe, 0x49, 0x7a, 0x4d, 0x1e, 0xe7, 0x10, 0x55, 0x47, 0x85, 0x26,
    0xed, 0xbd, 0x53, 0x75, 0x13, 0xac, 0x0c, 0x99, 0xa5, 0x66, 0x7b, 0xe4, 0xe1, 0x18, 0x22, 0xb7, 0x37, 0x26, 0xbe,
    0xea, 0xc7, 0x44, 0xcc, 0xce, 0x0e, 0x50, 0x66, 0x48, 0x6b, 0x8e, 0x2e, 0x65, 0x81, 0xc6};
